@coolon/angular-ui-powerups 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/README.md +7 -0
  2. package/bundles/coolon-angular-ui-powerups.umd.js +3373 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -0
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -0
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -0
  6. package/coolon-angular-ui-powerups.d.ts +12 -0
  7. package/coolon-angular-ui-powerups.metadata.json +1 -0
  8. package/esm2015/coolon-angular-ui-powerups.js +17 -0
  9. package/esm2015/index.js +6 -0
  10. package/esm2015/lib/angular-ui-powerups.module.js +48 -0
  11. package/esm2015/lib/components/disposable-component.js +14 -0
  12. package/esm2015/lib/components/forms/abstract-input.component.js +173 -0
  13. package/esm2015/lib/components/forms/number-input/number-input.component.js +26 -0
  14. package/esm2015/lib/components/forms/password-input/password-input.component.js +26 -0
  15. package/esm2015/lib/components/forms/select-input/select-input.component.js +60 -0
  16. package/esm2015/lib/components/forms/string-input/string-input.component.js +26 -0
  17. package/esm2015/lib/components/index.js +18 -0
  18. package/esm2015/lib/components/resize-aware.component.js +96 -0
  19. package/esm2015/lib/components/types/bounds.class.js +56 -0
  20. package/esm2015/lib/components/types/dimension.class.js +21 -0
  21. package/esm2015/lib/components/types/point.class.js +36 -0
  22. package/esm2015/lib/directives/command.directive.js +91 -0
  23. package/esm2015/lib/directives/focus-binding.directive.js +163 -0
  24. package/esm2015/lib/directives/index.js +10 -0
  25. package/esm2015/lib/interaction/abstract-activity.js +129 -0
  26. package/esm2015/lib/interaction/activity.js +27 -0
  27. package/esm2015/lib/interaction/alert.js +23 -0
  28. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +144 -0
  29. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +22 -0
  30. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +169 -0
  31. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +37 -0
  32. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +46 -0
  33. package/esm2015/lib/interaction/confirm.js +17 -0
  34. package/esm2015/lib/interaction/index.js +21 -0
  35. package/esm2015/lib/interaction/interaction-context.js +35 -0
  36. package/esm2015/lib/interaction/interaction.module.js +41 -0
  37. package/esm2015/lib/interaction/result.js +24 -0
  38. package/esm2015/lib/interaction/services/dialog-interaction.service.js +112 -0
  39. package/esm2015/lib/place/abstract-place-component.js +59 -0
  40. package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js +44 -0
  41. package/esm2015/lib/place/components/empty-state/empty-state.component.js +28 -0
  42. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +52 -0
  43. package/esm2015/lib/place/guards/leave-place.guard.js +52 -0
  44. package/esm2015/lib/place/guards/place-route.guard.js +74 -0
  45. package/esm2015/lib/place/index.js +25 -0
  46. package/esm2015/lib/place/place-component.js +17 -0
  47. package/esm2015/lib/place/place.decorator.js +67 -0
  48. package/esm2015/lib/place/place.module.js +38 -0
  49. package/esm2015/lib/place/place.service.js +61 -0
  50. package/esm2015/lib/place/route/json-types.js +13 -0
  51. package/esm2015/lib/place/route/parameter-decorators.js +82 -0
  52. package/esm2015/lib/place/route/parameter-definition.class.js +22 -0
  53. package/esm2015/lib/place/route/parameter-sanitiser.js +17 -0
  54. package/esm2015/lib/place/route/parameter-type.js +43 -0
  55. package/esm2015/lib/place/route/route-parameter-bindings.js +282 -0
  56. package/esm2015/lib/place/route/route-parameter-sanitiser.js +148 -0
  57. package/esm2015/public_api.js +10 -0
  58. package/esm5/coolon-angular-ui-powerups.js +17 -0
  59. package/esm5/index.js +6 -0
  60. package/esm5/lib/angular-ui-powerups.module.js +52 -0
  61. package/esm5/lib/components/disposable-component.js +24 -0
  62. package/esm5/lib/components/forms/abstract-input.component.js +218 -0
  63. package/esm5/lib/components/forms/number-input/number-input.component.js +33 -0
  64. package/esm5/lib/components/forms/password-input/password-input.component.js +33 -0
  65. package/esm5/lib/components/forms/select-input/select-input.component.js +67 -0
  66. package/esm5/lib/components/forms/string-input/string-input.component.js +33 -0
  67. package/esm5/lib/components/index.js +18 -0
  68. package/esm5/lib/components/resize-aware.component.js +124 -0
  69. package/esm5/lib/components/types/bounds.class.js +59 -0
  70. package/esm5/lib/components/types/dimension.class.js +19 -0
  71. package/esm5/lib/components/types/point.class.js +43 -0
  72. package/esm5/lib/directives/command.directive.js +107 -0
  73. package/esm5/lib/directives/focus-binding.directive.js +211 -0
  74. package/esm5/lib/directives/index.js +10 -0
  75. package/esm5/lib/interaction/abstract-activity.js +173 -0
  76. package/esm5/lib/interaction/activity.js +27 -0
  77. package/esm5/lib/interaction/alert.js +23 -0
  78. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +181 -0
  79. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +22 -0
  80. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +206 -0
  81. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +42 -0
  82. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +54 -0
  83. package/esm5/lib/interaction/confirm.js +17 -0
  84. package/esm5/lib/interaction/index.js +21 -0
  85. package/esm5/lib/interaction/interaction-context.js +45 -0
  86. package/esm5/lib/interaction/interaction.module.js +45 -0
  87. package/esm5/lib/interaction/result.js +24 -0
  88. package/esm5/lib/interaction/services/dialog-interaction.service.js +138 -0
  89. package/esm5/lib/place/abstract-place-component.js +66 -0
  90. package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js +49 -0
  91. package/esm5/lib/place/components/empty-state/empty-state.component.js +29 -0
  92. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +62 -0
  93. package/esm5/lib/place/guards/leave-place.guard.js +57 -0
  94. package/esm5/lib/place/guards/place-route.guard.js +78 -0
  95. package/esm5/lib/place/index.js +25 -0
  96. package/esm5/lib/place/place-component.js +17 -0
  97. package/esm5/lib/place/place.decorator.js +64 -0
  98. package/esm5/lib/place/place.module.js +42 -0
  99. package/esm5/lib/place/place.service.js +75 -0
  100. package/esm5/lib/place/route/json-types.js +13 -0
  101. package/esm5/lib/place/route/parameter-decorators.js +82 -0
  102. package/esm5/lib/place/route/parameter-definition.class.js +22 -0
  103. package/esm5/lib/place/route/parameter-sanitiser.js +17 -0
  104. package/esm5/lib/place/route/parameter-type.js +65 -0
  105. package/esm5/lib/place/route/route-parameter-bindings.js +327 -0
  106. package/esm5/lib/place/route/route-parameter-sanitiser.js +203 -0
  107. package/esm5/public_api.js +10 -0
  108. package/fesm2015/coolon-angular-ui-powerups.js +2687 -0
  109. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -0
  110. package/fesm5/coolon-angular-ui-powerups.js +3164 -0
  111. package/fesm5/coolon-angular-ui-powerups.js.map +1 -0
  112. package/index.d.ts +1 -0
  113. package/lib/angular-ui-powerups.module.d.ts +2 -0
  114. package/lib/components/disposable-component.d.ts +5 -0
  115. package/lib/components/forms/abstract-input.component.d.ts +34 -0
  116. package/lib/components/forms/number-input/number-input.component.d.ts +6 -0
  117. package/lib/components/forms/password-input/password-input.component.d.ts +6 -0
  118. package/lib/components/forms/select-input/select-input.component.d.ts +11 -0
  119. package/lib/components/forms/string-input/string-input.component.d.ts +6 -0
  120. package/lib/components/index.d.ts +13 -0
  121. package/lib/components/resize-aware.component.d.ts +22 -0
  122. package/lib/components/types/bounds.class.d.ts +16 -0
  123. package/lib/components/types/dimension.class.d.ts +5 -0
  124. package/lib/components/types/point.class.d.ts +10 -0
  125. package/lib/directives/command.directive.d.ts +11 -0
  126. package/lib/directives/focus-binding.directive.d.ts +21 -0
  127. package/lib/directives/index.d.ts +5 -0
  128. package/lib/interaction/abstract-activity.d.ts +17 -0
  129. package/lib/interaction/activity.d.ts +11 -0
  130. package/lib/interaction/alert.d.ts +5 -0
  131. package/lib/interaction/components/activity-container/activity-container.component.d.ts +32 -0
  132. package/lib/interaction/components/activity-outlet/activity-outlet-context.d.ts +10 -0
  133. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +30 -0
  134. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +8 -0
  135. package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +9 -0
  136. package/lib/interaction/confirm.d.ts +5 -0
  137. package/lib/interaction/index.d.ts +16 -0
  138. package/lib/interaction/interaction-context.d.ts +11 -0
  139. package/lib/interaction/interaction.module.d.ts +2 -0
  140. package/lib/interaction/result.d.ts +8 -0
  141. package/lib/interaction/services/dialog-interaction.service.d.ts +14 -0
  142. package/lib/place/abstract-place-component.d.ts +13 -0
  143. package/lib/place/components/busy-overlay/busy-overlay.component.d.ts +8 -0
  144. package/lib/place/components/empty-state/empty-state.component.d.ts +5 -0
  145. package/lib/place/components/place-outlet/place-outlet.component.d.ts +10 -0
  146. package/lib/place/guards/leave-place.guard.d.ts +10 -0
  147. package/lib/place/guards/place-route.guard.d.ts +9 -0
  148. package/lib/place/index.d.ts +20 -0
  149. package/lib/place/place-component.d.ts +5 -0
  150. package/lib/place/place.decorator.d.ts +18 -0
  151. package/lib/place/place.module.d.ts +2 -0
  152. package/lib/place/place.service.d.ts +8 -0
  153. package/lib/place/route/json-types.d.ts +7 -0
  154. package/lib/place/route/parameter-decorators.d.ts +9 -0
  155. package/lib/place/route/parameter-definition.class.d.ts +10 -0
  156. package/lib/place/route/parameter-sanitiser.d.ts +3 -0
  157. package/lib/place/route/parameter-type.d.ts +16 -0
  158. package/lib/place/route/route-parameter-bindings.d.ts +18 -0
  159. package/lib/place/route/route-parameter-sanitiser.d.ts +15 -0
  160. package/package.json +31 -0
  161. package/public_api.d.ts +5 -0
  162. package/schematics/collection.json +14 -0
  163. package/schematics/ng-add/index.d.ts +2 -0
  164. package/schematics/ng-add/index.js +12 -0
  165. package/schematics/ng-add/index.js.map +1 -0
  166. package/schematics/place-routes/index.d.ts +3 -0
  167. package/schematics/place-routes/index.js +92 -0
  168. package/schematics/place-routes/index.js.map +1 -0
  169. package/schematics/place-routes/place-def.d.ts +31 -0
  170. package/schematics/place-routes/place-def.js +75 -0
  171. package/schematics/place-routes/place-def.js.map +1 -0
  172. package/schematics/place-routes/scanner.d.ts +26 -0
  173. package/schematics/place-routes/scanner.js +124 -0
  174. package/schematics/place-routes/scanner.js.map +1 -0
  175. package/schematics/place-routes/schema.d.ts +7 -0
  176. package/schematics/place-routes/schema.js +3 -0
  177. package/schematics/place-routes/schema.js.map +1 -0
  178. package/schematics/place-routes/schema.json +17 -0
  179. package/schematics/place-routes/templates/apps/__project__/src/app/place-routes.ts.template +31 -0
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component } from '@angular/core';
6
+ import { AbstractInputComponent } from '../abstract-input.component';
7
+ export class NumberInputComponent extends AbstractInputComponent {
8
+ constructor() {
9
+ super();
10
+ }
11
+ /**
12
+ * @return {?}
13
+ */
14
+ ngOnInit() {
15
+ }
16
+ }
17
+ NumberInputComponent.decorators = [
18
+ { type: Component, args: [{
19
+ selector: 'angular-ui-powerups-number-input',
20
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"valueModel\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
21
+ styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}"]
22
+ }] }
23
+ ];
24
+ /** @nocollapse */
25
+ NumberInputComponent.ctorParameters = () => [];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2Zvcm1zL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBUW5FLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxzQkFBOEI7SUFFcEU7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7Ozs7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7O1lBWkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQ0FBa0M7Z0JBQzVDLHVuQkFBNEM7O2FBRS9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RJbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FuZ3VsYXItdWktcG93ZXJ1cHMtbnVtYmVyLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9udW1iZXItaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0SW5wdXRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component } from '@angular/core';
6
+ import { AbstractInputComponent } from '../abstract-input.component';
7
+ export class PasswordInputComponent extends AbstractInputComponent {
8
+ constructor() {
9
+ super();
10
+ }
11
+ /**
12
+ * @return {?}
13
+ */
14
+ ngOnInit() {
15
+ }
16
+ }
17
+ PasswordInputComponent.decorators = [
18
+ { type: Component, args: [{
19
+ selector: 'angular-ui-powerups-password-input',
20
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"valueModel\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
21
+ styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}"]
22
+ }] }
23
+ ];
24
+ /** @nocollapse */
25
+ PasswordInputComponent.ctorParameters = () => [];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZm9ybXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT25FLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxzQkFBOEI7SUFFeEU7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Ozs7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7O1lBWkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLDJuQkFBOEM7O2FBRS9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2Fic3RyYWN0LWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXItdWktcG93ZXJ1cHMtcGFzc3dvcmQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdElucHV0Q29tcG9uZW50PHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Component, Input } from '@angular/core';
7
+ import { ListModel, StoreInListModel, UseDelegate } from '@coolon/pectin';
8
+ import { AbstractInputComponent } from '../abstract-input.component';
9
+ /**
10
+ * @template T
11
+ */
12
+ export class SelectInputComponent extends AbstractInputComponent {
13
+ constructor() {
14
+ super();
15
+ this.optionLabelFormat = (/**
16
+ * @param {?} option
17
+ * @return {?}
18
+ */
19
+ (option) => (option && this.optionLabel) ? option[this.optionLabel] : option);
20
+ }
21
+ /**
22
+ * @return {?}
23
+ */
24
+ ngOnInit() {
25
+ }
26
+ }
27
+ SelectInputComponent.decorators = [
28
+ { type: Component, args: [{
29
+ selector: 'angular-ui-powerups-select-input',
30
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"valueModel\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngFor=\"let option of optionsModel.value\" [value]=\"option\">{{optionLabelFormat(option)}}\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
31
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
32
+ }] }
33
+ ];
34
+ /** @nocollapse */
35
+ SelectInputComponent.ctorParameters = () => [];
36
+ SelectInputComponent.propDecorators = {
37
+ optionsModel: [{ type: Input }],
38
+ options: [{ type: Input }],
39
+ optionLabel: [{ type: Input }],
40
+ optionLabelFormat: [{ type: Input }]
41
+ };
42
+ tslib_1.__decorate([
43
+ UseDelegate(),
44
+ tslib_1.__metadata("design:type", ListModel)
45
+ ], SelectInputComponent.prototype, "optionsModel", void 0);
46
+ tslib_1.__decorate([
47
+ StoreInListModel('optionsModel'),
48
+ tslib_1.__metadata("design:type", Array)
49
+ ], SelectInputComponent.prototype, "options", void 0);
50
+ if (false) {
51
+ /** @type {?} */
52
+ SelectInputComponent.prototype.optionsModel;
53
+ /** @type {?} */
54
+ SelectInputComponent.prototype.options;
55
+ /** @type {?} */
56
+ SelectInputComponent.prototype.optionLabel;
57
+ /** @type {?} */
58
+ SelectInputComponent.prototype.optionLabelFormat;
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2Zvcm1zL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQU9yRSxNQUFNLE9BQU8sb0JBQThCLFNBQVEsc0JBQXlCO0lBYzFFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFIVixzQkFBaUI7Ozs7UUFBdUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFDO0lBSXJILENBQUM7Ozs7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7O1lBeEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0NBQWtDO2dCQUM1QywrdkJBQTRDOzthQUU3Qzs7Ozs7MkJBR0UsS0FBSztzQkFHTCxLQUFLOzBCQUdMLEtBQUs7Z0NBR0wsS0FBSzs7QUFSTjtJQURVLFdBQVcsRUFBRTtzQ0FDVCxTQUFTOzBEQUFJO0FBRzNCO0lBRFUsZ0JBQWdCLENBQUMsY0FBYyxDQUFDOztxREFDN0I7OztJQUpiLDRDQUMyQjs7SUFFM0IsdUNBQ2E7O0lBRWIsMkNBQ3FCOztJQUVyQixpREFDcUgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpc3RNb2RlbCwgU3RvcmVJbkxpc3RNb2RlbCwgVXNlRGVsZWdhdGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBYnN0cmFjdElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci11aS1wb3dlcnVwcy1zZWxlY3QtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0SW5wdXRDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBBYnN0cmFjdElucHV0Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBAVXNlRGVsZWdhdGUoKVxuICBvcHRpb25zTW9kZWw6IExpc3RNb2RlbDxUPjtcblxuICBASW5wdXQoKSBAU3RvcmVJbkxpc3RNb2RlbCgnb3B0aW9uc01vZGVsJylcbiAgb3B0aW9uczogVFtdO1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbkxhYmVsOiBrZXlvZiBUO1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbkxhYmVsRm9ybWF0OiAob3B0aW9uOiBUKSA9PiBhbnkgPSAob3B0aW9uKSA9PiAob3B0aW9uICYmIHRoaXMub3B0aW9uTGFiZWwpID8gb3B0aW9uW3RoaXMub3B0aW9uTGFiZWxdIDogb3B0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component } from '@angular/core';
6
+ import { AbstractInputComponent } from '../abstract-input.component';
7
+ export class StringInputComponent extends AbstractInputComponent {
8
+ constructor() {
9
+ super();
10
+ }
11
+ /**
12
+ * @return {?}
13
+ */
14
+ ngOnInit() {
15
+ }
16
+ }
17
+ StringInputComponent.decorators = [
18
+ { type: Component, args: [{
19
+ selector: 'angular-ui-powerups-string-input',
20
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"valueModel\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
21
+ styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}"]
22
+ }] }
23
+ ];
24
+ /** @nocollapse */
25
+ StringInputComponent.ctorParameters = () => [];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2Zvcm1zL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT25FLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxzQkFBOEI7SUFFdEU7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Ozs7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7O1lBWkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQ0FBa0M7Z0JBQzVDLCtsQkFBNEM7O2FBRTdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2Fic3RyYWN0LWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXItdWktcG93ZXJ1cHMtc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RJbnB1dENvbXBvbmVudDxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * @file Automatically generated by barrelsby.
7
+ */
8
+ export { DisposableComponent } from "./disposable-component";
9
+ export { ResizeAwareComponent } from "./resize-aware.component";
10
+ export { AbstractInputComponent } from "./forms/abstract-input.component";
11
+ export { NumberInputComponent } from "./forms/number-input/number-input.component";
12
+ export { PasswordInputComponent } from "./forms/password-input/password-input.component";
13
+ export { SelectInputComponent } from "./forms/select-input/select-input.component";
14
+ export { StringInputComponent } from "./forms/string-input/string-input.component";
15
+ export { Bounds } from "./types/bounds.class";
16
+ export { Dimension } from "./types/dimension.class";
17
+ export { Point } from "./types/point.class";
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsb0NBQWMsd0JBQXdCLENBQUM7QUFDdkMscUNBQWMsMEJBQTBCLENBQUM7QUFDekMsdUNBQWMsa0NBQWtDLENBQUM7QUFDakQscUNBQWMsNkNBQTZDLENBQUM7QUFDNUQsdUNBQWMsaURBQWlELENBQUM7QUFDaEUscUNBQWMsNkNBQTZDLENBQUM7QUFDNUQscUNBQWMsNkNBQTZDLENBQUM7QUFDNUQsdUJBQWMsc0JBQXNCLENBQUM7QUFDckMsMEJBQWMseUJBQXlCLENBQUM7QUFDeEMsc0JBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGJhcnJlbHNieS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9kaXNwb3NhYmxlLWNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybXMvYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3Jtcy9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3Jtcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzL2JvdW5kcy5jbGFzc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvZGltZW5zaW9uLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy9wb2ludC5jbGFzc1wiO1xuIl19
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { ValueHolder } from '@coolon/pectin';
6
+ import ResizeObserver from 'resize-observer-polyfill';
7
+ import { DisposableComponent } from './disposable-component';
8
+ import { Bounds } from './types/bounds.class';
9
+ export class ResizeAwareComponent extends DisposableComponent {
10
+ /**
11
+ * @param {?} elementRef
12
+ * @param {?} ngZone
13
+ */
14
+ constructor(elementRef, ngZone) {
15
+ super();
16
+ this.elementRef = elementRef;
17
+ this.ngZone = ngZone;
18
+ this._boundsModel = new ValueHolder(new Bounds(0, 0, 0, 0));
19
+ }
20
+ /**
21
+ * @return {?}
22
+ */
23
+ ngAfterViewInit() {
24
+ this.updateBounds();
25
+ /** @type {?} */
26
+ const element = this.elementRef.nativeElement;
27
+ /** @type {?} */
28
+ const ro = new ResizeObserver((/**
29
+ * @param {?} entries
30
+ * @param {?} observer
31
+ * @return {?}
32
+ */
33
+ (entries, observer) => {
34
+ this.ngZone.run((/**
35
+ * @return {?}
36
+ */
37
+ () => this.updateBounds()));
38
+ }));
39
+ ro.observe(element);
40
+ this.onDispose((/**
41
+ * @return {?}
42
+ */
43
+ () => ro.disconnect()));
44
+ }
45
+ /**
46
+ * @return {?}
47
+ */
48
+ get boundsModel() {
49
+ return this._boundsModel.readonly;
50
+ }
51
+ /**
52
+ * @return {?}
53
+ */
54
+ get nativeElement() {
55
+ return this.elementRef.nativeElement;
56
+ }
57
+ // TODO: Make this handle body scroll
58
+ /**
59
+ * @param {?} point
60
+ * @return {?}
61
+ */
62
+ relativePositionOf(point) {
63
+ return this.bounds.relativePositionOf(point);
64
+ }
65
+ /**
66
+ * @return {?}
67
+ */
68
+ get bounds() {
69
+ return this._boundsModel.value;
70
+ }
71
+ /**
72
+ * @private
73
+ * @return {?}
74
+ */
75
+ updateBounds() {
76
+ this._boundsModel.value = Bounds.ofElement(this.nativeElement);
77
+ }
78
+ }
79
+ if (false) {
80
+ /**
81
+ * @type {?}
82
+ * @private
83
+ */
84
+ ResizeAwareComponent.prototype._boundsModel;
85
+ /**
86
+ * @type {?}
87
+ * @protected
88
+ */
89
+ ResizeAwareComponent.prototype.elementRef;
90
+ /**
91
+ * @type {?}
92
+ * @protected
93
+ */
94
+ ResizeAwareComponent.prototype.ngZone;
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWF3YXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Jlc2l6ZS1hd2FyZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLGNBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHNUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjs7Ozs7SUFJekQsWUFBK0IsVUFBc0IsRUFBcUIsTUFBYztRQUNwRixLQUFLLEVBQUUsQ0FBQztRQURtQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQXFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGaEYsaUJBQVksR0FBRyxJQUFJLFdBQVcsQ0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBSXZFLENBQUM7Ozs7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOztjQUNkLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWE7O2NBQ3ZDLEVBQUUsR0FBRyxJQUFJLGNBQWM7Ozs7O1FBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHOzs7WUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQUM7UUFDRixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTOzs7UUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUMsQ0FBQztJQUMxQyxDQUFDOzs7O0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUN0QyxDQUFDOzs7O0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7SUFHTSxrQkFBa0IsQ0FBQyxLQUE0QztRQUNsRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7OztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FHSjs7Ozs7O0lBdENHLDRDQUF1RTs7Ozs7SUFFM0QsMENBQXlDOzs7OztJQUFFLHNDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VmFsdWVIb2xkZXIsIFZhbHVlTW9kZWx9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICdyZXNpemUtb2JzZXJ2ZXItcG9seWZpbGwnO1xuaW1wb3J0IHtEaXNwb3NhYmxlQ29tcG9uZW50fSBmcm9tICcuL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7Qm91bmRzfSBmcm9tICcuL3R5cGVzL2JvdW5kcy5jbGFzcyc7XG5pbXBvcnQge1BvaW50fSBmcm9tICcuL3R5cGVzL3BvaW50LmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFJlc2l6ZUF3YXJlQ29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgcHJpdmF0ZSBfYm91bmRzTW9kZWwgPSBuZXcgVmFsdWVIb2xkZXI8Qm91bmRzPihuZXcgQm91bmRzKDAsIDAsIDAsIDApKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQm91bmRzKCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy51cGRhdGVCb3VuZHMoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByby5vYnNlcnZlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9uRGlzcG9zZSgoKSA9PiByby5kaXNjb25uZWN0KCkpO1xuICAgIH1cblxuICAgIGdldCBib3VuZHNNb2RlbCgpOiBWYWx1ZU1vZGVsPEJvdW5kcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmRzTW9kZWwucmVhZG9ubHk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgaGFuZGxlIGJvZHkgc2Nyb2xsXG4gICAgcHVibGljIHJlbGF0aXZlUG9zaXRpb25PZihwb2ludDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9IHwgTW91c2VFdmVudCk6IFBvaW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm91bmRzLnJlbGF0aXZlUG9zaXRpb25PZihwb2ludCk7XG4gICAgfVxuXG4gICAgZ2V0IGJvdW5kcygpOiBCb3VuZHMge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmRzTW9kZWwudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCb3VuZHMoKSB7XG4gICAgICAgIHRoaXMuX2JvdW5kc01vZGVsLnZhbHVlID0gQm91bmRzLm9mRWxlbWVudCh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUmVzaXplQXdhcmVDb21wb25lbnQge1xuXG59XG4iXX0=
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Dimension } from './dimension.class';
6
+ import { Point } from './point.class';
7
+ export class Bounds extends Dimension {
8
+ /**
9
+ * @param {?} top
10
+ * @param {?} left
11
+ * @param {?} width
12
+ * @param {?} height
13
+ */
14
+ constructor(top, left, width, height) {
15
+ super(width, height);
16
+ this.top = top;
17
+ this.left = left;
18
+ this.width = width;
19
+ this.height = height;
20
+ }
21
+ /**
22
+ * @param {?} point
23
+ * @return {?}
24
+ */
25
+ relativePositionOf(point) {
26
+ if (point instanceof MouseEvent) {
27
+ return new Point(point.clientX - this.left, point.clientY - this.top);
28
+ }
29
+ else {
30
+ return new Point(point.x - this.left, point.y - this.top);
31
+ }
32
+ }
33
+ }
34
+ if (false) {
35
+ /** @type {?} */
36
+ Bounds.prototype.top;
37
+ /** @type {?} */
38
+ Bounds.prototype.left;
39
+ /** @type {?} */
40
+ Bounds.prototype.width;
41
+ /** @type {?} */
42
+ Bounds.prototype.height;
43
+ }
44
+ (function (Bounds) {
45
+ /**
46
+ * @param {?} element
47
+ * @return {?}
48
+ */
49
+ function ofElement(element) {
50
+ /** @type {?} */
51
+ const rect = element.getBoundingClientRect();
52
+ return new Bounds(rect.top, rect.left, rect.width, rect.height);
53
+ }
54
+ Bounds.ofElement = ofElement;
55
+ })(Bounds || (Bounds = {}));
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdHlwZXMvYm91bmRzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0QyxNQUFNLE9BQU8sTUFBTyxTQUFRLFNBQVM7Ozs7Ozs7SUFFakMsWUFBcUIsR0FBVyxFQUFXLElBQVksRUFBVyxLQUFhLEVBQVcsTUFBYztRQUNwRyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBREosUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFXLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUV4RyxDQUFDOzs7OztJQUVELGtCQUFrQixDQUFDLEtBQTRDO1FBQzNELElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRTtZQUM3QixPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0gsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0Q7SUFDTCxDQUFDO0NBQ0o7OztJQVhlLHFCQUFvQjs7SUFBRSxzQkFBcUI7O0lBQUUsdUJBQXNCOztJQUFFLHdCQUF1Qjs7QUFhNUcsV0FBaUIsTUFBTTs7Ozs7SUFDbkIsU0FBZ0IsU0FBUyxDQUFDLE9BQW9COztjQUNwQyxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFO1FBQzVDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFIZSxnQkFBUyxZQUd4QixDQUFBO0FBQ0wsQ0FBQyxFQUxnQixNQUFNLEtBQU4sTUFBTSxRQUt0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gJy4vZGltZW5zaW9uLmNsYXNzJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi9wb2ludC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBCb3VuZHMgZXh0ZW5kcyBEaW1lbnNpb24ge1xuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgdG9wOiBudW1iZXIsIHJlYWRvbmx5IGxlZnQ6IG51bWJlciwgcmVhZG9ubHkgd2lkdGg6IG51bWJlciwgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIod2lkdGgsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgcmVsYXRpdmVQb3NpdGlvbk9mKHBvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmIChwb2ludCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9pbnQocG9pbnQuY2xpZW50WCAtIHRoaXMubGVmdCwgcG9pbnQuY2xpZW50WSAtIHRoaXMudG9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9pbnQocG9pbnQueCAtIHRoaXMubGVmdCwgcG9pbnQueSAtIHRoaXMudG9wKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBCb3VuZHMge1xuICAgIGV4cG9ydCBmdW5jdGlvbiBvZkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBCb3VuZHMge1xuICAgICAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCb3VuZHMocmVjdC50b3AsIHJlY3QubGVmdCwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuICAgIH1cbn1cblxuIl19
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ export class Dimension {
6
+ /**
7
+ * @param {?} width
8
+ * @param {?} height
9
+ */
10
+ constructor(width, height) {
11
+ this.width = width;
12
+ this.height = height;
13
+ }
14
+ }
15
+ if (false) {
16
+ /** @type {?} */
17
+ Dimension.prototype.width;
18
+ /** @type {?} */
19
+ Dimension.prototype.height;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdHlwZXMvZGltZW5zaW9uLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLE9BQU8sU0FBUzs7Ozs7SUFDbEIsWUFBcUIsS0FBYSxFQUFXLE1BQWM7UUFBdEMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRSxDQUFDO0NBQ2pFOzs7SUFEZSwwQkFBc0I7O0lBQUUsMkJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERpbWVuc2lvbiB7XG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgd2lkdGg6IG51bWJlciwgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXIpe31cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ export class Point {
6
+ /**
7
+ * @param {?} x
8
+ * @param {?} y
9
+ */
10
+ constructor(x, y) {
11
+ this.x = x;
12
+ this.y = y;
13
+ }
14
+ /**
15
+ * @param {?} data
16
+ * @return {?}
17
+ */
18
+ static from(data) {
19
+ return new Point(data.x, data.y);
20
+ }
21
+ /**
22
+ * @param {?} x
23
+ * @param {?} y
24
+ * @return {?}
25
+ */
26
+ translate(x, y) {
27
+ return new Point(this.x + x, this.y + y);
28
+ }
29
+ }
30
+ if (false) {
31
+ /** @type {?} */
32
+ Point.prototype.x;
33
+ /** @type {?} */
34
+ Point.prototype.y;
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90eXBlcy9wb2ludC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxPQUFPLEtBQUs7Ozs7O0lBTWQsWUFBcUIsQ0FBUyxFQUFXLENBQVM7UUFBN0IsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFXLE1BQUMsR0FBRCxDQUFDLENBQVE7SUFDbEQsQ0FBQzs7Ozs7SUFMRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQThCO1FBQ3RDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7Ozs7O0lBS0QsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzFCLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0o7OztJQU5lLGtCQUFrQjs7SUFBRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUG9pbnQge1xuXG4gICAgc3RhdGljIGZyb20oZGF0YTogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9KSB7XG4gICAgICAgIHJldHVybiBuZXcgUG9pbnQoZGF0YS54LCBkYXRhLnkpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHg6IG51bWJlciwgcmVhZG9ubHkgeTogbnVtYmVyKSB7XG4gICAgfVxuXG4gICAgdHJhbnNsYXRlKHg6IG51bWJlciwgeTogbnVtYmVyKTogUG9pbnQge1xuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIHgsIHRoaXMueSArIHkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Directive, ElementRef, HostListener, Inject, Input } from '@angular/core';
6
+ import { assert, Dsl, GarbageCollector, UiCommand } from '@coolon/pectin';
7
+ export class CommandDirective extends GarbageCollector {
8
+ /**
9
+ * @param {?} elementRef
10
+ */
11
+ constructor(elementRef) {
12
+ super();
13
+ this.elementRef = elementRef;
14
+ }
15
+ /**
16
+ * @return {?}
17
+ */
18
+ ngOnInit() {
19
+ assert.notNil(this.pectinCommand);
20
+ }
21
+ /**
22
+ * @return {?}
23
+ */
24
+ ngAfterViewInit() {
25
+ // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now
26
+ // we need to do this.
27
+ const { chain } = Dsl.disposeWith(this);
28
+ chain.value(this.pectinCommand.enabled).subscribe((/**
29
+ * @param {?} enabled
30
+ * @return {?}
31
+ */
32
+ enabled => {
33
+ if (enabled) {
34
+ this.elementRef.nativeElement.removeAttribute('disabled');
35
+ if (this.elementRef.nativeElement.tagName === 'A') {
36
+ this.elementRef.nativeElement.setAttribute('href', 'javascript:void');
37
+ }
38
+ }
39
+ else {
40
+ this.elementRef.nativeElement.setAttribute('disabled', 'disabled');
41
+ if (this.elementRef.nativeElement.tagName === 'A') {
42
+ this.elementRef.nativeElement.removeAttribute('href');
43
+ }
44
+ }
45
+ }));
46
+ }
47
+ /**
48
+ * @return {?}
49
+ */
50
+ ngOnDestroy() {
51
+ this.dispose();
52
+ }
53
+ /**
54
+ * @param {?} $event
55
+ * @return {?}
56
+ */
57
+ notifyClick($event) {
58
+ $event.preventDefault();
59
+ $event.stopPropagation();
60
+ if (this.pectinCommand.isEnabled()) {
61
+ this.pectinCommand.execute({ event: $event });
62
+ }
63
+ else {
64
+ console.warn('disabled command clicked, ignoring.');
65
+ }
66
+ }
67
+ }
68
+ CommandDirective.decorators = [
69
+ { type: Directive, args: [{
70
+ // tslint:disable-next-line:directive-selector
71
+ selector: '[pectinCommand]'
72
+ },] }
73
+ ];
74
+ /** @nocollapse */
75
+ CommandDirective.ctorParameters = () => [
76
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
77
+ ];
78
+ CommandDirective.propDecorators = {
79
+ pectinCommand: [{ type: Input }],
80
+ notifyClick: [{ type: HostListener, args: ['click', ['$event'],] }]
81
+ };
82
+ if (false) {
83
+ /** @type {?} */
84
+ CommandDirective.prototype.pectinCommand;
85
+ /**
86
+ * @type {?}
87
+ * @private
88
+ */
89
+ CommandDirective.prototype.elementRef;
90
+ }
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9jb21tYW5kLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU14RSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZ0JBQWdCOzs7O0lBS3BELFlBQXdDLFVBQXNCO1FBQzVELEtBQUssRUFBRSxDQUFDO1FBRDhCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFOUQsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7O0lBRUQsZUFBZTs7O2NBR1AsRUFBQyxLQUFLLEVBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFELElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFO29CQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7aUJBQ3ZFO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFO29CQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUVMLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7Ozs7O0lBSUQsV0FBVyxDQUFDLE1BQWE7UUFDdkIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQzs7O1lBbkRGLFNBQVMsU0FBQzs7Z0JBRVQsUUFBUSxFQUFFLGlCQUFpQjthQUM1Qjs7OztZQU5pQyxVQUFVLHVCQVk3QixNQUFNLFNBQUMsVUFBVTs7OzRCQUg3QixLQUFLOzBCQW9DTCxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOzs7O0lBcENqQyx5Q0FDc0M7Ozs7O0lBRTFCLHNDQUFrRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7YXNzZXJ0LCBEc2wsIEdhcmJhZ2VDb2xsZWN0b3IsIFVpQ29tbWFuZH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1twZWN0aW5Db21tYW5kXSdcbn0pXG5leHBvcnQgY2xhc3MgQ29tbWFuZERpcmVjdGl2ZSBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3IgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KClcbiAgcGVjdGluQ29tbWFuZDogVWlDb21tYW5kLk51bGxhcnk8YW55PjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBhc3NlcnQubm90TmlsKHRoaXMucGVjdGluQ29tbWFuZCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gZm9yIHNvbWUgcmVhc29uIG1hdC1idXR0b25zIGtpbGxzIHRoZSBkaXNhYmxlZCBob3N0IGJpbmRpbmcuICBJdCB3b3JrcyBvbiBhIHJlZ3VsYXIgYnV0dG9uIGJ1dCBmb3Igbm93XG4gICAgLy8gd2UgbmVlZCB0byBkbyB0aGlzLlxuICAgIGNvbnN0IHtjaGFpbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgY2hhaW4udmFsdWUodGhpcy5wZWN0aW5Db21tYW5kLmVuYWJsZWQpLnN1YnNjcmliZShlbmFibGVkID0+IHtcbiAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdqYXZhc2NyaXB0OnZvaWQnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH1cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgbm90aWZ5Q2xpY2soJGV2ZW50OiBFdmVudCkge1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5wZWN0aW5Db21tYW5kLmlzRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLnBlY3RpbkNvbW1hbmQuZXhlY3V0ZSh7ZXZlbnQ6ICRldmVudH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2Rpc2FibGVkIGNvbW1hbmQgY2xpY2tlZCwgaWdub3JpbmcuJyk7XG4gICAgfVxuICB9XG59XG4iXX0=