@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 @@
1
+ {"version":3,"file":"coolon-angular-ui-powerups.js","sources":["ng://@coolon/angular-ui-powerups/lib/components/disposable-component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/abstract-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/number-input/number-input.component.ts","ng://@coolon/angular-ui-powerups/lib/directives/command.directive.ts","ng://@coolon/angular-ui-powerups/lib/directives/focus-binding.directive.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/string-input/string-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/password-input/password-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/select-input/select-input.component.ts","ng://@coolon/angular-ui-powerups/lib/angular-ui-powerups.module.ts","ng://@coolon/angular-ui-powerups/lib/components/types/dimension.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/point.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/bounds.class.ts","ng://@coolon/angular-ui-powerups/lib/components/resize-aware.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/abstract-activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/alert.ts","ng://@coolon/angular-ui-powerups/lib/interaction/confirm.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/alert-dialog/alert-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-container/activity-container.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/dialog-interaction.service.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction.module.ts","ng://@coolon/angular-ui-powerups/lib/interaction/result.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet-context.ts","ng://@coolon/angular-ui-powerups/lib/place/place.decorator.ts","ng://@coolon/angular-ui-powerups/lib/place/route/route-parameter-bindings.ts","ng://@coolon/angular-ui-powerups/lib/place/abstract-place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/busy-overlay/busy-overlay.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/empty-state/empty-state.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.service.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/place-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.module.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/leave-place.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/route-parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place-route.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/json-types.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-decorators.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-definition.class.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-type.ts"],"sourcesContent":["import {OnDestroy} from '@angular/core';\nimport {GarbageCollector} from '@coolon/pectin';\n\nexport class DisposableComponent extends GarbageCollector implements OnDestroy {\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n","/* tslint:disable:no-input-rename */\nimport { EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material';\nimport {\n Constant,\n ListModel,\n MutableListModel,\n MutableValueModel,\n UiCommand,\n UseDelegate,\n ValueModel\n} from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\n\nconst EMPTY_ERRORS = new MutableListModel<string>().readonly;\n\nexport abstract class AbstractInputComponent<T> extends DisposableComponent implements OnInit {\n\n @Input() @UseDelegate()\n valueModel: MutableValueModel<T>;\n\n @Input() label: string;\n @Input() floatLabel: 'auto' | 'always' | 'never';\n @Input() hint: string;\n @Input() placeholder: string;\n\n @Input('command.focus') focusCommand: UiCommand.Nullary;\n @Input('command.blur') blurCommand: UiCommand.Nullary;\n @Input('command.enter') enterCommand: UiCommand.Nullary;\n @Input('command.escape') escapeCommand: UiCommand.Nullary;\n @Input('command.click') clickCommand: UiCommand.Nullary;\n\n @Output() focus = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() enterKey = new EventEmitter();\n @Output() escapeKey = new EventEmitter();\n\n readonly errorStateMatcher: ErrorStateMatcher;\n\n @HostListener('click')\n notifyClick() {\n this.safelyInvoke(this.clickCommand);\n }\n\n @HostListener('focusin')\n notifyFocusIn() {\n this.safelyInvoke(this.focusCommand);\n this.focus.emit();\n }\n\n @HostListener('focusout')\n notifyFocusOut() {\n this.safelyInvoke(this.blurCommand);\n this.blur.emit();\n }\n\n\n notifyEnterKey() {\n this.safelyInvoke(this.enterCommand);\n this.enterKey.emit();\n }\n\n notifyEscapeKey() {\n this.safelyInvoke(this.escapeCommand);\n this.escapeKey.emit();\n }\n\n protected safelyInvoke(command: UiCommand.Nullary) {\n if (command && command.isEnabled()) {\n command.execute();\n }\n }\n\n constructor() {\n super();\n const self = this;\n this.errorStateMatcher = {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n ngOnInit(): void {\n // this._focused = this.valueModel['focused'] || new ValueHolder();\n }\n\n isEnabled(): boolean {\n return this.enabled.value;\n }\n\n get enabled(): ValueModel<boolean> {\n // @ts-ignore\n return (this.valueModel as any).enabled || Constant.TRUE;\n }\n\n hasErrors(): boolean {\n return !this.errorList.query().isEmpty();\n }\n\n get errorList(): ListModel<string> {\n return (this.valueModel as any).errorList || EMPTY_ERRORS;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList.value[0] : null;\n }\n\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n\n@Component({\n selector: 'angular-ui-powerups-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss']\n})\nexport class NumberInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit} from '@angular/core';\nimport {assert, Dsl, GarbageCollector, UiCommand} from '@coolon/pectin';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinCommand]'\n})\nexport class CommandDirective extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {\n\n @Input()\n pectinCommand: UiCommand.Nullary<any>;\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n assert.notNil(this.pectinCommand);\n }\n\n ngAfterViewInit(): void {\n // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now\n // we need to do this.\n const {chain} = Dsl.disposeWith(this);\n chain.value(this.pectinCommand.enabled).subscribe(enabled => {\n if (enabled) {\n this.elementRef.nativeElement.removeAttribute('disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.setAttribute('href', 'javascript:void');\n }\n } else {\n this.elementRef.nativeElement.setAttribute('disabled', 'disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.removeAttribute('href');\n }\n }\n });\n\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n\n @HostListener('click', ['$event'])\n notifyClick($event: Event) {\n $event.preventDefault();\n $event.stopPropagation();\n if (this.pectinCommand.isEnabled()) {\n this.pectinCommand.execute({event: $event});\n } else {\n console.warn('disabled command clicked, ignoring.');\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnInit} from '@angular/core';\nimport {Dsl, HasFocusTracking, Logger} from '@coolon/pectin';\nimport {DisposableComponent} from '../components/disposable-component';\n\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements OnInit, AfterViewInit {\n\n private readonly document: Document;\n\n @Input() pectinFocusBinding: HasFocusTracking;\n @Input() focusBindingTarget: HTMLElement;\n\n @HostListener('focusin')\n onFocusIn() {\n this.pectinFocusBinding.focusCallbacks.notifyFocusIn();\n }\n\n @HostListener('focusout')\n onFocusOut() {\n this.pectinFocusBinding.focusCallbacks.notifyFocusOut();\n }\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) document: any) {\n super();\n // @see https://stackoverflow.com/questions/49513359/could-not-resolve-type-document-in-angular5/53715642#53715642\n this.document = document as Document;\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n // TODO: Make this also track the current enabled/disabled state.\n const {chain} = Dsl.disposeWith(this);\n chain.value(this.pectinFocusBinding.focused).subscribe((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n });\n }\n\n // Hook method for debugging via tracing.\n alreadyHasFocus() {\n return this.isFocused(this.focusTarget);\n }\n\n // Hook method for debugging via tracing.\n isFocused(element: Element): boolean {\n return this.document.activeElement === element;\n }\n\n tryAndFocus(retries: number = 5) {\n if (this.modelShouldStillHaveFocus() && this.canFocus()) {\n if (!this.alreadyHasFocus()) {\n this.focusTarget.focus();\n }\n // if we didn't get the focus we try again later.\n if (!this.alreadyHasFocus()) {\n Logger.get(this).log(`focus failed, trying ${retries} more times`);\n if (retries > 0) {\n // try again on the next paint\n // TODO: is there an angular way of doing this without calling a window function.\n requestAnimationFrame(() => {\n this.tryAndFocus(retries - 1);\n });\n } else {\n Logger.get(this).warn(`Tried to focus but gave up as the component wasn't enabled or visible.`);\n }\n }\n }\n }\n\n get focusTarget(): HTMLElement {\n return this.focusBindingTarget || this.el.nativeElement;\n }\n\n // Hook method for debugging via tracing.\n modelShouldStillHaveFocus() {\n return this.pectinFocusBinding.focused.value;\n }\n\n // Hook method for debugging via tracing.\n canFocus(): boolean {\n const dimension = this.focusTarget.getBoundingClientRect();\n const hasSize = dimension.height >= 0 && dimension.height >= 0;\n // tslint:disable-next-line:no-string-literal\n return hasSize && !this.focusTarget['disabled'];\n }\n}\n","import {Component, OnInit} from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-string-input',\n templateUrl: './string-input.component.html',\n styleUrls: ['./string-input.component.scss']\n})\nexport class StringInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {Component, OnInit} from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss']\n})\nexport class PasswordInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ListModel, StoreInListModel, UseDelegate } from '@coolon/pectin';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss']\n})\nexport class SelectInputComponent<T = any> extends AbstractInputComponent<T> implements OnInit {\n\n @Input() @UseDelegate()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n optionLabelFormat: (option: T) => any = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NumberInputComponent} from './components/forms/number-input/number-input.component';\nimport { CommandDirective } from './directives/command.directive';\nimport { FocusBindingDirective } from './directives/focus-binding.directive';\nimport { StringInputComponent } from './components/forms/string-input/string-input.component';\nimport { PasswordInputComponent } from './components/forms/password-input/password-input.component';\nimport { SelectInputComponent } from './components/forms/select-input/select-input.component';\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n ],\n imports: [\n CommonModule,\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule\n ],\n exports: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","export class Dimension {\n constructor(readonly width: number, readonly height: number){}\n}\n","export class Point {\n\n static from(data: { x: number, y: number }) {\n return new Point(data.x, data.y);\n }\n\n constructor(readonly x: number, readonly y: number) {\n }\n\n translate(x: number, y: number): Point {\n return new Point(this.x + x, this.y + y);\n }\n}\n","import { Dimension } from './dimension.class';\nimport { Point } from './point.class';\n\nexport class Bounds extends Dimension {\n\n constructor(readonly top: number, readonly left: number, readonly width: number, readonly height: number) {\n super(width, height);\n }\n\n relativePositionOf(point: { x: number, y: number } | MouseEvent) {\n if (point instanceof MouseEvent) {\n return new Point(point.clientX - this.left, point.clientY - this.top);\n } else {\n return new Point(point.x - this.left, point.y - this.top);\n }\n }\n}\n\nexport namespace Bounds {\n export function ofElement(element: HTMLElement): Bounds {\n const rect = element.getBoundingClientRect();\n return new Bounds(rect.top, rect.left, rect.width, rect.height);\n }\n}\n\n","import {AfterViewInit, ElementRef, NgZone} from '@angular/core';\nimport {ValueHolder, ValueModel} from '@coolon/pectin';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport {DisposableComponent} from './disposable-component';\nimport {Bounds} from './types/bounds.class';\nimport {Point} from './types/point.class';\n\nexport class ResizeAwareComponent extends DisposableComponent implements AfterViewInit {\n\n private _boundsModel = new ValueHolder<Bounds>(new Bounds(0, 0, 0, 0));\n\n constructor(protected readonly elementRef: ElementRef, protected readonly ngZone: NgZone) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.updateBounds();\n const element = this.elementRef.nativeElement;\n const ro = new ResizeObserver((entries, observer) => {\n this.ngZone.run(() => this.updateBounds());\n });\n ro.observe(element);\n this.onDispose(() => ro.disconnect());\n }\n\n get boundsModel(): ValueModel<Bounds> {\n return this._boundsModel.readonly;\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n // TODO: Make this handle body scroll\n public relativePositionOf(point: { x: number, y: number } | MouseEvent): Point {\n return this.bounds.relativePositionOf(point);\n }\n\n get bounds(): Bounds {\n return this._boundsModel.value;\n }\n\n private updateBounds() {\n this._boundsModel.value = Bounds.ofElement(this.nativeElement);\n }\n\n\n}\n\nexport namespace ResizeAwareComponent {\n\n}\n","import { DelegatingValueModel, EventListenerList, ValueModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { Activity } from './activity';\n\nexport class AbstractActivity<D, R, E = any> extends DisposableComponent implements Activity<D, R, E> {\n\n private readonly _doneListeners = new EventListenerList<Activity.CallBack<R>>();\n private readonly _cancelListeners = new EventListenerList<Activity.CallBack<E>>();\n private readonly _finishListeners = new EventListenerList<() => void>();\n\n private readonly _busyModel = new DelegatingValueModel<boolean>().withDefault(false);\n\n onDone(callback: Activity.CallBack<R>) {\n this._doneListeners.add(callback);\n }\n\n onCancel(callback: Activity.CallBack<E>) {\n this._cancelListeners.add(callback);\n }\n\n done(result?: R): Promise<any> {\n return this._doneListeners\n .fireAndWait(l => l(result))\n .finally(() => this.finalizeAndDispose());\n }\n\n cancel(error?: E): Promise<any> {\n return this._cancelListeners\n .fireAndWait(l => l(error))\n .finally(() => this.finalizeAndDispose());\n }\n\n private finalizeAndDispose() {\n // this._activeModel.value = false;\n this._finishListeners.fire(l => l());\n // this._interactionContext = null;\n // this._initialized = false;\n [\n this._finishListeners,\n this._doneListeners,\n this._cancelListeners\n ].forEach(l => l.dispose());\n }\n\n\n get busy(): ValueModel<boolean> {\n return this._busyModel.readonly;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busyModel.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busyModel.value;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ValueModel } from '@coolon/pectin';\n\nexport const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');\n\nexport interface Activity<D, R, E = any> {\n readonly busy: ValueModel<boolean>;\n\n onDone(callback: Activity.CallBack<R>);\n\n onCancel(callback: Activity.CallBack<E>);\n\n}\n\nexport namespace Activity {\n export type CallBack<T> = (value: T) => void | Promise<any>;\n}\n","\nexport interface Alert {\n title?():string;\n content():string[];\n ok():string;\n}\n","import { Alert } from './alert';\n\nexport interface Confirm extends Alert {\n destructive?: () => boolean;\n cancel(): string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Constructable } from '@coolon/pectin';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { Confirm } from './confirm';\n\nexport const INTERACTION_CONTEXT = new InjectionToken<any>('InteractionContext');\n\nexport abstract class InteractionContext {\n\n abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n abstract confirm(confirm: Confirm): Promise<boolean>;\n\n abstract alert(alert: Alert): Promise<void>;\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\n\n@Component({\n selector: 'angular-ui-powerups-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss']\n})\nexport class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\n\n@Component({\n selector: 'angular-ui-powerups-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent extends AbstractActivity<Confirm, boolean> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {\n super();\n assert.notNil(confirm);\n console.log(confirm);\n }\n\n ngOnInit() {\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n}\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport { Constructable, Dsl, MutableListModel } from '@coolon/pectin';\nimport { Deferred } from '@coolon/pectin/lib/promise/deferred.class';\nimport { DisposableComponent } from '../../../components/disposable-component';\n\nimport { Activity } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\nimport { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'angular-ui-powerups-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent extends DisposableComponent implements OnInit, AfterViewInit, InteractionContext {\n\n @Input()\n parentInteractionContext: InteractionContext;\n\n @Input()\n initialActivity: ActivityOutletContext<any, any, any>;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n readonly activityTabs = new MutableListModel<ActivityOutletContext<any, any, any>>();\n private obsoleteTabs: ActivityOutletContext<any, any, any>[] = [];\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.cleanUpTabs());\n }\n\n initialise<D, R, E>(options: ActivityContainerComponent.ActivityContext<D, R, E>) {\n this.initialActivity = {\n ...options,\n interactionContext: this\n };\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n const deferred = Deferred.defer<R>();\n const context = {\n interactionContext: this,\n activityClass: activityType,\n activityData: data,\n onDone: deferred.resolve,\n onCancel: deferred.reject\n };\n this.activityTabs.push(context);\n this.tabs.selectedIndex = this.activityTabs.length;\n return deferred.promise.finally(() => {\n this.obsoleteTabs.push(context);\n this.tabs.selectedIndex = this.activityTabs.length - 1;\n });\n }\n\n alert(alert: Alert): Promise<void> {\n return this.startActivity(AlertDialogComponent, alert);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.startActivity(ConfirmationDialogComponent, confirm);\n }\n\n private cleanUpTabs() {\n this.activityTabs.value = this.activityTabs.value.filter(tab => {\n return !this.obsoleteTabs.includes(tab);\n });\n }\n}\n\nexport namespace ActivityContainerComponent {\n\n export interface ActivityContext<D, R, E> {\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Injector,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Constructable, lang } from '@coolon/pectin';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from './activity-outlet-context';\n\n@Component({\n selector: 'angular-ui-powerups-activity-outlet',\n template: '',\n styleUrls: ['./activity-outlet.component.scss']\n})\nexport class ActivityOutletComponent<D, R, E> implements OnInit, InteractionContext {\n\n @Input()\n interactionContext: InteractionContext;\n\n @Input()\n set activityContext(activityContext: ActivityOutletContext<D, R, E>) {\n this.loadActivity(activityContext);\n };\n\n private activityComponent: ComponentRef<Activity<D, R, E>>;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n }\n\n ngOnInit() {\n }\n\n loadActivity(activityContext: ActivityOutletContext<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: InteractionContext,\n useValue: this\n },\n { provide: ACTIVITY_DATA, useValue: activityContext.activityData }\n ],\n parent: this.injector\n });\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);\n this.viewContainerRef.clear();\n this.activityComponent = this.viewContainerRef.createComponent(componentFactory, 0, injector);\n this.activityComponent.instance.onDone(activityContext.onDone);\n this.activityComponent.instance.onCancel(activityContext.onCancel);\n }\n\n alert(alert: Alert): Promise<void> {\n return this.interactionContext.alert(alert);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.interactionContext.confirm(confirm);\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return this.interactionContext.startActivity(activityType, data);\n }\n}\n\nexport namespace ActivityOutletComponent {\n\n export class OutletInteractionContext<D, R, E> implements InteractionContext {\n\n constructor(private readonly context: ActivityOutletContext<D, R, E>) {\n }\n\n alert(alert: Alert): Promise<void> {\n return lang.notImplemented();\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return lang.notImplemented();\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return lang.notImplemented();\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material';\nimport { Constructable } from '@coolon/pectin';\nimport { Activity } from '../activity';\nimport { Alert } from '../alert';\nimport { ActivityContainerComponent } from '../components/activity-container/activity-container.component';\nimport { AlertDialogComponent } from '../components/alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from '../confirm';\nimport { InteractionContext } from '../interaction-context';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionService extends InteractionContext {\n\n constructor(private readonly dialogService: MatDialog) {\n super();\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity(activityType, data);\n }\n\n private _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {\n const config = {\n data,\n disableClose,\n panelClass: 'dialog-interaction-service',\n autoFocus: false\n };\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent>;\n return new Promise<R>((resolve, reject) => {\n const activityContainer = matDialogRef.componentInstance;\n activityContainer.parentInteractionContext = this;\n activityContainer.initialise({\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n resolve(result);\n matDialogRef.close(result);\n },\n onCancel(error) {\n reject(error);\n matDialogRef.close(error);\n }\n });\n\n matDialogRef.updateSize();\n });\n }\n\n alert(alert: Alert): Promise<void> {\n return this._startActivity(AlertDialogComponent, alert, false);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this._startActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule, MatDialogModule, MatTabsModule } from '@angular/material';\nimport { ActivityContainerComponent } from './components/activity-container/activity-container.component';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { ActivityOutletComponent } from './components/activity-outlet/activity-outlet.component';\nimport { DialogInteractionService } from './services/dialog-interaction.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule\n ],\n declarations: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n AlertDialogComponent,\n ActivityOutletComponent\n ],\n entryComponents: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n AlertDialogComponent\n ],\n providers: [\n DialogInteractionService\n ]\n})\nexport class InteractionModule {\n}\n","export interface Result<R, E> {\n // catch(callback: (error: E) => void): Result<R,E>;\n}\n\nexport namespace Result {\n export interface Callback<R,E> {\n then: <T>(result:R)=>T;\n catch: <T>(result:E)=>T;\n }\n\n}\n\n// const r:Result<string, number> = null;\n\n// r.catch(e => {}).then();\n\n","import { Constructable } from '@coolon/pectin';\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\n\n\nexport interface ActivityOutletContext<D, R, E> {\n interactionContext: InteractionContext,\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n}\n","import { assert, Constructable } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport 'reflect-metadata';\nimport { PlaceComponent } from './place-component';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n Reflect.defineMetadata('place.options', options, target);\n };\n}\n\nexport namespace Place {\n export interface Options {\n path: string,\n title: string,\n authenticate?: boolean // defaults to true\n // childOf?: Constructable<PlaceComponent>\n }\n\n export class Descriptor {\n readonly path: string;\n readonly authenticate: boolean;\n readonly title: string;\n\n constructor(placeClass: Constructable<PlaceComponent>, options: Options) {\n assert.notNil(options);\n this.path = options.path;\n this.title = options.title;\n this.authenticate = _.isNil(options.authenticate) || options.authenticate;\n }\n }\n\n export function getDescriptor(klass: Constructable<PlaceComponent>): Descriptor {\n const placeOptions = Reflect.getMetadata('place.options', klass);\n return new Descriptor(klass, placeOptions);\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport {\n Binding,\n Dsl,\n GarbageCollector,\n MutableHasValue,\n MutableValueModel,\n Trace,\n TransactionObserver\n} from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { AbstractPlaceComponent } from '../abstract-place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\n\ninterface ResolvedParameter<T> {\n parameter: ParameterDefinition<T>;\n resolvedValue: T;\n}\n\nclass ResolvedParameters {\n constructor(readonly parameters: ResolvedParameter<any>[]) {\n }\n\n get<T>(parameter: ParameterDefinition<T>): T {\n const resolved = this.parameters.find(p => p.parameter === parameter);\n return resolved ? resolved.resolvedValue : null;\n }\n\n replace<T>(parameter: ParameterDefinition<T>, value: T): ResolvedParameters {\n return new ResolvedParameters(this.parameters.filter(p => p.parameter !== parameter).concat({\n parameter,\n resolvedValue: value\n }));\n }\n\n @Trace()\n protected getFormattedRouteId() {\n const routeIdParam = this.getRouteIdParam();\n return routeIdParam ? routeIdParam.parameter.type.format(routeIdParam.resolvedValue) : null;\n }\n\n private getRouteIdParam() {\n return this.parameters.find(p => p.parameter.isRouteId);\n }\n\n @Trace()\n protected getFormattedParameters() {\n const params = {};\n const routeIdParam = this.parameters.filter(p => !p.parameter.isRouteId).forEach(p => {\n params[p.parameter.name] = p.parameter.type.format(p.resolvedValue);\n });\n return params;\n }\n\n hasRouteId() {\n return !!this.getRouteIdParam();\n }\n\n @Trace()\n redirect(previous: ResolvedParameters, router: Router, activatedRoute: ActivatedRoute) {\n const routeId = this.getFormattedRouteId();\n const relativePath = !!previous.hasRouteId() ? '..' : '.';\n const path = routeId ? [relativePath, routeId, this.getFormattedParameters()] : [relativePath, this.getFormattedParameters()];\n router.navigate(path, {\n relativeTo: activatedRoute,\n });\n }\n}\n\nexport class RouteParameterBindings extends GarbageCollector {\n\n public readonly _incomingRouteChange = new MutableValueModel<boolean>(false);\n\n private txo: TransactionObserver;\n\n private readonly resolvedParameters = new MutableValueModel<ResolvedParameters>();\n\n constructor(private readonly component: any, private readonly router: Router, private readonly activatedRoute: ActivatedRoute) {\n super();\n const { chain, valueOf, before, when, after, observe } = Dsl.disposeWith(this);\n this.txo = new TransactionObserver();//.onEvent(e => console.log(e.toString()));\n\n const routeParameterDefs = Klass.get(component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);\n routeParameterDefs.forEach(parameter => this.installBinding(parameter));\n\n const incomingResolvedRouteParameters = observe.valuesFrom(activatedRoute.paramMap)\n .last()\n .map(params => {\n const result: ResolvedParameter<any>[] = [];\n routeParameterDefs.forEach(parameter => {\n result.push({ parameter, resolvedValue: parameter.type.parse(params.get(parameter.name)) });\n });\n return new ResolvedParameters(result);\n });\n\n incomingResolvedRouteParameters.subscribe(resolvedParameters => {\n this._incomingRouteChange.value = true;\n this.resolvedParameters.value = resolvedParameters;\n this._incomingRouteChange.value = false;\n });\n\n when.valueOf(this.resolvedParameters).changes((params, previous) => {\n params.redirect(previous, router, activatedRoute);\n }, { unless: this.incomingRouteChange });\n\n this.txo.observe('incomingResolvedRouteParameters', incomingResolvedRouteParameters);\n this.txo.observe('this.routeIsChanging', this.incomingRouteChange);\n }\n\n get incomingRouteChange() {\n return this._incomingRouteChange.readonly;\n }\n\n protected installBinding<T>(parameter: ParameterDefinition<T>) {\n const model = this.getModelFor(parameter);\n this.txo.observe(parameter.propertyName, model);\n this.registerDisposable(new Binding(this.resolvedParameters, model, {\n toRight(parameters: ResolvedParameters): T {\n return parameters.get(parameter);\n },\n toLeft(value: T, currentParameters?: ResolvedParameters): ResolvedParameters {\n return currentParameters.replace(parameter, value);\n }\n }));\n }\n\n\n private getModelFor<T>(parameter: ParameterDefinition<T>): MutableHasValue<T> {\n return this.component[parameter.propertyName];\n }\n}\n\nexport namespace RouteParameterBindings {\n export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n}\n","import { ActivatedRoute, Router } from '@angular/router';\n\nimport { Constructable, DelegatingValueModel, MutableValueModel, UseDelegate } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { PlaceComponent } from './place-component';\nimport { Place } from './place.decorator';\nimport { RouteParameterBindings } from './route/route-parameter-bindings';\n\nexport class AbstractPlaceComponent extends DisposableComponent implements PlaceComponent {\n\n @UseDelegate()\n readonly titleModel: MutableValueModel<string>;\n\n private routeBindingMediator: RouteParameterBindings;\n\n constructor(protected activatedRoute: ActivatedRoute, router: Router) {\n super();\n this.routeBindingMediator = this.registerDisposable(new RouteParameterBindings(this, router, activatedRoute));\n // See https://coolon.atlassian.net/browse/PEC-59\n (this.titleModel as unknown as DelegatingValueModel<string>).setDefault(this.placeConfig.title);\n }\n\n @Memoize()\n get placeConfig(): Place.Descriptor {\n return Place.getDescriptor(this.constructor as any as Constructable<PlaceComponent>);\n }\n\n canDeactivate(): boolean | Promise<boolean> {\n return true;\n }\n\n}\n","import { ValueModel } from '@coolon/pectin';\n\nexport interface PlaceComponent {\n titleModel:ValueModel<string>;\n canDeactivate(): boolean | Promise<boolean>;\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { StoreInValueModel, UseDelegatingValueModel, ValueModel } from '@coolon/pectin';\n\n@Component({\n selector: 'aup-busy-overlay',\n templateUrl: `./busy-overlay.component.html`,\n styleUrls: ['./busy-overlay.component.scss']\n})\nexport class BusyOverlayComponent implements OnInit {\n\n @Input() @UseDelegatingValueModel()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'angular-ui-powerups-empty-state',\n template: `\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./empty-state.component.scss']\n})\nexport class EmptyStateComponent implements OnInit {\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MutableListModel, Trace } from '@coolon/pectin';\nimport { PlaceComponent } from './place-component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceService {\n\n private _activePlaces = new MutableListModel<PlaceComponent>();\n\n constructor() {\n }\n\n get activePlaces() {\n return this._activePlaces.readonly;\n }\n\n @Trace()\n onActivate(place: PlaceComponent) {\n this._activePlaces.push(place);\n }\n\n @Trace()\n onDeactivate(place: PlaceComponent) {\n this._activePlaces.remove(place);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PlaceComponent } from '../../place-component';\nimport { PlaceService } from '../../place.service';\n\n@Component({\n selector: 'angular-ui-powerups-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss']\n})\nexport class PlaceOutletComponent implements OnInit {\n\n constructor(private readonly placeService: PlaceService) { }\n\n ngOnInit() {\n }\n\n onActivate($event: PlaceComponent) {\n this.placeService.onActivate($event);\n }\n onDeactivate($event: PlaceComponent) {\n this.placeService.onDeactivate($event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { BusyOverlayComponent } from './components/busy-overlay/busy-overlay.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { PlaceService } from './place.service';\nimport { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n RouterModule\n ],\n declarations: [\n EmptyStateComponent,\n BusyOverlayComponent,\n PlaceOutletComponent\n ],\n entryComponents: [BusyOverlayComponent],\n exports: [\n BusyOverlayComponent,\n PlaceOutletComponent,\n EmptyStateComponent\n ],\n providers: [\n PlaceService\n ]\n})\nexport class PlaceModule {\n\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { PlaceComponent } from '../place-component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LeavePlaceGuard implements CanDeactivate<PlaceComponent> {\n\n constructor(private router: Router, private injector: Injector) {\n }\n\n canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return component.canDeactivate();\n }\n\n}\n","import { Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { assert, Trace } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { ParameterSanitiser } from './parameter-sanitiser';\n\nexport class RouteParameterSanitiser {\n\n private readonly routeParameter: ParameterDefinition<any>;\n private readonly queryParameters: ParameterDefinition<any>[];\n\n private readonly sanitisedParameters: { def: ParameterDefinition<any>, value: string }[] = [];\n\n constructor(readonly parameterDefs: ParameterDefinition<any>[], readonly injector: Injector) {\n this.routeParameter = parameterDefs.find(p => p.isRouteId);\n this.queryParameters = parameterDefs.filter(p => !p.isRouteId);\n }\n\n async sanitise(snapshot: ActivatedRouteSnapshot): Promise<boolean> {\n if (this.routeParameter) {\n const routeOk = await this.sanitiseParameter(this.routeParameter, snapshot.paramMap.get(this.routeParameter.name));\n if (!routeOk) {\n // if the route id isn't ok we redirect immediately as the query params may need to be sanitised in the\n // context of the route id.\n return false;\n }\n }\n for (const param of this.queryParameters) {\n await this.sanitiseParameter(param, snapshot.queryParamMap.get(param.name));\n }\n return this.sanitisedParameters.length === 0;\n }\n\n @Trace()\n async sanitiseParameter<T>(def: ParameterDefinition<T>, formattedInitialValue: string): Promise<boolean> {\n if (def) {\n const sanitiser = this.getSanitiser(def);\n if (sanitiser) {\n const initialValue = def.type.parse(formattedInitialValue);\n const sanitisedValue = await sanitiser.sanitise(initialValue);\n if (initialValue !== sanitisedValue) {\n this.sanitisedParameters.push({ def, value: def.type.format(sanitisedValue) });\n return false;\n }\n }\n }\n return true;\n }\n\n redirect(router: Router) {\n assert.isTruthy(this.sanitisedParameters.length !== 0);\n const sanitisedRouteId = this.sanitisedParameters.find(s => s.def === this.routeParameter);\n if (sanitisedRouteId) {\n return router.navigate(['..', sanitisedRouteId.value]);\n } else {\n const queryParams = this.sanitisedParameters.filter(s => s.def !== this.routeParameter)\n .reduce((params, item) => ({ ...params, [item.def.name]: item.value }), {});\n return router.navigate(['.', queryParams]);\n }\n }\n\n @Memoize()\n private getSanitiser<T>(def: ParameterDefinition<T>): ParameterSanitiser<T> {\n return def.sanitiser ? this.injector.get<ParameterSanitiser<T>>(def.sanitiser, new def.sanitiser()) : null;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanDeactivate,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Observable } from 'rxjs';\nimport { PlaceComponent } from '../place-component';\nimport { RouteParameterBindings } from '../route/route-parameter-bindings';\nimport { RouteParameterSanitiser } from '../route/route-parameter-sanitiser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouteGuard implements CanActivate {\n\n constructor(private router: Router, private injector: Injector) {\n }\n\n @Trace()\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const routeParameters = Klass.get(route.component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);\n const sanitiser = new RouteParameterSanitiser(routeParameters, this.injector);\n return sanitiser.sanitise(route).then(proceed => {\n if (!proceed) {\n sanitiser.redirect(this.router);\n }\n return proceed;\n });\n }\n\n}\n","export type JsonPrimitive = boolean | number | string;\nexport type AnyJson = JsonPrimitive | null | JsonArray | JsonMap;\nexport interface JsonArray extends Array<AnyJson> {}\nexport interface JsonMap { [key: string]: AnyJson; }\n\n","import { assert, Constructable, UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { ParameterSanitiser } from './parameter-sanitiser';\nimport { ParameterType } from './parameter-type';\nimport { RouteParameterBindings } from './route-parameter-bindings';\n\nexport interface ParameterOptions<T> {\n as?: string;\n sanitiser?: Constructable<ParameterSanitiser<T>>;\n}\n\nexport function RouteId<T extends string | number>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator {\n // assert.isTruthy(type.isValid());\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = createDefinition(propertyKey, type, options, true);\n Klass.get(prototype).addToOwnMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\n\nexport function QueryParameter<T>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator {\n // assert.isTruthy(type.isValid());\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = createDefinition(propertyKey, type, options, false);\n Klass.get(prototype).addToOwnMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nfunction createDefinition<T>(propertyName: symbol | string, type: ParameterType<T>, options: ParameterOptions<T>, routeId: boolean) {\n const opts = Opts.get(options);\n const propertyNameAsString = assert.notNil(propertyName).toString();\n const def: ParameterDefinition<T> = {\n name: opts.getOptional('as', propertyNameAsString),\n propertyName: propertyNameAsString,\n type: assert.notNil(type),\n sanitiser: opts.getOptional('sanitiser', null),\n isRouteId: routeId\n };\n return def;\n}\n","import { Constructable } from '@coolon/pectin';\nimport { ParameterSanitiser } from './parameter-sanitiser';\nimport { ParameterType } from './parameter-type';\n\nexport interface ParameterDefinition<T> {\n readonly name: string;\n readonly propertyName: string;\n readonly type: ParameterType<T>;\n readonly sanitiser: Constructable<ParameterSanitiser<T>>;\n readonly isRouteId: boolean;\n}\n","export interface ParameterSanitiser<T> {\n sanitise(value: T): T | Promise<T>;\n}\n","export interface ParameterType<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace ParameterType {\n\n class StringType implements ParameterType<string> {\n format(value: string): string {\n return value;\n }\n\n parse(value: string): string {\n return value;\n }\n }\n\n class NumberType implements ParameterType<number> {\n format(value: number): string {\n return `${value}`;\n }\n\n parse(value: string): number {\n return +value;\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n}\n"],"names":["tslib_1.__decorate","_.isNil","Memoize"],"mappings":"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"}