From 41f8dde6a89321878a060cbb6732159c7baab750 Mon Sep 17 00:00:00 2001 From: david limkys Date: Tue, 18 Jul 2017 21:49:06 +0300 Subject: [PATCH 01/69] feat(localization): Add Hebrew locale --- src/behaviors/localization/locales/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/behaviors/localization/locales/index.ts b/src/behaviors/localization/locales/index.ts index 3248bed05..9d3daaa67 100644 --- a/src/behaviors/localization/locales/index.ts +++ b/src/behaviors/localization/locales/index.ts @@ -1,5 +1,3 @@ -import { RecursivePartial, ILocaleValues } from "../interfaces/values"; - import de from "./de"; import enGB from "./en-GB"; import enUS from "./en-US"; From 7a32a734503e2a095d60cd96c22b1a8b698836c5 Mon Sep 17 00:00:00 2001 From: david limkys Date: Tue, 18 Jul 2017 21:49:06 +0300 Subject: [PATCH 02/69] feat(localization): Add Hebrew locale rebase --- src/behaviors/localization/locales/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/behaviors/localization/locales/index.ts b/src/behaviors/localization/locales/index.ts index 9d3daaa67..3248bed05 100644 --- a/src/behaviors/localization/locales/index.ts +++ b/src/behaviors/localization/locales/index.ts @@ -1,3 +1,5 @@ +import { RecursivePartial, ILocaleValues } from "../interfaces/values"; + import de from "./de"; import enGB from "./en-GB"; import enUS from "./en-US"; From a260bb900de1e871a9b2935bafaa382bcac7dfe8 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 15:27:02 +0100 Subject: [PATCH 03/69] fix(popup): Fixed TS 2.4.1 no properties in common error Closes #166 --- src/modules/popup/classes/popup-controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 1dd563264..90e72f40e 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -10,7 +10,7 @@ export interface IPopup { toggle():void; } -export abstract class SuiPopupController implements IPopup, OnDestroy, IPopupLifecycle { +export abstract class SuiPopupController implements IPopup, OnDestroy { // Stores reference to generated popup component. private _componentRef:ComponentRef; From 5e81ed1cc13f16629ab7080a6019bb6c03cf972f Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 15:21:22 +0100 Subject: [PATCH 04/69] fix(modal): Changed ModalTemplate to be an abstract class This stops it from being erased by Typescript, so when people use it in decorators it still exists. Closes #171 --- src/modules/modal/classes/modal-template.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/modal/classes/modal-template.ts b/src/modules/modal/classes/modal-template.ts index 6fe78d18e..c2d217096 100644 --- a/src/modules/modal/classes/modal-template.ts +++ b/src/modules/modal/classes/modal-template.ts @@ -2,4 +2,5 @@ import { TemplateRef } from "@angular/core"; import { ModalControls } from "./modal-controls"; // Shorthand for a modal template. Sets up ability to write: `...` -export type ModalTemplate = TemplateRef<{ $implicit:T; modal:ModalControls }>; +// We use an abstract class as ModalTemplate tends to be used within decorated properties, which means it needs to exist! +export abstract class ModalTemplate extends TemplateRef<{ $implicit:T; modal:ModalControls }> {} From 90afe8fe65f54634d5202b62b79147d4efb00216 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 15:41:23 +0100 Subject: [PATCH 05/69] fix(modal/popup): Autofocus now working in IE11 Closes #167 --- src/modules/modal/components/modal.ts | 2 ++ src/modules/popup/components/popup.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/modules/modal/components/modal.ts b/src/modules/modal/components/modal.ts index d2eb86fe2..9f31ceb19 100644 --- a/src/modules/modal/components/modal.ts +++ b/src/modules/modal/components/modal.ts @@ -206,6 +206,8 @@ export class SuiModal implements OnInit, AfterViewInit { const autoFocus = element.querySelector("[autofocus]") as HTMLElement | null; if (autoFocus) { autoFocus.focus(); + // Try to focus again when the modal has opened so that autofocus works in IE11. + setTimeout(() => autoFocus.focus(), this.transitionDuration); } } diff --git a/src/modules/popup/components/popup.ts b/src/modules/popup/components/popup.ts index e8ae610b2..a667ef4c5 100644 --- a/src/modules/popup/components/popup.ts +++ b/src/modules/popup/components/popup.ts @@ -145,6 +145,8 @@ export class SuiPopup implements IPopup { const autoFocus = this.elementRef.nativeElement.querySelector("[autofocus]") as HTMLElement | null; if (autoFocus) { autoFocus.focus(); + // Try to focus again when the modal has opened so that autofocus works in IE11. + setTimeout(() => autoFocus.focus(), this.config.transitionDuration); } })); From 7ee908461d5dbeeef3e2e25e6ad70a796778217f Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 16:03:50 +0100 Subject: [PATCH 06/69] fix(select): Fixed lots of JS falsy errors --- src/modules/select/classes/select-base.ts | 4 ++-- src/modules/select/components/multi-select.ts | 4 ++-- src/modules/select/components/select.ts | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/modules/select/classes/select-base.ts b/src/modules/select/classes/select-base.ts index 72a71702b..85c3489b2 100644 --- a/src/modules/select/classes/select-base.ts +++ b/src/modules/select/classes/select-base.ts @@ -171,7 +171,7 @@ export abstract class SuiSelectBase implements AfterContentInit { // Helper function to retrieve the label from an item. return (obj:T) => { const label = Util.Object.readValue(obj, this.labelField); - if (label) { + if (label != undefined) { return label.toString(); } return ""; @@ -197,7 +197,7 @@ export abstract class SuiSelectBase implements AfterContentInit { } else if (this.searchService.optionsLookup) { return o => this.labelGetter(o); } else { - return o => this.searchService.highlightMatches(this.labelGetter(o), this.query || ""); + return o => this.searchService.highlightMatches(this.labelGetter(o), this.query != undefined ? this.query : ""); } } diff --git a/src/modules/select/components/multi-select.ts b/src/modules/select/components/multi-select.ts index 4908f548b..b00fe2a20 100644 --- a/src/modules/select/components/multi-select.ts +++ b/src/modules/select/components/multi-select.ts @@ -58,7 +58,7 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom } // Returns the search results \ selected options. return this.searchService.results - .filter(r => !this.selectedOptions.find(o => r === o)); + .filter(r => this.selectedOptions.find(o => r === o) == undefined); } public get availableOptions():T[] { @@ -136,7 +136,7 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom this.selectedOptions = values // non-null assertion added here because Typescript doesn't recognise the non-null filter. .map(v => this.findOption(this.searchService.options, v)!) - .filter(v => !!v); + .filter(v => v != undefined); } if (values.length > 0 && this.selectedOptions.length === 0) { if (this.valueField && this.searchService.hasItemLookup) { diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index 939528d62..63084a005 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -13,11 +13,11 @@ import { ISelectRenderedOption } from "./select-option"; [hidden]="!isSearchable || isSearchExternal"> -
{{ placeholder }}
+
{{ placeholder }}
-
+
- +
@@ -29,7 +29,7 @@ import { ISelectRenderedOption } from "./select-option"; [menuAutoSelectFirst]="isSearchable"> -
+
{{ localeValues.noResultsMessage }}
@@ -102,7 +102,7 @@ export class SuiSelect extends SuiSelectBase implements ICustomValue this.drawSelectedOption(); } - if (!this.selectedOption) { + if (this.selectedOption == undefined) { if (this.valueField && this.searchService.hasItemLookup) { // If the search service has a selected lookup function, make use of that to load the initial value. this.searchService From 4c9d912a42ba8d3e0f05755fc280dc7c12df0b02 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 16:29:08 +0100 Subject: [PATCH 07/69] fix(popup): Stopped attaching component to application repeatedly Closes #178 --- src/modules/popup/classes/popup-controller.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 90e72f40e..a8b0c15a0 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -58,8 +58,11 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { }); } - // Move the generated element to the body to avoid any positioning issues. + // Detach & reattach the generated component to the current application. + this._componentFactory.detachFromApplication(this._componentRef); this._componentFactory.attachToApplication(this._componentRef); + + // Move the generated element to the body to avoid any positioning issues. this._componentFactory.moveToDocumentBody(this._componentRef); // Attach a reference to the anchor element. We do it here because IE11 loves to complain. From e7692cada1ab2c4439fb1913a8fb412340958176 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 17:54:33 +0100 Subject: [PATCH 08/69] feat(datepicker): Stopped disabling dates if they're not in a month Partially addresses #165 --- src/modules/datepicker/views/date-view.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/datepicker/views/date-view.ts b/src/modules/datepicker/views/date-view.ts index 1a38893d7..ad44b0f0f 100644 --- a/src/modules/datepicker/views/date-view.ts +++ b/src/modules/datepicker/views/date-view.ts @@ -15,7 +15,7 @@ export class CalendarRangeDateService extends CalendarRangeService { public configureItem(item:CalendarItem, baseDate:Date):void { item.humanReadable = item.date.getDate().toString(); item.isOutsideRange = item.date.getMonth() !== baseDate.getMonth(); - item.isSelectable = item.isDisabled || item.isOutsideRange; + item.isSelectable = item.isDisabled; } } From f2fe6f73bae93b5f42cdfef7e42b483b1a1e5a62 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 17:55:37 +0100 Subject: [PATCH 09/69] chore: Bumped version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f7224822f..b578a5854 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "main": "bundles/ng2-semantic-ui.umd.min.js", "module": "dist/public.js", "typings": "dist/public.d.ts", - "version": "0.9.2", + "version": "0.9.3", "description": "Angular 2 Semantic UI Components", "repository": { "type": "git", From 4776408d5b54d2ee88b0e35942c6f64bc885c1d5 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 17:52:06 +0100 Subject: [PATCH 10/69] feat(checkbox): Added radiobutton support for reactive forms Closes #168 --- .../pages/modules/checkbox/checkbox.page.ts | 21 +++---- src/collections/index.ts | 4 +- src/misc/index.ts | 2 +- src/misc/util/helpers/util.ts | 10 ++++ src/modules/checkbox/checkbox.module.ts | 13 +++-- .../components/{radiobutton.ts => radio.ts} | 19 ++++--- .../checkbox/directives/radio-manager.ts | 57 +++++++++++++++++++ src/modules/checkbox/index.ts | 4 +- 8 files changed, 103 insertions(+), 27 deletions(-) rename src/modules/checkbox/components/{radiobutton.ts => radio.ts} (82%) create mode 100644 src/modules/checkbox/directives/radio-manager.ts diff --git a/demo/src/app/pages/modules/checkbox/checkbox.page.ts b/demo/src/app/pages/modules/checkbox/checkbox.page.ts index 3f8378305..a2003ae16 100644 --- a/demo/src/app/pages/modules/checkbox/checkbox.page.ts +++ b/demo/src/app/pages/modules/checkbox/checkbox.page.ts @@ -28,16 +28,16 @@ const exampleRadioButtonTemplate = `
- Value: "hello" + Value: "hello"
- Value: "world" + Value: "world"
- Value: "example" + Value: "example"
- + Value: {{ '{' }} example: "object" }
@@ -62,12 +62,12 @@ const exampleStyledTemplate = `
- + Slider radio button
- + Toggle radio button
@@ -126,18 +126,19 @@ export class CheckboxPage { { name: "name", type: "string", - description: "Sets the name on the internal <input> component." + description: "Sets the name on the internal <input> component.", + required: true }, { name: "value", type: "T", - description: "Sets the value that selecting this radio button returns. Supports binding any object." + description: "Sets the value that selecting this radio button returns. Supports binding any object.", + required: true }, { name: "ngModel", type: "T", - description: "Bind the radio button value to the value of the provided variable.", - required: true + description: "Bind the radio button value to the value of the provided variable." }, { name: "isDisabled", diff --git a/src/collections/index.ts b/src/collections/index.ts index 286751b8b..6a02976da 100644 --- a/src/collections/index.ts +++ b/src/collections/index.ts @@ -1,2 +1,2 @@ -export * from "./message/message.module"; -export * from "./pagination/pagination.module"; +export * from "./message"; +export * from "./pagination"; diff --git a/src/misc/index.ts b/src/misc/index.ts index c8af7d570..181e76f24 100644 --- a/src/misc/index.ts +++ b/src/misc/index.ts @@ -1 +1 @@ -export * from "./util/util.module"; +export * from "./util"; diff --git a/src/misc/util/helpers/util.ts b/src/misc/util/helpers/util.ts index 5efdeeac9..bf30e0ddf 100644 --- a/src/misc/util/helpers/util.ts +++ b/src/misc/util/helpers/util.ts @@ -42,6 +42,16 @@ export const Util = { } return groups; }, + groupBy(items:T[], field:keyof T):{ [name:string]:T[] } { + return items.reduce<{ [name:string]:T[] }>( + (groups, i) => { + const fieldValue = i[field].toString(); + groups[fieldValue] = groups[fieldValue] || []; + groups[fieldValue].push(i); + return groups; + }, + Object()); + }, flatten(items:T[][]):T[] { return items.reduce((is, i) => is.concat(i), []); } diff --git a/src/modules/checkbox/checkbox.module.ts b/src/modules/checkbox/checkbox.module.ts index f85fa61bf..ced31139b 100644 --- a/src/modules/checkbox/checkbox.module.ts +++ b/src/modules/checkbox/checkbox.module.ts @@ -2,7 +2,8 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { FormsModule } from "@angular/forms"; import { SuiCheckbox, SuiCheckboxValueAccessor } from "./components/checkbox"; -import { SuiRadioButton, SuiRadioButtonValueAccessor } from "./components/radiobutton"; +import { SuiRadio, SuiRadioValueAccessor } from "./components/radio"; +import { SuiRadioManager } from "./directives/radio-manager"; @NgModule({ imports: [ @@ -12,14 +13,16 @@ import { SuiRadioButton, SuiRadioButtonValueAccessor } from "./components/radiob declarations: [ SuiCheckbox, SuiCheckboxValueAccessor, - SuiRadioButton, - SuiRadioButtonValueAccessor + SuiRadio, + SuiRadioValueAccessor, + SuiRadioManager ], exports: [ SuiCheckbox, SuiCheckboxValueAccessor, - SuiRadioButton, - SuiRadioButtonValueAccessor + SuiRadio, + SuiRadioValueAccessor, + SuiRadioManager ] }) export class SuiCheckboxModule {} diff --git a/src/modules/checkbox/components/radiobutton.ts b/src/modules/checkbox/components/radio.ts similarity index 82% rename from src/modules/checkbox/components/radiobutton.ts rename to src/modules/checkbox/components/radio.ts index 58739c784..694f45d3d 100644 --- a/src/modules/checkbox/components/radiobutton.ts +++ b/src/modules/checkbox/components/radio.ts @@ -1,12 +1,15 @@ import { Component, Directive, Input, Output, HostListener, HostBinding, - EventEmitter, ViewChild, ElementRef + EventEmitter, ViewChild, ElementRef, ContentChildren, AfterContentInit, QueryList } from "@angular/core"; -import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; +import { + ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor, + Util +} from "../../../misc/util"; +import { Subscription } from "rxjs/Subscription"; @Component({ - selector: "sui-radio-button[ngModel]", - exportAs: "suiRadioButton", + selector: "sui-radio-button", template: ` ` }) -export class SuiRadioButton implements ICustomValueAccessorHost { +export class SuiRadio implements ICustomValueAccessorHost { @HostBinding("class.ui") @HostBinding("class.radio") @HostBinding("class.checkbox") @@ -113,10 +116,10 @@ export class SuiRadioButton implements ICustomValueAccessorHost { "(currentValueChange)": "onChange($event)", "(touched)": "onTouched()" }, - providers: [customValueAccessorFactory(SuiRadioButtonValueAccessor)] + providers: [customValueAccessorFactory(SuiRadioValueAccessor)] }) -export class SuiRadioButtonValueAccessor extends CustomValueAccessor> { - constructor(host:SuiRadioButton) { +export class SuiRadioValueAccessor extends CustomValueAccessor> { + constructor(host:SuiRadio) { super(host); } } diff --git a/src/modules/checkbox/directives/radio-manager.ts b/src/modules/checkbox/directives/radio-manager.ts new file mode 100644 index 000000000..b0222cf6f --- /dev/null +++ b/src/modules/checkbox/directives/radio-manager.ts @@ -0,0 +1,57 @@ +import { Directive, AfterContentInit, ContentChildren, QueryList, ElementRef } from "@angular/core"; +import { SuiRadio } from "../components/radio"; +import { Subscription } from "rxjs/Subscription"; +import { Util } from "../../../misc/util"; + +@Directive({ + selector: "form:not([ngForm]):not([[ngForm]]),ngForm,[ngForm]" +}) +export class SuiRadioManager implements AfterContentInit { + + public isNested:boolean; + + @ContentChildren(SuiRadioManager, { descendants: true }) + private _subManagers:QueryList>; + + @ContentChildren(SuiRadio, { descendants: true }) + private _renderedRadios:QueryList>; + + private _radioSubs:Subscription[]; + + constructor(public element:ElementRef) { + this.isNested = false; + this._radioSubs = []; + } + + public ngAfterContentInit():void { + this.updateNesting(); + this._subManagers.changes.subscribe(() => this.updateNesting()); + + this.updateRadios(); + this._renderedRadios.changes.subscribe(() => this.updateRadios()); + } + + private updateNesting():void { + this._subManagers + .filter(m => m !== this) + .forEach(m => m.isNested = true); + } + + private updateRadios():void { + this._radioSubs.forEach(s => s.unsubscribe()); + this._radioSubs = []; + + const groups = Util.Array.groupBy(this._renderedRadios.toArray(), "name"); + Object + .keys(groups) + .map(k => groups[k]) + .forEach(g => g + .forEach(r => this._radioSubs + .push(r.onCurrentValueChange + .subscribe((v:T) => { + if (!this.isNested) { + g.forEach(radio => radio.writeValue(v)); + } + })))); + } +} diff --git a/src/modules/checkbox/index.ts b/src/modules/checkbox/index.ts index d97aae779..d61e87c5c 100644 --- a/src/modules/checkbox/index.ts +++ b/src/modules/checkbox/index.ts @@ -1,4 +1,6 @@ export * from "./components/checkbox"; -export * from "./components/radiobutton"; +export * from "./components/radio"; + +export * from "./directives/radio-manager"; export * from "./checkbox.module"; From 385cfed899c766b5eafac2989a2dde0adb144a29 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 18:12:22 +0100 Subject: [PATCH 11/69] fix(select): Fixed selected option sometimes not appearing --- src/modules/select/classes/select-base.ts | 2 +- src/modules/select/components/select.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/select/classes/select-base.ts b/src/modules/select/classes/select-base.ts index 85c3489b2..041bc9d69 100644 --- a/src/modules/select/classes/select-base.ts +++ b/src/modules/select/classes/select-base.ts @@ -197,7 +197,7 @@ export abstract class SuiSelectBase implements AfterContentInit { } else if (this.searchService.optionsLookup) { return o => this.labelGetter(o); } else { - return o => this.searchService.highlightMatches(this.labelGetter(o), this.query != undefined ? this.query : ""); + return o => this.searchService.highlightMatches(this.labelGetter(o), this.query || ""); } } diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index 63084a005..3dab0384a 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -13,9 +13,9 @@ import { ISelectRenderedOption } from "./select-option"; [hidden]="!isSearchable || isSearchExternal"> -
{{ placeholder }}
+
{{ placeholder }}
-
+
@@ -132,7 +132,7 @@ export class SuiSelect extends SuiSelectBase implements ICustomValue this.onAvailableOptionsRendered(); } - if (this.selectedOption && this.optionTemplate) { + if (this.selectedOption != undefined && this.optionTemplate) { this.drawTemplate(this._optionTemplateSibling, this.selectedOption); } } From a94781bfdcd71f90f7b8184e79eff2082cb7927a Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Wed, 19 Jul 2017 18:16:04 +0100 Subject: [PATCH 12/69] chore: Updated package lock version number --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index ded5b7f2a..e2ea86dc6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ng2-semantic-ui", - "version": "0.9.2", + "version": "0.9.3", "lockfileVersion": 1, "dependencies": { "@angular/cli": { From 56eaaa235488ce83303cd8e914e1446bbea52587 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Thu, 20 Jul 2017 12:28:57 +0100 Subject: [PATCH 13/69] fix(dimmer): Fixed dimmer transition getting out of sync --- src/modules/dimmer/components/dimmer.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/modules/dimmer/components/dimmer.ts b/src/modules/dimmer/components/dimmer.ts index a9e7f374b..519eef333 100644 --- a/src/modules/dimmer/components/dimmer.ts +++ b/src/modules/dimmer/components/dimmer.ts @@ -47,11 +47,9 @@ export class SuiDimmer extends SuiTransition { if (this._isDimmed !== isDimmed) { this._isDimmed = isDimmed; - if (this._transitionController.isVisible !== isDimmed) { - this._transitionController.stopAll(); - this._transitionController.animate( - new Transition("fade", this.transitionDuration, isDimmed ? TransitionDirection.In : TransitionDirection.Out)); - } + this._transitionController.stopAll(); + this._transitionController.animate( + new Transition("fade", this.transitionDuration, isDimmed ? TransitionDirection.In : TransitionDirection.Out)); } } From 84efb75d8e07e08ff4b532e447fcbcff138d3268 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 21 Jul 2017 15:57:15 +0100 Subject: [PATCH 14/69] docs(readme): Updated image link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f4edd2504..825399d98 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- +

From 14bd206db7056929cadacc5cf5e5a6991d15014b Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Fri, 21 Jul 2017 17:15:31 +0100 Subject: [PATCH 15/69] demo: Added path to tsconfig so demo can import modules directly --- demo/src/app/app.module.ts | 2 +- demo/src/app/components/demo-components.module.ts | 2 +- demo/src/app/modals/alert.modal.ts | 2 +- demo/src/app/modals/confirm.modal.ts | 2 +- demo/src/app/modals/demo-modals.module.ts | 2 +- .../src/app/pages/behaviors/localization/localization.page.ts | 4 ++-- demo/src/app/pages/demo-pages.module.ts | 2 +- demo/src/app/pages/modules/datepicker/datepicker.page.ts | 2 +- demo/src/app/pages/modules/modal/modal.page.ts | 2 +- demo/src/app/pages/modules/popup/popup.page.ts | 2 +- demo/src/app/pages/modules/search/search.page.ts | 2 +- demo/src/app/pages/modules/tabs/tabs.page.ts | 2 +- demo/src/app/pages/modules/transition/transition.page.ts | 2 +- demo/src/tsconfig.json | 4 ++++ 14 files changed, 18 insertions(+), 14 deletions(-) diff --git a/demo/src/app/app.module.ts b/demo/src/app/app.module.ts index 3b91c64cf..6e425c526 100644 --- a/demo/src/app/app.module.ts +++ b/demo/src/app/app.module.ts @@ -2,8 +2,8 @@ import { BrowserModule } from "@angular/platform-browser"; import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { FormsModule } from "@angular/forms"; +import { SuiSidebarModule } from "ng2-semantic-ui"; -import { SuiSidebarModule } from "../../../src/public"; import { DemoRoutingModule } from "./app.routing"; import { DemoComponentsModule } from "./components/demo-components.module"; import { DemoModalsModule } from "./modals/demo-modals.module"; diff --git a/demo/src/app/components/demo-components.module.ts b/demo/src/app/components/demo-components.module.ts index 581d521c8..16c71e199 100644 --- a/demo/src/app/components/demo-components.module.ts +++ b/demo/src/app/components/demo-components.module.ts @@ -1,7 +1,7 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { RouterModule } from "@angular/router"; -import { SuiCollapseModule, SuiPopupModule } from "../../../../src/public"; +import { SuiCollapseModule, SuiPopupModule } from "ng2-semantic-ui"; import { ApiComponent } from "./api/api.component"; import { CodeblockComponent } from "./codeblock/codeblock.component"; diff --git a/demo/src/app/modals/alert.modal.ts b/demo/src/app/modals/alert.modal.ts index 61a027744..fdd0c17e9 100644 --- a/demo/src/app/modals/alert.modal.ts +++ b/demo/src/app/modals/alert.modal.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { SuiModal, ComponentModalConfig, ModalSize } from "../../../../src/public"; +import { SuiModal, ComponentModalConfig, ModalSize } from "ng2-semantic-ui"; interface IAlertModalContext { message:string; diff --git a/demo/src/app/modals/confirm.modal.ts b/demo/src/app/modals/confirm.modal.ts index bfd3524c1..8d11a5f28 100644 --- a/demo/src/app/modals/confirm.modal.ts +++ b/demo/src/app/modals/confirm.modal.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { SuiModal, ComponentModalConfig, ModalSize } from "../../../../src/public"; +import { SuiModal, ComponentModalConfig, ModalSize } from "ng2-semantic-ui"; interface IConfirmModalContext { question:string; diff --git a/demo/src/app/modals/demo-modals.module.ts b/demo/src/app/modals/demo-modals.module.ts index b59d51d1f..80abf6dd5 100644 --- a/demo/src/app/modals/demo-modals.module.ts +++ b/demo/src/app/modals/demo-modals.module.ts @@ -1,6 +1,6 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiModalModule } from "../../../../src/modules/modal"; +import { SuiModalModule } from "ng2-semantic-ui"; import { AlertModalComponent } from "./alert.modal"; import { ConfirmModalComponent } from "./confirm.modal"; diff --git a/demo/src/app/pages/behaviors/localization/localization.page.ts b/demo/src/app/pages/behaviors/localization/localization.page.ts index de6a30736..2a1f425fa 100644 --- a/demo/src/app/pages/behaviors/localization/localization.page.ts +++ b/demo/src/app/pages/behaviors/localization/localization.page.ts @@ -1,6 +1,6 @@ import { Component, OnDestroy } from "@angular/core"; -import { SuiLocalizationService } from "../../../../../../src/public"; -import locales from "../../../../../../src/behaviors/localization/locales"; +import { SuiLocalizationService } from "ng2-semantic-ui"; +import locales from "ng2-semantic-ui/locales"; const exampleTemplate = `
diff --git a/demo/src/app/pages/demo-pages.module.ts b/demo/src/app/pages/demo-pages.module.ts index c51c2cafd..1c6efb18d 100644 --- a/demo/src/app/pages/demo-pages.module.ts +++ b/demo/src/app/pages/demo-pages.module.ts @@ -2,7 +2,7 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; -import { SuiModule } from "../../../../src"; +import { SuiModule } from "ng2-semantic-ui"; import { DemoComponentsModule } from "../components/demo-components.module"; import { GettingStartedPage } from "./getting-started/getting-started.page"; diff --git a/demo/src/app/pages/modules/datepicker/datepicker.page.ts b/demo/src/app/pages/modules/datepicker/datepicker.page.ts index 937b547d3..909d43636 100644 --- a/demo/src/app/pages/modules/datepicker/datepicker.page.ts +++ b/demo/src/app/pages/modules/datepicker/datepicker.page.ts @@ -1,6 +1,6 @@ import { Component } from "@angular/core"; import { ApiDefinition } from "../../../components/api/api.component"; -import { DatepickerMode } from "../../../../../../src/public"; +import { DatepickerMode } from "ng2-semantic-ui"; const exampleStandardTemplate = `
diff --git a/demo/src/app/pages/modules/modal/modal.page.ts b/demo/src/app/pages/modules/modal/modal.page.ts index ad3b70379..36e1a7660 100644 --- a/demo/src/app/pages/modules/modal/modal.page.ts +++ b/demo/src/app/pages/modules/modal/modal.page.ts @@ -3,7 +3,7 @@ import { ApiDefinition } from "app/components/api/api.component"; import { SuiModalService, ModalTemplate, TemplateModalConfig, ComponentModalConfig, ModalSize, SuiModal -} from "../../../../../../src/public"; +} from "ng2-semantic-ui"; import { AlertModal } from "../../../modals/alert.modal"; const exampleTemplateModalTemplate = ` diff --git a/demo/src/app/pages/modules/popup/popup.page.ts b/demo/src/app/pages/modules/popup/popup.page.ts index 69e6f23ea..509d0732e 100644 --- a/demo/src/app/pages/modules/popup/popup.page.ts +++ b/demo/src/app/pages/modules/popup/popup.page.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit, OnDestroy } from "@angular/core"; import { ApiDefinition } from "../../../components/api/api.component"; -import { SuiPopupConfig } from "../../../../../../src/public"; +import { SuiPopupConfig } from "ng2-semantic-ui"; const exampleStandardTemplate = `

Dependencies

-
Angular (^4.1.0)
+
Angular (^4.3.1)
Semantic UI CSS (jQuery is not required)
diff --git a/package-lock.json b/package-lock.json index ccca8b02a..19da9b429 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,22 +10,29 @@ "dev": true }, "@angular/common": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.5.tgz", - "integrity": "sha1-TVCpW0RM1Yz3BvDandFAfTuDNi4=" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.3.1.tgz", + "integrity": "sha1-Jg9IenzcoybENr0+qVFceX3i/3I=", + "dev": true }, "@angular/compiler": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.5.tgz", - "integrity": "sha1-tIZ0x0VrKw3xBy1w5OZnr4bN34M=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.3.1.tgz", + "integrity": "sha1-OiTUns8BrCtuB/Y+N4uP+OJX/gk=", "dev": true }, "@angular/compiler-cli": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.2.5.tgz", - "integrity": "sha1-OzltZa3oOA83EgHUNh/JYqSax2o=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.3.1.tgz", + "integrity": "sha1-ALQa+2+utK71YbhCeASsiICv9jw=", "dev": true, "dependencies": { + "@angular/tsc-wrapped": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.1.tgz", + "integrity": "sha1-9mFqTSo7vsHN7WZP0fUm7c6Z70E=", + "dev": true + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -35,43 +42,39 @@ } }, "@angular/core": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.5.tgz", - "integrity": "sha1-YcG1iFwmIzLXN/vg9dcRUXWahGQ=" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.3.1.tgz", + "integrity": "sha1-qdCn1kS5YmBnQmm2iaBP7qYyqNM=", + "dev": true }, "@angular/forms": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.2.5.tgz", - "integrity": "sha1-p+VcjR9aToU37+Ht14NOSh9ZxuQ=" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.3.1.tgz", + "integrity": "sha1-M5FNossUZDD/kBRx5oLHZlRiLf4=", + "dev": true }, "@angular/http": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.5.tgz", - "integrity": "sha1-P/+OXPjogmK6zRyZYwQxLDxaOu8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.3.1.tgz", + "integrity": "sha1-5PZh90ZxHojsvqdqPJBbq/l9MVo=", "dev": true }, "@angular/platform-browser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.5.tgz", - "integrity": "sha1-2d3+D4EITpjvJKefSF27ES54oMQ=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.3.1.tgz", + "integrity": "sha1-23J7Bu7WS9pd7+xxgV2yak2i9pA=", "dev": true }, "@angular/platform-browser-dynamic": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.5.tgz", - "integrity": "sha1-gHbsSohcw6GiPF5UDECn/dP357I=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.3.1.tgz", + "integrity": "sha1-hANNpgqC7zbn7/2ns63m5kWzMLM=", "dev": true }, "@angular/router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.2.5.tgz", - "integrity": "sha1-fzZAiUk6saBurF8MYowPn9sRAI8=", - "dev": true - }, - "@angular/tsc-wrapped": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.2.5.tgz", - "integrity": "sha1-Ci/CMwYXgNK+QCmWGHh4wng4t+M=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.3.1.tgz", + "integrity": "sha1-UhnURSYVbYFgZYQRJ2EBZaAVtFA=", "dev": true }, "@edcarroll/code-style": { @@ -6914,7 +6917,8 @@ "tslib": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=" + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "dev": true }, "tslint": { "version": "5.4.3", diff --git a/package.json b/package.json index 095ef79e1..62eff3a67 100644 --- a/package.json +++ b/package.json @@ -41,10 +41,14 @@ "test:cov": "ng test --code-coverage true", "test:w": "ng test --single-run false --browsers Chrome --reporters kjhtml" }, + "peerDependencies": { + "@angular/common": "^4.3.1 || >= 5.0.0-beta", + "@angular/compiler": "^4.3.1 || >= 5.0.0-beta", + "@angular/core": "^4.3.1 || >= 5.0.0-beta", + "@angular/forms": "^4.3.1 || >= 5.0.0-beta", + "typescript": "~2.3.0" + }, "dependencies": { - "@angular/common": "^4.1.3", - "@angular/core": "^4.1.3", - "@angular/forms": "^4.1.3", "@types/popper.js": "~1.10.0", "bowser": "^1.7.0", "date-fns": "2.0.0-alpha.1", @@ -54,13 +58,16 @@ "rxjs": "^5.0.1" }, "devDependencies": { - "@angular/cli": "^1.0.0", - "@angular/compiler": "^4.1.3", - "@angular/compiler-cli": "^4.1.3", - "@angular/http": "^4.1.3", - "@angular/platform-browser": "^4.1.3", - "@angular/platform-browser-dynamic": "^4.1.3", - "@angular/router": "^4.1.3", + "@angular/common": "^4.3.1", + "@angular/core": "^4.3.1", + "@angular/cli": "^1.2.0", + "@angular/compiler": "^4.3.1", + "@angular/compiler-cli": "^4.3.1", + "@angular/forms": "^4.3.1", + "@angular/http": "^4.3.1", + "@angular/platform-browser": "^4.3.1", + "@angular/platform-browser-dynamic": "^4.3.1", + "@angular/router": "^4.3.1", "@edcarroll/code-style": "^1.0.1", "@types/extend": "^2.0.30", "@types/jasmine": "^2.5.53", @@ -88,8 +95,5 @@ "typescript": "~2.3.4", "web-animations-js": "^2.2.5", "zone.js": "^0.8.4" - }, - "peerDependencies": { - "typescript": "~2.3.0" } } From 95e714b6d93a16e96fa96e96cbcf92c9ce042507 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Thu, 27 Jul 2017 14:58:21 +0100 Subject: [PATCH 21/69] chore: Bumped version number --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19da9b429..777604121 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ng2-semantic-ui", - "version": "0.9.3", + "version": "0.9.4", "lockfileVersion": 1, "dependencies": { "@angular/cli": { diff --git a/package.json b/package.json index 62eff3a67..84a10edb8 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "main": "bundles/ng2-semantic-ui.umd.min.js", "module": "dist/public.js", "typings": "dist/public.d.ts", - "version": "0.9.3", + "version": "0.9.4", "description": "Angular 2 Semantic UI Components", "repository": { "type": "git", From ef28ac2f841401c19f945921cc14f892013aa235 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Thu, 27 Jul 2017 17:13:50 +0100 Subject: [PATCH 22/69] fix(dimmer): Dimmer no longer transitions when initially dimmed --- src/modules/dimmer/components/dimmer.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/dimmer/components/dimmer.ts b/src/modules/dimmer/components/dimmer.ts index 519eef333..24b7b939d 100644 --- a/src/modules/dimmer/components/dimmer.ts +++ b/src/modules/dimmer/components/dimmer.ts @@ -42,9 +42,10 @@ export class SuiDimmer extends SuiTransition { this._transitionController = new TransitionController(isDimmed, "block"); this.setTransitionController(this._transitionController); - } - if (this._isDimmed !== isDimmed) { + this._isDimmed = isDimmed; + } else if (this._isDimmed !== isDimmed) { + this._isDimmed = isDimmed; this._transitionController.stopAll(); From e7c43e662738ab8bf97524b49fd94330fd34dfad Mon Sep 17 00:00:00 2001 From: Lialosiu Date: Fri, 28 Jul 2017 16:01:34 +0800 Subject: [PATCH 23/69] fix(select): When sui-select ngModel set undefined, reset selectedOption --- src/modules/select/components/select.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index 3dab0384a..f7f175b51 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -116,6 +116,9 @@ export class SuiSelect extends SuiSelectBase implements ICustomValue this._writtenOption = value; } } + } else { + this.selectedOption = undefined; + this.drawSelectedOption(); } } From 1093a47b7fad677069be074874802600d9f9fa6d Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Fri, 28 Jul 2017 17:52:28 +0100 Subject: [PATCH 24/69] docs(readme): Added component support table Thank you to @medfx for the excellent suggestion! --- README.md | 54 +- package-lock.json | 4312 +++++++++++++++++++++++++++++++++++++++------ 2 files changed, 3827 insertions(+), 539 deletions(-) diff --git a/README.md b/README.md index 59c57dba9..2d5526943 100644 --- a/README.md +++ b/README.md @@ -43,31 +43,35 @@ See the [Documentation](https://edcarroll.github.io/ng2-semantic-ui) for install * [Angular](https://angular.io) (^4.3.1) * [Semantic UI CSS](http://semantic-ui.com/) (jQuery is **not** required) -## Components - -The current list of available components with links to their docs is below: - -* Collections - - [Message](https://edcarroll.github.io/ng2-semantic-ui/#/collections/message) - - [Pagination](https://edcarroll.github.io/ng2-semantic-ui/#/collections/pagination) -* Modules - - [Accordion](https://edcarroll.github.io/ng2-semantic-ui/#/modules/accordion) - - [Checkbox](https://edcarroll.github.io/ng2-semantic-ui/#/modules/checkbox) - - [Collapse](https://edcarroll.github.io/ng2-semantic-ui/#/modules/collapse) - - [Datepicker](https://edcarroll.github.io/ng2-semantic-ui/#/modules/datepicker) - - [Dimmer](https://edcarroll.github.io/ng2-semantic-ui/#/modules/dimmer) - - [Dropdown](https://edcarroll.github.io/ng2-semantic-ui/#/modules/dropdown) - - [Modal](https://edcarroll.github.io/ng2-semantic-ui/#/modules/modal) - - [Popup](https://edcarroll.github.io/ng2-semantic-ui/#/modules/popup) - - [Progress](https://edcarroll.github.io/ng2-semantic-ui/#/modules/progress) - - [Rating](https://edcarroll.github.io/ng2-semantic-ui/#/modules/rating) - - [Search](https://edcarroll.github.io/ng2-semantic-ui/#/modules/search) - - [Select](https://edcarroll.github.io/ng2-semantic-ui/#/modules/select) - - [Sidebar](https://edcarroll.github.io/ng2-semantic-ui/#/modules/sidebar) - - [Tabs](https://edcarroll.github.io/ng2-semantic-ui/#/modules/tabs) - - [Transition](https://edcarroll.github.io/ng2-semantic-ui/#/modules/transition) -* Behaviors - - [Localization](https://edcarroll.github.io/ng2-semantic-ui/#/behaviors/localization) +## Component Support + +| Icon | Description | +|-------------------------|-------------------------------------------------------------------------------------| +| :white_check_mark: | Component supported by ng2-semantic-ui. | +| :rocket: | Semantic UI plugin supported by ng2-semantic-ui (not in Semantic UI Core). | +| :ballot_box_with_check: | Component supported natively by [Semantic UI](https://semantic-ui.com/) (CSS only). | +| :x: | Component currently unavailable. | +| :no_entry_sign: | Component not applicable to Angular. | + +| Elements | Collections | Views | Modules | Behaviors | +|------------------------------------|------------------------------------|------------------------------------------|-----------------------------------|-------------------------------------| +| :ballot_box_with_check: Button | :ballot_box_with_check: Breadcrumb | :ballot_box_with_check: Advertisment | :white_check_mark: Accordion | :no_entry_sign: API | +| :ballot_box_with_check: Container | :ballot_box_with_check: Form | :ballot_box_with_check: Card | :white_check_mark: Checkbox | :no_entry_sign: Form Validation | +| :ballot_box_with_check: Divider | :ballot_box_with_check: Grid | :ballot_box_with_check: Comment | :rocket: Collapse | :rocket: Localization | +| :ballot_box_with_check: Flag | :ballot_box_with_check: Menu | :ballot_box_with_check: Feed | :rocket: Datepicker | :x: Visibiltiy | +| :ballot_box_with_check: Header | :white_check_mark: Message | :ballot_box_with_check: Item | :white_check_mark: Dimmer | | +| :ballot_box_with_check: Icon | :ballot_box_with_check: Table | :ballot_box_with_check: Statistic | :white_check_mark: Dropdown | | +| :ballot_box_with_check: Image | :rocket: Pagination | | :x: Embed | | +| :ballot_box_with_check: Input | | | :white_check_mark: Modal | | +| :ballot_box_with_check: Label | | | :white_check_mark: Popup | | +| :ballot_box_with_check: List | | | :white_check_mark: Progress | | +| :ballot_box_with_check: Loader | | | :white_check_mark: Rating | | +| :ballot_box_with_check: Rail | | | :white_check_mark: Search | | +| :ballot_box_with_check: Reveal | | | :x: Shape | | +| :ballot_box_with_check: Segment | | | :white_check_mark: Sidebar | | +| :ballot_box_with_check: Step | | | :x: Sticky | | +| | | | :white_check_mark: Tab | | +| | | | :white_check_mark: Transition | | ## Want to help? diff --git a/package-lock.json b/package-lock.json index 777604121..c9b233225 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,36 +2,113 @@ "name": "ng2-semantic-ui", "version": "0.9.4", "lockfileVersion": 1, + "requires": true, "dependencies": { "@angular/cli": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.2.0.tgz", "integrity": "sha1-39i4mD7DfCttf5AurWA5bXtXFZc=", - "dev": true + "dev": true, + "requires": { + "@ngtools/json-schema": "1.1.0", + "@ngtools/webpack": "1.5.0", + "autoprefixer": "6.7.7", + "chalk": "1.1.3", + "common-tags": "1.4.0", + "core-object": "3.1.3", + "css-loader": "0.28.4", + "cssnano": "3.10.0", + "denodeify": "1.2.1", + "diff": "3.2.0", + "ember-cli-normalize-entity-name": "1.0.0", + "ember-cli-string-utils": "1.1.0", + "exports-loader": "0.6.4", + "extract-text-webpack-plugin": "2.1.2", + "file-loader": "0.10.1", + "fs-extra": "3.0.1", + "get-caller-file": "1.0.2", + "glob": "7.1.2", + "heimdalljs": "0.2.5", + "heimdalljs-logger": "0.1.9", + "html-webpack-plugin": "2.29.0", + "inflection": "1.12.0", + "inquirer": "3.1.1", + "isbinaryfile": "3.0.2", + "istanbul-instrumenter-loader": "2.0.0", + "json-loader": "0.5.4", + "less": "2.7.2", + "less-loader": "4.0.4", + "license-webpack-plugin": "0.4.3", + "lodash": "4.17.4", + "memory-fs": "0.4.1", + "minimatch": "3.0.4", + "node-modules-path": "1.0.1", + "node-sass": "4.5.3", + "nopt": "4.0.1", + "opn": "4.0.2", + "portfinder": "1.0.13", + "postcss-loader": "1.3.3", + "postcss-url": "5.1.2", + "raw-loader": "0.5.1", + "resolve": "1.3.3", + "rsvp": "3.6.0", + "rxjs": "5.4.1", + "sass-loader": "6.0.6", + "script-loader": "0.7.0", + "semver": "5.3.0", + "silent-error": "1.1.0", + "source-map-loader": "0.2.1", + "style-loader": "0.13.2", + "stylus": "0.54.5", + "stylus-loader": "3.0.1", + "temp": "0.8.3", + "typescript": "2.3.4", + "url-loader": "0.5.9", + "walk-sync": "0.3.2", + "webpack": "2.4.1", + "webpack-dev-middleware": "1.11.0", + "webpack-dev-server": "2.4.5", + "webpack-merge": "2.6.1", + "zone.js": "0.8.12" + } }, "@angular/common": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.3.1.tgz", "integrity": "sha1-Jg9IenzcoybENr0+qVFceX3i/3I=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/compiler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.3.1.tgz", "integrity": "sha1-OiTUns8BrCtuB/Y+N4uP+OJX/gk=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/compiler-cli": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.3.1.tgz", "integrity": "sha1-ALQa+2+utK71YbhCeASsiICv9jw=", "dev": true, + "requires": { + "@angular/tsc-wrapped": "4.3.1", + "minimist": "1.2.0", + "reflect-metadata": "0.1.10" + }, "dependencies": { "@angular/tsc-wrapped": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.1.tgz", "integrity": "sha1-9mFqTSo7vsHN7WZP0fUm7c6Z70E=", - "dev": true + "dev": true, + "requires": { + "tsickle": "0.21.6" + } }, "minimist": { "version": "1.2.0", @@ -45,49 +122,81 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.3.1.tgz", "integrity": "sha1-qdCn1kS5YmBnQmm2iaBP7qYyqNM=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/forms": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.3.1.tgz", "integrity": "sha1-M5FNossUZDD/kBRx5oLHZlRiLf4=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/http": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.3.1.tgz", "integrity": "sha1-5PZh90ZxHojsvqdqPJBbq/l9MVo=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/platform-browser": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.3.1.tgz", "integrity": "sha1-23J7Bu7WS9pd7+xxgV2yak2i9pA=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/platform-browser-dynamic": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.3.1.tgz", "integrity": "sha1-hANNpgqC7zbn7/2ns63m5kWzMLM=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/router": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.3.1.tgz", "integrity": "sha1-UhnURSYVbYFgZYQRJ2EBZaAVtFA=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@edcarroll/code-style": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@edcarroll/code-style/-/code-style-1.0.1.tgz", "integrity": "sha512-hb9mwF9ZKMyRrG+X7l/q6OTxN2gHTcSZHu0FMQUlMCquVYuQULmbxFIHW6li+d18UEDerMS9pBisP8A9SI0HDg==", "dev": true, + "requires": { + "codelyzer": "3.1.2", + "tslint": "5.4.3", + "tslint-eslint-rules": "4.1.1", + "vrsource-tslint-rules": "5.1.0" + }, "dependencies": { "codelyzer": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-3.1.2.tgz", "integrity": "sha1-n/HwQfubXuXb60W6hm368EmDrwQ=", - "dev": true + "dev": true, + "requires": { + "app-root-path": "2.0.1", + "css-selector-tokenizer": "0.7.0", + "cssauron": "1.4.0", + "semver-dsl": "1.0.1", + "source-map": "0.5.6", + "sprintf-js": "1.0.3" + } } } }, @@ -101,7 +210,13 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.5.0.tgz", "integrity": "sha1-tr5Y2FfUH4mZdR1rvD0h6EvJd8o=", - "dev": true + "dev": true, + "requires": { + "enhanced-resolve": "3.3.0", + "loader-utils": "1.1.0", + "magic-string": "0.19.1", + "source-map": "0.5.6" + } }, "@types/extend": { "version": "2.0.30", @@ -154,7 +269,11 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true + "dev": true, + "requires": { + "mime-types": "2.1.15", + "negotiator": "0.6.1" + } }, "acorn": { "version": "5.0.3", @@ -167,6 +286,9 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, + "requires": { + "acorn": "4.0.13" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -193,6 +315,10 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", "dev": true, + "requires": { + "extend": "3.0.1", + "semver": "5.0.3" + }, "dependencies": { "semver": { "version": "5.0.3", @@ -206,7 +332,13 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "0.1.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } }, "ajv-keywords": { "version": "1.5.1", @@ -218,7 +350,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "alphanum-sort": { "version": "1.0.2", @@ -266,7 +403,11 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } }, "app-root-path": { "version": "2.0.1", @@ -278,7 +419,10 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } }, "aproba": { "version": "1.1.2", @@ -290,19 +434,29 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.0.3" + } }, "arr-flatten": { "version": "1.0.3", @@ -356,7 +510,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -399,13 +556,21 @@ "version": "4.9.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true + "dev": true, + "requires": { + "util": "0.10.3" + } }, "assert-plus": { "version": "0.2.0", @@ -417,7 +582,10 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "async-each": { "version": "1.0.1", @@ -442,7 +610,15 @@ "version": "6.7.7", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000696", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "aws-sign2": { "version": "0.6.0", @@ -460,13 +636,28 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } }, "babel-generator": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + }, "dependencies": { "jsesc": { "version": "1.3.0", @@ -480,31 +671,62 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-runtime": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "dev": true + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-template": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } }, "babel-traverse": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } }, "babel-types": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } }, "babylon": { "version": "6.17.4", @@ -553,7 +775,10 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "beeper": { "version": "1.1.1", @@ -565,7 +790,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true + "dev": true, + "requires": { + "callsite": "1.0.0" + } }, "big.js": { "version": "3.1.3", @@ -590,13 +818,21 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, - "optional": true + "optional": true, + "requires": { + "inherits": "2.0.3" + } }, "blocking-proxy": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.2.tgz", "integrity": "sha1-8zZLTlwrJmugHWmyocls2Jt2gN4=", "dev": true, + "requires": { + "es6-promise": "4.0.5", + "minimist": "1.2.0", + "selenium-webdriver": "2.53.3" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -608,7 +844,14 @@ "version": "2.53.3", "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", - "dev": true + "dev": true, + "requires": { + "adm-zip": "0.4.4", + "rimraf": "2.6.1", + "tmp": "0.0.24", + "ws": "1.1.1", + "xml2js": "0.4.4" + } }, "tmp": { "version": "0.0.24", @@ -635,6 +878,18 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", "dev": true, + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.6.7", + "depd": "1.1.0", + "http-errors": "1.6.1", + "iconv-lite": "0.4.15", + "on-finished": "2.3.0", + "qs": "6.4.0", + "raw-body": "2.2.0", + "type-is": "1.6.15" + }, "dependencies": { "bytes": { "version": "2.4.0", @@ -646,7 +901,10 @@ "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "iconv-lite": { "version": "0.4.15", @@ -666,7 +924,10 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "bowser": { "version": "1.7.0", @@ -678,6 +939,10 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, "dependencies": { "balanced-match": { "version": "1.0.0", @@ -691,7 +956,12 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "brorand": { "version": "1.1.0", @@ -704,6 +974,9 @@ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", "dev": true, + "requires": { + "resolve": "1.1.7" + }, "dependencies": { "resolve": { "version": "1.1.7", @@ -717,49 +990,91 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "dev": true + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.3", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "inherits": "2.0.3" + } }, "browserify-cipher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true + "dev": true, + "requires": { + "browserify-aes": "1.0.6", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.0" + } }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "des.js": "1.0.0", + "inherits": "2.0.3" + } }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "randombytes": "2.0.5" + } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } }, "browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true + "dev": true, + "requires": { + "pako": "0.2.9" + } }, "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true + "dev": true, + "requires": { + "caniuse-db": "1.0.30000696", + "electron-to-chromium": "1.3.15" + } }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } }, "buffer-xor": { "version": "1.0.3", @@ -795,7 +1110,11 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true + "dev": true, + "requires": { + "no-case": "2.3.1", + "upper-case": "1.1.3" + } }, "camelcase": { "version": "2.1.1", @@ -807,13 +1126,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000696", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } }, "caniuse-db": { "version": "1.0.30000696", @@ -832,6 +1161,10 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + }, "dependencies": { "lazy-cache": { "version": "1.0.4", @@ -846,6 +1179,13 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, "dependencies": { "supports-color": { "version": "2.0.0", @@ -859,13 +1199,32 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "chokidar-cli": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-1.2.0.tgz", "integrity": "sha1-jn9YRCJzGCAYvhho5Twir2WiGUg=", "dev": true, + "requires": { + "anymatch": "1.3.0", + "bluebird": "2.11.0", + "chokidar": "1.7.0", + "lodash": "3.10.1", + "shell-quote": "1.6.1", + "yargs": "3.32.0" + }, "dependencies": { "bluebird": { "version": "2.11.0", @@ -877,7 +1236,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "lodash": { "version": "3.10.1", @@ -889,7 +1251,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "window-size": { "version": "0.1.4", @@ -901,7 +1268,16 @@ "version": "3.32.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true + "dev": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } } } }, @@ -909,25 +1285,37 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "clap": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3" + } }, "clean-css": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.5.tgz", "integrity": "sha1-0JqHoCpTdRF1iXlq52oGPKzbVBo=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } }, "cli-width": { "version": "2.1.0", @@ -940,25 +1328,43 @@ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", "dev": true, - "optional": true + "optional": true, + "requires": { + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.0" + } }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -972,7 +1378,13 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", - "dev": true + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.3", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" + } }, "clone-stats": { "version": "0.0.1", @@ -990,7 +1402,10 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", "integrity": "sha1-G1Sl4dz3fJkEVdTe6pjFZEFtyJM=", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "code-point-at": { "version": "1.1.0", @@ -1002,13 +1417,21 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true + "dev": true, + "requires": { + "clone": "1.0.2", + "color-convert": "1.9.0", + "color-string": "0.3.0" + } }, "color-convert": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.2" + } }, "color-name": { "version": "1.1.2", @@ -1020,13 +1443,21 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.2" + } }, "colormin": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } }, "colors": { "version": "1.1.2", @@ -1038,25 +1469,37 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } }, "common-tags": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz", "integrity": "sha1-EYe+Tz1M8MBCfUP3Tu8fc1AWFMA=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "component-bind": { "version": "1.0.0", @@ -1080,19 +1523,33 @@ "version": "2.0.10", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "compression": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", "dev": true, + "requires": { + "accepts": "1.3.3", + "bytes": "2.3.0", + "compressible": "2.0.10", + "debug": "2.2.0", + "on-headers": "1.0.1", + "vary": "1.1.1" + }, "dependencies": { "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.1" + } }, "ms": { "version": "0.7.1", @@ -1113,12 +1570,25 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, "dependencies": { "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } }, "string_decoder": { "version": "0.10.31", @@ -1133,12 +1603,21 @@ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", "dev": true, + "requires": { + "debug": "2.6.7", + "finalhandler": "1.0.3", + "parseurl": "1.3.1", + "utils-merge": "1.0.0" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, @@ -1152,7 +1631,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, "console-control-strings": { "version": "1.1.0", @@ -1206,7 +1688,10 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/core-object/-/core-object-3.1.3.tgz", "integrity": "sha1-3zmbMxG9sMkJ6Krokp/DwcSyWIA=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3" + } }, "core-util-is": { "version": "1.0.2", @@ -1219,6 +1704,15 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.1.3.tgz", "integrity": "sha1-lSdx6w3dwcs/ovb75RpSLpOz7go=", "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1232,38 +1726,75 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "elliptic": "6.4.0" + } }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } }, "cross-spawn": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "dev": true, - "optional": true + "optional": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.2.14" + } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1" + } }, "crypto-browserify": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", - "dev": true + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.12", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } }, "css-color-names": { "version": "0.0.4", @@ -1275,7 +1806,23 @@ "version": "0.28.4", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", "integrity": "sha1-bPNXkZLONV6LONX0Ldeh8uyJjQ8=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "0.1.8" + } }, "css-parse": { "version": "1.7.0", @@ -1287,13 +1834,24 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } }, "css-selector-tokenizer": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + } }, "css-what": { "version": "2.1.0", @@ -1305,7 +1863,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "cssesc": { "version": "0.1.0", @@ -1317,19 +1878,60 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + } }, "csso": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true + "dev": true, + "requires": { + "clap": "1.2.0", + "source-map": "0.5.6" + } }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } }, "custom-event": { "version": "1.0.1", @@ -1342,6 +1944,9 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1366,13 +1971,20 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -1390,13 +2002,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } }, "defined": { "version": "1.0.0", @@ -1408,7 +2027,16 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } }, "delayed-stream": { "version": "1.0.0", @@ -1445,7 +2073,11 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "destroy": { "version": "1.0.4", @@ -1457,7 +2089,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "detect-node": { "version": "2.0.3", @@ -1481,25 +2116,44 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } }, "directory-encoder": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/directory-encoder/-/directory-encoder-0.7.2.tgz", "integrity": "sha1-WbTiqk8lQi9sY7UntGL14tDdLFg=", "dev": true, + "requires": { + "fs-extra": "0.23.1", + "handlebars": "1.3.0", + "img-stats": "0.5.2" + }, "dependencies": { "fs-extra": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.1" + } }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } } } }, @@ -1508,6 +2162,10 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", "dev": true, + "requires": { + "esutils": "1.1.6", + "isarray": "0.0.1" + }, "dependencies": { "esutils": { "version": "1.1.6", @@ -1528,6 +2186,9 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", "dev": true, + "requires": { + "utila": "0.3.3" + }, "dependencies": { "utila": { "version": "0.3.3", @@ -1541,13 +2202,23 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true + "dev": true, + "requires": { + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.1", + "void-elements": "2.0.1" + } }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, "dependencies": { "domelementtype": { "version": "1.1.3", @@ -1573,19 +2244,29 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } }, "domutils": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } }, "duplexer2": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -1597,7 +2278,13 @@ "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } }, "string_decoder": { "version": "0.10.31", @@ -1612,7 +2299,10 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "ee-first": { "version": "1.1.1", @@ -1635,13 +2325,25 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "ember-cli-normalize-entity-name": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ember-cli-normalize-entity-name/-/ember-cli-normalize-entity-name-1.0.0.tgz", "integrity": "sha1-CxT3vLxZmqEXtf3cgeT9A8S61bc=", - "dev": true + "dev": true, + "requires": { + "silent-error": "1.1.0" + } }, "ember-cli-string-utils": { "version": "1.1.0", @@ -1666,12 +2368,23 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.2.tgz", "integrity": "sha1-a1m+cws0jAElsKRYneHDVavPen4=", "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -1686,6 +2399,20 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.2.tgz", "integrity": "sha1-w4dnVH8qfRhPV1L28K1QEAZwN2Y=", "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.1", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -1697,7 +2424,10 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -1711,13 +2441,27 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } }, "enhanced-resolve": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.6" + } }, "ensure-posix-path": { "version": "1.0.2", @@ -1741,13 +2485,19 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true + "dev": true, + "requires": { + "prr": "0.0.0" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es6-promise": { "version": "4.0.5", @@ -1772,13 +2522,23 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + }, "dependencies": { "source-map": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -1828,13 +2588,19 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true + "dev": true, + "requires": { + "original": "1.0.0" + } }, "evp_bytestokey": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3" + } }, "exit": { "version": "0.1.2", @@ -1847,18 +2613,30 @@ "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, + "requires": { + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" + }, "dependencies": { "braces": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true + "dev": true, + "requires": { + "expand-range": "0.1.1" + } }, "expand-range": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true + "dev": true, + "requires": { + "is-number": "0.1.1", + "repeat-string": "0.2.2" + } }, "is-number": { "version": "0.1.1", @@ -1878,31 +2656,74 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true + "dev": true, + "requires": { + "fill-range": "2.2.3" + } }, "exports-loader": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz", "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=", - "dev": true + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.6" + } }, "express": { "version": "4.15.3", "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", "dev": true, + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.7", + "depd": "1.1.0", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.3", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.4", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.3", + "serve-static": "1.12.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, @@ -1915,25 +2736,45 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", - "dev": true + "dev": true, + "requires": { + "iconv-lite": "0.4.18", + "jschardet": "1.4.2", + "tmp": "0.0.31" + } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "extract-text-webpack-plugin": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=", - "dev": true + "dev": true, + "requires": { + "async": "2.5.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.0.1" + } }, "extract-zip": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", "dev": true, + "requires": { + "concat-stream": "1.5.0", + "debug": "0.7.4", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, "dependencies": { "debug": { "version": "0.7.4", @@ -1945,7 +2786,10 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } } } }, @@ -1959,7 +2803,11 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } }, "fast-deep-equal": { "version": "0.1.0", @@ -1983,25 +2831,37 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true + "dev": true, + "requires": { + "websocket-driver": "0.6.5" + } }, "fd-slicer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true + "dev": true, + "requires": { + "pend": "1.2.0" + } }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } }, "file-loader": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.10.1.tgz", "integrity": "sha1-gVA0EZiR/GRB+1pkwRvJPCLd2EI=", - "dev": true + "dev": true, + "requires": { + "loader-utils": "1.1.0" + } }, "filename-regex": { "version": "2.0.1", @@ -2013,19 +2873,33 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + }, "dependencies": { "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } } } }, @@ -2034,12 +2908,24 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", "dev": true, + "requires": { + "debug": "2.6.7", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, @@ -2047,19 +2933,33 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "findup-sync": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, + "requires": { + "glob": "5.0.15" + }, "dependencies": { "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } } } }, @@ -2079,7 +2979,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "foreach": { "version": "2.0.5", @@ -2097,7 +3000,12 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "forwarded": { "version": "0.1.0", @@ -2115,13 +3023,21 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true + "dev": true, + "requires": { + "null-check": "1.0.0" + } }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.0", + "universalify": "0.1.0" + } }, "fs.realpath": { "version": "1.0.0", @@ -2135,6 +3051,10 @@ "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "dev": true, "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -2148,7 +3068,11 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, - "optional": true + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ansi-regex": { "version": "2.1.1", @@ -2168,7 +3092,11 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, - "optional": true + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } }, "asn1": { "version": "0.2.3", @@ -2216,25 +3144,38 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -2266,7 +3207,10 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "concat-map": { "version": "0.0.1", @@ -2291,7 +3235,10 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1" + } }, "dashdash": { "version": "1.14.1", @@ -2299,6 +3246,9 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2314,7 +3264,10 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, - "optional": true + "optional": true, + "requires": { + "ms": "2.0.0" + } }, "deep-extend": { "version": "0.4.2", @@ -2341,7 +3294,10 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "extend": { "version": "3.0.1", @@ -2368,7 +3324,12 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, - "optional": true + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "fs.realpath": { "version": "1.0.0", @@ -2380,21 +3341,42 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "fstream-ignore": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, - "optional": true + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } }, "getpass": { "version": "0.1.7", @@ -2402,6 +3384,9 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2416,7 +3401,15 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -2436,7 +3429,11 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, - "optional": true + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } }, "has-unicode": { "version": "2.0.1", @@ -2450,7 +3447,13 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -2463,13 +3466,22 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, - "optional": true + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2488,7 +3500,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-typedarray": { "version": "1.0.0", @@ -2515,7 +3530,10 @@ "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "jsbn": { "version": "0.1.1", @@ -2536,7 +3554,10 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -2558,6 +3579,12 @@ "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2578,13 +3605,19 @@ "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -2596,7 +3629,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -2610,21 +3646,42 @@ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", "dev": true, - "optional": true + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } }, "nopt": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "npmlog": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", "dev": true, - "optional": true + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -2650,7 +3707,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "os-homedir": { "version": "1.0.2", @@ -2671,7 +3731,11 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "dev": true, - "optional": true + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "path-is-absolute": { "version": "1.0.1", @@ -2712,6 +3776,12 @@ "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -2726,20 +3796,56 @@ "version": "2.2.9", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "dev": true + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } }, "request": { "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, - "optional": true - }, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "safe-buffer": { "version": "5.0.1", @@ -2773,7 +3879,10 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, - "optional": true + "optional": true, + "requires": { + "hoek": "2.16.3" + } }, "sshpk": { "version": "1.13.0", @@ -2781,6 +3890,17 @@ "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "dev": true, "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2795,13 +3915,21 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -2814,7 +3942,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -2827,28 +3958,49 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } }, "tar-pack": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "dev": true, - "optional": true + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } }, "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, - "optional": true + "optional": true, + "requires": { + "punycode": "1.4.1" + } }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "optional": true + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -2882,14 +4034,20 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, - "optional": true + "optional": true, + "requires": { + "string-width": "1.0.2" + } }, "wrappy": { "version": "1.0.2", @@ -2903,7 +4061,13 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "function-bind": { "version": "1.1.0", @@ -2916,18 +4080,36 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, + "requires": { + "aproba": "1.1.2", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -2936,7 +4118,10 @@ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "globule": "1.2.0" + } }, "generate-function": { "version": "2.0.0", @@ -2948,7 +4133,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true + "dev": true, + "requires": { + "is-property": "1.0.2" + } }, "get-caller-file": { "version": "1.0.2", @@ -2967,6 +4155,9 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2980,19 +4171,34 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.18.0", @@ -3004,27 +4210,46 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "globule": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "dev": true, - "optional": true + "optional": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + } }, "glogg": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", - "dev": true + "dev": true, + "requires": { + "sparkles": "1.0.0" + } }, "good-listener": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", "dev": true, - "optional": true + "optional": true, + "requires": { + "delegate": "3.1.3" + } }, "graceful-fs": { "version": "4.1.11", @@ -3043,6 +4268,26 @@ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=", "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "1.0.12", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.1", + "vinyl": "0.5.3" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -3062,7 +4307,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true + "dev": true, + "requires": { + "glogg": "1.0.0" + } }, "handle-thing": { "version": "1.2.5", @@ -3075,6 +4323,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.3.0.tgz", "integrity": "sha1-npsTCpPjiUkTItl1zz7BgYw3zjQ=", "dev": true, + "requires": { + "optimist": "0.3.7", + "uglify-js": "2.3.6" + }, "dependencies": { "async": { "version": "0.2.10", @@ -3088,14 +4340,22 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } }, "uglify-js": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=", "dev": true, - "optional": true + "optional": true, + "requires": { + "async": "0.2.10", + "optimist": "0.3.7", + "source-map": "0.1.43" + } } } }, @@ -3110,12 +4370,20 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, "dependencies": { "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } } } }, @@ -3123,19 +4391,28 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true + "dev": true, + "requires": { + "function-bind": "1.1.0" + } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-binary": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", "dev": true, + "requires": { + "isarray": "0.0.1" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -3161,7 +4438,10 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true + "dev": true, + "requires": { + "sparkles": "1.0.0" + } }, "has-unicode": { "version": "2.0.1", @@ -3173,25 +4453,42 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "hash.js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "hasha": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "he": { "version": "1.1.1", @@ -3204,6 +4501,9 @@ "resolved": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.5.tgz", "integrity": "sha1-aqVDCO7nk7ZCz/nPlHgURfN3MKw=", "dev": true, + "requires": { + "rsvp": "3.2.1" + }, "dependencies": { "rsvp": { "version": "3.2.1", @@ -3217,13 +4517,22 @@ "version": "0.1.9", "resolved": "https://registry.npmjs.org/heimdalljs-logger/-/heimdalljs-logger-0.1.9.tgz", "integrity": "sha1-12raTkW3u294b8nAEKaOsuL68XY=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "heimdalljs": "0.2.5" + } }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "hoek": { "version": "2.16.3", @@ -3241,7 +4550,13 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } }, "html-comment-regex": { "version": "1.1.1", @@ -3259,19 +4574,43 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", - "dev": true + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.5", + "commander": "2.9.0", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.0.23" + } }, "html-webpack-plugin": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", "dev": true, + "requires": { + "bluebird": "3.5.0", + "html-minifier": "3.5.2", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.3" + }, "dependencies": { "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } } } }, @@ -3280,12 +4619,21 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, "dependencies": { "domutils": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } }, "isarray": { "version": "0.0.1", @@ -3297,7 +4645,13 @@ "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } }, "string_decoder": { "version": "0.10.31", @@ -3317,19 +4671,35 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "dev": true + "dev": true, + "requires": { + "depd": "1.1.0", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } }, "http-proxy": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } }, "http-proxy-middleware": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, "dependencies": { "is-extglob": { "version": "2.1.1", @@ -3341,7 +4711,10 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } } } }, @@ -3349,7 +4722,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.1" + } }, "https-browserify": { "version": "0.0.1", @@ -3361,7 +4739,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", - "dev": true + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.8", + "extend": "3.0.1" + } }, "iconv-lite": { "version": "0.4.18", @@ -3380,18 +4763,29 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, + "requires": { + "postcss": "6.0.5" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.1.0" + } }, "has-flag": { "version": "2.0.0", @@ -3403,13 +4797,21 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.5.tgz", "integrity": "sha1-76NPdFyiW9Ozy9FapOAxErgjfzw=", - "dev": true + "dev": true, + "requires": { + "chalk": "2.0.1", + "source-map": "0.5.6", + "supports-color": "4.1.0" + } }, "supports-color": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -3430,7 +4832,10 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/img-stats/-/img-stats-0.5.2.tgz", "integrity": "sha1-wgNJbELy2esuWrgjL6dWurMsnis=", - "dev": true + "dev": true, + "requires": { + "xmldom": "0.1.27" + } }, "in-publish": { "version": "2.0.0", @@ -3443,7 +4848,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "indexes-of": { "version": "1.0.1", @@ -3467,7 +4875,11 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -3485,7 +4897,23 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.1.tgz", "integrity": "sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ==", - "dev": true + "dev": true, + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "1.1.3", + "cli-cursor": "2.1.0", + "cli-width": "2.1.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.0", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } }, "interpret": { "version": "1.0.3", @@ -3497,7 +4925,10 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -3527,7 +4958,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.8.0" + } }, "is-buffer": { "version": "1.1.5", @@ -3539,7 +4973,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-directory": { "version": "0.3.1", @@ -3557,7 +4994,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -3575,7 +5015,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -3587,19 +5030,31 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-my-json-valid": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-path-cwd": { "version": "1.0.0", @@ -3611,13 +5066,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } }, "is-plain-obj": { "version": "1.1.0", @@ -3629,7 +5090,10 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.3.tgz", "integrity": "sha1-wVvz5LZrYtcu+vKSWEhmPsvGGbY=", - "dev": true + "dev": true, + "requires": { + "isobject": "3.0.1" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -3665,7 +5129,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } }, "is-typedarray": { "version": "1.0.0", @@ -3714,6 +5181,22 @@ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.10", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.14", + "wordwrap": "1.0.0" + }, "dependencies": { "abbrev": { "version": "1.0.9", @@ -3740,6 +5223,11 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -3754,25 +5242,45 @@ "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "handlebars": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "dev": true + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + } }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.0.9" + } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, "dependencies": { "wordwrap": { "version": "0.0.3", @@ -3792,7 +5300,10 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } }, "uglify-js": { "version": "2.8.29", @@ -3800,6 +5311,11 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "source-map": { "version": "0.5.6", @@ -3821,7 +5337,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -3829,19 +5351,44 @@ "version": "1.1.10", "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.10.tgz", "integrity": "sha1-8n5ecSXI3hP2qAZhr3j1EuVDmys=", - "dev": true + "dev": true, + "requires": { + "async": "2.5.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.0.7", + "istanbul-lib-instrument": "1.7.3", + "istanbul-lib-report": "1.1.1", + "istanbul-lib-source-maps": "1.2.1", + "istanbul-reports": "1.1.1", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } }, "istanbul-instrumenter-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0.tgz", "integrity": "sha1-5UkpAKsLuoNe+oAkywC+mz7qJwA=", "dev": true, + "requires": { + "convert-source-map": "1.5.0", + "istanbul-lib-instrument": "1.7.3", + "loader-utils": "0.2.17", + "object-assign": "4.1.1" + }, "dependencies": { "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } } } }, @@ -3855,31 +5402,59 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", - "dev": true + "dev": true, + "requires": { + "append-transform": "0.4.0" + } }, "istanbul-lib-instrument": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.3.tgz", "integrity": "sha1-klsjkWPqvdaMxASPUsL6T4mez6c=", - "dev": true + "dev": true, + "requires": { + "babel-generator": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.3.0" + } }, "istanbul-lib-report": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", - "dev": true + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + } }, "istanbul-lib-source-maps": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" + } }, "istanbul-reports": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", "dev": true, + "requires": { + "handlebars": "4.0.10" + }, "dependencies": { "async": { "version": "1.5.2", @@ -3900,6 +5475,11 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -3914,19 +5494,32 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "dev": true + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } }, "uglify-js": { "version": "2.8.29", @@ -3934,6 +5527,11 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "source-map": { "version": "0.5.6", @@ -3949,7 +5547,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -3958,12 +5562,21 @@ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.4.1.tgz", "integrity": "sha1-kBbdpFMhPSesbUPcTqlzFaGJCF4=", "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "3.2.11", + "jasmine-core": "2.4.1" + }, "dependencies": { "glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } }, "jasmine-core": { "version": "2.4.1", @@ -3981,7 +5594,11 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } } } }, @@ -3995,13 +5612,20 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-3.2.0.tgz", "integrity": "sha1-/b6FqAzN07J2dGvHf96Dwc53Pv8=", - "dev": true + "dev": true, + "requires": { + "colors": "1.1.2" + } }, "jasminewd2": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-0.1.1.tgz", "integrity": "sha1-Wt/wgNV2wKS4Y3zPt4lU0n7LfNw=", - "dev": true + "dev": true, + "requires": { + "jasmine": "2.4.1", + "selenium-webdriver": "3.0.1" + } }, "js-base64": { "version": "2.1.9", @@ -4019,7 +5643,11 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } }, "jsbn": { "version": "0.1.1", @@ -4062,7 +5690,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true + "dev": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -4086,7 +5717,10 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.0.tgz", "integrity": "sha1-kufHRE5f/V+jLmqa6LhQNN+DR9A=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "jsonify": { "version": "0.0.0", @@ -4105,6 +5739,12 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -4119,6 +5759,35 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-1.4.1.tgz", "integrity": "sha1-QZgacdVCN2BrCj6oxYyQdz9BZQ4=", "dev": true, + "requires": { + "bluebird": "3.5.0", + "body-parser": "1.17.2", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.2", + "core-js": "2.4.1", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.16.2", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.3.6", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.1.5", + "range-parser": "1.2.0", + "rimraf": "2.6.1", + "safe-buffer": "5.1.1", + "socket.io": "1.7.2", + "source-map": "0.5.6", + "tmp": "0.0.28", + "useragent": "2.1.13" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -4130,13 +5799,20 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } }, "tmp": { "version": "0.0.28", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } } } }, @@ -4144,13 +5820,21 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.0.0.tgz", "integrity": "sha1-wnkMWjKxVXfQ//Wk1aJwOztDnCU=", - "dev": true + "dev": true, + "requires": { + "fs-access": "1.0.1", + "which": "1.2.14" + } }, "karma-coverage-istanbul-reporter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz", "integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=", - "dev": true + "dev": true, + "requires": { + "istanbul-api": "1.1.10", + "minimatch": "3.0.4" + } }, "karma-jasmine": { "version": "1.1.0", @@ -4162,25 +5846,40 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", - "dev": true + "dev": true, + "requires": { + "karma-jasmine": "1.1.0" + } }, "karma-min-reporter": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/karma-min-reporter/-/karma-min-reporter-0.1.0.tgz", "integrity": "sha1-RJykbylfHC687NthAtA/0gNhn2o=", - "dev": true + "dev": true, + "requires": { + "colors": "1.1.2" + } }, "karma-phantomjs-launcher": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4", + "phantomjs-prebuilt": "2.1.14" + } }, "karma-remap-istanbul": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/karma-remap-istanbul/-/karma-remap-istanbul-0.4.0.tgz", "integrity": "sha1-Hyb/NAgazAY8j9Gl4CbeX9nQoIE=", - "dev": true + "dev": true, + "requires": { + "istanbul": "0.4.5", + "object.assign": "4.0.4", + "remap-istanbul": "0.6.4" + } }, "kew": { "version": "0.7.0", @@ -4192,13 +5891,19 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "lazy-cache": { "version": "0.2.7", @@ -4210,19 +5915,37 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } }, "less": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/less/-/less-2.7.2.tgz", "integrity": "sha1-No1sxz4fsDmBGDKAkYdDxdz5s98=", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.3.6", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.6" + } }, "less-loader": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.4.tgz", "integrity": "sha1-tKjEOEPmXGfS6i6xRltcQjPVAGo=", "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "2.3.0" + }, "dependencies": { "clone": { "version": "2.1.1", @@ -4236,19 +5959,33 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "license-webpack-plugin": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-0.4.3.tgz", "integrity": "sha1-+diNTrwEQHoAYejMrCZXH4jlGhY=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1" + } }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } }, "loader-runner": { "version": "2.3.0", @@ -4260,7 +5997,12 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } }, "lodash": { "version": "4.17.4", @@ -4345,7 +6087,10 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } }, "lodash.isarguments": { "version": "3.1.0", @@ -4363,7 +6108,12 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } }, "lodash.memoize": { "version": "4.1.2", @@ -4394,13 +6144,28 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } }, "lodash.templatesettings": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } }, "lodash.uniq": { "version": "4.5.0", @@ -4413,6 +6178,10 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -4424,7 +6193,13 @@ "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } }, "semver": { "version": "4.3.6", @@ -4450,13 +6225,20 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } }, "lower-case": { "version": "1.1.4", @@ -4469,7 +6251,11 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, - "optional": true + "optional": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "macaddress": { "version": "0.2.8", @@ -4481,7 +6267,10 @@ "version": "0.19.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz", "integrity": "sha1-FNdoATyvLsj96hakmvgvw3fnUgE=", - "dev": true + "dev": true, + "requires": { + "vlq": "0.2.2" + } }, "make-error": { "version": "1.3.0", @@ -4499,7 +6288,10 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.4.tgz", "integrity": "sha1-L2auCGmZbynkPQtiyD3R1D5YF1U=", - "dev": true + "dev": true, + "requires": { + "minimatch": "3.0.4" + } }, "math-expression-evaluator": { "version": "1.2.17", @@ -4517,13 +6309,29 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -4549,13 +6357,32 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "miller-rabin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "brorand": "1.1.0" + } }, "mime": { "version": "1.3.6", @@ -4573,7 +6400,10 @@ "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "mimic-fn": { "version": "1.1.0", @@ -4597,7 +6427,10 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -4610,6 +6443,10 @@ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, "dependencies": { "for-in": { "version": "0.1.8", @@ -4623,7 +6460,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -4635,7 +6475,10 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } }, "mute-stream": { "version": "0.0.7", @@ -4654,7 +6497,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } }, "negotiator": { "version": "0.6.1", @@ -4666,7 +6512,10 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", - "dev": true + "dev": true, + "requires": { + "lower-case": "1.1.4" + } }, "node-gyp": { "version": "3.6.2", @@ -4674,13 +6523,31 @@ "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", "dev": true, "optional": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.2.14" + }, "dependencies": { "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0" + } } } }, @@ -4689,6 +6556,31 @@ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, "dependencies": { "string_decoder": { "version": "0.10.31", @@ -4709,25 +6601,58 @@ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", "dev": true, - "optional": true + "optional": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.6.2", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.81.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" + } }, "nopt": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } }, "normalize-range": { "version": "0.1.2", @@ -4739,19 +6664,34 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true + "dev": true, + "requires": { + "boolbase": "1.0.0" + } }, "null-check": { "version": "1.0.0", @@ -4799,19 +6739,31 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.0", + "object-keys": "1.0.11" + } }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + }, "dependencies": { "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } } } }, @@ -4825,7 +6777,10 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, "on-headers": { "version": "1.0.1", @@ -4837,31 +6792,52 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } }, "optimist": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "dev": true + "dev": true, + "requires": { + "wordwrap": "0.0.3" + } }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, "dependencies": { "wordwrap": { "version": "1.0.0", @@ -4882,12 +6858,19 @@ "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, + "requires": { + "url-parse": "1.0.5" + }, "dependencies": { "url-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } } } }, @@ -4907,7 +6890,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true + "dev": true, + "requires": { + "lcid": "1.0.0" + } }, "os-tmpdir": { "version": "1.0.2", @@ -4919,7 +6905,11 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "pako": { "version": "0.2.9", @@ -4931,43 +6921,71 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true + "dev": true, + "requires": { + "no-case": "2.3.1" + } }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.6", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "pbkdf2": "3.0.12" + } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parsejson": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseuri": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseurl": { "version": "1.3.1", @@ -4985,7 +7003,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "path-is-absolute": { "version": "1.0.1", @@ -5015,13 +7036,25 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pbkdf2": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } }, "pend": { "version": "1.2.0", @@ -5040,6 +7073,17 @@ "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", "dev": true, + "requires": { + "es6-promise": "4.0.5", + "extract-zip": "1.5.0", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.79.0", + "request-progress": "2.0.1", + "which": "1.2.14" + }, "dependencies": { "caseless": { "version": "0.11.0", @@ -5051,19 +7095,33 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.16.0", + "pinkie-promise": "2.0.1" + } }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "qs": { "version": "6.3.2", @@ -5075,7 +7133,29 @@ "version": "2.79.0", "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + } }, "tunnel-agent": { "version": "0.4.3", @@ -5101,7 +7181,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "requires": { + "pinkie": "2.0.4" + } }, "popper.js": { "version": "1.10.8", @@ -5113,6 +7196,11 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.8", + "mkdirp": "0.5.1" + }, "dependencies": { "async": { "version": "1.5.2", @@ -5126,103 +7214,178 @@ "version": "5.2.17", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.1.9", + "source-map": "0.5.6", + "supports-color": "3.2.3" + } }, "postcss-calc": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } }, "postcss-colormin": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-convert-values": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-discard-comments": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-duplicates": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-empty": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-overridden": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-unused": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "uniqs": "2.0.0" + } }, "postcss-filter-plugins": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "uniqid": "4.1.1" + } }, "postcss-load-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true + "dev": true, + "requires": { + "cosmiconfig": "2.1.3", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } }, "postcss-load-options": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true + "dev": true, + "requires": { + "cosmiconfig": "2.1.3", + "object-assign": "4.1.1" + } }, "postcss-load-plugins": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true + "dev": true, + "requires": { + "cosmiconfig": "2.1.3", + "object-assign": "4.1.1" + } }, "postcss-loader": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.3.3.tgz", "integrity": "sha1-piHqH6KQYqg5cqRvVEhncTAZFus=", - "dev": true + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-load-config": "1.2.0" + } }, "postcss-merge-idents": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-merge-longhand": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-merge-rules": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.17", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + } }, "postcss-message-helpers": { "version": "2.0.0", @@ -5234,43 +7397,75 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-minify-gradients": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-minify-params": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } }, "postcss-minify-selectors": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-selector-parser": "2.2.3" + } }, "postcss-modules-extract-imports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, + "requires": { + "postcss": "6.0.5" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.1.0" + } }, "has-flag": { "version": "2.0.0", @@ -5282,13 +7477,21 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.5.tgz", "integrity": "sha1-76NPdFyiW9Ozy9FapOAxErgjfzw=", - "dev": true + "dev": true, + "requires": { + "chalk": "2.0.1", + "source-map": "0.5.6", + "supports-color": "4.1.0" + } }, "supports-color": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -5297,18 +7500,30 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.5" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.1.0" + } }, "has-flag": { "version": "2.0.0", @@ -5320,13 +7535,21 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.5.tgz", "integrity": "sha1-76NPdFyiW9Ozy9FapOAxErgjfzw=", - "dev": true + "dev": true, + "requires": { + "chalk": "2.0.1", + "source-map": "0.5.6", + "supports-color": "4.1.0" + } }, "supports-color": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -5335,18 +7558,30 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.5" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.1.0" + } }, "has-flag": { "version": "2.0.0", @@ -5358,13 +7593,21 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.5.tgz", "integrity": "sha1-76NPdFyiW9Ozy9FapOAxErgjfzw=", - "dev": true + "dev": true, + "requires": { + "chalk": "2.0.1", + "source-map": "0.5.6", + "supports-color": "4.1.0" + } }, "supports-color": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -5373,18 +7616,30 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.5" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.1.0" + } }, "has-flag": { "version": "2.0.0", @@ -5396,13 +7651,21 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.5.tgz", "integrity": "sha1-76NPdFyiW9Ozy9FapOAxErgjfzw=", - "dev": true + "dev": true, + "requires": { + "chalk": "2.0.1", + "source-map": "0.5.6", + "supports-color": "4.1.0" + } }, "supports-color": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -5410,61 +7673,111 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-normalize-url": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-ordered-values": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-reduce-idents": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-reduce-initial": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-reduce-transforms": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-selector-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } }, "postcss-svgo": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } }, "postcss-unique-selectors": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.17", + "uniqs": "2.0.0" + } }, "postcss-url": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-5.1.2.tgz", "integrity": "sha1-mLMWW+jVkkccsMqt3iwNH4MvEz4=", - "dev": true + "dev": true, + "requires": { + "directory-encoder": "0.7.2", + "js-base64": "2.1.9", + "mime": "1.3.6", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "path-is-absolute": "1.0.1", + "postcss": "5.2.17" + } }, "postcss-value-parser": { "version": "3.3.0", @@ -5476,7 +7789,12 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "uniqs": "2.0.0" + } }, "prelude-ls": { "version": "1.1.2", @@ -5500,13 +7818,20 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true + "dev": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } }, "prismjs": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.6.0.tgz", "integrity": "sha1-EY2V+3pm26InLjQ7NF9SNmWds2U=", - "dev": true + "dev": true, + "requires": { + "clipboard": "1.7.1" + } }, "process": { "version": "0.11.10", @@ -5531,13 +7856,33 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, - "optional": true + "optional": true, + "requires": { + "asap": "2.0.5" + } }, "protractor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.0.0.tgz", "integrity": "sha1-CTXEhwQsXxR9HdA6tXuDmp1sM2g=", "dev": true, + "requires": { + "@types/node": "6.0.79", + "@types/q": "0.0.32", + "@types/selenium-webdriver": "2.53.42", + "blocking-proxy": "0.0.2", + "chalk": "1.1.3", + "glob": "7.1.2", + "jasmine": "2.4.1", + "jasminewd2": "0.1.1", + "optimist": "0.6.1", + "q": "1.4.1", + "saucelabs": "1.3.0", + "selenium-webdriver": "3.0.1", + "source-map-support": "0.4.15", + "webdriver-js-extender": "0.2.3", + "webdriver-manager": "11.1.1" + }, "dependencies": { "adm-zip": { "version": "0.4.7", @@ -5549,7 +7894,11 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } }, "q": { "version": "1.4.1", @@ -5562,6 +7911,18 @@ "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-11.1.1.tgz", "integrity": "sha1-kDzS0IH/lUCAQdHD2SDOi83YE08=", "dev": true, + "requires": { + "adm-zip": "0.4.7", + "chalk": "1.1.3", + "del": "2.2.2", + "glob": "7.1.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "q": "1.4.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -5577,7 +7938,11 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "dev": true + "dev": true, + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.3.0" + } }, "prr": { "version": "0.0.0", @@ -5596,7 +7961,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.7", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } }, "punycode": { "version": "1.4.1", @@ -5626,7 +7998,11 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } }, "querystring": { "version": "0.2.0", @@ -5651,18 +8027,28 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -5670,7 +8056,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -5678,7 +8067,10 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "range-parser": { "version": "1.2.0", @@ -5691,6 +8083,11 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.15", + "unpipe": "1.0.0" + }, "dependencies": { "bytes": { "version": "2.4.0", @@ -5716,43 +8113,79 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + } }, "reduce-function-call": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2" + } }, "reflect-metadata": { "version": "0.1.10", @@ -5776,13 +8209,22 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "regjsgen": { "version": "0.2.0", @@ -5794,7 +8236,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true + "dev": true, + "requires": { + "jsesc": "0.5.0" + } }, "relateurl": { "version": "0.2.7", @@ -5807,6 +8252,13 @@ "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.6.4.tgz", "integrity": "sha1-rFUe/xqmQVBLTzGNAwPdph47tpU=", "dev": true, + "requires": { + "amdefine": "1.0.0", + "gulp-util": "3.0.7", + "istanbul": "0.4.3", + "source-map": "0.5.6", + "through2": "2.0.1" + }, "dependencies": { "abbrev": { "version": "1.0.9", @@ -5839,6 +8291,11 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -5853,25 +8310,45 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz", "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", - "dev": true + "dev": true, + "requires": { + "glob": "5.0.15", + "minimatch": "2.0.10" + } }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "handlebars": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, "dependencies": { "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.0" + } } } }, @@ -5879,25 +8356,51 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.3.tgz", "integrity": "sha1-W3FO4K5JOsXvIEuZ84crzu9z1To=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "fileset": "0.2.1", + "handlebars": "4.0.10", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.14", + "wordwrap": "1.0.0" + } }, "minimatch": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.0.9" + } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, "dependencies": { "wordwrap": { "version": "0.0.3", @@ -5918,7 +8421,12 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, - "optional": true + "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } }, "wordwrap": { "version": "1.0.0", @@ -5931,7 +8439,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -5946,6 +8460,13 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, "dependencies": { "utila": { "version": "0.3.3", @@ -5971,7 +8492,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "replace-ext": { "version": "0.0.1", @@ -5983,13 +8507,40 @@ "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } }, "request-progress": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true + "dev": true, + "requires": { + "throttleit": "1.0.0" + } }, "require-directory": { "version": "2.1.1", @@ -6019,37 +8570,57 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true + "dev": true, + "requires": { + "path-parse": "1.0.5" + } }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4" + } }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "ripemd160": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } }, "rollup": { "version": "0.41.6", "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.6.tgz", "integrity": "sha1-4NBUl4d6OYwQTYFtJzOnGKepTio=", - "dev": true + "dev": true, + "requires": { + "source-map-support": "0.4.15" + } }, "rollup-analyzer": { "version": "1.0.2", @@ -6062,6 +8633,13 @@ "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-7.0.2.tgz", "integrity": "sha1-2HeJOVcNHLjB0C/mJTO8LkVPMpo=", "dev": true, + "requires": { + "acorn": "4.0.13", + "estree-walker": "0.3.1", + "magic-string": "0.19.1", + "resolve": "1.3.3", + "rollup-pluginutils": "2.0.1" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -6075,13 +8653,21 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.0.0.tgz", "integrity": "sha1-B+CulKwAKj6jbo8zyhIdn4NrEwk=", - "dev": true + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "builtin-modules": "1.1.1", + "resolve": "1.3.3" + } }, "rollup-plugin-uglify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-1.0.2.tgz", "integrity": "sha1-1KpvXfE1Iurhuhd4DHxMcJYDg1k=", "dev": true, + "requires": { + "uglify-js": "2.8.29" + }, "dependencies": { "camelcase": { "version": "1.2.1", @@ -6093,13 +8679,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } }, "wordwrap": { "version": "0.0.2", @@ -6111,7 +8707,13 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -6119,7 +8721,11 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", - "dev": true + "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + } }, "rsvp": { "version": "3.6.0", @@ -6131,7 +8737,10 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true + "dev": true, + "requires": { + "is-promise": "2.1.0" + } }, "rx-lite": { "version": "4.0.8", @@ -6143,12 +8752,18 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } }, "rxjs": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.1.tgz", - "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=" + "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=", + "requires": { + "symbol-observable": "1.0.4" + } }, "safe-buffer": { "version": "5.1.1", @@ -6161,13 +8776,26 @@ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", "dev": true, - "optional": true + "optional": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } }, "sass-loader": { "version": "6.0.6", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", "dev": true, + "requires": { + "async": "2.5.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + }, "dependencies": { "pify": { "version": "3.0.0", @@ -6181,7 +8809,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=", - "dev": true + "dev": true, + "requires": { + "https-proxy-agent": "1.0.0" + } }, "sax": { "version": "1.2.4", @@ -6193,13 +8824,19 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true + "dev": true, + "requires": { + "ajv": "5.2.0" + } }, "script-loader": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.0.tgz", "integrity": "sha1-aF3H5waeDe56kmdPDrxbD1W6pew=", - "dev": true + "dev": true, + "requires": { + "raw-loader": "0.5.1" + } }, "scss-tokenizer": { "version": "0.2.3", @@ -6207,13 +8844,20 @@ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", "dev": true, "optional": true, + "requires": { + "js-base64": "2.1.9", + "source-map": "0.4.4" + }, "dependencies": { "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -6235,6 +8879,12 @@ "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=", "dev": true, + "requires": { + "adm-zip": "0.4.7", + "rimraf": "2.6.1", + "tmp": "0.0.30", + "xml2js": "0.4.17" + }, "dependencies": { "adm-zip": { "version": "0.4.7", @@ -6246,19 +8896,29 @@ "version": "0.0.30", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } }, "xml2js": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", - "dev": true + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "4.2.1" + } }, "xmlbuilder": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } } } }, @@ -6272,19 +8932,40 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true + "dev": true, + "requires": { + "semver": "5.3.0" + } }, "send": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", "dev": true, + "requires": { + "debug": "2.6.7", + "depd": "1.1.0", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.1", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "mime": { "version": "1.3.4", @@ -6298,13 +8979,28 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", - "dev": true + "dev": true, + "requires": { + "accepts": "1.3.3", + "batch": "0.6.1", + "debug": "2.6.8", + "escape-html": "1.0.3", + "http-errors": "1.6.1", + "mime-types": "2.1.15", + "parseurl": "1.3.1" + } }, "serve-static": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "dev": true + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.3" + } }, "set-blocking": { "version": "2.0.0", @@ -6334,19 +9030,31 @@ "version": "2.4.8", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, "dependencies": { "kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -6354,7 +9062,13 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } }, "sigmund": { "version": "1.0.1", @@ -6372,25 +9086,43 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8" + } }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "socket.io": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.2.tgz", "integrity": "sha1-g7u98ueSY7N4kA2kA+eEPgXcO3E=", "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.2", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.2", + "socket.io-parser": "2.3.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -6411,12 +9143,19 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -6431,6 +9170,19 @@ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.2.tgz", "integrity": "sha1-Of2ww91FDjIbfkDP2DYS7FM91kQ=", "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.2", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -6442,7 +9194,10 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -6457,12 +9212,21 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, "dependencies": { "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.1" + } }, "isarray": { "version": "0.0.1", @@ -6483,6 +9247,10 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + }, "dependencies": { "uuid": { "version": "2.0.3", @@ -6497,12 +9265,23 @@ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", "dev": true, + "requires": { + "debug": "2.6.8", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.1.9" + }, "dependencies": { "faye-websocket": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true + "dev": true, + "requires": { + "websocket-driver": "0.6.5" + } } } }, @@ -6510,7 +9289,10 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } }, "source-list-map": { "version": "0.1.8", @@ -6529,6 +9311,11 @@ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.1.tgz", "integrity": "sha1-SBJr6SML1H+tBeRqjDwuPS2r5Qc=", "dev": true, + "requires": { + "async": "0.9.2", + "loader-utils": "0.2.17", + "source-map": "0.1.43" + }, "dependencies": { "async": { "version": "0.9.2", @@ -6540,13 +9327,22 @@ "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } }, "source-map": { "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -6554,7 +9350,10 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "sparkles": { "version": "1.0.0", @@ -6566,7 +9365,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -6584,13 +9386,30 @@ "version": "3.4.7", "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } }, "spdy-transport": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.8", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + } }, "sprintf-js": { "version": "1.0.3", @@ -6603,6 +9422,16 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -6623,19 +9452,33 @@ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", "dev": true, - "optional": true + "optional": true, + "requires": { + "readable-stream": "2.3.3" + } }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } }, "strict-uri-encode": { "version": "1.1.0", @@ -6647,13 +9490,20 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "string-width": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -6665,7 +9515,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -6679,19 +9532,28 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -6703,19 +9565,38 @@ "version": "0.13.2", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=", - "dev": true + "dev": true, + "requires": { + "loader-utils": "1.1.0" + } }, "stylus": { "version": "0.54.5", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "2.6.8", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, "dependencies": { "glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "sax": { "version": "0.5.8", @@ -6727,7 +9608,10 @@ "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -6735,19 +9619,36 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.1.tgz", "integrity": "sha1-d/SzT9Aw0lsmF7z1UT21sHMMQIk=", - "dev": true + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "lodash.clonedeep": "4.5.0", + "when": "3.6.4" + } }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } }, "svgo": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true + "dev": true, + "requires": { + "coa": "1.0.3", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } }, "symbol-observable": { "version": "1.0.4", @@ -6765,13 +9666,22 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, - "optional": true + "optional": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } }, "temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", "dev": true, + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + }, "dependencies": { "rimraf": { "version": "2.2.8", @@ -6798,12 +9708,24 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", "dev": true, + "requires": { + "readable-stream": "2.0.6", + "xtend": "4.0.1" + }, "dependencies": { "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } }, "string_decoder": { "version": "0.10.31", @@ -6823,7 +9745,10 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "dev": true + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } }, "tiny-emitter": { "version": "2.0.0", @@ -6836,7 +9761,10 @@ "version": "0.0.31", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } }, "to-array": { "version": "0.1.4", @@ -6866,7 +9794,10 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true + "dev": true, + "requires": { + "punycode": "1.4.1" + } }, "trim-newlines": { "version": "1.0.0", @@ -6885,6 +9816,20 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-2.0.0.tgz", "integrity": "sha1-FuT+zJSQiCOLTL8cOclYJSa2b3Q=", "dev": true, + "requires": { + "arrify": "1.0.1", + "chalk": "1.1.3", + "diff": "3.2.0", + "make-error": "1.3.0", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "pinkie": "2.0.4", + "source-map-support": "0.4.15", + "tsconfig": "5.0.3", + "v8flags": "2.1.1", + "xtend": "4.0.1", + "yn": "1.3.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -6898,13 +9843,25 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", "integrity": "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=", - "dev": true + "dev": true, + "requires": { + "any-promise": "1.3.0", + "parse-json": "2.2.0", + "strip-bom": "2.0.0", + "strip-json-comments": "2.0.1" + } }, "tsickle": { "version": "0.21.6", "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=", "dev": true, + "requires": { + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map": "0.5.6", + "source-map-support": "0.4.15" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -6924,13 +9881,30 @@ "version": "5.4.3", "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.4.3.tgz", "integrity": "sha1-dhyEArgONHt3M6BDkKdXslNYBGc=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "colors": "1.1.2", + "commander": "2.9.0", + "diff": "3.2.0", + "glob": "7.1.2", + "minimatch": "3.0.4", + "resolve": "1.3.3", + "semver": "5.3.0", + "tslib": "1.7.1", + "tsutils": "2.5.1" + } }, "tslint-eslint-rules": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz", "integrity": "sha1-fDDniC8mvCdr/5HSOEl1xp2viLo=", "dev": true, + "requires": { + "doctrine": "0.7.2", + "tslib": "1.7.1", + "tsutils": "1.9.1" + }, "dependencies": { "tsutils": { "version": "1.9.1", @@ -6944,7 +9918,10 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.5.1.tgz", "integrity": "sha1-wgATkMee7Bpcz6esEtWZY5aD4M8=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "tty-browserify": { "version": "0.0.0", @@ -6956,7 +9933,10 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -6969,13 +9949,20 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.15" + } }, "typedarray": { "version": "0.0.6", @@ -6993,7 +9980,11 @@ "version": "3.0.23", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.23.tgz", "integrity": "sha512-miLHbO2QcdQGxL/q1wLcUr6TGIRHhMnpKyywUbAdZRkJMqCeZCDmBsgYu1Wlj26xHBXN+sU5tHaWh38QsN208g==", - "dev": true + "dev": true, + "requires": { + "commander": "2.9.0", + "source-map": "0.5.6" + } }, "uglify-to-browserify": { "version": "1.0.2", @@ -7018,7 +10009,10 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true + "dev": true, + "requires": { + "macaddress": "0.2.8" + } }, "uniqs": { "version": "2.0.0", @@ -7049,6 +10043,10 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, "dependencies": { "punycode": { "version": "1.3.2", @@ -7062,13 +10060,21 @@ "version": "0.5.9", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", - "dev": true + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.3.6" + } }, "url-parse": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, "dependencies": { "querystringify": { "version": "1.0.0", @@ -7089,6 +10095,10 @@ "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=", "dev": true, + "requires": { + "lru-cache": "2.2.4", + "tmp": "0.0.31" + }, "dependencies": { "lru-cache": { "version": "2.2.4", @@ -7103,6 +10113,9 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, + "requires": { + "inherits": "2.0.1" + }, "dependencies": { "inherits": { "version": "2.0.1", @@ -7140,13 +10153,20 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true + "dev": true, + "requires": { + "user-home": "1.1.1" + } }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "vary": { "version": "1.1.1", @@ -7164,13 +10184,21 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } }, "vinyl": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true + "dev": true, + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } }, "vlq": { "version": "0.2.2", @@ -7182,7 +10210,10 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true + "dev": true, + "requires": { + "indexof": "0.0.1" + } }, "void-elements": { "version": "2.0.1", @@ -7195,18 +10226,37 @@ "resolved": "https://registry.npmjs.org/vrsource-tslint-rules/-/vrsource-tslint-rules-5.1.0.tgz", "integrity": "sha1-RfeBevbQSQmWvwDBnPelrzDHl6Q=", "dev": true, + "requires": { + "chokidar-cli": "1.2.0", + "tslint": "5.1.0" + }, "dependencies": { "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } }, "tslint": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.1.0.tgz", "integrity": "sha1-UaR7rutYlW/NYXvSzwDi7w7qLtk=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "colors": "1.1.2", + "diff": "3.2.0", + "findup-sync": "0.3.0", + "glob": "7.1.2", + "optimist": "0.6.1", + "resolve": "1.3.3", + "semver": "5.3.0", + "tsutils": "1.9.1" + } }, "tsutils": { "version": "1.9.1", @@ -7220,19 +10270,31 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz", "integrity": "sha512-FMB5VqpLqOCcqrzA9okZFc0wq0Qbmdm396qJxvQZhDpyu0W95G9JCmp74tx7iyYnyOcBtUuKJsgIKAqjozvmmQ==", - "dev": true + "dev": true, + "requires": { + "ensure-posix-path": "1.0.2", + "matcher-collection": "1.0.4" + } }, "watchpack": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", - "dev": true + "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } }, "wbuf": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", - "dev": true + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } }, "web-animations-js": { "version": "2.2.5", @@ -7245,12 +10307,23 @@ "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-0.2.3.tgz", "integrity": "sha1-rUeLrauASmW2fDze/lQPVwjDXHk=", "dev": true, + "requires": { + "@types/selenium-webdriver": "2.53.42", + "selenium-webdriver": "2.53.3" + }, "dependencies": { "selenium-webdriver": { "version": "2.53.3", "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", - "dev": true + "dev": true, + "requires": { + "adm-zip": "0.4.4", + "rimraf": "2.6.1", + "tmp": "0.0.24", + "ws": "1.1.1", + "xml2js": "0.4.4" + } }, "tmp": { "version": "0.0.24", @@ -7265,12 +10338,39 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.4.1.tgz", "integrity": "sha1-FakdvjSWbYpLmcfWVu/ZKi5ab2o=", "dev": true, + "requires": { + "acorn": "5.0.3", + "acorn-dynamic-import": "2.0.2", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "async": "2.5.0", + "enhanced-resolve": "3.3.0", + "interpret": "1.0.3", + "json-loader": "0.5.4", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "0.2.17", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.6", + "supports-color": "3.2.3", + "tapable": "0.2.6", + "uglify-js": "2.8.29", + "watchpack": "1.3.1", + "webpack-sources": "0.2.3", + "yargs": "6.6.0" + }, "dependencies": { "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "camelcase": { "version": "1.2.1", @@ -7282,19 +10382,33 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } }, "source-list-map": { "version": "1.1.2", @@ -7306,19 +10420,35 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -7326,7 +10456,11 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", - "dev": true + "dev": true, + "requires": { + "source-list-map": "1.1.2", + "source-map": "0.5.6" + } }, "wordwrap": { "version": "0.0.2", @@ -7339,6 +10473,21 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -7350,7 +10499,12 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } } } }, @@ -7359,6 +10513,9 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, + "requires": { + "camelcase": "3.0.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -7374,13 +10531,38 @@ "version": "1.11.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", - "dev": true + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.3.6", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0" + } }, "webpack-dev-server": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", "dev": true, + "requires": { + "ansi-html": "0.0.7", + "chokidar": "1.7.0", + "compression": "1.6.2", + "connect-history-api-fallback": "1.3.0", + "express": "4.15.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "opn": "4.0.2", + "portfinder": "1.0.13", + "serve-index": "1.9.0", + "sockjs": "0.3.18", + "sockjs-client": "1.1.2", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "3.2.3", + "webpack-dev-middleware": "1.11.0", + "yargs": "6.6.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -7392,25 +10574,51 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } }, "yargs-parser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0" + } } } }, @@ -7418,13 +10626,20 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-2.6.1.tgz", "integrity": "sha1-8dgB0sXTn4P/7J8RkkCz476ZShw=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "webpack-sources": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.6" + }, "dependencies": { "source-list-map": { "version": "2.0.0", @@ -7438,7 +10653,10 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "dev": true + "dev": true, + "requires": { + "websocket-extensions": "0.1.1" + } }, "websocket-extensions": { "version": "0.1.1", @@ -7462,7 +10680,10 @@ "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "1.0.0", @@ -7475,18 +10696,29 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, + "requires": { + "string-width": "1.0.2" + }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -7507,18 +10739,30 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -7532,7 +10776,11 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", "integrity": "sha1-CC3bbGQehdS7RR8D1S8G6r2x8Bg=", - "dev": true + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } }, "wtf-8": { "version": "1.0.0", @@ -7551,6 +10799,10 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", "dev": true, + "requires": { + "sax": "0.6.1", + "xmlbuilder": "9.0.1" + }, "dependencies": { "sax": { "version": "0.6.1", @@ -7603,6 +10855,21 @@ "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", "dev": true, "optional": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -7616,14 +10883,22 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, - "optional": true + "optional": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, - "optional": true + "optional": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -7633,6 +10908,9 @@ "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "dev": true, "optional": true, + "requires": { + "camelcase": "3.0.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -7647,7 +10925,10 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } }, "yeast": { "version": "0.1.2", @@ -7659,7 +10940,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/yn/-/yn-1.3.0.tgz", "integrity": "sha1-GwgSq7jYBdSJZvjfOF3J2syaGdg=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1" + } }, "zone.js": { "version": "0.8.12", From f4665594147bcc2294fa3e0bf8ad1ae9dfd75912 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Fri, 28 Jul 2017 17:55:09 +0100 Subject: [PATCH 25/69] docs(readme): Alphabetized Collections column --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d5526943..08937f5de 100644 --- a/README.md +++ b/README.md @@ -60,8 +60,8 @@ See the [Documentation](https://edcarroll.github.io/ng2-semantic-ui) for install | :ballot_box_with_check: Divider | :ballot_box_with_check: Grid | :ballot_box_with_check: Comment | :rocket: Collapse | :rocket: Localization | | :ballot_box_with_check: Flag | :ballot_box_with_check: Menu | :ballot_box_with_check: Feed | :rocket: Datepicker | :x: Visibiltiy | | :ballot_box_with_check: Header | :white_check_mark: Message | :ballot_box_with_check: Item | :white_check_mark: Dimmer | | -| :ballot_box_with_check: Icon | :ballot_box_with_check: Table | :ballot_box_with_check: Statistic | :white_check_mark: Dropdown | | -| :ballot_box_with_check: Image | :rocket: Pagination | | :x: Embed | | +| :ballot_box_with_check: Icon | :rocket: Pagination: | :ballot_box_with_check: Statistic | :white_check_mark: Dropdown | | +| :ballot_box_with_check: Image | ballot_box_with_check: Table | | :x: Embed | | | :ballot_box_with_check: Input | | | :white_check_mark: Modal | | | :ballot_box_with_check: Label | | | :white_check_mark: Popup | | | :ballot_box_with_check: List | | | :white_check_mark: Progress | | From 2a5bcc7f0be8fbaeeb7d72b0f1c69cddf2ddc75e Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Fri, 28 Jul 2017 17:55:41 +0100 Subject: [PATCH 26/69] docs(readme): Fix emoji formatting issue --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 08937f5de..7792c227a 100644 --- a/README.md +++ b/README.md @@ -60,8 +60,8 @@ See the [Documentation](https://edcarroll.github.io/ng2-semantic-ui) for install | :ballot_box_with_check: Divider | :ballot_box_with_check: Grid | :ballot_box_with_check: Comment | :rocket: Collapse | :rocket: Localization | | :ballot_box_with_check: Flag | :ballot_box_with_check: Menu | :ballot_box_with_check: Feed | :rocket: Datepicker | :x: Visibiltiy | | :ballot_box_with_check: Header | :white_check_mark: Message | :ballot_box_with_check: Item | :white_check_mark: Dimmer | | -| :ballot_box_with_check: Icon | :rocket: Pagination: | :ballot_box_with_check: Statistic | :white_check_mark: Dropdown | | -| :ballot_box_with_check: Image | ballot_box_with_check: Table | | :x: Embed | | +| :ballot_box_with_check: Icon | :rocket: Pagination | :ballot_box_with_check: Statistic | :white_check_mark: Dropdown | | +| :ballot_box_with_check: Image | :ballot_box_with_check: Table | | :x: Embed | | | :ballot_box_with_check: Input | | | :white_check_mark: Modal | | | :ballot_box_with_check: Label | | | :white_check_mark: Popup | | | :ballot_box_with_check: List | | | :white_check_mark: Progress | | From d066c4e4b5068d85c824fff9af5fbdfb6eb651d9 Mon Sep 17 00:00:00 2001 From: Massimo Costa Date: Thu, 3 Aug 2017 03:43:58 +0200 Subject: [PATCH 27/69] fix(modal): add support for mini and tiny sizes --- .../src/app/pages/modules/modal/modal.page.ts | 28 ++++++++++++++----- demo/src/index.html | 2 +- src/modules/modal/classes/modal-config.ts | 4 ++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/demo/src/app/pages/modules/modal/modal.page.ts b/demo/src/app/pages/modules/modal/modal.page.ts index 36e1a7660..3107925da 100644 --- a/demo/src/app/pages/modules/modal/modal.page.ts +++ b/demo/src/app/pages/modules/modal/modal.page.ts @@ -40,7 +40,15 @@ const exampleComponentModalTemplate = ` `; const exampleComponentTemplate = ` +
+
+ + + + +
+
`; @Component({ @@ -67,7 +75,8 @@ export class ModalPage { name: "size", type: "ModalSize", description: "Sets the modal size. " + - "Available options are: small, normal & large.", + "Available options are: mini, tiny, small, " + + "normal & large.", defaultValue: "normal" }, { @@ -192,22 +201,23 @@ export class ConfirmModalComponent { public componentHelper:string = ` export class ConfirmModal extends ComponentModalConfig { - constructor(title:string, question:string) { + constructor(title:string, question:string, size = ModalSize.Small) { super(ConfirmModalComponent, { title, question }); this.isClosable = false; this.transitionDuration = 200; - this.size = ModalSize.Small; + this.size = size; } } `; public componentOpen:string = ` this.modalService - .open(new ConfirmModal("Are you sure?", "Are you sure about accepting this?")) + .open(new ConfirmModal("Are you sure?", "Are you sure about accepting this?", this.modalSize)) .onApprove(() => alert("User has accepted.")) .onDeny(() => alert("User has denied.")); `; + } @Component({ @@ -253,12 +263,12 @@ export class ConfirmModalComponent { } export class ConfirmModal extends ComponentModalConfig { - constructor(title:string, question:string) { + constructor(title:string, question:string, size:ModalSize = ModalSize.Small) { super(ConfirmModalComponent, { title, question }); this.isClosable = false; this.transitionDuration = 200; - this.size = ModalSize.Small; + this.size = size; } } @@ -267,11 +277,15 @@ export class ConfirmModal extends ComponentModalConfig this.alert("User has accepted.")) .onDeny(() => this.alert("User has denied.")); } diff --git a/demo/src/index.html b/demo/src/index.html index cb1e5c693..b64cd910c 100644 --- a/demo/src/index.html +++ b/demo/src/index.html @@ -12,7 +12,7 @@ - + diff --git a/src/modules/modal/classes/modal-config.ts b/src/modules/modal/classes/modal-config.ts index 484dcec37..d6a54106e 100644 --- a/src/modules/modal/classes/modal-config.ts +++ b/src/modules/modal/classes/modal-config.ts @@ -1,9 +1,11 @@ import { Type } from "@angular/core"; import { ModalTemplate } from "./modal-template"; -export type ModalSize = "small" | "normal" | "large"; +export type ModalSize = "mini" | "tiny" | "small" | "normal" | "large"; export const ModalSize = { + Mini: "mini" as ModalSize, + Tiny: "tiny" as ModalSize, Small: "small" as ModalSize, Normal: "normal" as ModalSize, Large: "large" as ModalSize From 76bbb423a4d3a8c84f43e53879019804249d2ac9 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 4 Aug 2017 09:57:39 +0100 Subject: [PATCH 28/69] docs(contributing): Updated Gitter link --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 227082e06..769f864c2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ Please read and follow the [Code of Conduct](https://github.com/edcarroll/ng2-se ## Bug, Question or Problem? -For any usage questions you have, you can join [Gitter](https://gitter.im/ng2-semantic-ui/usage-queries) to ask for help. +For any usage questions you have, you can join [Gitter](https://gitter.im/ng2-semantic-ui/Lobby) to ask for help. If you've found a bug, please submit an issue. Even better would be submitting a Pull Request with a fix. From 5c45e95c41776037f367be26bfd80d21975b0ca5 Mon Sep 17 00:00:00 2001 From: Trevor Daniels Date: Tue, 8 Aug 2017 10:31:48 +1000 Subject: [PATCH 29/69] feat(localization): Add Australian locale --- .../pages/behaviors/localization/localization.page.ts | 4 ++++ src/behaviors/localization/locales/en-AU.ts | 10 ++++++++++ src/behaviors/localization/locales/index.ts | 2 ++ 3 files changed, 16 insertions(+) create mode 100644 src/behaviors/localization/locales/en-AU.ts diff --git a/demo/src/app/pages/behaviors/localization/localization.page.ts b/demo/src/app/pages/behaviors/localization/localization.page.ts index 2a1f425fa..310e54d30 100644 --- a/demo/src/app/pages/behaviors/localization/localization.page.ts +++ b/demo/src/app/pages/behaviors/localization/localization.page.ts @@ -45,6 +45,10 @@ const supportedLanguages:ISupportedLanguage[] = [ { name: "English", children: [ + { + name: "Australian", + code: "en-AU" + }, { name: "UK", code: "en-GB", diff --git a/src/behaviors/localization/locales/en-AU.ts b/src/behaviors/localization/locales/en-AU.ts new file mode 100644 index 000000000..2c06f653b --- /dev/null +++ b/src/behaviors/localization/locales/en-AU.ts @@ -0,0 +1,10 @@ + +import { IPartialLocaleValues } from "../interfaces/values"; + +const enAU:IPartialLocaleValues = { + datepicker: { + firstDayOfWeek: 0 + } +}; + +export default enAU; diff --git a/src/behaviors/localization/locales/index.ts b/src/behaviors/localization/locales/index.ts index 3248bed05..35e1ed890 100644 --- a/src/behaviors/localization/locales/index.ts +++ b/src/behaviors/localization/locales/index.ts @@ -1,6 +1,7 @@ import { RecursivePartial, ILocaleValues } from "../interfaces/values"; import de from "./de"; +import enAU from "./en-AU"; import enGB from "./en-GB"; import enUS from "./en-US"; import es from "./es"; @@ -13,6 +14,7 @@ import he from "./he"; // This file exists for the demo app. Don't use this in real life. export default { de, + enAU, enGB, enUS, es, From a7a48b3adca5b27b3fac24aaabdb5b240a4b58c5 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Tue, 8 Aug 2017 19:47:34 +0100 Subject: [PATCH 30/69] docs(localization): Added en-AU locale credits --- src/behaviors/localization/locales/en-AU.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/behaviors/localization/locales/en-AU.ts b/src/behaviors/localization/locales/en-AU.ts index 2c06f653b..44fc7c2c8 100644 --- a/src/behaviors/localization/locales/en-AU.ts +++ b/src/behaviors/localization/locales/en-AU.ts @@ -1,6 +1,11 @@ import { IPartialLocaleValues } from "../interfaces/values"; +/** + * locale : Australian (en-AU) + * author : Trevor Daniels : https://github.com/trevordaniels + */ + const enAU:IPartialLocaleValues = { datepicker: { firstDayOfWeek: 0 From d73bf9fa1bd0a777634269f796c017c2434cbc56 Mon Sep 17 00:00:00 2001 From: Massimo Costa Date: Tue, 8 Aug 2017 01:06:04 +0200 Subject: [PATCH 31/69] feat(select): add support for hiding labels in multi-select --- .../app/pages/modules/select/select.page.ts | 11 +++ .../localization/interfaces/select-values.ts | 1 + src/behaviors/localization/locales/de.ts | 3 +- src/behaviors/localization/locales/en-GB.ts | 3 +- src/behaviors/localization/locales/es.ts | 3 +- src/behaviors/localization/locales/fr.ts | 3 +- src/behaviors/localization/locales/he.ts | 3 +- src/behaviors/localization/locales/it.ts | 3 +- src/behaviors/localization/locales/pt.ts | 3 +- src/behaviors/localization/locales/ru.ts | 3 +- src/modules/select/components/multi-select.ts | 69 ++++++++++++++++--- 11 files changed, 88 insertions(+), 17 deletions(-) diff --git a/demo/src/app/pages/modules/select/select.page.ts b/demo/src/app/pages/modules/select/select.page.ts index c2f1d8f92..c4bac40ab 100644 --- a/demo/src/app/pages/modules/select/select.page.ts +++ b/demo/src/app/pages/modules/select/select.page.ts @@ -25,6 +25,7 @@ const exampleStandardTemplate = ` labelField="name" [isSearchable]="searchable" [isDisabled]="disabled" + [hasLabelsHidden]="hideLabels" #multiSelect> @@ -35,6 +36,9 @@ const exampleStandardTemplate = ` Searchable?
Disabled? +
+ Hide labels? +

Singly selected: {{ selectedOption | json }}

@@ -323,6 +327,12 @@ export class SelectPage { description: "Sets whether the multi select is searchable.", defaultValue: "false" }, + { + name: "hasLabelsHidden", + type: "boolean", + description: "Sets whether the multi select has labels hidden.", + defaultValue: "false" + }, { name: "maxSelected", type: "number", @@ -446,6 +456,7 @@ export class SelectExampleStandard { public searchable:boolean = false; public disabled:boolean = false; + public hideLabels:boolean = false; } @Component({ diff --git a/src/behaviors/localization/interfaces/select-values.ts b/src/behaviors/localization/interfaces/select-values.ts index 63b3b3455..c8ac873bb 100644 --- a/src/behaviors/localization/interfaces/select-values.ts +++ b/src/behaviors/localization/interfaces/select-values.ts @@ -7,5 +7,6 @@ export interface ISelectLocaleValues { single:ISearchTailoredLocaleValues; multi:ISearchTailoredLocaleValues & { maxSelectedMessage:string; // `max` variable passed + selectedMessage:string; // `count` variable passed }; } diff --git a/src/behaviors/localization/locales/de.ts b/src/behaviors/localization/locales/de.ts index d39a67a1b..4b57a1afd 100644 --- a/src/behaviors/localization/locales/de.ts +++ b/src/behaviors/localization/locales/de.ts @@ -45,7 +45,8 @@ const de:IPartialLocaleValues = { }, multi: { placeholder: "Wählen...", - maxSelectedMessage: "Max #{max} Auswähle" + maxSelectedMessage: "Max #{max} Auswähle", + selectedMessage: "#{count} selections" } } }; diff --git a/src/behaviors/localization/locales/en-GB.ts b/src/behaviors/localization/locales/en-GB.ts index 0475b228d..5d458eb40 100644 --- a/src/behaviors/localization/locales/en-GB.ts +++ b/src/behaviors/localization/locales/en-GB.ts @@ -41,7 +41,8 @@ const enGB:ILocaleValues = { }, multi: { placeholder: "Select...", - maxSelectedMessage: "Max #{max} selections" + maxSelectedMessage: "Max #{max} selections", + selectedMessage: "#{count} selections" } } }; diff --git a/src/behaviors/localization/locales/es.ts b/src/behaviors/localization/locales/es.ts index 8fb18586a..09e632738 100644 --- a/src/behaviors/localization/locales/es.ts +++ b/src/behaviors/localization/locales/es.ts @@ -45,7 +45,8 @@ const es:IPartialLocaleValues = { }, multi: { placeholder: "Seleccione...", - maxSelectedMessage: "Puede elegir hasta #{max}" + maxSelectedMessage: "Puede elegir hasta #{max}", + selectedMessage: "#{count} selections" } } }; diff --git a/src/behaviors/localization/locales/fr.ts b/src/behaviors/localization/locales/fr.ts index cb46904ee..21503dbd1 100644 --- a/src/behaviors/localization/locales/fr.ts +++ b/src/behaviors/localization/locales/fr.ts @@ -45,7 +45,8 @@ const fr:IPartialLocaleValues = { }, multi: { placeholder: "Choisissez-en...", - maxSelectedMessage: "Max #{max} sélections" + maxSelectedMessage: "Max #{max} sélections", + selectedMessage: "#{count} selections" } } }; diff --git a/src/behaviors/localization/locales/he.ts b/src/behaviors/localization/locales/he.ts index 839f44f91..2bd9d8239 100644 --- a/src/behaviors/localization/locales/he.ts +++ b/src/behaviors/localization/locales/he.ts @@ -44,7 +44,8 @@ const he:ILocaleValues = { }, multi: { placeholder: "בחר...", - maxSelectedMessage: "מקסימום #{max} אפשרויות" + maxSelectedMessage: "מקסימום #{max} אפשרויות", + selectedMessage: "#{count} selections" } } }; diff --git a/src/behaviors/localization/locales/it.ts b/src/behaviors/localization/locales/it.ts index 620d9c8a4..4da0ae8da 100644 --- a/src/behaviors/localization/locales/it.ts +++ b/src/behaviors/localization/locales/it.ts @@ -45,7 +45,8 @@ const it:ILocaleValues = { }, multi: { placeholder: "Scegli...", - maxSelectedMessage: "Puoi effettuare fino a #{max} scelte." + maxSelectedMessage: "Puoi effettuare fino a #{max} scelte.", + selectedMessage: "#{count} scelte" } } }; diff --git a/src/behaviors/localization/locales/pt.ts b/src/behaviors/localization/locales/pt.ts index 0c4c013bc..105c4faad 100644 --- a/src/behaviors/localization/locales/pt.ts +++ b/src/behaviors/localization/locales/pt.ts @@ -45,7 +45,8 @@ const pt:IPartialLocaleValues = { }, multi: { placeholder: "Escolher...", - maxSelectedMessage: "Max #{max} opçãoes" + maxSelectedMessage: "Max #{max} opçãoes", + selectedMessage: "#{count} selections" } } }; diff --git a/src/behaviors/localization/locales/ru.ts b/src/behaviors/localization/locales/ru.ts index f7b4447f5..043bdc63d 100644 --- a/src/behaviors/localization/locales/ru.ts +++ b/src/behaviors/localization/locales/ru.ts @@ -45,7 +45,8 @@ const ru:ILocaleValues = { }, multi: { placeholder: "Выберите...", - maxSelectedMessage: "Не более #{max} значений" + maxSelectedMessage: "Не более #{max} значений", + selectedMessage: "#{count} selections" } } }; diff --git a/src/modules/select/components/multi-select.ts b/src/modules/select/components/multi-select.ts index b00fe2a20..9dd654f9c 100644 --- a/src/modules/select/components/multi-select.ts +++ b/src/modules/select/components/multi-select.ts @@ -2,6 +2,7 @@ import { Component, HostBinding, ElementRef, EventEmitter, Output, Input, Direct import { ICustomValueAccessorHost, KeyCode, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; import { SuiLocalizationService } from "../../../behaviors/localization"; import { SuiSelectBase } from "../classes/select-base"; +import { ISelectRenderedOption } from "./select-option"; @Component({ selector: "sui-multi-select", @@ -9,13 +10,19 @@ import { SuiSelectBase } from "../classes/select-base"; + +{{ selectedMessage }} + + - + + + extends SuiSelectBase implements ICustom // If we have reached the maximum number of selections, then empty the results completely. return []; } - // Returns the search results \ selected options. - return this.searchService.results - .filter(r => this.selectedOptions.find(o => r === o) == undefined); + + const searchResults:T[] = this.searchService.results; + + if (this.hasLabelsHidden) { + return searchResults; + } else { + // Returns the search results \ selected options. + return searchResults + .filter(r => this.selectedOptions.find(o => r === o) == undefined); + } } public get availableOptions():T[] { return this.filteredOptions; } + private _hasLabelsHidden:boolean; + + @Input() + public get hasLabelsHidden():boolean { + return this._hasLabelsHidden; + } + + public set hasLabelsHidden(hasLabelsHidden:boolean) { + this._hasLabelsHidden = hasLabelsHidden; + } + private _placeholder:string; @Input() @@ -93,6 +118,12 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom [["max", this.maxSelected.toString()]]); } + public get selectedMessage():string { + return this._localizationService.interpolate( + this.localeValues.multi.selectedMessage, + [["count", this.selectedOptions.length.toString()]]); + } + @HostBinding("class.multiple") private _multiSelectClasses:boolean; @@ -103,6 +134,7 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom this.selectedOptionsChange = new EventEmitter(); this._multiSelectClasses = true; + this._hasLabelsHidden = false; } protected optionsUpdateHook():void { @@ -119,7 +151,18 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom } } + protected initialiseRenderedOption(option:ISelectRenderedOption):void { + super.initialiseRenderedOption(option); + + // Boldens the item so it appears selected in the dropdown. + option.isActive = this.hasLabelsHidden && this.selectedOptions.indexOf(option.value) !== -1; + } + public selectOption(option:T):void { + if (this.selectedOptions.indexOf(option) !== -1) { + this.deselectOption(option); + return; + } this.selectedOptions.push(option); this.selectedOptionsChange.emit(this.selectedOptions.map(o => this.valueGetter(o))); @@ -127,6 +170,10 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom // Automatically refocus the search input for better keyboard accessibility. this.focus(); + + if (this.hasLabelsHidden) { + this.onAvailableOptionsRendered(); + } } public writeValue(values:U[]):void { @@ -162,6 +209,10 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom // Automatically refocus the search input for better keyboard accessibility. this.focus(); + + if (this.hasLabelsHidden) { + this.onAvailableOptionsRendered(); + } } public onQueryInputKeydown(event:KeyboardEvent):void { From 393af51fa8cbd628c3ced8a4e9f455ab41839b0c Mon Sep 17 00:00:00 2001 From: Massimo Costa Date: Tue, 8 Aug 2017 02:26:12 +0200 Subject: [PATCH 32/69] fix(select): ui improvement when searchable --- src/modules/select/components/multi-select.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/select/components/multi-select.ts b/src/modules/select/components/multi-select.ts index 9dd654f9c..e4ddc1939 100644 --- a/src/modules/select/components/multi-select.ts +++ b/src/modules/select/components/multi-select.ts @@ -29,7 +29,8 @@ import { ISelectRenderedOption } from "./select-option"; [hidden]="!isSearchable || isSearchExternal"> -
{{ placeholder }}
+
{{ placeholder }}
`; +const exampleIconTemplate = ` + + +
+
+ This is a message with an icon +
+

This message shows an icon.

+
+
+`; + @Component({ selector: "demo-page-message", templateUrl: "./message.page.html" @@ -61,6 +73,7 @@ export class MessagePage { ]; public exampleStandardTemplate:string = exampleStandardTemplate; public exampleNoDismissTemplate:string = exampleNoDismissTemplate; + public exampleIconTemplate:string = exampleIconTemplate; public manualDismissMarkup:string = ` @@ -97,4 +110,10 @@ export class MessageExampleStandard {} }) export class MessageExampleNoDismiss {} -export const MessagePageComponents = [MessagePage, MessageExampleStandard, MessageExampleNoDismiss]; +@Component({ + selector: "example-message-icon", + template: exampleIconTemplate +}) +export class MessageExampleIcon {} + +export const MessagePageComponents = [MessagePage, MessageExampleStandard, MessageExampleNoDismiss, MessageExampleIcon]; diff --git a/src/collections/message/components/message.ts b/src/collections/message/components/message.ts index ffde6826f..eb352910a 100644 --- a/src/collections/message/components/message.ts +++ b/src/collections/message/components/message.ts @@ -12,7 +12,13 @@ export interface IMessage {
-` +`, + styles: [` +/* Fix for CSS Bug */ +.ui.icon.visible.message { + display: flex !important; +} +`] }) export class SuiMessage implements IMessage { @Input() From f6066b77dbd6fbc35f0ab412256562bb2b662290 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Thu, 10 Aug 2017 23:38:01 +0100 Subject: [PATCH 37/69] fix(modal): Move modal back to original container after dismiss (#227) Closes #186 --- src/modules/modal/components/modal.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/modal/components/modal.ts b/src/modules/modal/components/modal.ts index 9f31ceb19..3d967165f 100644 --- a/src/modules/modal/components/modal.ts +++ b/src/modules/modal/components/modal.ts @@ -151,6 +151,9 @@ export class SuiModal implements OnInit, AfterViewInit { @ViewChild("templateSibling", { read: ViewContainerRef }) public templateSibling:ViewContainerRef; + // Parent element of modal before relocation to document body. + private _originalContainer?:Element; + public get dynamicClasses():IDynamicClasses { const classes:IDynamicClasses = {}; if (this.size) { @@ -188,6 +191,7 @@ export class SuiModal implements OnInit, AfterViewInit { public ngAfterViewInit():void { // Move the modal to the document body to ensure correct scrolling. + this._originalContainer = this._element.nativeElement.parentNode; document.querySelector("body")!.appendChild(this._element.nativeElement); // Remove the #templateSibling element from the DOM to fix bottom border styles. const templateElement = this.templateSibling.element.nativeElement as Element; @@ -238,7 +242,10 @@ export class SuiModal implements OnInit, AfterViewInit { this.transitionController.stopAll(); this.transitionController.animate( new Transition(this.transition, this.transitionDuration, TransitionDirection.Out, () => { - // When done, emit a dismiss event, and fire the callback. + // When done, move the modal back to its original location, emit a dismiss event, and fire the callback. + if (this._originalContainer) { + this._originalContainer.appendChild(this._element.nativeElement); + } this.onDismiss.emit(); callback(); })); From a93d8b0809e5582d3f0413ab366da8de2feaafe0 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Thu, 10 Aug 2017 23:45:10 +0100 Subject: [PATCH 38/69] fix(modal): Fixed modal scroll context sometimes breaking (#226) Closes #126 --- src/modules/dimmer/components/dimmer.ts | 10 ++++-- src/modules/modal/components/modal.ts | 46 ++++++++++++++----------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/modules/dimmer/components/dimmer.ts b/src/modules/dimmer/components/dimmer.ts index 24b7b939d..608a5898d 100644 --- a/src/modules/dimmer/components/dimmer.ts +++ b/src/modules/dimmer/components/dimmer.ts @@ -7,8 +7,8 @@ import { TransitionController, SuiTransition, TransitionDirection, Transition } @Component({ selector: "sui-dimmer", template: ` -
-
+
+
@@ -66,6 +66,10 @@ export class SuiDimmer extends SuiTransition { @Input() public transitionDuration:number; + /* Internal for now */ + @Input() + public wrapContent:boolean; + constructor(renderer:Renderer2, element:ElementRef, changeDetector:ChangeDetectorRef) { super(renderer, element, changeDetector); @@ -73,6 +77,8 @@ export class SuiDimmer extends SuiTransition { this.isDimmedChange = new EventEmitter(); this.isClickable = true; + this.wrapContent = true; + this._dimmerClasses = true; } diff --git a/src/modules/modal/components/modal.ts b/src/modules/modal/components/modal.ts index 3d967165f..9712c2175 100644 --- a/src/modules/modal/components/modal.ts +++ b/src/modules/modal/components/modal.ts @@ -16,28 +16,34 @@ import { ModalConfig, ModalSize } from "../classes/modal-config"; [(isDimmed)]="dimBackground" [isClickable]="false" [transitionDuration]="transitionDuration" - (click)="close()"> - - - + [wrapContent]="false" + (click)="close()"> + + + + `, styles: [` +.ui.dimmer { + overflow-y: auto; +} + /* avoid .scrolling as Semantic UI adds unwanted styles. */ .scroll { position: absolute !important; From 1c249462feef74ebd1330e0e9a44aa97571410ef Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 00:05:43 +0100 Subject: [PATCH 39/69] fix(popup): Mousedown no longer cancelled on internal elements (#230) Closes #200 --- src/modules/popup/components/popup.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/popup/components/popup.ts b/src/modules/popup/components/popup.ts index a667ef4c5..cc146ff01 100644 --- a/src/modules/popup/components/popup.ts +++ b/src/modules/popup/components/popup.ts @@ -188,7 +188,9 @@ export class SuiPopup implements IPopup { @HostListener("mousedown", ["$event"]) public onMouseDown(e:MouseEvent):void { - e.preventDefault(); + if (!this.elementRef.nativeElement.contains(e.target)) { + e.preventDefault(); + } } @HostListener("click", ["$event"]) From 9bbe2f3e59cf284201b465e075e6e68c51487445 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 00:11:24 +0100 Subject: [PATCH 40/69] fix(popup): Made document click handler only apply when popup is open (#229) Closes #194 --- .../datepicker/directives/datepicker.directive.ts | 6 +++--- .../popup/classes/popup-component-controller.ts | 7 ++++--- src/modules/popup/classes/popup-controller.ts | 15 ++++++++++++--- src/modules/popup/directives/popup.directive.ts | 7 ++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/modules/datepicker/directives/datepicker.directive.ts b/src/modules/datepicker/directives/datepicker.directive.ts index 448f5e47f..bf1b91cd6 100644 --- a/src/modules/datepicker/directives/datepicker.directive.ts +++ b/src/modules/datepicker/directives/datepicker.directive.ts @@ -102,12 +102,12 @@ export class SuiDatepickerDirective @Output("pickerValidatorChange") public onValidatorChange:EventEmitter; - constructor(element:ElementRef, - public renderer:Renderer2, + constructor(public renderer:Renderer2, + element:ElementRef, componentFactory:SuiComponentFactory, public localizationService:SuiLocalizationService) { - super(element, componentFactory, SuiDatepicker, new PopupConfig({ + super(renderer, element, componentFactory, SuiDatepicker, new PopupConfig({ trigger: PopupTrigger.Focus, placement: PositioningPlacement.BottomLeft, transition: "scale", diff --git a/src/modules/popup/classes/popup-component-controller.ts b/src/modules/popup/classes/popup-component-controller.ts index d02584b19..013d0d1a7 100644 --- a/src/modules/popup/classes/popup-component-controller.ts +++ b/src/modules/popup/classes/popup-component-controller.ts @@ -1,4 +1,4 @@ -import { ComponentRef, ElementRef, Type } from "@angular/core"; +import { ComponentRef, ElementRef, Type, Renderer2 } from "@angular/core"; import { SuiComponentFactory } from "../../../misc/util"; import { SuiPopupController } from "./popup-controller"; import { PopupConfig } from "./popup-config"; @@ -13,12 +13,13 @@ export class SuiPopupComponentController extends SuiPopupController { } } - constructor(element:ElementRef, + constructor(renderer:Renderer2, + element:ElementRef, componentFactory:SuiComponentFactory, private _component:Type, config:PopupConfig) { - super(element, componentFactory, config); + super(renderer, element, componentFactory, config); this.popup.onClose.subscribe(() => { if (this._contentComponentRef) { diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index a8b0c15a0..641061b02 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -1,4 +1,4 @@ -import { ComponentRef, ElementRef, HostListener, OnDestroy } from "@angular/core"; +import { ComponentRef, ElementRef, HostListener, OnDestroy, Renderer2 } from "@angular/core"; import { SuiComponentFactory } from "../../../misc/util"; import { PopupConfig, PopupTrigger } from "./popup-config"; import { SuiPopup } from "../components/popup"; @@ -23,7 +23,11 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { // `setTimeout` timer pointer for delayed popup open. private _openingTimeout:number; - constructor(protected _element:ElementRef, + // Function to remove the document click handler. + private _documentListener:() => void; + + constructor(private _renderer:Renderer2, + protected _element:ElementRef, protected _componentFactory:SuiComponentFactory, config:PopupConfig) { @@ -37,6 +41,9 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { this.popup.onClose.subscribe(() => { this._componentRef.instance.positioningService.destroy(); this._componentFactory.detachFromApplication(this._componentRef); + + // Remove the document click handler + this._documentListener(); }); } @@ -68,6 +75,8 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { // Attach a reference to the anchor element. We do it here because IE11 loves to complain. this.popup.anchor = this._element; + this._documentListener = this._renderer.listen("document", "click", (e:MouseEvent) => this.onDocumentClick(e)); + // Start popup open transition. this.popup.open(); @@ -142,7 +151,7 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { } } - @HostListener("document:click", ["$event"]) + // @HostListener("document:click", ["$event"]) public onDocumentClick(e:MouseEvent):void { // If the popup trigger is outside click, if (this._componentRef && this.popup.config.trigger === PopupTrigger.OutsideClick) { diff --git a/src/modules/popup/directives/popup.directive.ts b/src/modules/popup/directives/popup.directive.ts index 23679cb34..f89e76793 100644 --- a/src/modules/popup/directives/popup.directive.ts +++ b/src/modules/popup/directives/popup.directive.ts @@ -1,4 +1,4 @@ -import { Directive, Input, ElementRef, TemplateRef } from "@angular/core"; +import { Directive, Input, ElementRef, TemplateRef, Renderer2 } from "@angular/core"; import { ITemplateRefContext, Util, PositioningPlacement, SuiComponentFactory } from "../../../misc/util"; import { SuiPopup } from "../components/popup"; import { PopupConfig, PopupTrigger } from "../classes/popup-config"; @@ -69,10 +69,11 @@ export class SuiPopupDirective extends SuiPopupController { this.popup.config.batch(config); } - constructor(element:ElementRef, + constructor(renderer:Renderer2, + element:ElementRef, componentFactory:SuiComponentFactory, popupDefaults:SuiPopupConfig) { - super(element, componentFactory, new PopupConfig(popupDefaults)); + super(renderer, element, componentFactory, new PopupConfig(popupDefaults)); } } From db1923761020f3771c5009338ee3ef03e41fd99f Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 17:34:34 +0100 Subject: [PATCH 41/69] fix: Added custom FocusEvent interface (#231) * fix: Added custom FocusEvent interface Closes #202 FocusEvent isn't defined in UC browser, so added IFocusEvent with the property we need. * style(util): Fixed tslint error --- src/misc/util/helpers/focus-event.ts | 3 +++ src/misc/util/index.ts | 1 + src/modules/dropdown/directives/dropdown.ts | 4 ++-- src/modules/search/components/search.ts | 4 ++-- src/modules/select/classes/select-base.ts | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 src/misc/util/helpers/focus-event.ts diff --git a/src/misc/util/helpers/focus-event.ts b/src/misc/util/helpers/focus-event.ts new file mode 100644 index 000000000..ea59e24f8 --- /dev/null +++ b/src/misc/util/helpers/focus-event.ts @@ -0,0 +1,3 @@ +export interface IFocusEvent extends Event { + relatedTarget:EventTarget; +} diff --git a/src/misc/util/index.ts b/src/misc/util/index.ts index 6791355c8..ac5d68541 100644 --- a/src/misc/util/index.ts +++ b/src/misc/util/index.ts @@ -1,6 +1,7 @@ export * from "./helpers/custom-validator"; export * from "./helpers/custom-value-accessor"; export * from "./helpers/date"; +export * from "./helpers/focus-event"; export * from "./helpers/util"; export * from "./services/component-factory.service"; diff --git a/src/modules/dropdown/directives/dropdown.ts b/src/modules/dropdown/directives/dropdown.ts index cd866cb03..3b55fbadf 100644 --- a/src/modules/dropdown/directives/dropdown.ts +++ b/src/modules/dropdown/directives/dropdown.ts @@ -2,7 +2,7 @@ import { Directive, Input, HostBinding, EventEmitter, Output, AfterContentInit, ContentChild, ElementRef, HostListener, QueryList, ContentChildren } from "@angular/core"; -import { HandledEvent, KeyCode } from "../../../misc/util"; +import { HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util"; import { DropdownService, DropdownAutoCloseType } from "../services/dropdown.service"; import { SuiDropdownMenu } from "./dropdown-menu"; @@ -117,7 +117,7 @@ export class SuiDropdown implements AfterContentInit { } @HostListener("focusout", ["$event"]) - private onFocusOut(e:FocusEvent):void { + private onFocusOut(e:IFocusEvent):void { if (!this._element.nativeElement.contains(e.relatedTarget)) { this.externallyClose(); } diff --git a/src/modules/search/components/search.ts b/src/modules/search/components/search.ts index f7c4edd68..9289d22fd 100644 --- a/src/modules/search/components/search.ts +++ b/src/modules/search/components/search.ts @@ -2,7 +2,7 @@ import { Component, ViewChild, HostBinding, Input, AfterViewInit, HostListener, EventEmitter, Output, Directive, ElementRef, TemplateRef } from "@angular/core"; -import { Util, ITemplateRefContext } from "../../../misc/util"; +import { Util, ITemplateRefContext, IFocusEvent } from "../../../misc/util"; import { DropdownService, SuiDropdownMenu } from "../../dropdown"; import { ISearchLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization"; import { SearchService } from "../services/search.service"; @@ -241,7 +241,7 @@ export class SuiSearch implements AfterViewInit { } @HostListener("focusout", ["$event"]) - private onFocusOut(e:FocusEvent):void { + private onFocusOut(e:IFocusEvent):void { if (!this._element.nativeElement.contains(e.relatedTarget)) { this.dropdownService.setOpenState(false); } diff --git a/src/modules/select/classes/select-base.ts b/src/modules/select/classes/select-base.ts index 041bc9d69..d62ebea9f 100644 --- a/src/modules/select/classes/select-base.ts +++ b/src/modules/select/classes/select-base.ts @@ -5,7 +5,7 @@ import { import { Subscription } from "rxjs/Subscription"; import { DropdownService, SuiDropdownMenu } from "../../dropdown"; import { SearchService, LookupFn, FilterFn } from "../../search"; -import { Util, ITemplateRefContext, HandledEvent, KeyCode } from "../../../misc/util"; +import { Util, ITemplateRefContext, HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util"; import { ISelectLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization"; import { SuiSelectOption, ISelectRenderedOption } from "../components/select-option"; import { SuiSelectSearch } from "../directives/select-search"; @@ -365,7 +365,7 @@ export abstract class SuiSelectBase implements AfterContentInit { } @HostListener("focusout", ["$event"]) - private onFocusOut(e:FocusEvent):void { + private onFocusOut(e:IFocusEvent):void { if (!this._element.nativeElement.contains(e.relatedTarget)) { this.dropdownService.setOpenState(false); this.onTouched.emit(); From 33a878fb956425cc996323845c59f44420e4f129 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 17:36:10 +0100 Subject: [PATCH 42/69] chore(popup): Relaxed popper.js dependency (#228) Follows up on #195 --- package-lock.json | 39 +++++++++++++++++---------------------- package.json | 3 +-- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2315a2d0..608ac3c06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -236,11 +236,6 @@ "integrity": "sha512-7F3/P6MkTPA0QxOstRqfcnoReCUy5V/QG92cyBoZSPnqdX44L8TtNELSVfN56gAttm3YWj9cEi8FRIPVq0WmeQ==", "dev": true }, - "@types/popper.js": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@types/popper.js/-/popper.js-1.10.0.tgz", - "integrity": "sha512-uCIOl4SGPuePM8UWIbRCJgEY597Tn1kHxYrWizHJjo8ZHyvMYafhKPjIRWda42fNCepMogC9Vy7REH3dd1cD+g==" - }, "@types/prismjs": { "version": "1.4.18", "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.4.18.tgz", @@ -427,7 +422,7 @@ "aproba": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", - "integrity": "sha1-RcZikJTeTpb2k+9+q3SuB5wkD8E=", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", "dev": true }, "are-we-there-yet": { @@ -4170,7 +4165,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -4203,7 +4198,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "globby": { @@ -5395,7 +5390,7 @@ "istanbul-lib-coverage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha1-c7+5mIhSmUFck9OKPprfeEp3qdo=", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { @@ -6249,7 +6244,7 @@ "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "optional": true, "requires": { @@ -6426,7 +6421,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -7187,9 +7182,9 @@ } }, "popper.js": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.10.8.tgz", - "integrity": "sha512-2LbS9yubeRwcRhThjGGcuKUHS5oGDxDRdYa+tBVjvwKBh7BBaNyALysYIJogCqTfQzOVtng8Z2TvaaSuYZtW8w==" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.11.1.tgz", + "integrity": "sha512-wwp6RVokzjO4qh86qFeTw/zEw8y0uqB1U82LWTUExBDq8EJx/8svxDXVQB2jxTjRX+J+S++tQkbWnbOuOykZFw==" }, "portfinder": { "version": "1.0.13", @@ -8025,7 +8020,7 @@ "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -8066,7 +8061,7 @@ "randombytes": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha1-3ACaJGuNCaF3tLegrne8Vw9LG3k=", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -9470,7 +9465,7 @@ "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha1-QKBQ7I3DtTsz2ZCUFcAsC/Gr+60=", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", @@ -10059,7 +10054,7 @@ "url-loader": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", - "integrity": "sha1-zI/qgse5Bud3cBklCGnlaemVwpU=", + "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", "dev": true, "requires": { "loader-utils": "1.1.0", @@ -10269,7 +10264,7 @@ "walk-sync": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz", - "integrity": "sha1-SCcoCvxC0OA1NnxKTjHurA0Tb3U=", + "integrity": "sha512-FMB5VqpLqOCcqrzA9okZFc0wq0Qbmdm396qJxvQZhDpyu0W95G9JCmp74tx7iyYnyOcBtUuKJsgIKAqjozvmmQ==", "dev": true, "requires": { "ensure-posix-path": "1.0.2", @@ -10634,7 +10629,7 @@ "webpack-sources": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha1-xzVkNqTRMSO+LiQmoF0drZy+Zc8=", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", "dev": true, "requires": { "source-list-map": "2.0.0", @@ -10644,7 +10639,7 @@ "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU=", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true } } @@ -10694,7 +10689,7 @@ "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { "string-width": "1.0.2" diff --git a/package.json b/package.json index 84a10edb8..eec527149 100644 --- a/package.json +++ b/package.json @@ -49,12 +49,11 @@ "typescript": "~2.3.0" }, "dependencies": { - "@types/popper.js": "~1.10.0", "bowser": "^1.7.0", "date-fns": "2.0.0-alpha.1", "element-closest": "^2.0.2", "extend": "^3.0.1", - "popper.js": "~1.10.6", + "popper.js": "^1.11.1", "rxjs": "^5.0.1" }, "devDependencies": { From 164da7b8bbc7fed73e7d47968b33bdf7fafcf3ed Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 17:39:46 +0100 Subject: [PATCH 43/69] fix(popup): Fixed delay causing destroyed view errors (#233) Closes #189 --- src/modules/popup/classes/popup-controller.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 641061b02..d832b6341 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -178,6 +178,7 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { } public ngOnDestroy():void { + clearTimeout(this._openingTimeout); this._componentRef.destroy(); } } From 228b6b9a50c36fed768eadb809508f92875784cb Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 18:29:29 +0100 Subject: [PATCH 44/69] fix(select): Manually run change detector when option updates (#236) * fix(select): Manually run change detector when option updates Closes #213 * style(select): Fixed tslint error --- src/modules/select/classes/select-base.ts | 8 +++++--- src/modules/select/components/multi-select.ts | 4 ++-- src/modules/select/components/select-option.ts | 16 ++++------------ src/modules/select/components/select.ts | 4 ++-- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/modules/select/classes/select-base.ts b/src/modules/select/classes/select-base.ts index d62ebea9f..d6f147e84 100644 --- a/src/modules/select/classes/select-base.ts +++ b/src/modules/select/classes/select-base.ts @@ -7,7 +7,7 @@ import { DropdownService, SuiDropdownMenu } from "../../dropdown"; import { SearchService, LookupFn, FilterFn } from "../../search"; import { Util, ITemplateRefContext, HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util"; import { ISelectLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization"; -import { SuiSelectOption, ISelectRenderedOption } from "../components/select-option"; +import { SuiSelectOption } from "../components/select-option"; import { SuiSelectSearch } from "../directives/select-search"; export interface IOptionContext extends ITemplateRefContext { @@ -150,7 +150,7 @@ export abstract class SuiSelectBase implements AfterContentInit { this.queryUpdateHook(); this.updateQuery(query); // Update the rendered text as query has changed. - this._renderedOptions.forEach(ro => ro.formatter = this.configuredFormatter); + this._renderedOptions.forEach(ro => this.initialiseRenderedOption(ro)); if (this.searchInput) { this.searchInput.query = query; @@ -314,13 +314,15 @@ export abstract class SuiSelectBase implements AfterContentInit { } } - protected initialiseRenderedOption(option:ISelectRenderedOption):void { + protected initialiseRenderedOption(option:SuiSelectOption):void { option.usesTemplate = !!this.optionTemplate; option.formatter = this.configuredFormatter; if (option.usesTemplate) { this.drawTemplate(option.templateSibling, option.value); } + + option.changeDetector.detectChanges(); } public abstract selectOption(option:T):void; diff --git a/src/modules/select/components/multi-select.ts b/src/modules/select/components/multi-select.ts index 91f914853..4d80ac845 100644 --- a/src/modules/select/components/multi-select.ts +++ b/src/modules/select/components/multi-select.ts @@ -2,7 +2,7 @@ import { Component, HostBinding, ElementRef, EventEmitter, Output, Input, Direct import { ICustomValueAccessorHost, KeyCode, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; import { SuiLocalizationService } from "../../../behaviors/localization"; import { SuiSelectBase } from "../classes/select-base"; -import { ISelectRenderedOption } from "./select-option"; +import { SuiSelectOption } from "./select-option"; @Component({ selector: "sui-multi-select", @@ -158,7 +158,7 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom } } - protected initialiseRenderedOption(option:ISelectRenderedOption):void { + protected initialiseRenderedOption(option:SuiSelectOption):void { super.initialiseRenderedOption(option); // Boldens the item so it appears selected in the dropdown. diff --git a/src/modules/select/components/select-option.ts b/src/modules/select/components/select-option.ts index 717901429..ac34e7ede 100644 --- a/src/modules/select/components/select-option.ts +++ b/src/modules/select/components/select-option.ts @@ -5,14 +5,6 @@ import { import { SuiDropdownMenuItem } from "../../dropdown"; import { HandledEvent } from "../../../misc/util"; -export interface ISelectRenderedOption { - value:T; - isActive?:boolean; - formatter:(o:T) => string; - usesTemplate:boolean; - templateSibling:ViewContainerRef; -} - @Component({ selector: "sui-select-option", template: ` @@ -20,7 +12,7 @@ export interface ISelectRenderedOption { ` }) -export class SuiSelectOption extends SuiDropdownMenuItem implements ISelectRenderedOption { +export class SuiSelectOption extends SuiDropdownMenuItem { // Sets the Semantic UI classes on the host element. @HostBinding("class.item") private _optionClasses:boolean; @@ -51,7 +43,7 @@ export class SuiSelectOption extends SuiDropdownMenuItem implements ISelectRe @ViewChild("templateSibling", { read: ViewContainerRef }) public templateSibling:ViewContainerRef; - constructor(renderer:Renderer2, element:ElementRef) { + constructor(renderer:Renderer2, element:ElementRef, public changeDetector:ChangeDetectorRef) { // We inherit SuiDropdownMenuItem to automatically gain all keyboard navigation functionality. // This is not done via adding the .item class because it isn't supported by Angular. super(renderer, element); @@ -60,8 +52,8 @@ export class SuiSelectOption extends SuiDropdownMenuItem implements ISelectRe this.isActive = false; this.onSelected = new EventEmitter(); - // By default we make this function return an empty string, for the brief moment when it isn't displaying the correct label. - this.formatter = o => ""; + // By default we make the default text an empty label, for the brief moment when it isn't displaying the correct one. + this.renderedText = ""; this.usesTemplate = false; } diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index f7f175b51..cc585cb83 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -2,7 +2,7 @@ import { Component, ViewContainerRef, ViewChild, Output, EventEmitter, ElementRe import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; import { SuiLocalizationService } from "../../../behaviors/localization"; import { SuiSelectBase } from "../classes/select-base"; -import { ISelectRenderedOption } from "./select-option"; +import { SuiSelectOption } from "./select-option"; @Component({ selector: "sui-select", @@ -122,7 +122,7 @@ export class SuiSelect extends SuiSelectBase implements ICustomValue } } - protected initialiseRenderedOption(option:ISelectRenderedOption):void { + protected initialiseRenderedOption(option:SuiSelectOption):void { super.initialiseRenderedOption(option); // Boldens the item so it appears selected in the dropdown. From 2ba87f81370bf69c418da82da73b7ff1eef351f6 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 18:45:23 +0100 Subject: [PATCH 45/69] fix(select): Selected options now updated when options change (#232) --- src/modules/select/components/multi-select.ts | 9 ++++++++- src/modules/select/components/select.ts | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/modules/select/components/multi-select.ts b/src/modules/select/components/multi-select.ts index 4d80ac845..c8e9c9e8a 100644 --- a/src/modules/select/components/multi-select.ts +++ b/src/modules/select/components/multi-select.ts @@ -145,11 +145,16 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom } protected optionsUpdateHook():void { + if (!this._writtenOptions && this.selectedOptions.length > 0) { + // We need to check the options still exist. + this.writeValue(this.selectedOptions.map(o => this.valueGetter(o))); + } + if (this._writtenOptions && this.searchService.options.length > 0) { // If there were values written by ngModel before the options had been loaded, this runs to fix it. this.selectedOptions = this._writtenOptions // non-null assertion added here because Typescript doesn't recognise the non-null filter. - .map(v => this.searchService.options.find(o => v === this.valueGetter(o))!) + .map(v => this.findOption(this.searchService.options, v)!) .filter(v => v != undefined); if (this.selectedOptions.length === this._writtenOptions.length) { @@ -206,6 +211,8 @@ export class SuiMultiSelect extends SuiSelectBase implements ICustom if (values.length === 0) { this.selectedOptions = []; } + } else { + this.selectedOptions = []; } } diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index cc585cb83..8b534aa7c 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -64,6 +64,11 @@ export class SuiSelect extends SuiSelectBase implements ICustomValue } protected optionsUpdateHook():void { + if (!this._writtenOption && this.selectedOption) { + // We need to check the option still exists. + this.writeValue(this.valueGetter(this.selectedOption)); + } + if (this._writtenOption && this.searchService.options.length > 0) { // If there was an value written by ngModel before the options had been loaded, this runs to fix it. this.selectedOption = this.findOption(this.searchService.options, this._writtenOption); From 72b74982b93ea6a193285656cc1cd233f61f9a87 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 18:47:39 +0100 Subject: [PATCH 46/69] fix(modal): Fixed aggressive autofocus sometimes causing errors (#237) --- src/modules/modal/components/modal.ts | 3 ++- src/modules/popup/components/popup.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/modal/components/modal.ts b/src/modules/modal/components/modal.ts index 9712c2175..29f4602f4 100644 --- a/src/modules/modal/components/modal.ts +++ b/src/modules/modal/components/modal.ts @@ -215,7 +215,8 @@ export class SuiModal implements OnInit, AfterViewInit { // Focus any element with [autofocus] attribute. const autoFocus = element.querySelector("[autofocus]") as HTMLElement | null; if (autoFocus) { - autoFocus.focus(); + // Autofocus after the browser has had time to process other event handlers. + setTimeout(() => autoFocus.focus(), 10); // Try to focus again when the modal has opened so that autofocus works in IE11. setTimeout(() => autoFocus.focus(), this.transitionDuration); } diff --git a/src/modules/popup/components/popup.ts b/src/modules/popup/components/popup.ts index cc146ff01..b18cd68e4 100644 --- a/src/modules/popup/components/popup.ts +++ b/src/modules/popup/components/popup.ts @@ -144,7 +144,8 @@ export class SuiPopup implements IPopup { // Focus any element with [autofocus] attribute. const autoFocus = this.elementRef.nativeElement.querySelector("[autofocus]") as HTMLElement | null; if (autoFocus) { - autoFocus.focus(); + // Autofocus after the browser has had time to process other event handlers. + setTimeout(() => autoFocus.focus(), 10); // Try to focus again when the modal has opened so that autofocus works in IE11. setTimeout(() => autoFocus.focus(), this.config.transitionDuration); } From ee4dcce0abdc0d3f2ed0eb4267efaffa5d46b886 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 18:50:24 +0100 Subject: [PATCH 47/69] fix(popup): Fixed conflict with BrowserAnimationsModule (#234) * fix(popup): Fixed conflict with BrowserAnimationsModule Closes #204 * style(popup): Fixed tslint error --- src/modules/popup/classes/popup-controller.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index d832b6341..43533c92e 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -65,8 +65,7 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { }); } - // Detach & reattach the generated component to the current application. - this._componentFactory.detachFromApplication(this._componentRef); + // Attach the generated component to the current application. this._componentFactory.attachToApplication(this._componentRef); // Move the generated element to the body to avoid any positioning issues. @@ -151,7 +150,6 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { } } - // @HostListener("document:click", ["$event"]) public onDocumentClick(e:MouseEvent):void { // If the popup trigger is outside click, if (this._componentRef && this.popup.config.trigger === PopupTrigger.OutsideClick) { @@ -179,6 +177,7 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { public ngOnDestroy():void { clearTimeout(this._openingTimeout); + this._componentFactory.detachFromApplication(this._componentRef); this._componentRef.destroy(); } } From 6a1d068f29e1ade4194eacf949d795fe7abc89fd Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 19:11:24 +0100 Subject: [PATCH 48/69] feat(popup): Added template context support (#238) --- .../app/pages/modules/popup/popup.page.html | 4 +- .../src/app/pages/modules/popup/popup.page.ts | 15 ++++-- src/modules/popup/classes/popup-config.ts | 6 --- src/modules/popup/classes/popup-controller.ts | 17 +++--- .../classes/popup-template-controller.ts | 52 +++++++++++++++++++ .../popup/directives/popup.directive.ts | 22 +++++--- src/modules/popup/index.ts | 1 + src/modules/popup/public.ts | 2 + 8 files changed, 89 insertions(+), 30 deletions(-) create mode 100644 src/modules/popup/classes/popup-template-controller.ts diff --git a/demo/src/app/pages/modules/popup/popup.page.html b/demo/src/app/pages/modules/popup/popup.page.html index 134749e8f..ac39cf0cd 100644 --- a/demo/src/app/pages/modules/popup/popup.page.html +++ b/demo/src/app/pages/modules/popup/popup.page.html @@ -21,7 +21,9 @@

Template

You can use a template element for a popup.

If you need to access a local variable, such as within an *ngFor, - place the template within the scope of the repeated elements. + either place the template within the scope of the repeated elements, or bind + popupTemplateContext to the variable and access it in the template + as popup.context.

Adding the autofocus attribute to an element diff --git a/demo/src/app/pages/modules/popup/popup.page.ts b/demo/src/app/pages/modules/popup/popup.page.ts index 509d0732e..e223a726d 100644 --- a/demo/src/app/pages/modules/popup/popup.page.ts +++ b/demo/src/app/pages/modules/popup/popup.page.ts @@ -50,11 +50,6 @@ export class PopupPage { type: "string", description: "Sets the title of the popup." }, - { - name: "popupTemplate", - type: "TemplateRef", - description: "Sets the template to use when rendering the popup." - }, { name: "popupPlacement", type: "PopupPlacement", @@ -80,6 +75,16 @@ export class PopupPage { description: "Sets the time delay in milliseconds before the popup opens after triggered.", defaultValue: "0" }, + { + name: "popupTemplate", + type: "TemplateRef>", + description: "Sets the template to use when rendering the popup." + }, + { + name: "popupTemplateContext", + type: "T", + description: "Sets the context object available to the popup template." + }, { name: "popupBasic", type: "boolean", diff --git a/src/modules/popup/classes/popup-config.ts b/src/modules/popup/classes/popup-config.ts index 7d7c8f768..5febde089 100644 --- a/src/modules/popup/classes/popup-config.ts +++ b/src/modules/popup/classes/popup-config.ts @@ -15,7 +15,6 @@ export const PopupTrigger = { export interface IPopupConfig { header?:string; text?:string; - template?:TemplateRef>; placement?:PositioningPlacement; trigger?:PopupTrigger; isInverted?:boolean; @@ -28,7 +27,6 @@ export interface IPopupConfig { export class PopupConfig implements IPopupConfig { public header:string; public text:string; - public template:TemplateRef>; public placement:PositioningPlacement; public trigger:PopupTrigger; public isInverted:boolean; @@ -48,8 +46,4 @@ export class PopupConfig implements IPopupConfig { Object.assign(this, defaults); } - - public batch(config:IPopupConfig = {}):void { - Object.assign(this, config); - } } diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 43533c92e..59cf8ea43 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -1,6 +1,6 @@ import { ComponentRef, ElementRef, HostListener, OnDestroy, Renderer2 } from "@angular/core"; import { SuiComponentFactory } from "../../../misc/util"; -import { PopupConfig, PopupTrigger } from "./popup-config"; +import { PopupConfig, PopupTrigger, IPopupConfig } from "./popup-config"; import { SuiPopup } from "../components/popup"; import { IPopupLifecycle } from "./popup-lifecycle"; @@ -47,6 +47,12 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { }); } + public configure(config?:IPopupConfig):void { + if (config) { + Object.assign(this.popup.config, config); + } + } + public openDelayed():void { // Cancel the opening timer. clearTimeout(this._openingTimeout); @@ -56,15 +62,6 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { } public open():void { - // If there is a template, inject it into the view. - if (this.popup.config.template) { - this.popup.templateSibling.clear(); - - this._componentFactory.createView(this.popup.templateSibling, this.popup.config.template, { - $implicit: this.popup - }); - } - // Attach the generated component to the current application. this._componentFactory.attachToApplication(this._componentRef); diff --git a/src/modules/popup/classes/popup-template-controller.ts b/src/modules/popup/classes/popup-template-controller.ts new file mode 100644 index 000000000..5e1c84fee --- /dev/null +++ b/src/modules/popup/classes/popup-template-controller.ts @@ -0,0 +1,52 @@ +import { TemplateRef, Renderer2, ElementRef } from "@angular/core"; +import { SuiPopupController, IPopup } from "./popup-controller"; +import { ITemplateRefContext, SuiComponentFactory, IImplicitContext } from "../../../misc/util"; +import { PopupConfig, IPopupConfig } from "./popup-config"; + +const templateRef = TemplateRef; + +export interface ITemplatePopupContext extends IImplicitContext { + context?:T; +} + +export interface ITemplatePopupConfig extends IPopupConfig { + template?:TemplateRef>; + context?:T; +} + +export class SuiPopupTemplateController extends SuiPopupController { + public template?:TemplateRef>; + + public context?:T; + + constructor(renderer:Renderer2, + element:ElementRef, + componentFactory:SuiComponentFactory, + config:PopupConfig) { + + super(renderer, element, componentFactory, config); + } + + public configure(config?:ITemplatePopupConfig):void { + super.configure(config); + + if (config) { + this.template = config.template; + this.context = config.context; + } + } + + public open():void { + // If there is a template, inject it into the view. + if (this.template) { + this.popup.templateSibling.clear(); + + this._componentFactory.createView(this.popup.templateSibling, this.template, { + $implicit: this.popup, + context: this.context + }); + } + + super.open(); + } +} diff --git a/src/modules/popup/directives/popup.directive.ts b/src/modules/popup/directives/popup.directive.ts index f89e76793..fd8f8c54d 100644 --- a/src/modules/popup/directives/popup.directive.ts +++ b/src/modules/popup/directives/popup.directive.ts @@ -4,17 +4,13 @@ import { SuiPopup } from "../components/popup"; import { PopupConfig, PopupTrigger } from "../classes/popup-config"; import { SuiPopupConfig } from "../services/popup.service"; import { SuiPopupController } from "../classes/popup-controller"; +import { SuiPopupTemplateController, ITemplatePopupContext, ITemplatePopupConfig } from "../classes/popup-template-controller"; @Directive({ selector: "[suiPopup]", exportAs: "suiPopup" }) -export class SuiPopupDirective extends SuiPopupController { - @Input() - public set popupTemplate(template:TemplateRef>) { - this.popup.config.template = template; - } - +export class SuiPopupDirective extends SuiPopupTemplateController { @Input() public set popupHeader(header:string) { this.popup.config.header = header; @@ -65,8 +61,18 @@ export class SuiPopupDirective extends SuiPopupController { } @Input() - public set popupConfig(config:PopupConfig) { - this.popup.config.batch(config); + public set popupTemplate(template:TemplateRef> | undefined) { + this.template = template; + } + + @Input() + public set popupTemplateContext(context:T | undefined) { + this.context = context; + } + + @Input() + public set popupConfig(config:ITemplatePopupConfig | undefined) { + this.configure(config); } constructor(renderer:Renderer2, diff --git a/src/modules/popup/index.ts b/src/modules/popup/index.ts index f707720c8..dbc724480 100644 --- a/src/modules/popup/index.ts +++ b/src/modules/popup/index.ts @@ -2,6 +2,7 @@ export * from "./classes/popup-component-controller"; export * from "./classes/popup-config"; export * from "./classes/popup-controller"; export * from "./classes/popup-lifecycle"; +export * from "./classes/popup-template-controller"; export * from "./components/popup-arrow"; export * from "./components/popup"; diff --git a/src/modules/popup/public.ts b/src/modules/popup/public.ts index 6fac648f7..0803bb4e2 100644 --- a/src/modules/popup/public.ts +++ b/src/modules/popup/public.ts @@ -3,6 +3,8 @@ export { IPopup, SuiPopupConfig, IPopupConfig, + ITemplatePopupConfig, + ITemplatePopupContext, PopupTrigger } from "./index"; From e429419938f7aa5104ac48ab186f1024b5f7668f Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Fri, 11 Aug 2017 19:22:29 +0100 Subject: [PATCH 49/69] fix(popup): Fixed focus events on popup (#243) --- src/modules/popup/classes/popup-controller.ts | 10 +++++++--- src/modules/popup/components/popup.ts | 14 ++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 59cf8ea43..a54eac728 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -165,9 +165,13 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { } } - @HostListener("focusout") - private onFocusOut():void { - if (this.popup.config.trigger === PopupTrigger.Focus) { + @HostListener("focusout", ["$event"]) + private onFocusOut(e:any):void { + console.log(e.relatedTarget); + if (!this._element.nativeElement.contains(e.relatedTarget) && + !this.popup.elementRef.nativeElement.contains(e.relatedTarget) && + this.popup.config.trigger === PopupTrigger.Focus) { + this.close(); } } diff --git a/src/modules/popup/components/popup.ts b/src/modules/popup/components/popup.ts index b18cd68e4..277e45107 100644 --- a/src/modules/popup/components/popup.ts +++ b/src/modules/popup/components/popup.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, ViewContainerRef, ElementRef, EventEmitter, HostListener } from "@angular/core"; +import { Component, ViewChild, ViewContainerRef, ElementRef, EventEmitter, HostListener, HostBinding } from "@angular/core"; import { PositioningService, IDynamicClasses } from "../../../misc/util"; import { TransitionController, TransitionDirection, Transition } from "../../transition"; import { IPopup } from "../classes/popup-controller"; @@ -122,6 +122,9 @@ export class SuiPopup implements IPopup { @ViewChild("templateSibling", { read: ViewContainerRef }) public templateSibling:ViewContainerRef; + @HostBinding("attr.tabindex") + private _tabindex:number; + constructor(public elementRef:ElementRef) { this.transitionController = new TransitionController(false); @@ -129,6 +132,8 @@ export class SuiPopup implements IPopup { this.onOpen = new EventEmitter(); this.onClose = new EventEmitter(); + + this._tabindex = 0; } public open():void { @@ -187,13 +192,6 @@ export class SuiPopup implements IPopup { } } - @HostListener("mousedown", ["$event"]) - public onMouseDown(e:MouseEvent):void { - if (!this.elementRef.nativeElement.contains(e.target)) { - e.preventDefault(); - } - } - @HostListener("click", ["$event"]) public onClick(event:MouseEvent):void { // Makes sense here, as the popup shouldn't be attached to any DOM element. From 13e361cd2f3c3d3d44f318d1ef03f35ef37badad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Haro?= Date: Sat, 12 Aug 2017 23:33:27 -0300 Subject: [PATCH 50/69] feat(datepicker) Popup now honors locale and pickerLocaleOverrides (#215) * Datepicker popup now honors locale and pickerLocaleOverrides - Datepicker popup items now respect locale format - Fixed a bug in zoom calendar mapping for datetime datepicker - Fixed 'es' locale for consistency (*) Partially addresses #164 * Added comments. --- src/behaviors/localization/locales/es.ts | 2 +- .../datepicker/classes/calendar-mappings.ts | 2 +- src/modules/datepicker/views/date-view.ts | 2 +- src/modules/datepicker/views/hour-view.ts | 9 ++++++--- src/modules/datepicker/views/minute-view.ts | 19 ++++++++----------- src/modules/datepicker/views/month-view.ts | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/behaviors/localization/locales/es.ts b/src/behaviors/localization/locales/es.ts index caa8fc17b..28e441208 100644 --- a/src/behaviors/localization/locales/es.ts +++ b/src/behaviors/localization/locales/es.ts @@ -24,7 +24,7 @@ const es:IPartialLocaleValues = { ], formats: { time: "HH:mm", - datetime: "D MMMM [de] YYYY HH:mm", + datetime: "D [de] MMMM [de] YYYY HH:mm", date: "D [de] MMMM [de] YYYY", month: "MMMM [de] YYYY", year: "YYYY" diff --git a/src/modules/datepicker/classes/calendar-mappings.ts b/src/modules/datepicker/classes/calendar-mappings.ts index 4fc726501..98fe329ec 100644 --- a/src/modules/datepicker/classes/calendar-mappings.ts +++ b/src/modules/datepicker/classes/calendar-mappings.ts @@ -69,7 +69,7 @@ export class DatetimeMappings extends CalendarMappings { [CalendarViewType.Month, CalendarViewType.Year], [CalendarViewType.Date, CalendarViewType.Month], [CalendarViewType.Hour, CalendarViewType.Date], - [CalendarViewType.Minute, CalendarViewType.Date] + [CalendarViewType.Minute, CalendarViewType.Hour] ]); } } diff --git a/src/modules/datepicker/views/date-view.ts b/src/modules/datepicker/views/date-view.ts index ad44b0f0f..c841c7e9a 100644 --- a/src/modules/datepicker/views/date-view.ts +++ b/src/modules/datepicker/views/date-view.ts @@ -58,7 +58,7 @@ export class SuiCalendarDateView extends CalendarView { } public get date():string { - return new DateParser("MMMM YYYY", this.service.localeValues).format(this.currentDate); + return new DateParser(this.service.localeValues.formats.month, this.service.localeValues).format(this.currentDate); } constructor() { diff --git a/src/modules/datepicker/views/hour-view.ts b/src/modules/datepicker/views/hour-view.ts index 6008a1ee0..438d0ef74 100644 --- a/src/modules/datepicker/views/hour-view.ts +++ b/src/modules/datepicker/views/hour-view.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { Util, DatePrecision } from "../../../misc/util"; +import { DatePrecision } from "../../../misc/util"; import { CalendarView, CalendarViewType } from "./calendar-view"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarRangeService } from "../services/calendar-range.service"; @@ -7,7 +7,9 @@ import { DateParser } from "../classes/date-parser"; export class CalendarRangeHourService extends CalendarRangeService { public configureItem(item:CalendarItem, baseDate:Date):void { - item.humanReadable = `${Util.String.padLeft(item.date.getHours().toString(), 2, "0")}:00`; + // Set minutes and seconds to 0 + const customFormat:string = this.service.localeValues.formats.time.replace(/[ms]/g, "0"); + item.humanReadable = new DateParser(customFormat, this.service.localeValues).format(item.date); item.isOutsideRange = false; item.isToday = false; } @@ -43,8 +45,9 @@ export class CalendarRangeHourService extends CalendarRangeService { ` }) export class SuiCalendarHourView extends CalendarView { + public get date():string { - return new DateParser("MMMM D, YYYY", this.service.localeValues).format(this.currentDate); + return new DateParser(this.service.localeValues.formats.date, this.service.localeValues).format(this.currentDate); } constructor() { diff --git a/src/modules/datepicker/views/minute-view.ts b/src/modules/datepicker/views/minute-view.ts index ca5a76f76..33155242b 100644 --- a/src/modules/datepicker/views/minute-view.ts +++ b/src/modules/datepicker/views/minute-view.ts @@ -18,10 +18,7 @@ export class CalendarRangeMinuteService extends CalendarRangeService { } public configureItem(item:CalendarItem, baseDate:Date):void { - const hs = Util.String.padLeft(item.date.getHours().toString(), 2, "0"); - const ms = Util.String.padLeft(item.date.getMinutes().toString(), 2, "0"); - - item.humanReadable = `${hs}:${ms}`; + item.humanReadable = new DateParser(this.service.localeValues.formats.time, this.service.localeValues).format(item.date); item.isOutsideRange = false; item.isToday = false; } @@ -58,15 +55,15 @@ export class CalendarRangeMinuteService extends CalendarRangeService { }) export class SuiCalendarMinuteView extends CalendarView { public get date():string { - const [time, date] = new DateParser("HH:00|MMMM D, YYYY", this.service.localeValues) - .format(this.currentDate) - .split("|"); - if (this.service.config.mode !== CalendarMode.TimeOnly) { - return `${date} ${time}`; + // Set minutes and seconds to 0 + const dateTimeFormat:string = this.service.localeValues.formats.datetime.replace(/[ms]/g, "0"); + return new DateParser(dateTimeFormat, this.service.localeValues).format(this.currentDate); + } else { + // Set minutes and seconds to 0 + const timeFormat:string = this.service.localeValues.formats.time.replace(/[ms]/g, "0"); + return new DateParser(timeFormat, this.service.localeValues).format(this.currentDate); } - - return time; } constructor() { diff --git a/src/modules/datepicker/views/month-view.ts b/src/modules/datepicker/views/month-view.ts index 526b8846a..10657bfc0 100644 --- a/src/modules/datepicker/views/month-view.ts +++ b/src/modules/datepicker/views/month-view.ts @@ -43,7 +43,7 @@ export class CalendarRangeMonthService extends CalendarRangeService { }) export class SuiCalendarMonthView extends CalendarView { public get year():string { - return new DateParser("YYYY", this.service.localeValues).format(this.currentDate); + return new DateParser(this.service.localeValues.formats.year, this.service.localeValues).format(this.currentDate); } constructor() { From 9a49384ed666f572e4e4f103db8983dfcc6d2129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Haro?= Date: Sat, 12 Aug 2017 23:47:29 -0300 Subject: [PATCH 51/69] Time of day values supported in locale definitions (#214) * en-GB and en-US locales now use 12 hour format Original "HH:mm" (23:59) -> Now "hh:mm aa" (11:59 p.m.) * Fix locales Russian, Italian and Hebrew now extend from ILocaleValues. * Added new IDatepickerFormatsLocaleValues fields: - timesOfDay - timesOfDayUppercase - timesOfDayLowercase to support proper formatting/parsing of dates in datepicker. Updated Localization page * Fixing code formatting --- .../localization/localization.page.ts | 3 ++ .../interfaces/datepicker-values.ts | 4 +++ src/behaviors/localization/locales/en-GB.ts | 14 ++++++-- src/behaviors/localization/locales/en-US.ts | 4 +-- src/behaviors/localization/locales/he.ts | 4 +-- src/behaviors/localization/locales/it.ts | 4 +-- src/behaviors/localization/locales/ru.ts | 4 +-- src/modules/datepicker/helpers/date-fns.ts | 35 ++++++++++++++++--- 8 files changed, 57 insertions(+), 15 deletions(-) diff --git a/demo/src/app/pages/behaviors/localization/localization.page.ts b/demo/src/app/pages/behaviors/localization/localization.page.ts index 310e54d30..b1feb38ed 100644 --- a/demo/src/app/pages/behaviors/localization/localization.page.ts +++ b/demo/src/app/pages/behaviors/localization/localization.page.ts @@ -150,6 +150,9 @@ interface ILocaleValues { weekdays:string[], // Full day names weekdaysShort:string[], // Short day names (3 letters) weekdaysNarrow:string[], // Narrow day names (1/2 letters) + timesOfDay:string[]; // Full time of day names (2 values only) + timesOfDayUppercase:string[]; // Short uppercase time of day names (2 values only) + timesOfDayLowercase:string[]; // Short lowercase time of day names (2 values only) formats: { time:string, // Date display format for 'time' mode datetime:string, // Display format for 'datetime' mode diff --git a/src/behaviors/localization/interfaces/datepicker-values.ts b/src/behaviors/localization/interfaces/datepicker-values.ts index ddabece42..269cdf5dd 100644 --- a/src/behaviors/localization/interfaces/datepicker-values.ts +++ b/src/behaviors/localization/interfaces/datepicker-values.ts @@ -1,5 +1,6 @@ export type Septuple = [T, T, T, T, T, T, T]; export type Duodecuple = [T, T, T, T, T, T, T, T, T, T, T, T]; +export type Pair = [T, T]; export interface IDatepickerFormatsLocaleValues { year:string; @@ -15,6 +16,9 @@ export interface IDatepickerLocaleValues { weekdays:Septuple; weekdaysShort:Septuple; weekdaysNarrow:Septuple; + timesOfDay:Pair; + timesOfDayUppercase:Pair; + timesOfDayLowercase:Pair; firstDayOfWeek:number; formats:IDatepickerFormatsLocaleValues; } diff --git a/src/behaviors/localization/locales/en-GB.ts b/src/behaviors/localization/locales/en-GB.ts index 5d458eb40..e1f4b9f38 100644 --- a/src/behaviors/localization/locales/en-GB.ts +++ b/src/behaviors/localization/locales/en-GB.ts @@ -1,4 +1,3 @@ - import { ILocaleValues } from "../interfaces/values"; const enGB:ILocaleValues = { @@ -18,9 +17,18 @@ const enGB:ILocaleValues = { weekdaysNarrow: [ "S", "M", "T", "W", "T", "F", "S" ], + timesOfDay: [ + "a.m.", "p.m." + ], + timesOfDayUppercase: [ + "AM", "PM" + ], + timesOfDayLowercase: [ + "am", "pm" + ], formats: { - time: "HH:mm", - datetime: "D MMMM YYYY HH:mm", + time: "hh:mm aa", + datetime: "D MMMM YYYY hh:mm aa", date: "D MMMM YYYY", month: "MMMM YYYY", year: "YYYY" diff --git a/src/behaviors/localization/locales/en-US.ts b/src/behaviors/localization/locales/en-US.ts index 71b79e6b9..9ad82f43d 100644 --- a/src/behaviors/localization/locales/en-US.ts +++ b/src/behaviors/localization/locales/en-US.ts @@ -4,8 +4,8 @@ const enUS:IPartialLocaleValues = { datepicker: { firstDayOfWeek: 0, formats: { - time: "HH:mm", - datetime: "MMMM D, YYYY HH:mm", + time: "hh:mm aa", + datetime: "MMMM D, YYYY hh:mm aa", date: "MMMM D, YYYY", month: "MMMM YYYY", year: "YYYY" diff --git a/src/behaviors/localization/locales/he.ts b/src/behaviors/localization/locales/he.ts index 2bd9d8239..84edfd225 100644 --- a/src/behaviors/localization/locales/he.ts +++ b/src/behaviors/localization/locales/he.ts @@ -2,9 +2,9 @@ * locale : Hebrew (he) * author : David limkys : https://github.com/gotenxds */ -import { ILocaleValues } from "../interfaces/values"; +import { IPartialLocaleValues } from "../interfaces/values"; -const he:ILocaleValues = { +const he:IPartialLocaleValues = { datepicker: { months: [ "ינואר", "פבואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" diff --git a/src/behaviors/localization/locales/it.ts b/src/behaviors/localization/locales/it.ts index 4da0ae8da..12ac133b9 100644 --- a/src/behaviors/localization/locales/it.ts +++ b/src/behaviors/localization/locales/it.ts @@ -3,9 +3,9 @@ * author : Massimo Costa : https://github.com/mcosta74 */ -import { ILocaleValues } from "../interfaces/values"; +import { IPartialLocaleValues } from "../interfaces/values"; -const it:ILocaleValues = { +const it:IPartialLocaleValues = { datepicker: { months: [ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" diff --git a/src/behaviors/localization/locales/ru.ts b/src/behaviors/localization/locales/ru.ts index 043bdc63d..41dcf8fb9 100644 --- a/src/behaviors/localization/locales/ru.ts +++ b/src/behaviors/localization/locales/ru.ts @@ -1,11 +1,11 @@ -import { ILocaleValues } from "../interfaces/values"; +import { IPartialLocaleValues } from "../interfaces/values"; /** * locale : Russian (ru) * author : Maksim Moiseikin : https://github.com/maksim-m */ -const ru:ILocaleValues = { +const ru:IPartialLocaleValues = { datepicker: { months: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" diff --git a/src/modules/datepicker/helpers/date-fns.ts b/src/modules/datepicker/helpers/date-fns.ts index 5dce343dc..40f1badfb 100644 --- a/src/modules/datepicker/helpers/date-fns.ts +++ b/src/modules/datepicker/helpers/date-fns.ts @@ -13,20 +13,30 @@ interface IDateFnsCustomLocale { weekdays:DateFnsHelper; month:DateFnsHelper; months:DateFnsHelper; + timeOfDay:DateFnsHelper; + timesOfDay:DateFnsHelper; }; match:{ weekdays:DateFnsHelper; weekday?:DateFnsHelper; months:DateFnsHelper; month?:DateFnsHelper; + timesOfDay:DateFnsHelper; + timeOfDay?:DateFnsHelper; }; options?:{ weekStartsOn?:number; }; } -function buildLocalizeFn(values:IDateFnsLocaleValues, defaultType:string):DateFnsHelper { - return (dirtyIndex, { type } = { type: defaultType }) => values[type][dirtyIndex]; +function buildLocalizeFn(values:IDateFnsLocaleValues, + defaultType:string, + indexCallback?:(oldIndex:number) => number):DateFnsHelper { + + return (dirtyIndex:number, { type } = { type: defaultType }) => { + const index = indexCallback ? indexCallback(dirtyIndex) : dirtyIndex; + return values[type][index]; + }; } function buildLocalizeArrayFn(values:IDateFnsLocaleValues, defaultType:string):DateFnsHelper { @@ -70,6 +80,17 @@ export class DateFnsParser { short: locale.monthsShort }; + const timeOfDayValues = { + long: locale.timesOfDay, + uppercase: locale.timesOfDayUppercase, + lowercase: locale.timesOfDayLowercase + }; + + const timeOfDayMatchValues = { + long: locale.timesOfDay, + short: locale.timesOfDayUppercase.concat(locale.timesOfDayLowercase) + }; + this._locale = defaultLocale as any; this._locale.localize = { ...this._locale.localize, @@ -77,7 +98,11 @@ export class DateFnsParser { weekday: buildLocalizeFn(weekdayValues, "long"), weekdays: buildLocalizeArrayFn(weekdayValues, "long"), month: buildLocalizeFn(monthValues, "long"), - months: buildLocalizeArrayFn(monthValues, "long") + months: buildLocalizeArrayFn(monthValues, "long"), + timeOfDay: buildLocalizeFn(timeOfDayValues, "long", (hours:number) => { + return hours / 12 >= 1 ? 1 : 0; + }), + timesOfDay: buildLocalizeArrayFn(timeOfDayValues, "long") } }; this._locale.match = { @@ -86,7 +111,9 @@ export class DateFnsParser { weekdays: buildMatchFn(weekdayValues, "long"), weekday: buildParseFn(weekdayValues, "long"), months: buildMatchFn(monthValues, "long"), - month: buildParseFn(monthValues, "long") + month: buildParseFn(monthValues, "long"), + timesOfDay:buildMatchFn(timeOfDayMatchValues, "long"), + timeOfDay:buildParseFn(timeOfDayMatchValues, "long") } }; } From 186bc4c8c506b91f5854efba27cd26e205f54e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Haro?= Date: Sat, 12 Aug 2017 23:55:47 -0300 Subject: [PATCH 52/69] feat(datepicker) Added initial date support for the datepicker (#216) * feat(datepicker) New input pickerInitialDate - New input (optional) that sets the intial date to display (null = today) - Updated demo page Partially addresses #165 * Now pickerInitialDate only sets CalendarService.currentDate property * feat(datepicker): Initial date support - Code formatting --- .../app/pages/modules/datepicker/datepicker.page.ts | 6 ++++++ .../datepicker/directives/datepicker.directive.ts | 5 ++++- src/modules/datepicker/services/calendar.service.ts | 10 ++++++---- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/demo/src/app/pages/modules/datepicker/datepicker.page.ts b/demo/src/app/pages/modules/datepicker/datepicker.page.ts index 909d43636..cde1ad3c2 100644 --- a/demo/src/app/pages/modules/datepicker/datepicker.page.ts +++ b/demo/src/app/pages/modules/datepicker/datepicker.page.ts @@ -94,6 +94,12 @@ export class DatepickerPage { "date, time, month & year.", defaultValue: "datetime" }, + { + name: "pickerInitialDate", + type: "Date", + description: "Sets the intial date to display when no date is selected.", + defaultValue: "new Date()" + }, { name: "pickerMaxDate", type: "Date", diff --git a/src/modules/datepicker/directives/datepicker.directive.ts b/src/modules/datepicker/directives/datepicker.directive.ts index bf1b91cd6..850fcc43d 100644 --- a/src/modules/datepicker/directives/datepicker.directive.ts +++ b/src/modules/datepicker/directives/datepicker.directive.ts @@ -1,4 +1,3 @@ - import { Directive, ElementRef, Renderer2, EventEmitter, Output, Input, HostListener, OnChanges, SimpleChanges @@ -63,6 +62,9 @@ export class SuiDatepickerDirective this.writeValue(this.selectedDate); } + @Input("pickerInitialDate") + public initialDate?:Date; + @Input("pickerMaxDate") public maxDate?:Date; @@ -131,6 +133,7 @@ export class SuiDatepickerDirective if (this.componentInstance) { this.componentInstance.service.config = this.config; this.componentInstance.service.localeValues = this.localeValues; + this.componentInstance.service.currentDate = this.initialDate || new Date(); this.componentInstance.service.selectedDate = this.selectedDate; this.componentInstance.service.maxDate = this.maxDate; this.componentInstance.service.minDate = this.minDate; diff --git a/src/modules/datepicker/services/calendar.service.ts b/src/modules/datepicker/services/calendar.service.ts index 566fe1e25..d6335069a 100644 --- a/src/modules/datepicker/services/calendar.service.ts +++ b/src/modules/datepicker/services/calendar.service.ts @@ -88,6 +88,8 @@ export class CalendarService { constructor(config:CalendarConfig, public localeValues:IDatepickerLocaleValues) { this.config = config; + this.currentDate = new Date(); + this.firstDayOfWeek = this.localeValues.firstDayOfWeek; this.onDateChange = new EventEmitter(); @@ -101,15 +103,15 @@ export class CalendarService { this.currentView = this.config.mappings.finalView; if (!this._selectedDate) { - let today = new Date().getTime(); + let current = this.currentDate.getTime(); if (this._minDate) { - today = Math.max(today, this._minDate.getTime()); + current = Math.max(current, this._minDate.getTime()); } if (this._maxDate) { - today = Math.min(today, this._maxDate.getTime()); + current = Math.min(current, this._maxDate.getTime()); } - this.currentDate = new Date(today); + this.currentDate = new Date(current); this.config.updateBounds(this.currentDate); this.currentView = this.config.mappings.initialView; From bccf7e53202f863b33fc910b7ce90db843dd3960 Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Mon, 14 Aug 2017 08:50:48 +0100 Subject: [PATCH 53/69] fix: Various minor bugfixes (#245) * fix(select): Fixed destroyed view errors * fix(modal): Fix modal auto closing when clicked * fix(popup): Removed console log in focus handler * fix(popup): Forced import of TemplateRef --- src/modules/modal/components/modal.ts | 6 ++++++ src/modules/popup/classes/popup-controller.ts | 1 - src/modules/popup/directives/popup.directive.ts | 2 ++ src/modules/select/classes/select-base.ts | 10 +++++++--- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/modules/modal/components/modal.ts b/src/modules/modal/components/modal.ts index 29f4602f4..543ddc6d0 100644 --- a/src/modules/modal/components/modal.ts +++ b/src/modules/modal/components/modal.ts @@ -28,6 +28,7 @@ import { ModalConfig, ModalSize } from "../classes/modal-config"; [class.scroll]="mustScroll" [class.inverted]="isInverted" [ngClass]="dynamicClasses" + (click)="onClick($event)" #modal> @@ -282,6 +283,11 @@ export class SuiModal implements OnInit, AfterViewInit { } } + public onClick(e:MouseEvent):void { + // Makes sense here, as the modal shouldn't be attached to any DOM element. + e.stopPropagation(); + } + @HostListener("document:keyup", ["$event"]) public onDocumentKeyup(e:KeyboardEvent):void { if (e.keyCode === KeyCode.Escape) { diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index a54eac728..0a93dc674 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -167,7 +167,6 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { @HostListener("focusout", ["$event"]) private onFocusOut(e:any):void { - console.log(e.relatedTarget); if (!this._element.nativeElement.contains(e.relatedTarget) && !this.popup.elementRef.nativeElement.contains(e.relatedTarget) && this.popup.config.trigger === PopupTrigger.Focus) { diff --git a/src/modules/popup/directives/popup.directive.ts b/src/modules/popup/directives/popup.directive.ts index fd8f8c54d..ae309e558 100644 --- a/src/modules/popup/directives/popup.directive.ts +++ b/src/modules/popup/directives/popup.directive.ts @@ -6,6 +6,8 @@ import { SuiPopupConfig } from "../services/popup.service"; import { SuiPopupController } from "../classes/popup-controller"; import { SuiPopupTemplateController, ITemplatePopupContext, ITemplatePopupConfig } from "../classes/popup-template-controller"; +const templateRef = TemplateRef; + @Directive({ selector: "[suiPopup]", exportAs: "suiPopup" diff --git a/src/modules/select/classes/select-base.ts b/src/modules/select/classes/select-base.ts index d6f147e84..c7b682f9f 100644 --- a/src/modules/select/classes/select-base.ts +++ b/src/modules/select/classes/select-base.ts @@ -1,6 +1,6 @@ import { ViewChild, HostBinding, ElementRef, HostListener, Input, ContentChildren, QueryList, - AfterContentInit, TemplateRef, ViewContainerRef, ContentChild, EventEmitter, Output + AfterContentInit, TemplateRef, ViewContainerRef, ContentChild, EventEmitter, Output, OnDestroy } from "@angular/core"; import { Subscription } from "rxjs/Subscription"; import { DropdownService, SuiDropdownMenu } from "../../dropdown"; @@ -16,7 +16,7 @@ export interface IOptionContext extends ITemplateRefContext { // We use generic type T to specify the type of the options we are working with, // and U to specify the type of the property of the option used as the value. -export abstract class SuiSelectBase implements AfterContentInit { +export abstract class SuiSelectBase implements AfterContentInit, OnDestroy { public dropdownService:DropdownService; public searchService:SearchService; @@ -322,7 +322,7 @@ export abstract class SuiSelectBase implements AfterContentInit { this.drawTemplate(option.templateSibling, option.value); } - option.changeDetector.detectChanges(); + option.changeDetector.markForCheck(); } public abstract selectOption(option:T):void; @@ -418,4 +418,8 @@ export abstract class SuiSelectBase implements AfterContentInit { query: this.query }); } + + public ngOnDestroy():void { + this._renderedSubscriptions.forEach(s => s.unsubscribe()); + } } From 9636461727bc04f0d4e86575757c8e485b63f73b Mon Sep 17 00:00:00 2001 From: Edward Carroll Date: Mon, 14 Aug 2017 09:22:54 +0100 Subject: [PATCH 54/69] fix: Fixed AOT on SystemJS builder (#240) * fix: Fixed AOT on SystemJS builder Closes #209 * fix: Added custom FocusEvent interface (#231) * fix: Added custom FocusEvent interface Closes #202 FocusEvent isn't defined in UC browser, so added IFocusEvent with the property we need. * style(util): Fixed tslint error * chore(popup): Relaxed popper.js dependency (#228) Follows up on #195 * fix(popup): Fixed delay causing destroyed view errors (#233) Closes #189 * fix(select): Manually run change detector when option updates (#236) * fix(select): Manually run change detector when option updates Closes #213 * style(select): Fixed tslint error * fix(select): Selected options now updated when options change (#232) * fix(modal): Fixed aggressive autofocus sometimes causing errors (#237) * fix(popup): Fixed conflict with BrowserAnimationsModule (#234) * fix(popup): Fixed conflict with BrowserAnimationsModule Closes #204 * style(popup): Fixed tslint error * feat(popup): Added template context support (#238) * fix(popup): Fixed focus events on popup (#243) * feat(datepicker) Popup now honors locale and pickerLocaleOverrides (#215) * Datepicker popup now honors locale and pickerLocaleOverrides - Datepicker popup items now respect locale format - Fixed a bug in zoom calendar mapping for datetime datepicker - Fixed 'es' locale for consistency (*) Partially addresses #164 * Added comments. * Time of day values supported in locale definitions (#214) * en-GB and en-US locales now use 12 hour format Original "HH:mm" (23:59) -> Now "hh:mm aa" (11:59 p.m.) * Fix locales Russian, Italian and Hebrew now extend from ILocaleValues. * Added new IDatepickerFormatsLocaleValues fields: - timesOfDay - timesOfDayUppercase - timesOfDayLowercase to support proper formatting/parsing of dates in datepicker. Updated Localization page * Fixing code formatting * feat(datepicker) Added initial date support for the datepicker (#216) * feat(datepicker) New input pickerInitialDate - New input (optional) that sets the intial date to display (null = today) - Updated demo page Partially addresses #165 * Now pickerInitialDate only sets CalendarService.currentDate property * feat(datepicker): Initial date support - Code formatting * fix: Various minor bugfixes (#245) * fix(select): Fixed destroyed view errors * fix(modal): Fix modal auto closing when clicked * fix(popup): Removed console log in focus handler * fix(popup): Forced import of TemplateRef * fix: Fixed AOT on SystemJS builder Closes #209 --- src/behaviors/index.ts | 2 +- src/collections/index.ts | 4 +-- src/collections/message/components/message.ts | 2 +- src/collections/message/message.module.ts | 2 +- src/index.ts | 8 ++--- src/misc/index.ts | 2 +- src/modules/accordion/accordion.module.ts | 4 +-- .../accordion/components/accordion-panel.ts | 2 +- src/modules/checkbox/components/checkbox.ts | 2 +- src/modules/checkbox/components/radio.ts | 2 +- .../checkbox/directives/radio-manager.ts | 2 +- .../datepicker/classes/calendar-config.ts | 2 +- .../datepicker/classes/date-comparer.ts | 2 +- src/modules/datepicker/classes/date-parser.ts | 2 +- .../datepicker/components/datepicker.ts | 2 +- src/modules/datepicker/datepicker.module.ts | 6 ++-- .../directives/datepicker.directive.ts | 6 ++-- .../datepicker/directives/input.directive.ts | 6 ++-- src/modules/datepicker/helpers/date-fns.ts | 2 +- .../services/calendar-range.service.ts | 2 +- .../datepicker/services/calendar.service.ts | 4 +-- src/modules/datepicker/views/calendar-view.ts | 2 +- src/modules/datepicker/views/date-view.ts | 2 +- src/modules/datepicker/views/hour-view.ts | 2 +- src/modules/datepicker/views/minute-view.ts | 2 +- src/modules/datepicker/views/month-view.ts | 2 +- src/modules/datepicker/views/year-view.ts | 2 +- src/modules/dimmer/components/dimmer.ts | 2 +- src/modules/dimmer/dimmer.module.ts | 2 +- .../dropdown/directives/dropdown-menu.ts | 4 +-- src/modules/dropdown/directives/dropdown.ts | 2 +- src/modules/dropdown/dropdown.module.ts | 2 +- src/modules/index.ts | 30 +++++++++---------- src/modules/modal/components/modal.ts | 4 +-- src/modules/modal/modal.module.ts | 6 ++-- src/modules/modal/services/modal.service.ts | 2 +- .../classes/popup-component-controller.ts | 2 +- src/modules/popup/classes/popup-config.ts | 2 +- src/modules/popup/classes/popup-controller.ts | 2 +- src/modules/popup/components/popup-arrow.ts | 2 +- src/modules/popup/components/popup.ts | 4 +-- .../popup/directives/popup.directive.ts | 2 +- src/modules/popup/popup.module.ts | 4 +-- src/modules/popup/public.ts | 2 +- src/modules/rating/components/rating.ts | 2 +- .../search/components/search-result.ts | 2 +- src/modules/search/components/search.ts | 6 ++-- src/modules/search/search.module.ts | 6 ++-- src/modules/search/services/search.service.ts | 2 +- src/modules/select/classes/select-base.ts | 8 ++--- .../select/components/multi-select-label.ts | 4 +-- src/modules/select/components/multi-select.ts | 4 +-- .../select/components/select-option.ts | 4 +-- src/modules/select/components/select.ts | 4 +-- src/modules/select/select.module.ts | 6 ++-- 55 files changed, 100 insertions(+), 100 deletions(-) diff --git a/src/behaviors/index.ts b/src/behaviors/index.ts index aa6e2742f..51cd25e0c 100644 --- a/src/behaviors/index.ts +++ b/src/behaviors/index.ts @@ -1 +1 @@ -export * from "./localization"; +export * from "./localization/index"; diff --git a/src/collections/index.ts b/src/collections/index.ts index 6a02976da..6ea9faf05 100644 --- a/src/collections/index.ts +++ b/src/collections/index.ts @@ -1,2 +1,2 @@ -export * from "./message"; -export * from "./pagination"; +export * from "./message/index"; +export * from "./pagination/index"; diff --git a/src/collections/message/components/message.ts b/src/collections/message/components/message.ts index eb352910a..de13fc356 100644 --- a/src/collections/message/components/message.ts +++ b/src/collections/message/components/message.ts @@ -1,5 +1,5 @@ import { Component, Input, Output, EventEmitter } from "@angular/core"; -import { TransitionController, Transition, TransitionDirection } from "../../../modules/transition"; +import { TransitionController, Transition, TransitionDirection } from "../../../modules/transition/index"; export interface IMessage { dismiss():void; diff --git a/src/collections/message/message.module.ts b/src/collections/message/message.module.ts index a5a1e5339..90db55b68 100644 --- a/src/collections/message/message.module.ts +++ b/src/collections/message/message.module.ts @@ -1,6 +1,6 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiTransitionModule } from "../../modules/transition"; +import { SuiTransitionModule } from "../../modules/transition/index"; import { SuiMessage } from "./components/message"; @NgModule({ diff --git a/src/index.ts b/src/index.ts index b97992602..36afb9975 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ -export * from "./behaviors"; -export * from "./collections"; -export * from "./modules"; +export * from "./behaviors/index"; +export * from "./collections/index"; +export * from "./modules/index"; -export * from "./misc"; +export * from "./misc/index"; export * from "./sui.module"; diff --git a/src/misc/index.ts b/src/misc/index.ts index 181e76f24..2dd8370cf 100644 --- a/src/misc/index.ts +++ b/src/misc/index.ts @@ -1 +1 @@ -export * from "./util"; +export * from "./util/index"; diff --git a/src/modules/accordion/accordion.module.ts b/src/modules/accordion/accordion.module.ts index 8e5e52e68..1257a978d 100644 --- a/src/modules/accordion/accordion.module.ts +++ b/src/modules/accordion/accordion.module.ts @@ -1,7 +1,7 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiCollapseModule } from "../collapse"; -import { SuiTransitionModule } from "../transition"; +import { SuiCollapseModule } from "../collapse/index"; +import { SuiTransitionModule } from "../transition/index"; import { SuiAccordion } from "./components/accordion"; import { SuiAccordionPanel } from "./components/accordion-panel"; diff --git a/src/modules/accordion/components/accordion-panel.ts b/src/modules/accordion/components/accordion-panel.ts index cade1a3cc..9a8363c51 100644 --- a/src/modules/accordion/components/accordion-panel.ts +++ b/src/modules/accordion/components/accordion-panel.ts @@ -1,6 +1,6 @@ import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from "@angular/core"; import { SuiAccordionService } from "../services/accordion.service"; -import { TransitionController, Transition } from "../../transition"; +import { TransitionController, Transition } from "../../transition/index"; @Component({ selector: "sui-accordion-panel", diff --git a/src/modules/checkbox/components/checkbox.ts b/src/modules/checkbox/components/checkbox.ts index 26c7e1424..c020e395c 100644 --- a/src/modules/checkbox/components/checkbox.ts +++ b/src/modules/checkbox/components/checkbox.ts @@ -2,7 +2,7 @@ import { Component, Directive, Input, Output, HostListener, HostBinding, EventEmitter, ViewChild, ElementRef } from "@angular/core"; -import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; +import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util/index"; @Component({ selector: "sui-checkbox", diff --git a/src/modules/checkbox/components/radio.ts b/src/modules/checkbox/components/radio.ts index 694f45d3d..bd30fa3a3 100644 --- a/src/modules/checkbox/components/radio.ts +++ b/src/modules/checkbox/components/radio.ts @@ -5,7 +5,7 @@ import { import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor, Util -} from "../../../misc/util"; +} from "../../../misc/util/index"; import { Subscription } from "rxjs/Subscription"; @Component({ diff --git a/src/modules/checkbox/directives/radio-manager.ts b/src/modules/checkbox/directives/radio-manager.ts index b0222cf6f..a1f02bac7 100644 --- a/src/modules/checkbox/directives/radio-manager.ts +++ b/src/modules/checkbox/directives/radio-manager.ts @@ -1,7 +1,7 @@ import { Directive, AfterContentInit, ContentChildren, QueryList, ElementRef } from "@angular/core"; import { SuiRadio } from "../components/radio"; import { Subscription } from "rxjs/Subscription"; -import { Util } from "../../../misc/util"; +import { Util } from "../../../misc/util/index"; @Directive({ selector: "form:not([ngForm]):not([[ngForm]]),ngForm,[ngForm]" diff --git a/src/modules/datepicker/classes/calendar-config.ts b/src/modules/datepicker/classes/calendar-config.ts index 91cdad12c..b54250725 100644 --- a/src/modules/datepicker/classes/calendar-config.ts +++ b/src/modules/datepicker/classes/calendar-config.ts @@ -1,6 +1,6 @@ import { CalendarMode } from "../services/calendar.service"; import { CalendarMappings, DatetimeMappings, DateMappings, TimeMappings, MonthMappings, YearMappings } from "./calendar-mappings"; -import { DatePrecision, DateUtil } from "../../../misc/util"; +import { DatePrecision, DateUtil } from "../../../misc/util/index"; export abstract class CalendarConfig { public mode:CalendarMode; diff --git a/src/modules/datepicker/classes/date-comparer.ts b/src/modules/datepicker/classes/date-comparer.ts index 04d0e117e..bd8df6592 100644 --- a/src/modules/datepicker/classes/date-comparer.ts +++ b/src/modules/datepicker/classes/date-comparer.ts @@ -1,4 +1,4 @@ -import { DatePrecision, DateUtil, Util } from "../../../misc/util"; +import { DatePrecision, DateUtil, Util } from "../../../misc/util/index"; export class DateComparer { private _precision:DatePrecision; diff --git a/src/modules/datepicker/classes/date-parser.ts b/src/modules/datepicker/classes/date-parser.ts index f8f0a73a5..7f227df5a 100644 --- a/src/modules/datepicker/classes/date-parser.ts +++ b/src/modules/datepicker/classes/date-parser.ts @@ -1,6 +1,6 @@ import { DatepickerMode } from "../components/datepicker"; import { DateFnsParser } from "../helpers/date-fns"; -import { IDatepickerLocaleValues, IDatepickerFormatsLocaleValues } from "../../../behaviors/localization"; +import { IDatepickerLocaleValues, IDatepickerFormatsLocaleValues } from "../../../behaviors/localization/index"; export class DateParser { private _format:string; diff --git a/src/modules/datepicker/components/datepicker.ts b/src/modules/datepicker/components/datepicker.ts index 405e38730..788acf509 100644 --- a/src/modules/datepicker/components/datepicker.ts +++ b/src/modules/datepicker/components/datepicker.ts @@ -1,7 +1,7 @@ import { Component, HostBinding } from "@angular/core"; import { CalendarService } from "./../services/calendar.service"; import { DatetimeConfig } from "../classes/calendar-config"; -import { SuiLocalizationService } from "../../../behaviors/localization"; +import { SuiLocalizationService } from "../../../behaviors/localization/index"; export type DatepickerMode = "year" | "month" | "date" | "datetime" | "time"; diff --git a/src/modules/datepicker/datepicker.module.ts b/src/modules/datepicker/datepicker.module.ts index b46a4b92a..7483520d0 100644 --- a/src/modules/datepicker/datepicker.module.ts +++ b/src/modules/datepicker/datepicker.module.ts @@ -1,9 +1,9 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { FormsModule } from "@angular/forms"; -import { SuiPopupModule } from "../popup"; -import { SuiLocalizationModule } from "../../behaviors/localization"; -import { SuiUtilityModule } from "../../misc/util"; +import { SuiPopupModule } from "../popup/index"; +import { SuiLocalizationModule } from "../../behaviors/localization/index"; +import { SuiUtilityModule } from "../../misc/util/index"; import { SuiCalendarYearView } from "./views/year-view"; import { SuiCalendarMonthView } from "./views/month-view"; import { SuiCalendarItem } from "./directives/calendar-item"; diff --git a/src/modules/datepicker/directives/datepicker.directive.ts b/src/modules/datepicker/directives/datepicker.directive.ts index 850fcc43d..a78851614 100644 --- a/src/modules/datepicker/directives/datepicker.directive.ts +++ b/src/modules/datepicker/directives/datepicker.directive.ts @@ -6,9 +6,9 @@ import { AbstractControl, ValidationErrors } from "@angular/forms"; import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor, ICustomValidatorHost, customValidatorFactory, CustomValidator, PositioningPlacement, SuiComponentFactory, KeyCode -} from "../../../misc/util"; -import { IDatepickerLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization"; -import { SuiPopupComponentController, PopupAfterOpen, PopupConfig, PopupTrigger } from "../../popup"; +} from "../../../misc/util/index"; +import { IDatepickerLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization/index"; +import { SuiPopupComponentController, PopupAfterOpen, PopupConfig, PopupTrigger } from "../../popup/index"; import { SuiDatepicker, DatepickerMode } from "../components/datepicker"; import { CalendarConfig, YearConfig, MonthConfig, DatetimeConfig, TimeConfig, DateConfig } from "../classes/calendar-config"; diff --git a/src/modules/datepicker/directives/input.directive.ts b/src/modules/datepicker/directives/input.directive.ts index f03f15b9a..ed4aed727 100644 --- a/src/modules/datepicker/directives/input.directive.ts +++ b/src/modules/datepicker/directives/input.directive.ts @@ -1,8 +1,8 @@ import { Directive, Host, Input, ElementRef, HostBinding, HostListener } from "@angular/core"; -import { DateUtil, DatePrecision } from "../../../misc/util"; -import { SuiLocalizationService } from "../../../behaviors/localization"; -import { PopupTrigger } from "../../popup"; +import { DateUtil, DatePrecision } from "../../../misc/util/index"; +import { SuiLocalizationService } from "../../../behaviors/localization/index"; +import { PopupTrigger } from "../../popup/index"; import { SuiDatepickerDirective, SuiDatepickerDirectiveValueAccessor } from "./datepicker.directive"; import { InternalDateParser, DateParser } from "../classes/date-parser"; import * as bowser from "bowser"; diff --git a/src/modules/datepicker/helpers/date-fns.ts b/src/modules/datepicker/helpers/date-fns.ts index 40f1badfb..6f20ecb7b 100644 --- a/src/modules/datepicker/helpers/date-fns.ts +++ b/src/modules/datepicker/helpers/date-fns.ts @@ -1,4 +1,4 @@ -import { IDatepickerLocaleValues } from "../../../behaviors/localization"; +import { IDatepickerLocaleValues } from "../../../behaviors/localization/index"; import { format, parse } from "date-fns"; import * as defaultLocale from "date-fns/locale/en-US"; diff --git a/src/modules/datepicker/services/calendar-range.service.ts b/src/modules/datepicker/services/calendar-range.service.ts index 15dcd76e1..0dc616ffc 100644 --- a/src/modules/datepicker/services/calendar-range.service.ts +++ b/src/modules/datepicker/services/calendar-range.service.ts @@ -1,4 +1,4 @@ -import { DatePrecision, DateUtil, Util } from "../../../misc/util"; +import { DatePrecision, DateUtil, Util } from "../../../misc/util/index"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarService } from "./calendar.service"; import { DateComparer } from "../classes/date-comparer"; diff --git a/src/modules/datepicker/services/calendar.service.ts b/src/modules/datepicker/services/calendar.service.ts index d6335069a..9ef49eff6 100644 --- a/src/modules/datepicker/services/calendar.service.ts +++ b/src/modules/datepicker/services/calendar.service.ts @@ -1,6 +1,6 @@ import { EventEmitter } from "@angular/core"; -import { IDatepickerLocaleValues } from "../../../behaviors/localization"; -import { DateUtil } from "../../../misc/util"; +import { IDatepickerLocaleValues } from "../../../behaviors/localization/index"; +import { DateUtil } from "../../../misc/util/index"; import { CalendarViewType } from "../views/calendar-view"; import { CalendarConfig } from "../classes/calendar-config"; diff --git a/src/modules/datepicker/views/calendar-view.ts b/src/modules/datepicker/views/calendar-view.ts index 71ebcb5ec..3719657ca 100644 --- a/src/modules/datepicker/views/calendar-view.ts +++ b/src/modules/datepicker/views/calendar-view.ts @@ -1,5 +1,5 @@ import { Input, QueryList, ViewChildren, AfterViewInit, HostListener } from "@angular/core"; -import { KeyCode } from "../../../misc/util"; +import { KeyCode } from "../../../misc/util/index"; import { CalendarItem, SuiCalendarItem } from "../directives/calendar-item"; import { CalendarService } from "../services/calendar.service"; import { CalendarRangeService } from "../services/calendar-range.service"; diff --git a/src/modules/datepicker/views/date-view.ts b/src/modules/datepicker/views/date-view.ts index c841c7e9a..d0102ac3d 100644 --- a/src/modules/datepicker/views/date-view.ts +++ b/src/modules/datepicker/views/date-view.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { DateUtil, DatePrecision } from "../../../misc/util"; +import { DateUtil, DatePrecision } from "../../../misc/util/index"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarView, CalendarViewType } from "./calendar-view"; import { CalendarRangeService } from "../services/calendar-range.service"; diff --git a/src/modules/datepicker/views/hour-view.ts b/src/modules/datepicker/views/hour-view.ts index 438d0ef74..c7b737cfa 100644 --- a/src/modules/datepicker/views/hour-view.ts +++ b/src/modules/datepicker/views/hour-view.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { DatePrecision } from "../../../misc/util"; +import { DatePrecision } from "../../../misc/util/index"; import { CalendarView, CalendarViewType } from "./calendar-view"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarRangeService } from "../services/calendar-range.service"; diff --git a/src/modules/datepicker/views/minute-view.ts b/src/modules/datepicker/views/minute-view.ts index 33155242b..481f0d7c0 100644 --- a/src/modules/datepicker/views/minute-view.ts +++ b/src/modules/datepicker/views/minute-view.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { Util, DateUtil, DatePrecision } from "../../../misc/util"; +import { Util, DateUtil, DatePrecision } from "../../../misc/util/index"; import { CalendarView, CalendarViewType } from "./calendar-view"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarMode } from "../services/calendar.service"; diff --git a/src/modules/datepicker/views/month-view.ts b/src/modules/datepicker/views/month-view.ts index 10657bfc0..8d08e3808 100644 --- a/src/modules/datepicker/views/month-view.ts +++ b/src/modules/datepicker/views/month-view.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { DatePrecision } from "../../../misc/util"; +import { DatePrecision } from "../../../misc/util/index"; import { CalendarView, CalendarViewType } from "./calendar-view"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarRangeService } from "../services/calendar-range.service"; diff --git a/src/modules/datepicker/views/year-view.ts b/src/modules/datepicker/views/year-view.ts index a190e7dba..2ef441a65 100644 --- a/src/modules/datepicker/views/year-view.ts +++ b/src/modules/datepicker/views/year-view.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { Util, DateUtil, DatePrecision } from "../../../misc/util"; +import { Util, DateUtil, DatePrecision } from "../../../misc/util/index"; import { CalendarView, CalendarViewType } from "./calendar-view"; import { CalendarItem } from "../directives/calendar-item"; import { CalendarRangeService } from "../services/calendar-range.service"; diff --git a/src/modules/dimmer/components/dimmer.ts b/src/modules/dimmer/components/dimmer.ts index 608a5898d..52f277446 100644 --- a/src/modules/dimmer/components/dimmer.ts +++ b/src/modules/dimmer/components/dimmer.ts @@ -2,7 +2,7 @@ import { Component, Input, Output, HostBinding, HostListener, EventEmitter, Renderer2, ElementRef, ChangeDetectorRef } from "@angular/core"; -import { TransitionController, SuiTransition, TransitionDirection, Transition } from "../../transition"; +import { TransitionController, SuiTransition, TransitionDirection, Transition } from "../../transition/index"; @Component({ selector: "sui-dimmer", diff --git a/src/modules/dimmer/dimmer.module.ts b/src/modules/dimmer/dimmer.module.ts index 6c186b35a..7d1f47fc3 100644 --- a/src/modules/dimmer/dimmer.module.ts +++ b/src/modules/dimmer/dimmer.module.ts @@ -1,6 +1,6 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiTransitionModule } from "../transition"; +import { SuiTransitionModule } from "../transition/index"; import { SuiDimmer } from "./components/dimmer"; @NgModule({ diff --git a/src/modules/dropdown/directives/dropdown-menu.ts b/src/modules/dropdown/directives/dropdown-menu.ts index c432f0479..fa44fe528 100644 --- a/src/modules/dropdown/directives/dropdown-menu.ts +++ b/src/modules/dropdown/directives/dropdown-menu.ts @@ -2,8 +2,8 @@ import { Directive, ContentChild, forwardRef, Renderer2, ElementRef, AfterContentInit, ContentChildren, QueryList, Input, HostListener, ChangeDetectorRef } from "@angular/core"; -import { Transition, SuiTransition, TransitionController, TransitionDirection } from "../../transition"; -import { HandledEvent, IAugmentedElement, KeyCode } from "../../../misc/util"; +import { Transition, SuiTransition, TransitionController, TransitionDirection } from "../../transition/index"; +import { HandledEvent, IAugmentedElement, KeyCode } from "../../../misc/util/index"; import { DropdownService, DropdownAutoCloseType } from "../services/dropdown.service"; // Polyfill for IE import "element-closest"; diff --git a/src/modules/dropdown/directives/dropdown.ts b/src/modules/dropdown/directives/dropdown.ts index 3b55fbadf..7916f182d 100644 --- a/src/modules/dropdown/directives/dropdown.ts +++ b/src/modules/dropdown/directives/dropdown.ts @@ -2,7 +2,7 @@ import { Directive, Input, HostBinding, EventEmitter, Output, AfterContentInit, ContentChild, ElementRef, HostListener, QueryList, ContentChildren } from "@angular/core"; -import { HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util"; +import { HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util/index"; import { DropdownService, DropdownAutoCloseType } from "../services/dropdown.service"; import { SuiDropdownMenu } from "./dropdown-menu"; diff --git a/src/modules/dropdown/dropdown.module.ts b/src/modules/dropdown/dropdown.module.ts index 77588956b..69971a48b 100644 --- a/src/modules/dropdown/dropdown.module.ts +++ b/src/modules/dropdown/dropdown.module.ts @@ -1,6 +1,6 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiTransitionModule } from "../transition"; +import { SuiTransitionModule } from "../transition/index"; import { SuiDropdown } from "./directives/dropdown"; import { SuiDropdownMenu, SuiDropdownMenuItem } from "./directives/dropdown-menu"; diff --git a/src/modules/index.ts b/src/modules/index.ts index e00c024dc..7758999cc 100644 --- a/src/modules/index.ts +++ b/src/modules/index.ts @@ -1,15 +1,15 @@ -export * from "./accordion"; -export * from "./checkbox"; -export * from "./collapse"; -export * from "./datepicker"; -export * from "./dimmer"; -export * from "./dropdown"; -export * from "./modal"; -export * from "./popup"; -export * from "./progress"; -export * from "./rating"; -export * from "./search"; -export * from "./select"; -export * from "./sidebar"; -export * from "./tabs"; -export * from "./transition"; +export * from "./accordion/index"; +export * from "./checkbox/index"; +export * from "./collapse/index"; +export * from "./datepicker/index"; +export * from "./dimmer/index"; +export * from "./dropdown/index"; +export * from "./modal/index"; +export * from "./popup/index"; +export * from "./progress/index"; +export * from "./rating/index"; +export * from "./search/index"; +export * from "./select/index"; +export * from "./sidebar/index"; +export * from "./tabs/index"; +export * from "./transition/index"; diff --git a/src/modules/modal/components/modal.ts b/src/modules/modal/components/modal.ts index 543ddc6d0..806e3ce60 100644 --- a/src/modules/modal/components/modal.ts +++ b/src/modules/modal/components/modal.ts @@ -2,8 +2,8 @@ import { Component, Input, OnInit, ViewChild, ElementRef, Renderer2, EventEmitter, Output, HostListener, ViewContainerRef, AfterViewInit } from "@angular/core"; -import { Util, IDynamicClasses, KeyCode, SuiComponentFactory } from "../../../misc/util"; -import { TransitionController, Transition, TransitionDirection } from "../../transition"; +import { Util, IDynamicClasses, KeyCode, SuiComponentFactory } from "../../../misc/util/index"; +import { TransitionController, Transition, TransitionDirection } from "../../transition/index"; import { ModalControls, ModalResult } from "../classes/modal-controls"; import { ModalConfig, ModalSize } from "../classes/modal-config"; diff --git a/src/modules/modal/modal.module.ts b/src/modules/modal/modal.module.ts index d5874f0e5..51e2a2f76 100644 --- a/src/modules/modal/modal.module.ts +++ b/src/modules/modal/modal.module.ts @@ -1,8 +1,8 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiDimmerModule } from "../dimmer"; -import { SuiTransitionModule } from "../transition"; -import { SuiUtilityModule } from "../../misc/util"; +import { SuiDimmerModule } from "../dimmer/index"; +import { SuiTransitionModule } from "../transition/index"; +import { SuiUtilityModule } from "../../misc/util/index"; import { SuiModalService } from "./services/modal.service"; import { SuiModal } from "./components/modal"; diff --git a/src/modules/modal/services/modal.service.ts b/src/modules/modal/services/modal.service.ts index bcd013efd..d97c9cdb2 100644 --- a/src/modules/modal/services/modal.service.ts +++ b/src/modules/modal/services/modal.service.ts @@ -1,5 +1,5 @@ import { Injectable } from "@angular/core"; -import { SuiComponentFactory } from "../../../misc/util"; +import { SuiComponentFactory } from "../../../misc/util/index"; import { ModalConfig, TemplateModalConfig, ComponentModalConfig } from "../classes/modal-config"; import { SuiModal } from "../components/modal"; import { Modal } from "../classes/modal-controls"; diff --git a/src/modules/popup/classes/popup-component-controller.ts b/src/modules/popup/classes/popup-component-controller.ts index 013d0d1a7..3cb80327b 100644 --- a/src/modules/popup/classes/popup-component-controller.ts +++ b/src/modules/popup/classes/popup-component-controller.ts @@ -1,5 +1,5 @@ import { ComponentRef, ElementRef, Type, Renderer2 } from "@angular/core"; -import { SuiComponentFactory } from "../../../misc/util"; +import { SuiComponentFactory } from "../../../misc/util/index"; import { SuiPopupController } from "./popup-controller"; import { PopupConfig } from "./popup-config"; diff --git a/src/modules/popup/classes/popup-config.ts b/src/modules/popup/classes/popup-config.ts index 5febde089..3502b929f 100644 --- a/src/modules/popup/classes/popup-config.ts +++ b/src/modules/popup/classes/popup-config.ts @@ -1,5 +1,5 @@ import { TemplateRef } from "@angular/core"; -import { ITemplateRefContext, PositioningPlacement } from "../../../misc/util"; +import { ITemplateRefContext, PositioningPlacement } from "../../../misc/util/index"; import { IPopup } from "./popup-controller"; export type PopupTrigger = "hover" | "click" | "outsideClick" | "focus" | "manual"; diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 0a93dc674..2fdeaec57 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -1,5 +1,5 @@ import { ComponentRef, ElementRef, HostListener, OnDestroy, Renderer2 } from "@angular/core"; -import { SuiComponentFactory } from "../../../misc/util"; +import { SuiComponentFactory } from "../../../misc/util/index"; import { PopupConfig, PopupTrigger, IPopupConfig } from "./popup-config"; import { SuiPopup } from "../components/popup"; import { IPopupLifecycle } from "./popup-lifecycle"; diff --git a/src/modules/popup/components/popup-arrow.ts b/src/modules/popup/components/popup-arrow.ts index e0e0f9b14..43b024059 100644 --- a/src/modules/popup/components/popup-arrow.ts +++ b/src/modules/popup/components/popup-arrow.ts @@ -1,5 +1,5 @@ import { Component, Input, HostBinding } from "@angular/core"; -import { PositioningPlacement } from "../../../misc/util"; +import { PositioningPlacement } from "../../../misc/util/index"; @Component({ selector: "sui-popup-arrow", diff --git a/src/modules/popup/components/popup.ts b/src/modules/popup/components/popup.ts index 277e45107..26b781d84 100644 --- a/src/modules/popup/components/popup.ts +++ b/src/modules/popup/components/popup.ts @@ -1,6 +1,6 @@ import { Component, ViewChild, ViewContainerRef, ElementRef, EventEmitter, HostListener, HostBinding } from "@angular/core"; -import { PositioningService, IDynamicClasses } from "../../../misc/util"; -import { TransitionController, TransitionDirection, Transition } from "../../transition"; +import { PositioningService, IDynamicClasses } from "../../../misc/util/index"; +import { TransitionController, TransitionDirection, Transition } from "../../transition/index"; import { IPopup } from "../classes/popup-controller"; import { PopupConfig } from "../classes/popup-config"; diff --git a/src/modules/popup/directives/popup.directive.ts b/src/modules/popup/directives/popup.directive.ts index ae309e558..8c49e39b2 100644 --- a/src/modules/popup/directives/popup.directive.ts +++ b/src/modules/popup/directives/popup.directive.ts @@ -1,5 +1,5 @@ import { Directive, Input, ElementRef, TemplateRef, Renderer2 } from "@angular/core"; -import { ITemplateRefContext, Util, PositioningPlacement, SuiComponentFactory } from "../../../misc/util"; +import { ITemplateRefContext, Util, PositioningPlacement, SuiComponentFactory } from "../../../misc/util/index"; import { SuiPopup } from "../components/popup"; import { PopupConfig, PopupTrigger } from "../classes/popup-config"; import { SuiPopupConfig } from "../services/popup.service"; diff --git a/src/modules/popup/popup.module.ts b/src/modules/popup/popup.module.ts index 1711e7cf4..2e437fb4b 100644 --- a/src/modules/popup/popup.module.ts +++ b/src/modules/popup/popup.module.ts @@ -1,7 +1,7 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { SuiTransitionModule } from "../transition"; -import { SuiUtilityModule } from "../../misc/util"; +import { SuiTransitionModule } from "../transition/index"; +import { SuiUtilityModule } from "../../misc/util/index"; import { SuiPopupDirective } from "./directives/popup.directive"; import { SuiPopupArrow } from "./components/popup-arrow"; import { SuiPopup } from "./components/popup"; diff --git a/src/modules/popup/public.ts b/src/modules/popup/public.ts index 0803bb4e2..7510c2547 100644 --- a/src/modules/popup/public.ts +++ b/src/modules/popup/public.ts @@ -8,5 +8,5 @@ export { PopupTrigger } from "./index"; -import { PositioningPlacement } from "../../misc/util"; +import { PositioningPlacement } from "../../misc/util/index"; export { PositioningPlacement as PopupPlacement }; diff --git a/src/modules/rating/components/rating.ts b/src/modules/rating/components/rating.ts index b504de2ae..242b22215 100644 --- a/src/modules/rating/components/rating.ts +++ b/src/modules/rating/components/rating.ts @@ -1,5 +1,5 @@ import { Component, Directive, Input, Output, EventEmitter, HostBinding, HostListener } from "@angular/core"; -import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; +import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util/index"; @Component({ selector: "sui-rating", diff --git a/src/modules/search/components/search-result.ts b/src/modules/search/components/search-result.ts index be4d3ae6b..ad63786ec 100644 --- a/src/modules/search/components/search-result.ts +++ b/src/modules/search/components/search-result.ts @@ -2,7 +2,7 @@ import { Component, ViewChild, ViewContainerRef, Renderer2, ElementRef, HostBinding, Input, TemplateRef } from "@angular/core"; -import { ITemplateRefContext, SuiComponentFactory } from "../../../misc/util"; +import { ITemplateRefContext, SuiComponentFactory } from "../../../misc/util/index"; import { IResultContext } from "./search"; // See https://github.com/Microsoft/TypeScript/issues/13449. diff --git a/src/modules/search/components/search.ts b/src/modules/search/components/search.ts index 9289d22fd..a5bb1990a 100644 --- a/src/modules/search/components/search.ts +++ b/src/modules/search/components/search.ts @@ -2,9 +2,9 @@ import { Component, ViewChild, HostBinding, Input, AfterViewInit, HostListener, EventEmitter, Output, Directive, ElementRef, TemplateRef } from "@angular/core"; -import { Util, ITemplateRefContext, IFocusEvent } from "../../../misc/util"; -import { DropdownService, SuiDropdownMenu } from "../../dropdown"; -import { ISearchLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization"; +import { Util, ITemplateRefContext, IFocusEvent } from "../../../misc/util/index"; +import { DropdownService, SuiDropdownMenu } from "../../dropdown/index"; +import { ISearchLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization/index"; import { SearchService } from "../services/search.service"; import { LookupFn, FilterFn } from "../helpers/lookup-fn"; diff --git a/src/modules/search/search.module.ts b/src/modules/search/search.module.ts index 6caf2aa78..ed64064c6 100644 --- a/src/modules/search/search.module.ts +++ b/src/modules/search/search.module.ts @@ -1,9 +1,9 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { FormsModule } from "@angular/forms"; -import { SuiDropdownModule } from "../dropdown"; -import { SuiLocalizationModule } from "../../behaviors/localization"; -import { SuiUtilityModule } from "../../misc/util"; +import { SuiDropdownModule } from "../dropdown/index"; +import { SuiLocalizationModule } from "../../behaviors/localization/index"; +import { SuiUtilityModule } from "../../misc/util/index"; import { SuiSearch } from "./components/search"; import { SuiSearchResult } from "./components/search-result"; diff --git a/src/modules/search/services/search.service.ts b/src/modules/search/services/search.service.ts index 9b54754fb..fb6122fdd 100644 --- a/src/modules/search/services/search.service.ts +++ b/src/modules/search/services/search.service.ts @@ -1,4 +1,4 @@ -import { Util } from "../../../misc/util"; +import { Util } from "../../../misc/util/index"; import { LookupFn, LookupFnResult, FilterFn } from "../helpers/lookup-fn"; interface ICachedArray { [query:string]:T[]; } diff --git a/src/modules/select/classes/select-base.ts b/src/modules/select/classes/select-base.ts index c7b682f9f..b4c6c3633 100644 --- a/src/modules/select/classes/select-base.ts +++ b/src/modules/select/classes/select-base.ts @@ -3,10 +3,10 @@ import { AfterContentInit, TemplateRef, ViewContainerRef, ContentChild, EventEmitter, Output, OnDestroy } from "@angular/core"; import { Subscription } from "rxjs/Subscription"; -import { DropdownService, SuiDropdownMenu } from "../../dropdown"; -import { SearchService, LookupFn, FilterFn } from "../../search"; -import { Util, ITemplateRefContext, HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util"; -import { ISelectLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization"; +import { DropdownService, SuiDropdownMenu } from "../../dropdown/index"; +import { SearchService, LookupFn, FilterFn } from "../../search/index"; +import { Util, ITemplateRefContext, HandledEvent, KeyCode, IFocusEvent } from "../../../misc/util/index"; +import { ISelectLocaleValues, RecursivePartial, SuiLocalizationService } from "../../../behaviors/localization/index"; import { SuiSelectOption } from "../components/select-option"; import { SuiSelectSearch } from "../directives/select-search"; diff --git a/src/modules/select/components/multi-select-label.ts b/src/modules/select/components/multi-select-label.ts index 0d59b03e2..03b6f544d 100644 --- a/src/modules/select/components/multi-select-label.ts +++ b/src/modules/select/components/multi-select-label.ts @@ -2,8 +2,8 @@ import { Component, Input, HostBinding, HostListener, EventEmitter, ViewContainerRef, ViewChild, Renderer2, ElementRef, Output, ChangeDetectorRef, TemplateRef } from "@angular/core"; -import { SuiTransition, TransitionController, Transition, TransitionDirection } from "../../transition"; -import { HandledEvent, SuiComponentFactory } from "../../../misc/util"; +import { SuiTransition, TransitionController, Transition, TransitionDirection } from "../../transition/index"; +import { HandledEvent, SuiComponentFactory } from "../../../misc/util/index"; import { IOptionContext } from "../classes/select-base"; // See https://github.com/Microsoft/TypeScript/issues/13449. diff --git a/src/modules/select/components/multi-select.ts b/src/modules/select/components/multi-select.ts index c8e9c9e8a..395d654a5 100644 --- a/src/modules/select/components/multi-select.ts +++ b/src/modules/select/components/multi-select.ts @@ -1,6 +1,6 @@ import { Component, HostBinding, ElementRef, EventEmitter, Output, Input, Directive } from "@angular/core"; -import { ICustomValueAccessorHost, KeyCode, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; -import { SuiLocalizationService } from "../../../behaviors/localization"; +import { ICustomValueAccessorHost, KeyCode, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util/index"; +import { SuiLocalizationService } from "../../../behaviors/localization/index"; import { SuiSelectBase } from "../classes/select-base"; import { SuiSelectOption } from "./select-option"; diff --git a/src/modules/select/components/select-option.ts b/src/modules/select/components/select-option.ts index ac34e7ede..4dccd5c66 100644 --- a/src/modules/select/components/select-option.ts +++ b/src/modules/select/components/select-option.ts @@ -2,8 +2,8 @@ import { Component, Input, HostBinding, HostListener, EventEmitter, ViewContainerRef, ViewChild, Renderer2, ElementRef, Output, ChangeDetectorRef } from "@angular/core"; -import { SuiDropdownMenuItem } from "../../dropdown"; -import { HandledEvent } from "../../../misc/util"; +import { SuiDropdownMenuItem } from "../../dropdown/index"; +import { HandledEvent } from "../../../misc/util/index"; @Component({ selector: "sui-select-option", diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index 8b534aa7c..aa8086747 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -1,6 +1,6 @@ import { Component, ViewContainerRef, ViewChild, Output, EventEmitter, ElementRef, Directive, Input } from "@angular/core"; -import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util"; -import { SuiLocalizationService } from "../../../behaviors/localization"; +import { ICustomValueAccessorHost, customValueAccessorFactory, CustomValueAccessor } from "../../../misc/util/index"; +import { SuiLocalizationService } from "../../../behaviors/localization/index"; import { SuiSelectBase } from "../classes/select-base"; import { SuiSelectOption } from "./select-option"; diff --git a/src/modules/select/select.module.ts b/src/modules/select/select.module.ts index 24fdfe55d..9ebca669a 100644 --- a/src/modules/select/select.module.ts +++ b/src/modules/select/select.module.ts @@ -1,9 +1,9 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { FormsModule } from "@angular/forms"; -import { SuiDropdownModule } from "../dropdown"; -import { SuiUtilityModule } from "../../misc/util"; -import { SuiLocalizationModule } from "../../behaviors/localization"; +import { SuiDropdownModule } from "../dropdown/index"; +import { SuiUtilityModule } from "../../misc/util/index"; +import { SuiLocalizationModule } from "../../behaviors/localization/index"; import { SuiSelect, SuiSelectValueAccessor } from "./components/select"; import { SuiSelectOption } from "./components/select-option"; import { SuiSelectSearch } from "./directives/select-search"; From 9e6e394f7405728abab0f8f1527c0a932c0e3a60 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 09:35:59 +0100 Subject: [PATCH 55/69] feat(localization): Uppercase meridian format for GB & US locales --- src/behaviors/localization/locales/en-AU.ts | 1 - src/behaviors/localization/locales/en-GB.ts | 4 ++-- src/behaviors/localization/locales/en-US.ts | 4 ++-- src/behaviors/localization/locales/he.ts | 3 ++- src/behaviors/localization/locales/it.ts | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/behaviors/localization/locales/en-AU.ts b/src/behaviors/localization/locales/en-AU.ts index 44fc7c2c8..edd7ecfb6 100644 --- a/src/behaviors/localization/locales/en-AU.ts +++ b/src/behaviors/localization/locales/en-AU.ts @@ -1,4 +1,3 @@ - import { IPartialLocaleValues } from "../interfaces/values"; /** diff --git a/src/behaviors/localization/locales/en-GB.ts b/src/behaviors/localization/locales/en-GB.ts index e1f4b9f38..08684ded2 100644 --- a/src/behaviors/localization/locales/en-GB.ts +++ b/src/behaviors/localization/locales/en-GB.ts @@ -27,8 +27,8 @@ const enGB:ILocaleValues = { "am", "pm" ], formats: { - time: "hh:mm aa", - datetime: "D MMMM YYYY hh:mm aa", + time: "h:mm A", + datetime: "D MMMM YYYY h:mm A", date: "D MMMM YYYY", month: "MMMM YYYY", year: "YYYY" diff --git a/src/behaviors/localization/locales/en-US.ts b/src/behaviors/localization/locales/en-US.ts index 9ad82f43d..5621d3ccd 100644 --- a/src/behaviors/localization/locales/en-US.ts +++ b/src/behaviors/localization/locales/en-US.ts @@ -4,8 +4,8 @@ const enUS:IPartialLocaleValues = { datepicker: { firstDayOfWeek: 0, formats: { - time: "hh:mm aa", - datetime: "MMMM D, YYYY hh:mm aa", + time: "h:mm A", + datetime: "MMMM D, YYYY h:mm A", date: "MMMM D, YYYY", month: "MMMM YYYY", year: "YYYY" diff --git a/src/behaviors/localization/locales/he.ts b/src/behaviors/localization/locales/he.ts index 84edfd225..184e8c25d 100644 --- a/src/behaviors/localization/locales/he.ts +++ b/src/behaviors/localization/locales/he.ts @@ -1,8 +1,9 @@ +import { IPartialLocaleValues } from "../interfaces/values"; + /** * locale : Hebrew (he) * author : David limkys : https://github.com/gotenxds */ -import { IPartialLocaleValues } from "../interfaces/values"; const he:IPartialLocaleValues = { datepicker: { diff --git a/src/behaviors/localization/locales/it.ts b/src/behaviors/localization/locales/it.ts index 12ac133b9..49cf6ff9f 100644 --- a/src/behaviors/localization/locales/it.ts +++ b/src/behaviors/localization/locales/it.ts @@ -1,10 +1,10 @@ +import { IPartialLocaleValues } from "../interfaces/values"; + /** * locale : Italian (it) * author : Massimo Costa : https://github.com/mcosta74 */ -import { IPartialLocaleValues } from "../interfaces/values"; - const it:IPartialLocaleValues = { datepicker: { months: [ From 5e55243476db53957a2ced9161c474c38c36c4aa Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 09:49:12 +0100 Subject: [PATCH 56/69] feat(datepicker): Moved calendar view title to separate component Fixes style issue introduced by a long locale formatting string --- .../components/calendar-view-title.ts | 36 +++++++++++++++++++ src/modules/datepicker/datepicker.module.ts | 2 ++ src/modules/datepicker/index.ts | 1 + src/modules/datepicker/views/date-view.ts | 10 ++---- src/modules/datepicker/views/hour-view.ts | 11 ++---- src/modules/datepicker/views/minute-view.ts | 11 ++---- src/modules/datepicker/views/month-view.ts | 10 ++---- src/modules/datepicker/views/year-view.ts | 10 ++---- 8 files changed, 54 insertions(+), 37 deletions(-) create mode 100644 src/modules/datepicker/components/calendar-view-title.ts diff --git a/src/modules/datepicker/components/calendar-view-title.ts b/src/modules/datepicker/components/calendar-view-title.ts new file mode 100644 index 000000000..1c3711a8e --- /dev/null +++ b/src/modules/datepicker/components/calendar-view-title.ts @@ -0,0 +1,36 @@ +import { Component, Input, EventEmitter, Output } from "@angular/core"; +import { CalendarRangeService } from "../services/calendar-range.service"; + +@Component({ + selector: "sui-calendar-view-title", + template: ` + + + + + + + + + +`, + styles: [` +.title.link { + display: inline-block; + margin-left: 2rem; + margin-right: 2rem; +} +`] +}) +export class SuiCalendarViewTitle { + + @Input() + public ranges:CalendarRangeService; + + @Output("zoomOut") + public onZoomOut:EventEmitter; + + constructor() { + this.onZoomOut = new EventEmitter(); + } +} diff --git a/src/modules/datepicker/datepicker.module.ts b/src/modules/datepicker/datepicker.module.ts index 7483520d0..0ca99290c 100644 --- a/src/modules/datepicker/datepicker.module.ts +++ b/src/modules/datepicker/datepicker.module.ts @@ -4,6 +4,7 @@ import { FormsModule } from "@angular/forms"; import { SuiPopupModule } from "../popup/index"; import { SuiLocalizationModule } from "../../behaviors/localization/index"; import { SuiUtilityModule } from "../../misc/util/index"; +import { SuiCalendarViewTitle } from "./components/calendar-view-title"; import { SuiCalendarYearView } from "./views/year-view"; import { SuiCalendarMonthView } from "./views/month-view"; import { SuiCalendarItem } from "./directives/calendar-item"; @@ -28,6 +29,7 @@ import { declarations: [ SuiCalendarItem, + SuiCalendarViewTitle, SuiCalendarYearView, SuiCalendarMonthView, SuiCalendarDateView, diff --git a/src/modules/datepicker/index.ts b/src/modules/datepicker/index.ts index 3f00f5c28..f62104a2d 100644 --- a/src/modules/datepicker/index.ts +++ b/src/modules/datepicker/index.ts @@ -3,6 +3,7 @@ export * from "./classes/calendar-mappings"; export * from "./classes/date-comparer"; export * from "./classes/date-parser"; +export * from "./components/calendar-view-title"; export * from "./components/datepicker"; export * from "./directives/calendar-item"; diff --git a/src/modules/datepicker/views/date-view.ts b/src/modules/datepicker/views/date-view.ts index d0102ac3d..86aa3f078 100644 --- a/src/modules/datepicker/views/date-view.ts +++ b/src/modules/datepicker/views/date-view.ts @@ -26,13 +26,9 @@ export class CalendarRangeDateService extends CalendarRangeService { - {{ date }} - - - - - - + + {{ date }} + diff --git a/src/modules/datepicker/views/hour-view.ts b/src/modules/datepicker/views/hour-view.ts index c7b737cfa..e71d627d5 100644 --- a/src/modules/datepicker/views/hour-view.ts +++ b/src/modules/datepicker/views/hour-view.ts @@ -11,7 +11,6 @@ export class CalendarRangeHourService extends CalendarRangeService { const customFormat:string = this.service.localeValues.formats.time.replace(/[ms]/g, "0"); item.humanReadable = new DateParser(customFormat, this.service.localeValues).format(item.date); item.isOutsideRange = false; - item.isToday = false; } } @@ -22,13 +21,9 @@ export class CalendarRangeHourService extends CalendarRangeService { - {{ date }} - - - - - - + + {{ date }} + diff --git a/src/modules/datepicker/views/minute-view.ts b/src/modules/datepicker/views/minute-view.ts index 481f0d7c0..ef2f7be97 100644 --- a/src/modules/datepicker/views/minute-view.ts +++ b/src/modules/datepicker/views/minute-view.ts @@ -20,7 +20,6 @@ export class CalendarRangeMinuteService extends CalendarRangeService { public configureItem(item:CalendarItem, baseDate:Date):void { item.humanReadable = new DateParser(this.service.localeValues.formats.time, this.service.localeValues).format(item.date); item.isOutsideRange = false; - item.isToday = false; } } @@ -31,13 +30,9 @@ export class CalendarRangeMinuteService extends CalendarRangeService { - {{ date }} - - - - - - + + {{ date }} + diff --git a/src/modules/datepicker/views/month-view.ts b/src/modules/datepicker/views/month-view.ts index 8d08e3808..41eaaa8f2 100644 --- a/src/modules/datepicker/views/month-view.ts +++ b/src/modules/datepicker/views/month-view.ts @@ -19,13 +19,9 @@ export class CalendarRangeMonthService extends CalendarRangeService { - {{ year }} - - - - - - + + {{ year }} + diff --git a/src/modules/datepicker/views/year-view.ts b/src/modules/datepicker/views/year-view.ts index 2ef441a65..656db025c 100644 --- a/src/modules/datepicker/views/year-view.ts +++ b/src/modules/datepicker/views/year-view.ts @@ -18,13 +18,9 @@ export class CalendarRangeYearService extends CalendarRangeService { - {{ pad(decadeStart) }} - {{ pad(decadeStart + 10) }} - - - - - - + + {{ pad(decadeStart) }} - {{ pad(decadeStart + 10) }} + From 58eea0646416604221b2699f0e94af53fc483736 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 09:58:11 +0100 Subject: [PATCH 57/69] fix(datepicker): Fixed focus out duplication issue --- src/modules/datepicker/components/datepicker.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/modules/datepicker/components/datepicker.ts b/src/modules/datepicker/components/datepicker.ts index 788acf509..28a74d52a 100644 --- a/src/modules/datepicker/components/datepicker.ts +++ b/src/modules/datepicker/components/datepicker.ts @@ -1,4 +1,4 @@ -import { Component, HostBinding } from "@angular/core"; +import { Component, HostBinding, HostListener } from "@angular/core"; import { CalendarService } from "./../services/calendar.service"; import { DatetimeConfig } from "../classes/calendar-config"; import { SuiLocalizationService } from "../../../behaviors/localization/index"; @@ -43,4 +43,9 @@ export class SuiDatepicker { this._calendarClasses = true; } + + @HostListener("mousedown", ["$event"]) + public onMouseDown(e:MouseEvent):void { + e.preventDefault(); + } } From b9d112cc9bb40cb16efaba73c7033719c214314b Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 10:01:17 +0100 Subject: [PATCH 58/69] fix(popup): Fixed duplication glitch on rapid open & close --- src/modules/popup/classes/popup-component-controller.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/popup/classes/popup-component-controller.ts b/src/modules/popup/classes/popup-component-controller.ts index 3cb80327b..226933fc2 100644 --- a/src/modules/popup/classes/popup-component-controller.ts +++ b/src/modules/popup/classes/popup-component-controller.ts @@ -30,8 +30,10 @@ export class SuiPopupComponentController extends SuiPopupController { } public open():void { - this._contentComponentRef = this._componentFactory.createComponent(this._component as Type); - this._componentFactory.attachToView(this._contentComponentRef, this.popup.templateSibling); + if (!this._contentComponentRef) { + this._contentComponentRef = this._componentFactory.createComponent(this._component as Type); + this._componentFactory.attachToView(this._contentComponentRef, this.popup.templateSibling); + } super.open(); } From 4957e7cda047c751efcf8b4badb380541dffe273 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 10:05:19 +0100 Subject: [PATCH 59/69] fix(popup): Ensured component popups are properly destroyed --- .../popup/classes/popup-component-controller.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/popup/classes/popup-component-controller.ts b/src/modules/popup/classes/popup-component-controller.ts index 226933fc2..159ed64de 100644 --- a/src/modules/popup/classes/popup-component-controller.ts +++ b/src/modules/popup/classes/popup-component-controller.ts @@ -1,9 +1,9 @@ -import { ComponentRef, ElementRef, Type, Renderer2 } from "@angular/core"; +import { ComponentRef, ElementRef, Type, Renderer2, OnDestroy } from "@angular/core"; import { SuiComponentFactory } from "../../../misc/util/index"; import { SuiPopupController } from "./popup-controller"; import { PopupConfig } from "./popup-config"; -export class SuiPopupComponentController extends SuiPopupController { +export class SuiPopupComponentController extends SuiPopupController implements OnDestroy { // Stores reference to generated content component. private _contentComponentRef?:ComponentRef; @@ -37,4 +37,12 @@ export class SuiPopupComponentController extends SuiPopupController { super.open(); } + + public ngOnDestroy():void { + if (this._contentComponentRef) { + this._contentComponentRef.destroy(); + } + + super.ngOnDestroy(); + } } From 5d78a0f4af120ebf96a6de69eec145237b65e3e9 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 10:12:14 +0100 Subject: [PATCH 60/69] fix(dropdown): Fixed error on keyboard navigation of empty dropdown --- .../dropdown/directives/dropdown-menu.ts | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/modules/dropdown/directives/dropdown-menu.ts b/src/modules/dropdown/directives/dropdown-menu.ts index fa44fe528..d2d185c1d 100644 --- a/src/modules/dropdown/directives/dropdown-menu.ts +++ b/src/modules/dropdown/directives/dropdown-menu.ts @@ -180,35 +180,39 @@ export class SuiDropdownMenu extends SuiTransition implements AfterContentInit { switch (e.keyCode) { // Escape : close the entire dropdown. - case KeyCode.Escape: + case KeyCode.Escape: { this._service.setOpenState(false); break; + } // Down : select the next item below the current one, or the 1st if none selected. case KeyCode.Down: // Up : select the next item above the current one, or the 1st if none selected. - case KeyCode.Up: + case KeyCode.Up: { this.selectedItems.pop(); this.selectedItems.push(selectedContainer.updateSelection(selected, e.keyCode)); // Prevent default regardless of whether we are in an input, to stop jumping to the start or end of the query string. e.preventDefault(); break; + } // Enter : if the item doesn't contain a nested dropdown, 'click' it. Otherwise, fall through to 'Right' action. - case KeyCode.Enter: + case KeyCode.Enter: { if (selected && !selected.hasChildDropdown) { selected.performClick(); break; } + } // falls through // Right : if the selected item contains a nested dropdown, open the dropdown & select the 1st item. - case KeyCode.Right: + case KeyCode.Right: { if (selected && selected.hasChildDropdown) { selected.childDropdownMenu.service.setOpenState(true); this.selectedItems.push(selected.childDropdownMenu.updateSelection(selected, e.keyCode)); } break; + } // Left : if the selected item is in a nested dropdown, close it and select the containing item. - case KeyCode.Left: + case KeyCode.Left: { if (this.selectedItems.length >= 2) { this.selectedItems.pop(); const [selectedParent] = this.selectedItems.slice(-1); @@ -217,6 +221,7 @@ export class SuiDropdownMenu extends SuiTransition implements AfterContentInit { selectedParent.isSelected = true; } break; + } } } } @@ -271,9 +276,10 @@ export class SuiDropdownMenu extends SuiTransition implements AfterContentInit { if (newSelection) { // Set the selected status on the newly selected item. newSelection.isSelected = true; - } - this.scrollToItem(newSelection); + // Set the current scroll position to the location of the newly selected item. + this.scrollToItem(newSelection); + } return newSelection; } From 3d25bd571641f538d040db4d58eca53498d1701d Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 10:19:39 +0100 Subject: [PATCH 61/69] chore(demo): Updated to SUI 2.2.13 --- demo/src/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/src/index.html b/demo/src/index.html index b64cd910c..f884bfc52 100644 --- a/demo/src/index.html +++ b/demo/src/index.html @@ -12,7 +12,7 @@ - + From ef408ae177f3430e34bd95cdebb44319817daad0 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 10:39:00 +0100 Subject: [PATCH 62/69] fix(datepicker): Fixed destroyed view errors --- .../classes/popup-component-controller.ts | 16 ++++-------- src/modules/popup/classes/popup-controller.ts | 25 ++++++++++++------- src/modules/popup/components/popup.ts | 8 +++--- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/modules/popup/classes/popup-component-controller.ts b/src/modules/popup/classes/popup-component-controller.ts index 159ed64de..e7c407b37 100644 --- a/src/modules/popup/classes/popup-component-controller.ts +++ b/src/modules/popup/classes/popup-component-controller.ts @@ -3,7 +3,7 @@ import { SuiComponentFactory } from "../../../misc/util/index"; import { SuiPopupController } from "./popup-controller"; import { PopupConfig } from "./popup-config"; -export class SuiPopupComponentController extends SuiPopupController implements OnDestroy { +export class SuiPopupComponentController extends SuiPopupController { // Stores reference to generated content component. private _contentComponentRef?:ComponentRef; @@ -20,13 +20,6 @@ export class SuiPopupComponentController extends SuiPopupController implement config:PopupConfig) { super(renderer, element, componentFactory, config); - - this.popup.onClose.subscribe(() => { - if (this._contentComponentRef) { - this._contentComponentRef.destroy(); - this._contentComponentRef = undefined; - } - }); } public open():void { @@ -38,11 +31,12 @@ export class SuiPopupComponentController extends SuiPopupController implement super.open(); } - public ngOnDestroy():void { + protected cleanup():void { + super.cleanup(); + if (this._contentComponentRef) { this._contentComponentRef.destroy(); + this._contentComponentRef = undefined; } - - super.ngOnDestroy(); } } diff --git a/src/modules/popup/classes/popup-controller.ts b/src/modules/popup/classes/popup-controller.ts index 2fdeaec57..aba62ad13 100644 --- a/src/modules/popup/classes/popup-controller.ts +++ b/src/modules/popup/classes/popup-controller.ts @@ -38,13 +38,7 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { this.popup.config = config; // When the popup is closed (onClose fires on animation complete), - this.popup.onClose.subscribe(() => { - this._componentRef.instance.positioningService.destroy(); - this._componentFactory.detachFromApplication(this._componentRef); - - // Remove the document click handler - this._documentListener(); - }); + this.popup.onClose.subscribe(() => this.cleanup()); } public configure(config?:IPopupConfig):void { @@ -175,9 +169,22 @@ export abstract class SuiPopupController implements IPopup, OnDestroy { } } - public ngOnDestroy():void { + protected cleanup():void { clearTimeout(this._openingTimeout); + + if (this._componentRef.instance && this._componentRef.instance.positioningService) { + this._componentRef.instance.positioningService.destroy(); + } + this._componentFactory.detachFromApplication(this._componentRef); - this._componentRef.destroy(); + + if (this._documentListener) { + // Remove the document click handler + this._documentListener(); + } + } + + public ngOnDestroy():void { + this.cleanup(); } } diff --git a/src/modules/popup/components/popup.ts b/src/modules/popup/components/popup.ts index 26b781d84..8524dc879 100644 --- a/src/modules/popup/components/popup.ts +++ b/src/modules/popup/components/popup.ts @@ -67,7 +67,7 @@ export class SuiPopup implements IPopup { // Keeps track of whether the popup is open internally. private _isOpen:boolean; // `setTimeout` timer pointer for cancelling popup close. - private _closingTimeout:number; + public closingTimeout:number; // Fires when the popup opens (and the animation is completed). public onOpen:EventEmitter; @@ -140,7 +140,7 @@ export class SuiPopup implements IPopup { // Only attempt to open if currently closed. if (!this.isOpen) { // Cancel the closing timer. - clearTimeout(this._closingTimeout); + clearTimeout(this.closingTimeout); // Cancel all other transitions, and initiate the opening transition. this.transitionController.stopAll(); @@ -183,9 +183,9 @@ export class SuiPopup implements IPopup { new Transition(this.config.transition, this.config.transitionDuration, TransitionDirection.Out)); // Cancel the closing timer. - clearTimeout(this._closingTimeout); + clearTimeout(this.closingTimeout); // Start the closing timer, that fires the `onClose` event after the transition duration number of milliseconds. - this._closingTimeout = window.setTimeout(() => this.onClose.emit(), this.config.transitionDuration); + this.closingTimeout = window.setTimeout(() => this.onClose.emit(), this.config.transitionDuration); // Finally, set the popup to be closed. this._isOpen = false; From 639909bcc792a3e80e4a671c5a4fe64de5f41b19 Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 14:50:22 +0100 Subject: [PATCH 63/69] chore: Bumped version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eec527149..c5688183e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "main": "bundles/ng2-semantic-ui.umd.min.js", "module": "dist/public.js", "typings": "dist/public.d.ts", - "version": "0.9.4", + "version": "0.9.5", "description": "Angular 2 Semantic UI Components", "repository": { "type": "git", From d5ae3b7a52d0c90b3df5f3aa7a94e35ad75fe54d Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 15:30:08 +0100 Subject: [PATCH 64/69] docs: Specified minimum Semantic UI CSS version --- README.md | 2 +- demo/src/app/pages/getting-started/getting-started.page.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7792c227a..b33f1629a 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ See the [Documentation](https://edcarroll.github.io/ng2-semantic-ui) for install ## Dependencies * [Angular](https://angular.io) (^4.3.1) -* [Semantic UI CSS](http://semantic-ui.com/) (jQuery is **not** required) +* [Semantic UI CSS](http://semantic-ui.com/) (^2.2.13) (jQuery is **not** required) ## Component Support diff --git a/demo/src/app/pages/getting-started/getting-started.page.html b/demo/src/app/pages/getting-started/getting-started.page.html index 1d8132311..c6bcc8e6c 100644 --- a/demo/src/app/pages/getting-started/getting-started.page.html +++ b/demo/src/app/pages/getting-started/getting-started.page.html @@ -46,6 +46,6 @@

Installation

Dependencies

Angular (^4.3.1)
-
Semantic UI CSS (jQuery is not required)
+
Semantic UI CSS (^2.2.13) (jQuery is not required)
From ef9c0f5cd7fb0246564ed0fbc59bd079df27ac7e Mon Sep 17 00:00:00 2001 From: Ed Carroll Date: Mon, 14 Aug 2017 15:40:33 +0100 Subject: [PATCH 65/69] demo(getting-started): Updated CSS include code to reference SUI 2.2.13 --- demo/src/app/pages/getting-started/getting-started.page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/src/app/pages/getting-started/getting-started.page.ts b/demo/src/app/pages/getting-started/getting-started.page.ts index 56fb6a693..d0fc3dec6 100644 --- a/demo/src/app/pages/getting-started/getting-started.page.ts +++ b/demo/src/app/pages/getting-started/getting-started.page.ts @@ -14,7 +14,7 @@ export class GettingStartedPage { public installCode:string = `$ npm install ng2-semantic-ui --save`; public includeCssCode:string = -``; +``; public importCode:string = `import {SuiModule} from 'ng2-semantic-ui';`; public moduleImportCode:string = ` From c073629fed1d328fa4f58a8deed16a39461d7373 Mon Sep 17 00:00:00 2001 From: david limkys Date: Tue, 18 Jul 2017 21:49:06 +0300 Subject: [PATCH 66/69] feat(localization): Add Hebrew locale --- src/behaviors/localization/locales/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/behaviors/localization/locales/index.ts b/src/behaviors/localization/locales/index.ts index 35e1ed890..0a65b259e 100644 --- a/src/behaviors/localization/locales/index.ts +++ b/src/behaviors/localization/locales/index.ts @@ -1,5 +1,3 @@ -import { RecursivePartial, ILocaleValues } from "../interfaces/values"; - import de from "./de"; import enAU from "./en-AU"; import enGB from "./en-GB"; From 7256eb85bdd914ec754b8b1c63b0767f124aa1fc Mon Sep 17 00:00:00 2001 From: david limkys Date: Tue, 18 Jul 2017 21:49:06 +0300 Subject: [PATCH 67/69] feat(localization): Add Hebrew locale rebase --- src/behaviors/localization/locales/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/behaviors/localization/locales/index.ts b/src/behaviors/localization/locales/index.ts index 0a65b259e..35e1ed890 100644 --- a/src/behaviors/localization/locales/index.ts +++ b/src/behaviors/localization/locales/index.ts @@ -1,3 +1,5 @@ +import { RecursivePartial, ILocaleValues } from "../interfaces/values"; + import de from "./de"; import enAU from "./en-AU"; import enGB from "./en-GB"; From 90755de7052d8bc389e8f876f18ce0ea36a77223 Mon Sep 17 00:00:00 2001 From: david limkys Date: Wed, 16 Aug 2017 00:57:11 +0300 Subject: [PATCH 68/69] feat: Updated with new values. --- src/behaviors/localization/locales/he.ts | 11 ++++++++++- src/behaviors/localization/locales/index.ts | 2 -- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/behaviors/localization/locales/he.ts b/src/behaviors/localization/locales/he.ts index 184e8c25d..ff0b04f3d 100644 --- a/src/behaviors/localization/locales/he.ts +++ b/src/behaviors/localization/locales/he.ts @@ -22,6 +22,15 @@ const he:IPartialLocaleValues = { weekdaysNarrow: [ "ר", "ש", "ש", "ר", "ח", "ש", "ש" ], + timesOfDay: [ + "לפנות בוקר", "אחר הצהריים" + ], + timesOfDayUppercase: [ + "לפנות בוקר", "אחר הצהריים" + ], + timesOfDayLowercase: [ + "לפנות בוקר", "אחר הצהריים" + ], formats: { time: "HH:mm", datetime: "D MMMM YYYY HH:mm", @@ -46,7 +55,7 @@ const he:IPartialLocaleValues = { multi: { placeholder: "בחר...", maxSelectedMessage: "מקסימום #{max} אפשרויות", - selectedMessage: "#{count} selections" + selectedMessage: "#{count} בחירות" } } }; diff --git a/src/behaviors/localization/locales/index.ts b/src/behaviors/localization/locales/index.ts index 35e1ed890..0a65b259e 100644 --- a/src/behaviors/localization/locales/index.ts +++ b/src/behaviors/localization/locales/index.ts @@ -1,5 +1,3 @@ -import { RecursivePartial, ILocaleValues } from "../interfaces/values"; - import de from "./de"; import enAU from "./en-AU"; import enGB from "./en-GB"; From 236eefe10063457489978a5c41530d37008ad822 Mon Sep 17 00:00:00 2001 From: david limkys Date: Wed, 16 Aug 2017 00:59:11 +0300 Subject: [PATCH 69/69] feat: Updated with new values. --- src/behaviors/localization/locales/he.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/behaviors/localization/locales/he.ts b/src/behaviors/localization/locales/he.ts index 6be699818..fafa2ec54 100644 --- a/src/behaviors/localization/locales/he.ts +++ b/src/behaviors/localization/locales/he.ts @@ -1,10 +1,11 @@ +import { ILocaleValues } from "../interfaces/values"; + /** * locale : Hebrew (he) * author : David limkys : https://github.com/gotenxds */ -import { ILocaleValues } from "../interfaces/values"; -const he:IPartialLocaleValues = { +const he:ILocaleValues = { datepicker: { months: [ "ינואר", "פבואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"