@coolon/angular-ui-powerups 12.4.9 → 13.0.0

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 (315) hide show
  1. package/assets/activities/activities.scss +1 -1
  2. package/assets/cards.scss +1 -1
  3. package/assets/form.scss +1 -1
  4. package/assets/interaction/editor/inline-string-editor.scss +1 -1
  5. package/assets/interaction.scss +1 -1
  6. package/assets/mixins.scss +2 -2
  7. package/assets/pills.scss +1 -1
  8. package/assets/styles.scss +1 -1
  9. package/{esm2015/lib/angular-ui-powerups.module.js → esm2020/lib/angular-ui-powerups.module.mjs} +5 -5
  10. package/esm2020/lib/components/busy-overlay/busy-overlay.component.mjs +32 -0
  11. package/{esm2015/lib/components/cards/abstract-card-container.component.js → esm2020/lib/components/cards/abstract-card-container.component.mjs} +4 -4
  12. package/esm2020/lib/components/cards/card-container/card-container.component.mjs +129 -0
  13. package/esm2020/lib/components/cards/card-stack/card-stack.component.mjs +81 -0
  14. package/esm2020/lib/components/commands/command/command.component.mjs +96 -0
  15. package/{esm2015/lib/components/commands/command-face/command-face.component.js → esm2020/lib/components/commands/command-face/command-face.component.mjs} +5 -10
  16. package/esm2020/lib/components/commands/command-face.mjs +112 -0
  17. package/{esm2015/lib/components/commands/flex.component.js → esm2020/lib/components/commands/flex.component.mjs} +4 -4
  18. package/esm2020/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +84 -0
  19. package/esm2020/lib/components/commands/group/popup-menu/more-menu.component.mjs +57 -0
  20. package/esm2020/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +101 -0
  21. package/esm2020/lib/components/commands/group/popup-menu/popup-menu.component.mjs +53 -0
  22. package/esm2020/lib/components/commands/group/tool-bar/tool-bar.component.mjs +31 -0
  23. package/{esm2015/lib/components/commands/separator.component.js → esm2020/lib/components/commands/separator.component.mjs} +5 -5
  24. package/{esm2015/lib/components/components.module.js → esm2020/lib/components/components.module.mjs} +6 -6
  25. package/{esm2015/lib/components/disposable-component.js → esm2020/lib/components/disposable-component.mjs} +4 -4
  26. package/{esm2015/lib/components/empty-state/empty-state.component.js → esm2020/lib/components/empty-state/empty-state.component.mjs} +6 -10
  27. package/{esm2015/lib/components/focus-container/focus-container.component.js → esm2020/lib/components/focus-container/focus-container.component.mjs} +6 -11
  28. package/{esm2015/lib/components/focusable.component.js → esm2020/lib/components/focusable.component.mjs} +6 -8
  29. package/{esm2015/lib/components/forms/abstract-input.component.js → esm2020/lib/components/forms/abstract-input.component.mjs} +4 -4
  30. package/{esm2015/lib/components/forms/abstract-list-input.component.js → esm2020/lib/components/forms/abstract-list-input.component.mjs} +4 -4
  31. package/{esm2015/lib/components/forms/abstract-value-input.component.js → esm2020/lib/components/forms/abstract-value-input.component.mjs} +4 -4
  32. package/esm2020/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +72 -0
  33. package/esm2020/lib/components/forms/checkbox-input/checkbox-input.component.mjs +29 -0
  34. package/esm2020/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +52 -0
  35. package/esm2020/lib/components/forms/number-input/number-input.component.mjs +33 -0
  36. package/esm2020/lib/components/forms/password-input/password-input.component.mjs +24 -0
  37. package/esm2020/lib/components/forms/select-input/select-input.component.mjs +57 -0
  38. package/esm2020/lib/components/forms/string-input/string-input.component.mjs +48 -0
  39. package/esm2020/lib/components/forms/text-input/text-input.component.mjs +30 -0
  40. package/esm2020/lib/components/icon/icon.component.mjs +52 -0
  41. package/esm2020/lib/components/labelled-value/labelled-value.component.mjs +20 -0
  42. package/esm2020/lib/components/loading-container/loading-container.component.mjs +50 -0
  43. package/esm2020/lib/components/noop/noop.component.mjs +13 -0
  44. package/{esm2015/lib/components/resize-aware.component.js → esm2020/lib/components/resize-aware.component.mjs} +4 -4
  45. package/esm2020/lib/components/scroll-container/scroll-container.component.mjs +15 -0
  46. package/esm2020/lib/components/section-header/section-header.component.mjs +36 -0
  47. package/{esm2015/lib/components/switch-case/switch-case.component.js → esm2020/lib/components/switch-case/switch-case.component.mjs} +11 -15
  48. package/esm2020/lib/components/tables/abstract-table-model.mjs +185 -0
  49. package/esm2020/lib/components/tables/abstract-table.component.mjs +168 -0
  50. package/{esm2015/lib/components/tables/table/cell-portal-ref.js → esm2020/lib/components/tables/table/cell-portal-ref.mjs} +2 -2
  51. package/esm2020/lib/components/tables/table/column-model.mjs +392 -0
  52. package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +35 -0
  53. package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +22 -0
  54. package/esm2020/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.mjs +15 -0
  55. package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +55 -0
  56. package/esm2020/lib/components/tables/table/paginator/paginator.component.mjs +40 -0
  57. package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +26 -0
  58. package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +31 -0
  59. package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +93 -0
  60. package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +32 -0
  61. package/{esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js → esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs} +5 -5
  62. package/esm2020/lib/components/tables/table/table.component.mjs +95 -0
  63. package/esm2020/lib/components/tables/tree-table/decorated-tree-node.mjs +171 -0
  64. package/esm2020/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +72 -0
  65. package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +91 -0
  66. package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +95 -0
  67. package/{esm2015/lib/components/text/markdown/markdown.component.js → esm2020/lib/components/text/markdown/markdown.component.mjs} +5 -9
  68. package/{esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js → esm2020/lib/components/vertical-focus-container/vertical-focus-container.component.mjs} +6 -11
  69. package/{esm2015/lib/directives/command.directive.js → esm2020/lib/directives/command.directive.mjs} +4 -4
  70. package/{esm2015/lib/directives/directives.module.js → esm2020/lib/directives/directives.module.mjs} +5 -5
  71. package/{esm2015/lib/directives/focus-binding-factory.js → esm2020/lib/directives/focus-binding-factory.mjs} +4 -4
  72. package/{esm2015/lib/directives/focus-binding.directive.js → esm2020/lib/directives/focus-binding.directive.mjs} +4 -4
  73. package/{esm2015/lib/directives/highlight-text-model.directive.js → esm2020/lib/directives/highlight-text-model.directive.mjs} +4 -4
  74. package/{esm2015/lib/directives/highlight.pipe.js → esm2020/lib/directives/highlight.pipe.mjs} +6 -7
  75. package/esm2020/lib/interaction/activity.mjs +87 -0
  76. package/{esm2015/lib/interaction/components/abstract-confirm-dialog.component.js → esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs} +4 -4
  77. package/{esm2015/lib/interaction/components/abstract-dialog.component.js → esm2020/lib/interaction/components/abstract-dialog.component.mjs} +4 -4
  78. package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +109 -0
  79. package/esm2020/lib/interaction/components/activity-body/activity-body.component.mjs +23 -0
  80. package/esm2020/lib/interaction/components/activity-container/activity-container.component.mjs +205 -0
  81. package/{esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js → esm2020/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs} +5 -9
  82. package/esm2020/lib/interaction/components/activity-title/activity-title.component.mjs +41 -0
  83. package/{esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js → esm2020/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.mjs} +5 -6
  84. package/esm2020/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +24 -0
  85. package/esm2020/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +22 -0
  86. package/esm2020/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +30 -0
  87. package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +91 -0
  88. package/esm2020/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +73 -0
  89. package/esm2020/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +30 -0
  90. package/esm2020/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +30 -0
  91. package/esm2020/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +34 -0
  92. package/esm2020/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +29 -0
  93. package/esm2020/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +173 -0
  94. package/esm2020/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +91 -0
  95. package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +103 -0
  96. package/{esm2015/lib/interaction/components/input-activities/select-input-activity.js → esm2020/lib/interaction/components/input-activities/select-input-activity.mjs} +6 -8
  97. package/{esm2015/lib/interaction/components/input-activities/string-input-activity.js → esm2020/lib/interaction/components/input-activities/string-input-activity.mjs} +4 -4
  98. package/{esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js → esm2020/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.mjs} +5 -9
  99. package/{esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js → esm2020/lib/interaction/directives/interaction-context-trigger-for.directive.mjs} +4 -4
  100. package/{esm2015/lib/interaction/interaction.module.js → esm2020/lib/interaction/interaction.module.mjs} +5 -11
  101. package/{esm2015/lib/interaction/services/interaction.service.js → esm2020/lib/interaction/services/interaction.service.mjs} +4 -4
  102. package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +47 -0
  103. package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +61 -0
  104. package/{esm2015/lib/place/components/abstract-place-navigation.component.js → esm2020/lib/place/components/abstract-place-navigation.component.mjs} +4 -4
  105. package/esm2020/lib/place/components/list-place-nav/list-place-nav.component.mjs +23 -0
  106. package/esm2020/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +13 -0
  107. package/esm2020/lib/place/components/place-outlet/place-outlet.component.mjs +256 -0
  108. package/esm2020/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +93 -0
  109. package/esm2020/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +22 -0
  110. package/esm2020/lib/place/guards/noop-auth-guard.service.mjs +18 -0
  111. package/esm2020/lib/place/guards/place.guard.mjs +109 -0
  112. package/esm2020/lib/place/navigation/place-component-deactivation-handler.mjs +83 -0
  113. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +43 -0
  114. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +152 -0
  115. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +62 -0
  116. package/esm2020/lib/place/navigation/session/navigation-session.mjs +157 -0
  117. package/esm2020/lib/place/place-component.mjs +198 -0
  118. package/esm2020/lib/place/place-history.mjs +138 -0
  119. package/esm2020/lib/place/place-router.mjs +331 -0
  120. package/esm2020/lib/place/place.decorator.mjs +18 -0
  121. package/{esm2015/lib/place/place.module.js → esm2020/lib/place/place.module.mjs} +5 -6
  122. package/esm2020/lib/place/route/parameter-definition.mjs +123 -0
  123. package/esm2020/lib/place/route/visit-sanitiser.mjs +41 -0
  124. package/{esm2015/lib/place/url-service.js → esm2020/lib/place/url-service.mjs} +4 -4
  125. package/esm2020/lib/place/visit.mjs +69 -0
  126. package/{esm2015/lib/services/markdown/markdown.service.js → esm2020/lib/services/markdown/markdown.service.mjs} +5 -5
  127. package/esm2020/lib/services/markdown/pill-plugin.mjs +37 -0
  128. package/{esm2015/lib/services/visibility-service.js → esm2020/lib/services/visibility-service.mjs} +4 -4
  129. package/fesm2015/{coolon-angular-ui-powerups.js → coolon-angular-ui-powerups.mjs} +1201 -1415
  130. package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -0
  131. package/fesm2020/coolon-angular-ui-powerups.mjs +9891 -0
  132. package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -0
  133. package/package.json +37 -24
  134. package/schematics/activity/index.js +3 -3
  135. package/schematics/activity/index.js.map +1 -1
  136. package/schematics/aup-i18n/index.js +7 -7
  137. package/schematics/aup-i18n/index.js.map +1 -1
  138. package/schematics/bootstrap-app/index.js +9 -9
  139. package/schematics/bootstrap-app/index.js.map +1 -1
  140. package/schematics/bootstrap-app/templates/src/styles.scss.template +2 -2
  141. package/schematics/component/index.js +3 -3
  142. package/schematics/component/index.js.map +1 -1
  143. package/schematics/ng-add/index.js +2 -2
  144. package/schematics/ng-add/index.js.map +1 -1
  145. package/schematics/place-add/index.js +3 -3
  146. package/schematics/place-add/index.js.map +1 -1
  147. package/schematics/place-bootstrap/index.js +1 -1
  148. package/schematics/place-bootstrap/index.js.map +1 -1
  149. package/schematics/place-routes/place-builder.js +6 -6
  150. package/schematics/place-routes/place-builder.js.map +1 -1
  151. package/schematics/place-routes/place-class-scanner.js +3 -3
  152. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  153. package/schematics/place-routes/place-def.js +4 -4
  154. package/schematics/place-routes/place-def.js.map +1 -1
  155. package/schematics/utils/decorators/decorated-class.js +1 -1
  156. package/schematics/utils/decorators/decorated-class.js.map +1 -1
  157. package/schematics/utils/import-def.js +3 -3
  158. package/schematics/utils/import-def.js.map +1 -1
  159. package/schematics/utils/method-scanner.js +4 -4
  160. package/schematics/utils/method-scanner.js.map +1 -1
  161. package/schematics/utils/path-helper.js +3 -3
  162. package/schematics/utils/path-helper.js.map +1 -1
  163. package/schematics/utils/source-file-scanner.js +5 -5
  164. package/schematics/utils/source-file-scanner.js.map +1 -1
  165. package/schematics/utils/source-file-utilities.js +1 -1
  166. package/schematics/utils/source-file-utilities.js.map +1 -1
  167. package/schematics/utils/template-utilities.js +4 -4
  168. package/schematics/utils/template-utilities.js.map +1 -1
  169. package/bundles/coolon-angular-ui-powerups.umd.js +0 -11847
  170. package/bundles/coolon-angular-ui-powerups.umd.js.map +0 -1
  171. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +0 -36
  172. package/esm2015/lib/components/cards/card-container/card-container.component.js +0 -133
  173. package/esm2015/lib/components/cards/card-stack/card-stack.component.js +0 -85
  174. package/esm2015/lib/components/commands/command/command.component.js +0 -100
  175. package/esm2015/lib/components/commands/command-face.js +0 -112
  176. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +0 -89
  177. package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js +0 -61
  178. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +0 -104
  179. package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js +0 -58
  180. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +0 -36
  181. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +0 -76
  182. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +0 -33
  183. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -56
  184. package/esm2015/lib/components/forms/number-input/number-input.component.js +0 -37
  185. package/esm2015/lib/components/forms/password-input/password-input.component.js +0 -28
  186. package/esm2015/lib/components/forms/select-input/select-input.component.js +0 -61
  187. package/esm2015/lib/components/forms/string-input/string-input.component.js +0 -52
  188. package/esm2015/lib/components/forms/text-input/text-input.component.js +0 -34
  189. package/esm2015/lib/components/icon/icon.component.js +0 -56
  190. package/esm2015/lib/components/labelled-value/labelled-value.component.js +0 -24
  191. package/esm2015/lib/components/loading-container/loading-container.component.js +0 -54
  192. package/esm2015/lib/components/noop/noop.component.js +0 -17
  193. package/esm2015/lib/components/scroll-container/scroll-container.component.js +0 -19
  194. package/esm2015/lib/components/section-header/section-header.component.js +0 -40
  195. package/esm2015/lib/components/tables/abstract-table-model.js +0 -188
  196. package/esm2015/lib/components/tables/abstract-table.component.js +0 -170
  197. package/esm2015/lib/components/tables/table/column-model.js +0 -389
  198. package/esm2015/lib/components/tables/table/column-template/column-template.directive.js +0 -36
  199. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js +0 -26
  200. package/esm2015/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.js +0 -19
  201. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +0 -60
  202. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +0 -44
  203. package/esm2015/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.js +0 -32
  204. package/esm2015/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.js +0 -37
  205. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +0 -98
  206. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +0 -36
  207. package/esm2015/lib/components/tables/table/table.component.js +0 -100
  208. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +0 -171
  209. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +0 -76
  210. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +0 -96
  211. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +0 -100
  212. package/esm2015/lib/interaction/activity.js +0 -88
  213. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +0 -113
  214. package/esm2015/lib/interaction/components/activity-body/activity-body.component.js +0 -27
  215. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +0 -214
  216. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +0 -45
  217. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +0 -28
  218. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +0 -26
  219. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +0 -34
  220. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +0 -95
  221. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +0 -77
  222. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +0 -34
  223. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +0 -34
  224. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +0 -39
  225. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +0 -33
  226. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +0 -176
  227. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +0 -96
  228. package/esm2015/lib/interaction/components/input-activities/input-activity.js +0 -107
  229. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +0 -41
  230. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +0 -58
  231. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +0 -27
  232. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +0 -17
  233. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +0 -263
  234. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +0 -97
  235. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +0 -26
  236. package/esm2015/lib/place/guards/noop-auth-guard.service.js +0 -21
  237. package/esm2015/lib/place/guards/place.guard.js +0 -116
  238. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +0 -88
  239. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +0 -46
  240. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.js +0 -159
  241. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +0 -65
  242. package/esm2015/lib/place/navigation/session/navigation-session.js +0 -160
  243. package/esm2015/lib/place/place-component.js +0 -204
  244. package/esm2015/lib/place/place-history.js +0 -139
  245. package/esm2015/lib/place/place-router.js +0 -336
  246. package/esm2015/lib/place/place.decorator.js +0 -19
  247. package/esm2015/lib/place/route/parameter-definition.js +0 -128
  248. package/esm2015/lib/place/route/visit-sanitiser.js +0 -44
  249. package/esm2015/lib/place/visit.js +0 -69
  250. package/esm2015/lib/services/markdown/pill-plugin.js +0 -38
  251. package/fesm2015/coolon-angular-ui-powerups.js.map +0 -1
  252. /package/{esm2015/coolon-angular-ui-powerups.js → esm2020/coolon-angular-ui-powerups.mjs} +0 -0
  253. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  254. /package/{esm2015/lib/animations/exports.js → esm2020/lib/animations/exports.mjs} +0 -0
  255. /package/{esm2015/lib/animations/slide-animations.js → esm2020/lib/animations/slide-animations.mjs} +0 -0
  256. /package/{esm2015/lib/components/alignment.js → esm2020/lib/components/alignment.mjs} +0 -0
  257. /package/{esm2015/lib/components/commands/group/command-container.js → esm2020/lib/components/commands/group/command-container.mjs} +0 -0
  258. /package/{esm2015/lib/components/commands/group/popup-aware.component.js → esm2020/lib/components/commands/group/popup-aware.component.mjs} +0 -0
  259. /package/{esm2015/lib/components/commands/group/popup-container.js → esm2020/lib/components/commands/group/popup-container.mjs} +0 -0
  260. /package/{esm2015/lib/components/exports.js → esm2020/lib/components/exports.mjs} +0 -0
  261. /package/{esm2015/lib/components/tables/column-list-model.js → esm2020/lib/components/tables/column-list-model.mjs} +0 -0
  262. /package/{esm2015/lib/components/tables/edit-session.js → esm2020/lib/components/tables/edit-session.mjs} +0 -0
  263. /package/{esm2015/lib/components/tables/table/cell-editors.js → esm2020/lib/components/tables/table/cell-editors.mjs} +0 -0
  264. /package/{esm2015/lib/components/tables/table/cell-renderer.js → esm2020/lib/components/tables/table/cell-renderer.mjs} +0 -0
  265. /package/{esm2015/lib/components/tables/table/column-text-properties.js → esm2020/lib/components/tables/table/column-text-properties.mjs} +0 -0
  266. /package/{esm2015/lib/components/tables/table/mutable-cell-renderer.js → esm2020/lib/components/tables/table/mutable-cell-renderer.mjs} +0 -0
  267. /package/{esm2015/lib/components/tables/table/table-def.js → esm2020/lib/components/tables/table/table-def.mjs} +0 -0
  268. /package/{esm2015/lib/components/tables/table/table-model.js → esm2020/lib/components/tables/table/table-model.mjs} +0 -0
  269. /package/{esm2015/lib/components/tables/table/text-search-predicate.js → esm2020/lib/components/tables/table/text-search-predicate.mjs} +0 -0
  270. /package/{esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js → esm2020/lib/components/tables/tree-table/flattened-tree-list-model.mjs} +0 -0
  271. /package/{esm2015/lib/components/tables/tree-table/tree-expansion-model.js → esm2020/lib/components/tables/tree-table/tree-expansion-model.mjs} +0 -0
  272. /package/{esm2015/lib/components/tables/tree-table/tree-label-column-model.js → esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs} +0 -0
  273. /package/{esm2015/lib/components/tables/tree-table/tree-table-model.js → esm2020/lib/components/tables/tree-table/tree-table-model.mjs} +0 -0
  274. /package/{esm2015/lib/components/track-by.js → esm2020/lib/components/track-by.mjs} +0 -0
  275. /package/{esm2015/lib/components/types/bounds.class.js → esm2020/lib/components/types/bounds.class.mjs} +0 -0
  276. /package/{esm2015/lib/components/types/dimension.class.js → esm2020/lib/components/types/dimension.class.mjs} +0 -0
  277. /package/{esm2015/lib/components/types/point.class.js → esm2020/lib/components/types/point.class.mjs} +0 -0
  278. /package/{esm2015/lib/directives/exports.js → esm2020/lib/directives/exports.mjs} +0 -0
  279. /package/{esm2015/lib/directives/focus-binding.js → esm2020/lib/directives/focus-binding.mjs} +0 -0
  280. /package/{esm2015/lib/interaction/abstract-interaction-context.js → esm2020/lib/interaction/abstract-interaction-context.mjs} +0 -0
  281. /package/{esm2015/lib/interaction/activity-ref.js → esm2020/lib/interaction/activity-ref.mjs} +0 -0
  282. /package/{esm2015/lib/interaction/alert.js → esm2020/lib/interaction/alert.mjs} +0 -0
  283. /package/{esm2015/lib/interaction/components/editors/edit-context.js → esm2020/lib/interaction/components/editors/edit-context.mjs} +0 -0
  284. /package/{esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js → esm2020/lib/interaction/components/editors/inline-string-editor/inline-editor-model.mjs} +0 -0
  285. /package/{esm2015/lib/interaction/confirm.js → esm2020/lib/interaction/confirm.mjs} +0 -0
  286. /package/{esm2015/lib/interaction/exports.js → esm2020/lib/interaction/exports.mjs} +0 -0
  287. /package/{esm2015/lib/interaction/in-place-interaction-context.js → esm2020/lib/interaction/in-place-interaction-context.mjs} +0 -0
  288. /package/{esm2015/lib/interaction/interaction-context.js → esm2020/lib/interaction/interaction-context.mjs} +0 -0
  289. /package/{esm2015/lib/interaction/route-synchronisation-adapter.js → esm2020/lib/interaction/route-synchronisation-adapter.mjs} +0 -0
  290. /package/{esm2015/lib/interaction/services/interaction-service-routing-adapter.js → esm2020/lib/interaction/services/interaction-service-routing-adapter.mjs} +0 -0
  291. /package/{esm2015/lib/interaction/services/modal-interaction-context.factory.js → esm2020/lib/interaction/services/modal-interaction-context.factory.mjs} +0 -0
  292. /package/{esm2015/lib/place/components/place-outlet/route-animations.js → esm2020/lib/place/components/place-outlet/route-animations.mjs} +0 -0
  293. /package/{esm2015/lib/place/exports.js → esm2020/lib/place/exports.mjs} +0 -0
  294. /package/{esm2015/lib/place/guards/consolidated-param-map.js → esm2020/lib/place/guards/consolidated-param-map.mjs} +0 -0
  295. /package/{esm2015/lib/place/nav-item.js → esm2020/lib/place/nav-item.mjs} +0 -0
  296. /package/{esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js → esm2020/lib/place/navigation/session/abstract-pop-state-navigation.mjs} +0 -0
  297. /package/{esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.js → esm2020/lib/place/navigation/session/event-cleanup/event-clean-up-session.mjs} +0 -0
  298. /package/{esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js → esm2020/lib/place/navigation/session/interactions/navigating-during-interaction.mjs} +0 -0
  299. /package/{esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js → esm2020/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.mjs} +0 -0
  300. /package/{esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js → esm2020/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.mjs} +0 -0
  301. /package/{esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js → esm2020/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs} +0 -0
  302. /package/{esm2015/lib/place/navigation/session/navigating.js → esm2020/lib/place/navigation/session/navigating.mjs} +0 -0
  303. /package/{esm2015/lib/place/navigation/session/navigation-context.js → esm2020/lib/place/navigation/session/navigation-context.mjs} +0 -0
  304. /package/{esm2015/lib/place/navigation/session/pop-state-navigation.js → esm2020/lib/place/navigation/session/pop-state-navigation.mjs} +0 -0
  305. /package/{esm2015/lib/place/place-access-guard.js → esm2020/lib/place/place-access-guard.mjs} +0 -0
  306. /package/{esm2015/lib/place/place-config.js → esm2020/lib/place/place-config.mjs} +0 -0
  307. /package/{esm2015/lib/place/place-definition.js → esm2020/lib/place/place-definition.mjs} +0 -0
  308. /package/{esm2015/lib/place/route/formatter.js → esm2020/lib/place/route/formatter.mjs} +0 -0
  309. /package/{esm2015/lib/place/route/json-types.js → esm2020/lib/place/route/json-types.mjs} +0 -0
  310. /package/{esm2015/lib/place/route/parameter-decorators.js → esm2020/lib/place/route/parameter-decorators.mjs} +0 -0
  311. /package/{esm2015/lib/place/route/parameter-sanitiser.js → esm2020/lib/place/route/parameter-sanitiser.mjs} +0 -0
  312. /package/{esm2015/lib/place/route/parameter-snapshot.js → esm2020/lib/place/route/parameter-snapshot.mjs} +0 -0
  313. /package/{esm2015/lib/place/url-snapshot.js → esm2020/lib/place/url-snapshot.mjs} +0 -0
  314. /package/{esm2015/lib/services/exports.js → esm2020/lib/services/exports.mjs} +0 -0
  315. /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coolon-angular-ui-powerups.mjs","sources":["../../../../libs/angular-ui-powerups/src/lib/directives/command.directive.ts","../../../../libs/angular-ui-powerups/src/lib/components/disposable-component.ts","../../../../libs/angular-ui-powerups/src/lib/directives/focus-binding.ts","../../../../libs/angular-ui-powerups/src/lib/directives/focus-binding-factory.ts","../../../../libs/angular-ui-powerups/src/lib/directives/focus-binding.directive.ts","../../../../libs/angular-ui-powerups/src/lib/directives/highlight-text-model.directive.ts","../../../../libs/angular-ui-powerups/src/lib/directives/highlight.pipe.ts","../../../../libs/angular-ui-powerups/src/lib/directives/directives.module.ts","../../../../libs/angular-ui-powerups/src/lib/services/markdown/pill-plugin.ts","../../../../libs/angular-ui-powerups/src/lib/services/markdown/markdown.service.ts","../../../../libs/angular-ui-powerups/src/lib/components/busy-overlay/busy-overlay.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/busy-overlay/busy-overlay.component.html","../../../../libs/angular-ui-powerups/src/lib/components/cards/abstract-card-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/command-face.ts","../../../../libs/angular-ui-powerups/src/lib/components/icon/icon.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/icon/icon.component.html","../../../../libs/angular-ui-powerups/src/lib/components/commands/command-face/command-face.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/command-face/command-face.component.html","../../../../libs/angular-ui-powerups/src/lib/components/scroll-container/scroll-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/scroll-container/scroll-container.component.html","../../../../libs/angular-ui-powerups/src/lib/components/cards/card-container/card-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/cards/card-container/card-container.component.html","../../../../libs/angular-ui-powerups/src/lib/components/cards/card-stack/card-stack.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/cards/card-stack/card-stack.component.html","../../../../libs/angular-ui-powerups/src/lib/components/alignment.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-aware.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-container.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/command/command.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/command/command.component.html","../../../../libs/angular-ui-powerups/src/lib/components/commands/flex.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-menu/abstract-popup-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/track-by.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/command-container.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/tool-bar/tool-bar.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/separator.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-menu/more-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-menu/popup-menu.component.html","../../../../libs/angular-ui-powerups/src/lib/components/commands/group/popup-menu/popup-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/empty-state/empty-state.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/focus-container/focus-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/focus-container/focus-container.component.html","../../../../libs/angular-ui-powerups/src/lib/components/focusable.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/abstract-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/abstract-list-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/abstract-value-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/autocomplete-input/autocomplete-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/autocomplete-input/autocomplete-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/checkbox-input/checkbox-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/checkbox-input/checkbox-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/multiple-select-input/multiple-select-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/multiple-select-input/multiple-select-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/number-input/number-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/number-input/number-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/password-input/password-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/password-input/password-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/select-input/select-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/select-input/select-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/string-input/string-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/string-input/string-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/forms/text-input/text-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/text-input/text-input.component.html","../../../../libs/angular-ui-powerups/src/lib/components/loading-container/loading-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/loading-container/loading-container.component.html","../../../../libs/angular-ui-powerups/src/lib/components/noop/noop.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/noop/noop.component.html","../../../../libs/angular-ui-powerups/src/lib/components/section-header/section-header.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/section-header/section-header.component.html","../../../../libs/angular-ui-powerups/src/lib/components/switch-case/switch-case.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/switch-case/switch-case.component.html","../../../../libs/angular-ui-powerups/src/lib/components/types/dimension.class.ts","../../../../libs/angular-ui-powerups/src/lib/components/types/point.class.ts","../../../../libs/angular-ui-powerups/src/lib/components/types/bounds.class.ts","../../../../libs/angular-ui-powerups/src/lib/components/resize-aware.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/cell-portal-ref.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/edit-row-controls/edit-row-controls.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/edit-row-controls/edit-row-controls.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/abstract-table.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/column-template/column-template.directive.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-row-menu/table-row-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column-list-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/edit-session.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/abstract-table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.svg","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/decorated-tree-node.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/flattened-tree-list-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-expansion-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-table-component.ts","../../../../libs/angular-ui-powerups/src/lib/components/vertical-focus-container/vertical-focus-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/vertical-focus-container/vertical-focus-container.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/paginator/paginator.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/paginator/paginator.component.html","../../../../libs/angular-ui-powerups/src/lib/components/labelled-value/labelled-value.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/labelled-value/labelled-value.component.html","../../../../libs/angular-ui-powerups/src/lib/components/text/markdown/markdown.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/text/markdown/markdown.component.html","../../../../libs/angular-ui-powerups/src/lib/components/components.module.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-actions/activity-actions.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-actions/activity-actions.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/activity.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/alert.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/abstract-dialog.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/abstract-confirm-dialog.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-title/activity-title.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-title/activity-title.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-body/activity-body.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-body/activity-body.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/alert-dialog/alert-dialog.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/alert-dialog/alert-dialog.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/abstract-interaction-context.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/activity-ref.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-container/activity-container.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-container/activity-container.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/services/interaction-service-routing-adapter.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/services/modal-interaction-context.factory.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/services/interaction.service.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/add-card-activity/add-card-activity.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/add-card-activity/add-card-activity.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/directives/interaction-context-trigger-for.directive.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/input-activities/input-activity.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/input-activities/string-input-activity.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/input-activities/select-input-activity.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/exports.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/components/editors/inline-string-editor/inline-editor-model.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.html","../../../../libs/angular-ui-powerups/src/lib/interaction/interaction.module.ts","../../../../libs/angular-ui-powerups/src/lib/place/route/parameter-definition.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-definition.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-component.ts","../../../../libs/angular-ui-powerups/src/lib/place/visit.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-config.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/not-authorised-notice/not-authorised-notice.component.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/not-authorised-notice/not-authorised-notice.component.html","../../../../libs/angular-ui-powerups/src/lib/place/components/place-outlet/route-animations.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/place-component-deactivation-handler.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/navigation-session.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/event-cleanup/event-clean-up-session.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/interactions/navigating-during-interaction.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/abstract-pop-state-navigation.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/navigating.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/navigation-context.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.ts","../../../../libs/angular-ui-powerups/src/lib/place/navigation/session/pop-state-navigation.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-access-guard.ts","../../../../libs/angular-ui-powerups/src/lib/place/guards/consolidated-param-map.ts","../../../../libs/angular-ui-powerups/src/lib/place/url-snapshot.ts","../../../../libs/angular-ui-powerups/src/lib/place/url-service.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-history.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-router.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/place-outlet/place-outlet.component.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/place-outlet/place-outlet.component.html","../../../../libs/angular-ui-powerups/src/lib/place/components/abstract-place-navigation.component.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/list-place-nav/list-place-nav.component.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/list-place-nav/list-place-nav.component.html","../../../../libs/angular-ui-powerups/src/lib/place/components/side-place-navigation/side-place-navigation.component.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/side-place-navigation/side-place-navigation.component.html","../../../../libs/angular-ui-powerups/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.ts","../../../../libs/angular-ui-powerups/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.html","../../../../libs/angular-ui-powerups/src/lib/place/place.module.ts","../../../../libs/angular-ui-powerups/src/lib/angular-ui-powerups.module.ts","../../../../libs/angular-ui-powerups/src/lib/animations/slide-animations.ts","../../../../libs/angular-ui-powerups/src/lib/animations/exports.ts","../../../../libs/angular-ui-powerups/src/lib/directives/exports.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/exports.ts","../../../../libs/angular-ui-powerups/src/lib/place/place.decorator.ts","../../../../libs/angular-ui-powerups/src/lib/place/guards/noop-auth-guard.service.ts","../../../../libs/angular-ui-powerups/src/lib/place/route/visit-sanitiser.ts","../../../../libs/angular-ui-powerups/src/lib/place/guards/place.guard.ts","../../../../libs/angular-ui-powerups/src/lib/place/route/formatter.ts","../../../../libs/angular-ui-powerups/src/lib/place/route/parameter-decorators.ts","../../../../libs/angular-ui-powerups/src/lib/place/exports.ts","../../../../libs/angular-ui-powerups/src/lib/services/visibility-service.ts","../../../../libs/angular-ui-powerups/src/lib/services/exports.ts","../../../../libs/angular-ui-powerups/src/coolon-angular-ui-powerups.ts"],"sourcesContent":["import {\n AfterViewInit,\n Directive,\n ElementRef,\n Host,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatMenuItem } from '@angular/material/menu';\nimport { assert, Command, DelegatingValueModel, Dsl, GarbageCollector, lang, UnaryCommand } from '@coolon/pectin';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinCommand]'\n})\nexport class CommandDirective<P = any> extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {\n\n private _command: Command<any> | UnaryCommand<P>;\n private _commandEnabled = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n private matControl: MatButton | MatMenuItem;\n\n @Input()\n set pectinCommand(command: Command<any> | UnaryCommand<P>) {\n this._command = command;\n this._commandEnabled.setDelegate(command ? command.enabled : null);\n }\n\n get pectinCommand(): Command<any> | UnaryCommand<P> {\n return this._command;\n }\n\n private _commandParameter: P;\n private _commandParameterProvided = false;\n\n @Input()\n set commandParameter(value: P) {\n this._commandParameterProvided = true;\n this._commandParameter = value;\n }\n\n get commandParameter(): P {\n return this._commandParameter;\n }\n\n constructor(\n @Inject(ElementRef) private elementRef: ElementRef,\n @Host() @Optional() matButton: MatButton,\n @Host() @Optional() matMenuItem: MatMenuItem\n ) {\n super();\n // Material buttons and menu items don't respond to the disabled binding so we\n // need to inject them from our host element and handle them manually.\n this.matControl = matButton || matMenuItem;\n }\n\n ngOnInit(): void {\n assert.notNil(this.pectinCommand);\n if (this.pectinCommand instanceof UnaryCommand) {\n if (!this._commandParameterProvided) {\n lang.illegalState('UnaryCommands require the command parameter to be specified.');\n }\n } else {\n if (this._commandParameterProvided) {\n lang.illegalState('command parameters are only supported by UnaryCommands');\n }\n }\n }\n\n ngAfterViewInit(): void {\n const { when } = Dsl.disposeWith(this);\n when(this._commandEnabled).changes(enabled => this.updateEnabledState(enabled), {\n initialValue: 'triggerChange'\n });\n }\n\n updateEnabledState(enabled: boolean) {\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. The set timeout is required to prevent the button getting a expression changed\n // when it's clicked.\n if (this.matControl) {\n setTimeout(() => {\n this.matControl.disabled = !enabled;\n }, 0);\n }\n if (!enabled) {\n // Note:\n // We can't use a host binding here for disabled as the directive can be used on arbitrary\n // components (e.g. divs) and the compiler will barf if we use the host binding.\n this.elementRef.nativeElement.setAttribute('disabled', 'disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.removeAttribute('href');\n }\n } else {\n this.elementRef.nativeElement.removeAttribute('disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.setAttribute('href', 'javascript:void');\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.enabled.value) {\n if (this.pectinCommand instanceof UnaryCommand) {\n this.pectinCommand.withContext({ event: $event }).execute(this.commandParameter);\n } else {\n this.pectinCommand.withContext({ event: $event }).execute();\n }\n } else {\n console.warn('disabled command clicked, ignoring.');\n }\n }\n}\n","import { Component, Directive, OnDestroy } from '@angular/core';\nimport { GarbageCollector } from '@coolon/pectin';\n\n@Directive()\nexport class DisposableComponent extends GarbageCollector implements OnDestroy {\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, NgZone } from '@angular/core';\nimport { Dsl, FocusManager, GarbageCollector, Logger } from '@coolon/pectin';\n\nexport class FocusBinding extends GarbageCollector {\n\n private readonly document: Document;\n\n // TODO: update to support alternate focus mechanisms so we can interoperate with mat-checkbox\n constructor(private readonly focusTargetElement: HTMLElement,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) document: any,\n readonly focusContext: FocusManager.Context) {\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 // TODO: Make this also track the current enabled/disabled state.\n const { when } = Dsl.disposeWith(this);\n when(this.focusContext.focused).changes((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n }, { initialValue: 'triggerChangeUnlessNil' });\n }\n\n onFocusIn() {\n this.focusContext.notifyFocusIn();\n }\n\n onFocusOut() {\n this.focusContext.notifyFocusOut();\n }\n\n // Hook method for debugging via tracing.\n alreadyHasFocus() {\n return this.isElementFocused(this.focusTarget);\n }\n\n // Hook method for debugging via tracing.\n isElementFocused(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.focusTargetElement;\n }\n\n // Hook method for debugging via tracing.\n modelShouldStillHaveFocus() {\n return this.focusContext.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 { DOCUMENT } from '@angular/common';\nimport { ElementRef, Inject, Injectable, NgZone } from '@angular/core';\nimport { FocusManager, Trace } from '@coolon/pectin';\nimport { FocusBinding } from './focus-binding';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusBindingFactory {\n\n private document: Document;\n\n constructor(@Inject(NgZone) private readonly ngZone: NgZone, @Inject(DOCUMENT) document: any) {\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 // @Trace()\n createBinding(el: HTMLElement, focusContext: FocusManager.Context): FocusBinding {\n return new FocusBinding(el, this.ngZone, this.document, focusContext);\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnInit } from '@angular/core';\nimport { FocusManager, Logger } from '@coolon/pectin';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { FocusBindingFactory } from './focus-binding-factory';\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\n @Input() pectinFocusBinding: FocusManager.Context; // TODO: Support @TrackExternal()\n @Input() focusBindingTarget: HTMLElement;\n\n @HostListener('focusin')\n onFocusIn() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.notifyFocusIn();\n }\n }\n\n @HostListener('focusout')\n onFocusOut() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.notifyFocusOut();\n }\n }\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef,\n readonly focusBindingFactory: FocusBindingFactory) {\n super();\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n if (this.hasBinding()) {\n this.registerDisposable(this.focusBindingFactory.createBinding(this.focusTarget, this.pectinFocusBinding));\n } else {\n Logger.get(this).warn('pectinFocusBinding was nil');\n }\n }\n\n private hasBinding() {\n return !!this.pectinFocusBinding && !!this.pectinFocusBinding;\n }\n\n get focusTarget(): HTMLElement {\n return this.focusBindingTarget || this.el.nativeElement;\n }\n\n}\n","import { Directive, Input, OnDestroy } from '@angular/core';\nimport { GarbageCollector, TrackExternal, ValueModel } from '@coolon/pectin';\n\n@Directive({\n selector: '[aupHighlightTextModel]'\n})\nexport class HighlightTextModelDirective extends GarbageCollector implements OnDestroy {\n\n @Input()\n @TrackExternal()\n aupHighlightTextModel: ValueModel<string>;\n\n constructor() {\n super();\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n}\n","import { ChangeDetectorRef, OnDestroy, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { GarbageCollector, ValueModel } from '@coolon/pectin';\n\nimport { isEmpty, isString } from 'lodash';\nimport { HighlightTextModelDirective } from './highlight-text-model.directive';\n\n\n@Pipe({\n name: 'aupHighlight',\n pure: false\n})\nexport class HighlightPipe extends GarbageCollector implements PipeTransform, OnDestroy {\n\n constructor(private sanitizer: DomSanitizer,\n @Optional() private readonly highlightContext?: HighlightTextModelDirective) {\n super();\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n transform(value: any, searchModel?: ValueModel<string>): any {\n\n const model = searchModel ?? this.highlightContext?.aupHighlightTextModel;\n\n const searchText: string = model?.value;\n\n if (isEmpty(searchText) || !isString(value)) {\n return value;\n }\n\n // Match in a case insensitive manner\n const re = new RegExp(searchText, 'gi');\n const match = value.match(re);\n\n // If there's no match, just return the original value.\n if (!match) {\n return value;\n }\n\n const result = value.replace(re, '<mark>' + match[0] + '</mark>');\n return this.sanitizer.bypassSecurityTrustHtml(result);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CommandDirective } from './command.directive';\nimport { FocusBindingDirective } from './focus-binding.directive';\nimport { HighlightTextModelDirective } from './highlight-text-model.directive';\nimport { HighlightPipe } from './highlight.pipe';\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective,\n HighlightPipe,\n HighlightTextModelDirective\n ],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule\n ],\n exports: [\n CommandDirective,\n FocusBindingDirective,\n HighlightPipe,\n HighlightTextModelDirective\n ]\n\n})\nexport class DirectivesModule {\n}\n","// TODO: migrate to markdown-it and copy this plugin: https://github.com/markdown-it/markdown-it-sub/blob/master/index.js\nimport { marked } from 'marked';\nimport RendererThis = marked.RendererThis;\nimport TokenizerThis = marked.TokenizerThis;\nimport Tokens = marked.Tokens;\n\nexport const markdownPillExtension = (renderPill: (text: string) => string) => {\n return {\n name: 'aup-pill',\n level: 'inline',\n start: (src: string) => {\n const index = src.match(/\\(\\([^)]/)?.index;\n // if (index) {\n // console.log({start:src})\n // }\n return index;\n },\n tokenizer: function(this: TokenizerThis, src: string) {\n const rule = /^(\\(\\((([^)])+)\\)\\))/; // Regex for the complete token\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: 'aup-pill', // Should match \"name\" above\n raw: match[0], // Text to consume from the source\n text: match[2].trim(), // Additional custom properties\n // tokens: [] // Array where child inline tokens will be generated\n };\n // console.log(token)\n // this.lexer.inlineTokens(token.text, token.tokens); // Queue this data to be processed for inline tokens\n return token;\n } else {\n return undefined;\n }\n },\n renderer: function(this: RendererThis, token: Tokens.Generic) {\n // @ts-ignore (until typings are up to date)\n const url = token.text;\n return renderPill(token.text);\n }\n\n };\n};\n","import { Injectable } from '@angular/core';\n\nimport { marked } from 'marked';\nimport { markdownPillExtension } from './pill-plugin';\n\n@Injectable()\nexport class MarkdownService {\n\n constructor() {\n }\n\n render(content: string) {\n return marked.parse(content, {\n smartLists: true\n });\n }\n\n renderInline(content: string) {\n return marked.parseInline(content);\n }\n\n usePillExtension(renderer?: (content: string) => string) {\n marked.use({\n extensions: [markdownPillExtension(renderer ?? (text => `<span class='aup-pill'>${text}<span>`))]\n });\n }\n}\n\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { GarbageCollector, StoreInValueModel, TrackExternal, 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 extends GarbageCollector implements OnInit {\n\n @Input() @TrackExternal()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n super()\n }\n\n ngOnInit() {\n }\n\n}\n","<ng-content></ng-content>\n<div class=\"busy-overlay-backdrop\" *ngIf=\"busyModel.value\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"52\"></mat-progress-spinner>\n</div>\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\nimport { Command, TrackExternal } from '@coolon/pectin';\nimport { CommandFace } from '../commands/command-face';\nimport { DisposableComponent } from '../disposable-component';\n\n@Component({\n selector: 'aup-abstract-card-container',\n template: '',\n})\nexport class AbstractCardContainerComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @TrackExternal()\n addCardCommand: Command<any>;\n\n @Input()\n addCardFace: CommandFace;\n\n @ContentChild('addCardTemplate')\n addCardTemplate: TemplateRef<any>;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { ThemePalette } from '@angular/material/core';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { isFunction } from 'lodash';\nimport { Enum } from 'typescript-string-enums';\nimport { assert } from '@coolon/pectin';\n\nexport interface CommandFace {\n text?(): string;\n\n icon?(): string;\n\n iconPosition?(): string;\n\n tooltip?(): string;\n\n color?(): string; // ThemePalette\n\n style?(): string; // CommandFace.Style;\n}\n\nexport namespace CommandFace {\n\n export enum Position {\n START = 'start',\n END = 'end'\n }\n\n export const Style = Enum({\n FLAT: 'flat',\n STROKED: 'stroked',\n RAISED: 'raised'\n });\n export type Style = Enum<typeof Style>;\n\n export function getColorOf(face: CommandFace): ThemePalette {\n return isFunction(face?.color) ? face.color() as ThemePalette : undefined;\n }\n\n export function getStyleOf(face: CommandFace): Style {\n return isFunction(face?.style) ? face.style() as Style : undefined;\n }\n\n export function getIconOf(face: CommandFace) {\n return isFunction(face?.icon) ? face.icon() : undefined;\n }\n\n export function getIconPositionOf(face: CommandFace) {\n return isFunction(face?.iconPosition) ? face.iconPosition() : undefined;\n }\n\n export function getTooltipOf(face: CommandFace) {\n return isFunction(face?.tooltip) ? face.tooltip() : undefined;\n }\n\n export function getTextOf(face: CommandFace) {\n return isFunction(face?.text) ? face.text() : undefined;\n }\n\n export class Adapter {\n constructor(readonly face: CommandFace) {\n }\n\n @Memoize()\n get text() {\n return CommandFace.getTextOf(this.face);\n }\n\n @Memoize()\n get icon() {\n return CommandFace.getIconOf(this.face);\n }\n\n @Memoize()\n get iconPosition() {\n return CommandFace.getIconPositionOf(this.face);\n }\n\n @Memoize()\n get tooltip() {\n return CommandFace.getTooltipOf(this.face);\n }\n\n @Memoize()\n get iconPositionStart(): boolean {\n return this.iconPosition === CommandFace.Position.START;\n }\n\n @Memoize()\n get iconPositionEnd(): boolean {\n return this.iconPosition === CommandFace.Position.END;\n }\n\n @Memoize()\n get color(): ThemePalette {\n return CommandFace.getColorOf(this.face);\n }\n\n @Memoize()\n get style(): Style {\n return CommandFace.getStyleOf(this.face);\n }\n\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {IconProp} from \"@fortawesome/fontawesome-svg-core\";\nimport {Enum} from 'typescript-string-enums';\n\n@Component({\n selector: 'aup-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss']\n})\nexport class IconComponent {\n\n _icon: string;\n\n prefix: string;\n suffix: string;\n errorMessage: string;\n\n allowedPrefixes = Enum.values(IconComponent.IconPrefix).map(p => `${p}:`);\n iconPrefix = IconComponent.IconPrefix;\n\n @Input()\n set icon(iconName: string) {\n this._icon = iconName;\n if (!iconName) {\n this.errorMessage = 'icon is nil';\n this.prefix = undefined;\n return;\n }\n\n const colonIndex = iconName.indexOf(':');\n if (colonIndex > 0) {\n this.prefix = this.icon.slice(0, colonIndex);\n this.suffix = this.icon.slice(colonIndex + 1);\n }\n if (this.prefix) {\n this.errorMessage = `Unknown icon \"${iconName}\"`;\n }\n this.errorMessage = `Unknown icon prefix, expected one of [${this.allowedPrefixes.join(',')}] got \"${this.prefix}:\"`;\n }\n\n get icon(): string {\n return this._icon;\n }\n\n get faIcon():IconProp {\n return this.suffix as IconProp;\n }\n\n}\nexport namespace IconComponent {\n\n export const IconPrefix = Enum({\n SVG: 'svg',\n FONT_AWESOME: 'fa',\n MATERIAL: 'mat'\n });\n export type IconPrefix = Enum<typeof IconPrefix>;\n\n}\n","<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\"\n class=\"faIconWrapper\">\n <fa-icon [icon]=\"faIcon\">\n </fa-icon>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n","import { Component, HostBinding, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nimport {\n Dsl,\n ListModelChain,\n MutableListModel,\n StoreInListModel,\n StoreInValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { DisposableComponent } from '../../disposable-component';\nimport { CommandFace } from '../command-face';\n\n/**\n * Custom CSS:\n * @example\n * root: { // globally\n * --aup-command-face-icon-gap: 8px;\n * }\n * aup-command-face { // per instance\n * --icon-gap: 4px;\n * }\n */\n@Component({\n selector: 'aup-command-face',\n templateUrl: './command-face.component.html',\n styleUrls: ['./command-face.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CommandFaceComponent<T> extends DisposableComponent implements OnInit {\n\n private readonly facesModel = new MutableListModel<CommandFace>();\n\n // tslint:disable-next-line:no-input-rename\n @Input('faces') @StoreInListModel('facesModel')\n _rawFaces: CommandFace[];\n\n @Input()\n set face(face: CommandFace) {\n this.facesModel.value = [face];\n }\n\n @Input()\n ignoreIcon = false;\n\n @Input()\n ignoreText = false;\n\n @Input()\n includeMissingIconInLayout = false;\n\n readonly faceAdapters: ListModelChain<CommandFace.Adapter>;\n private activeIcon: ValueModelChain<string>;\n private activeColor: ValueModelChain<string>;\n\n @HostBinding('class.hide-icon')\n get requiresMissingIconInLayout() {\n return this.includeMissingIconInLayout && !this.activeIcon.value;\n }\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.faceAdapters = chain(this.facesModel).map(face => new CommandFace.Adapter(face));\n const activeFace = this.faceAdapters.first();\n this.activeIcon = activeFace.pluck(\"icon\")\n this.activeColor = activeFace.pluck(\"color\")\n }\n\n ngOnInit() {\n }\n\n shouldIncludeIcon(face: CommandFace.Adapter) {\n return (!this.ignoreIcon && face.icon) || this.includeMissingIconInLayout;\n }\n\n hasIconStart(face:CommandFace.Adapter): boolean {\n return this.shouldIncludeIcon(face) && (!face.iconPosition || face.iconPosition === CommandFace.Position.START);\n }\n\n hasIconEnd(face:CommandFace.Adapter): boolean {\n return this.shouldIncludeIcon(face) && face.iconPosition === CommandFace.Position.END;\n }\n\n @HostBinding('attr.color')\n get color(): string {\n return this.activeColor.value;\n }\n\n}\n","<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'aup-scroll-container',\n templateUrl: './scroll-container.component.html',\n styleUrls: ['./scroll-container.component.scss']\n})\nexport class ScrollContainerComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<div class=\"container\" cdkScrollable>\n <ng-content></ng-content>\n</div>\n","import { Component, ElementRef, HostBinding, Input, OnInit } from '@angular/core';\nimport { lang } from '@coolon/typescript-utilities';\n\nimport { isInteger, isNil } from 'lodash';\nimport { AbstractCardContainerComponent } from '../abstract-card-container.component';\n\n\n/**\n * @example\n * // basic usage\n * <aup-card-container>\n * <my-card *ngFor=\"...\"></my-card>\n * </aup-card-container>\n *\n * // adds an add button with a the '+' icon to the end of the card list.\n * <aup-card-container [addCardCommand]=\"addCard\">\n * <my-card *ngFor=\"...\"></my-card>\n * </aup-card-container>\n *\n * // adds an add button with the specified face\n * <aup-card-container [addCardCommand]=\"addCard\" [addCardFace]=\"i18n.addCard\" >\n * <my-card *ngFor=\"...\"></my-card>\n * </aup-card-container>\n *\n * // use the aup-add-card-activity to display as the new card place holder and to run\n * // the activity inside teh card\n * <aup-card-container [addCardCommand]=\"addCard\" [addCardFace]=\"i18n.addCard\" >\n * <my-card *ngFor=\"...\"></my-card>\n * <aup-add-card-activity type=\"inline\" renderAs=\"card\" [face]=\"i18n.commands.addModal\" [activityClass]=\"AddCardActivity\"></aup-add-card-activity>\n * </aup-card-container>\n *\n * // adds an add card component using the specified template. The template\n * // will fill it's container in the grid.\n * <aup-card-container>\n * <my-card *ngFor=\"...\"></my-card>\n * <ng-template #addCardTemplate>\n * <div>This is a new card template, it will the the size of the other cards.</div>\n * </ng-template>\n * </aup-card-container>\n *\n * // sing the default new card styles for your template\n * @import \"../../../../assets/styles\";\n * .my-new-card {\n * @include aup-card-container-new-card-style();\n * // OR\n * @include aup-card-container-new-card-style(\n * $color: rgba(0,0,0,0.54),\n * $background-color: rgba(255,255,255,0.8),\n * $hover-color: $color,\n * $background-hover-color: white\n * )\n * }\n * <aup-card-container>\n * <my-card *ngFor=\"...\"></my-card>\n * <ng-template #addCardTemplate>\n * <div class=\"my-new-card\" >This is a new card template, it will the the size of the other cards.</div>\n * </ng-template>\n * </aup-card-container>\n *\n * // CSS Vars\n * aup-card-container {\n * --card-gap: var(--card-gap, 16px);\n * --card-width: var(--card-width, 300px);\n * --card-max-width: auto;\n * --card-height: var(--card-height, auto);\n * --card-min-height: var(--card-min-height, auto);\n * --card-background: var(--card-background, #fcfcfb);\n * }\n */\n@Component({\n selector: 'aup-card-container',\n templateUrl: './card-container.component.html',\n styleUrls: ['./card-container.component.scss']\n})\nexport class CardContainerComponent extends AbstractCardContainerComponent implements OnInit {\n\n private _columnCount: number | undefined;\n\n @Input()\n set columnCount(count: number | undefined) {\n if (!isNil(count) && (!isInteger(count) || count < 1)) {\n lang.illegalState('columnCount must be a positive integer or nil');\n }\n this._columnCount = count;\n this.updateColumnCountStyles();\n }\n\n get columnCount() {\n return this._columnCount;\n }\n\n /**\n * Enable scrolling. If true the container will have height==0 so you must set it's height explicitly\n * or place in a layout that will stretch it such as a grid or flex layout.\n */\n @Input()\n enabledScroll = false;\n\n constructor(private readonly elementRef: ElementRef) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.updateColumnCountStyles();\n }\n\n @HostBinding('class.auto-columns')\n get isAutoColumns() {\n return isNil(this._columnCount);\n }\n\n @HostBinding('class.single-column')\n get isSingleColumn() {\n return this._columnCount === 1;\n }\n\n protected updateColumnCountStyles() {\n const el = this.elementRef.nativeElement;\n if (isNil(this._columnCount)) {\n el.style.setProperty('--aup-card-container-column-count', '');\n } else {\n el.style.setProperty('--aup-card-container-column-count', this._columnCount);\n }\n }\n\n}\n\nexport namespace CardContainerComponent {\n export interface ColumnConfiguration {\n count: number;\n stretchToFill: boolean;\n }\n}\n","<div class=\"header-container\">\n <ng-content select=\"[card-container-header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enabledScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enabledScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer]\"></ng-content>\n</div>\n\n","import { Component } from '@angular/core';\nimport { AbstractCardContainerComponent } from '../abstract-card-container.component';\n\n/**\n * @deprecated deprecated, use `aup-card-container [columnCount]=\"1\"` instead.\n * @example\n * // basic usage\n * <aup-card-stack>\n * <my-card *ngFor=\"...\"></my-card>\n * </aup-card-stack>\n *\n * // adds an add button with a the '+' icon to the end of the card list.\n * <aup-card-stack [addCardCommand]=\"addCard\">\n * <my-card *ngFor=\"...\"></my-card>\n * </aup-card-stack>\n *\n * // adds an add button with the specified face\n * <aup-card-stack [addCardCommand]=\"addCard\" [addCardFace]=\"i18n.addCard\" >\n * <my-card *ngFor=\"...\"></my-card>\n * </aup-card-stack>\n *\n * // use the aup-add-card-activity to display as the new card place holder and to run\n * // the activity inside teh card\n * <aup-card-stack [addCardCommand]=\"addCard\" [addCardFace]=\"i18n.addCard\" >\n * <my-card *ngFor=\"...\"></my-card>\n * <aup-add-card-activity type=\"inline\" renderAs=\"card\" [face]=\"i18n.commands.addModal\" [activityClass]=\"AddCardActivity\"></aup-add-card-activity>\n * </aup-card-stack>\n *\n * // adds an add card component using the specified template. The template\n * // will fill it's container in the grid.\n * <aup-card-stack>\n * <my-card *ngFor=\"...\"></my-card>\n * <ng-template #addCardTemplate>\n * <div>This is a new card template, it will the the size of the other cards.</div>\n * </ng-template>\n * </aup-card-stack>\n *\n * // sing the default new card styles for your template\n * @import \"../../../../assets/styles\";\n * .my-new-card {\n * @include aup-card-stack-new-card-style();\n * // OR\n * @include aup-card-stack-new-card-style(\n * $color: rgba(0,0,0,0.54),\n * $background-color: rgba(255,255,255,0.8),\n * $hover-color: $color,\n * $background-hover-color: white\n * )\n * }\n * <aup-card-stack>\n * <my-card *ngFor=\"...\"></my-card>\n * <ng-template #addCardTemplate>\n * <div class=\"my-new-card\" >This is a new card template, it will the the size of the other cards.</div>\n * </ng-template>\n * </aup-card-stack>\n *\n * // CSS Vars\n * aup-card-stack {\n * --card-gap: var(--card-gap, 16px);\n * --card-height: var(--card-height, auto);\n * --card-min-height: var(--card-min-height, auto);\n * --card-background: var(--card-background, #fcfcfb);\n * }\n */\n@Component({\n selector: 'aup-card-stack',\n templateUrl: './card-stack.component.html',\n styleUrls: ['./card-stack.component.scss']\n})\nexport class CardStackComponent extends AbstractCardContainerComponent {\n\n constructor() {\n super();\n console.warn('<aup-card-stack></aup-card-stack> is deprecated. Use <aup-card-container [columnCount]=\"1\"> instead.')\n }\n\n}\n","<div class=\"card-container\">\n <ng-content></ng-content>\n</div>\n<div class=\"footer\">\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n <ng-content select=\"[aup-card-stack-footer]\"></ng-content>\n</div>\n","import { Enum } from 'typescript-string-enums';\n\nexport const HorizontalAlignment = Enum({\n START: 'start',\n CENTER: 'center',\n END: 'end'\n});\nexport type HorizontalAlignment = Enum<typeof HorizontalAlignment>;\n","import { ElementRef, Inject } from '@angular/core';\nimport { DisposableComponent } from '../../disposable-component';\nimport { CommandFace } from '../command-face';\nimport { POPUP_CONTAINER, PopupContainer } from './popup-container';\n\nexport abstract class PopupAwareComponent extends DisposableComponent {\n\n constructor(readonly element: ElementRef, readonly parent?: PopupContainer) {\n super();\n if (parent) {\n this.registerDisposable(this.parent.register(this));\n }\n }\n\n get componentIndex() {\n return this.computeComponentIndex();\n }\n\n private computeComponentIndex() {\n let node = this.element.nativeElement;\n let index = 0;\n while ((node = node.previousElementSibling)) {\n index++;\n }\n return index;\n }\n\n getFace(): CommandFace | undefined {\n return undefined;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { PopupAwareComponent } from './popup-aware.component';\n\nexport const POPUP_CONTAINER = new InjectionToken<PopupContainer>('popup-component');\n\nexport interface PopupContainer {\n register(comp: PopupAwareComponent)\n}\n","import { AfterViewInit, Component, ElementRef, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport {\n BooleanValueModelChain,\n Command,\n Dsl,\n ListModelChain,\n StoreInValueModel,\n TrackExternal,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\n\nimport { isEmpty } from 'lodash';\nimport { Enum } from 'typescript-string-enums';\nimport { HorizontalAlignment } from '../../alignment';\nimport { CommandFace } from '../command-face';\nimport { PopupAwareComponent } from '../group/popup-aware.component';\nimport { POPUP_CONTAINER, PopupContainer } from '../group/popup-container';\n\n/**\n *\n */\n@Component({\n selector: 'aup-command',\n templateUrl: './command.component.html',\n styleUrls: ['./command.component.scss']\n})\nexport class CommandComponent extends PopupAwareComponent implements OnInit, AfterViewInit {\n\n @Input() @TrackExternal()\n command: Command<unknown>;\n\n @Input() @TrackExternal()\n faceModel: ValueModel<CommandFace>;\n\n @Input() @StoreInValueModel('faceModel')\n face: CommandFace;\n\n @Input() @TrackExternal()\n busyFaceModel: ValueModel<CommandFace>;\n\n @Input() @StoreInValueModel('busyFaceModel')\n busyFace: CommandFace;\n\n CommandFace = CommandFace;\n\n @Input()\n @HostBinding(\"class\")\n alignFace: HorizontalAlignment = HorizontalAlignment.CENTER;\n\n readonly faces$: ListModelChain<CommandFace>;\n readonly buttonStyle$: ValueModelChain<string>;\n readonly color$: ValueModelChain<'primary' | 'accent' | 'warn' | undefined>;\n private activeFace$: ValueModelChain<CommandFace>;\n\n readonly iconOnly$: BooleanValueModelChain;\n readonly tooltip$: ValueModelChain<string>;\n\n constructor(element: ElementRef, @Inject(POPUP_CONTAINER) @Optional() parent?: PopupContainer) {\n super(element, parent);\n const { chain, switchOn } = Dsl.disposeWith(this);\n this.faces$ = chain(this.command.busy).mapToList(busy => {\n return busy ?\n [this.busyFaceModel.value, this.faceModel.value] :\n [this.faceModel.value, this.busyFaceModel.value];\n }, { allowNil: true, dependsOn: [this.faceModel, this.busyFaceModel] })\n .rejectNil();\n this.activeFace$ = this.faces$.first();\n this.buttonStyle$ = chain(this.activeFace$).map(f => CommandFace.getStyleOf(f));\n this.color$ = chain(this.activeFace$).map(f => CommandFace.getColorOf(f));\n this.tooltip$ = chain(this.activeFace$).map(f => CommandFace.getTooltipOf(f));\n this.iconOnly$ = this.faces$.select(face => {\n return isEmpty(CommandFace.getTextOf(face)) && !isEmpty(CommandFace.getIconOf(face));\n }).count().equals(this.faces$.count());\n }\n\n isActive(face: CommandFace): boolean {\n return this.activeFace$.query().equals(face);\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n // console.log(this.element.nativeElement.previousSibling)\n }\n\n getFace(): CommandFace | undefined {\n return this.face;\n }\n\n\n}\n\n","<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly$.value\">\n <ng-container [ngSwitch]=\"buttonStyle$.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n","import { Component, OnInit } from '@angular/core';\nimport { DisposableComponent } from '../disposable-component';\n\n/**\n *\n */\n@Component({\n selector: 'aup-flex',\n template: ``,\n styles: []\n})\nexport class FlexComponent extends DisposableComponent implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {\n AfterContentChecked,\n Component,\n ElementRef,\n HostListener,\n Inject,\n Input,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\nimport {\n DelegatingValueModel,\n Disposable,\n Dsl,\n ListModelChain,\n MutableListModel, StoreInValueModel,\n Trace, TrackExternal, ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { CommandFace } from '../../command-face';\nimport { PopupAwareComponent } from '../popup-aware.component';\nimport { POPUP_CONTAINER, PopupContainer } from '../popup-container';\n\n/**\n *\n */\n@Component({\n selector: 'aup-abstract-popup-menu',\n template: '',\n styleUrls: []\n})\nexport class AbstractPopupMenuComponent extends PopupAwareComponent implements PopupContainer, AfterContentChecked {\n\n private _unorderedChildren = new MutableListModel<PopupAwareComponent>();\n\n protected readonly faceModelDelegate = this.registerDisposable(new DelegatingValueModel<CommandFace>());\n private faceAdapterModel: ValueModelChain<CommandFace.Adapter>;\n\n @Input()\n xPosition: 'before' | 'after' = 'after';\n\n @Input()\n yPosition: 'above' | 'below' = 'below';\n\n @ViewChildren(MatMenuTrigger)\n triggers: QueryList<MatMenuTrigger>;\n\n @Input()\n @StoreInValueModel('enabledModel')\n enabled: boolean;\n\n @Input()\n @TrackExternal({ defaultValue: true })\n enabledModel: ValueModel<boolean>;\n\n\n readonly children: ListModelChain<PopupAwareComponent>;\n readonly faces$: ListModelChain<CommandFace>;\n\n constructor(element: ElementRef, @Inject(POPUP_CONTAINER) parent?: PopupContainer) {\n super(element, parent);\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n // group.faceListModel = chain(this.faceModel).mapToList(face => [face]);\n\n this.faceAdapterModel = chain(this.faceModelDelegate).map(f => new CommandFace.Adapter(f));\n this.faces$ = chain(this.faceAdapterModel).pluck('face').mapToList(face => [face]);\n\n this.children = chain(this._unorderedChildren).sortBy('componentIndex');\n }\n\n ngAfterContentChecked(): void {\n // force the list to re-order as the child indicies may have changed.\n this._unorderedChildren.value = [...this._unorderedChildren.value];\n }\n\n\n get faceAdapter(): CommandFace.Adapter {\n if (!this.faceAdapterModel) {\n console.error('Somehow faceAdapterModel is nil -- set a break point here and let me know what\\'s going on');\n }\n return this.faceAdapterModel?.value ?? new CommandFace.Adapter(undefined);\n }\n\n isRoot() {\n return !this.parent;\n }\n\n // @Trace()\n register(component: PopupAwareComponent) {\n this._unorderedChildren.push(component);\n return Disposable.disposableThatRuns(() => {\n this._unorderedChildren.remove(component);\n });\n }\n\n onCommandFired() {\n this.triggers.forEach(trigger => {\n if (trigger.menuOpen) {\n trigger.closeMenu();\n }\n });\n }\n\n getFace(): CommandFace | undefined {\n return this.faceAdapter.face;\n }\n\n}\n","import { TrackByFunction } from '@angular/core';\nimport { Constructable } from '@coolon/pectin';\nimport { ValuePropertiesOf } from '@coolon/typescript-utilities';\n\nexport namespace TrackBy {\n export const byIndex: TrackByFunction<any> = (index: number, item: any) => index;\n\n /**\n * @deprecated use #track(MyType).by(\"property\") instead.\n * @param property\n */\n export function trackByProperty<T, P extends keyof T>(property: P): TrackByFunction<T> {\n return (index: number, item: T) => item[property];\n }\n\n export function track<T>(type: Constructable<T>) {\n return {\n by<P extends ValuePropertiesOf<T>>(property: P) {\n return (index: number, item: T) => item[property];\n }\n };\n }\n}\n","import { Disposable, GarbageCollector, Trace } from '@coolon/pectin';\nimport { Enum } from 'typescript-string-enums';\nimport { PopupAwareComponent } from './popup-aware.component';\n\nexport class CommandContainer extends GarbageCollector {\n\n constructor(protected readonly parent?: CommandContainer) {\n super();\n }\n\n get depth(): number {\n return this.hasParent() ? this.parent.depth + 1 : 0;\n }\n\n private hasParent(): boolean {\n return !!this.parent;\n }\n\n get orientation(): CommandContainer.Orientation {\n return CommandContainer.Orientation.VERTICAL;\n }\n}\n\nexport namespace CommandContainer {\n export const Orientation = Enum({ HORIZONTAL: 'horizontal', VERTICAL: 'vertical' });\n export type Orientation = Enum<typeof Orientation>;\n}\n","import { AfterContentInit, AfterViewInit, Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommandContainer } from '../command-container';\n\n\n/**\n *\n */\n@Component({\n selector: 'aup-tool-bar',\n template: '<div class=\"toolbar-content\"><ng-content></ng-content></div>',\n styleUrls: ['./tool-bar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ToolBarComponent extends CommandContainer implements OnInit, AfterContentInit, AfterViewInit {\n\n constructor() {\n super();\n }\n\n get orientation(): CommandContainer.Orientation {\n return CommandContainer.Orientation.HORIZONTAL;\n }\n\n // @Trace()\n ngOnInit() {\n }\n\n // @Trace()\n ngAfterContentInit(): void {\n // this.group.initialise();\n }\n\n // @Trace()\n ngAfterViewInit(): void {\n }\n\n}\n","import { Component, ElementRef, HostBinding, Inject, OnInit, Optional } from '@angular/core';\nimport { DisposableComponent } from '../disposable-component';\nimport { CommandContainer } from './group/command-container';\nimport { PopupAwareComponent } from './group/popup-aware.component';\nimport { POPUP_CONTAINER, PopupContainer } from './group/popup-container';\nimport { AbstractPopupMenuComponent } from './group/popup-menu/abstract-popup-menu.component';\nimport { ToolBarComponent } from './group/tool-bar/tool-bar.component';\n\n/**\n *\n */\n@Component({\n selector: 'aup-separator',\n template: `\n <mat-divider [vertical]=\"!isHorizontalContainer()\"></mat-divider>`,\n styles: [`:host {\n }`,\n `:host(.horizontal-container) {\n display: inline-flex;\n flex-direction: row;\n align-items: stretch;\n }`\n ]\n})\nexport class SeparatorComponent extends PopupAwareComponent implements OnInit {\n\n constructor(element: ElementRef,\n @Optional() @Inject(POPUP_CONTAINER) popupContainer:PopupContainer,\n @Optional() private readonly containerParent?: CommandContainer) {\n super(element, popupContainer);\n }\n\n @HostBinding('class.horizontal-container')\n isHorizontalContainer() {\n return this.containerParent instanceof ToolBarComponent && this.containerParent.orientation === CommandContainer.Orientation.HORIZONTAL;\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from \"@angular/core\";\nimport { MatMenu, MatMenuTrigger } from \"@angular/material/menu\";\nimport { Command, DelegatingListModel, Dsl, ValueModel } from \"@coolon/pectin\";\nimport { DisposableComponent } from \"../../../../disposable-component\";\nimport { TrackBy } from \"../../../../track-by\";\nimport { CommandFace } from \"../../../command-face\";\nimport { CommandComponent } from \"../../../command/command.component\";\nimport { SeparatorComponent } from \"../../../separator.component\";\nimport { PopupAwareComponent } from \"../../popup-aware.component\";\nimport { AbstractPopupMenuComponent } from \"../abstract-popup-menu.component\";\n\n\n@Component({\n selector: \"aup-popup-menu-renderer\",\n templateUrl: \"./popup-menu-renderer.component.html\"\n})\nexport class PopupMenuRendererComponent extends DisposableComponent {\n\n private _parentComponent: AbstractPopupMenuComponent;\n\n private _childList = this.registerDisposable(new DelegatingListModel<PopupAwareComponent>());\n\n @Input()\n get parent(): AbstractPopupMenuComponent {\n return this._parentComponent;\n }\n\n set parent(comp: AbstractPopupMenuComponent) {\n this._parentComponent = comp;\n this._childList.setDelegate(comp.children);\n }\n\n @ViewChild(\"menu\", { static: true })\n menuComponent: MatMenu;\n\n @Output()\n commandFired = new EventEmitter();\n\n @ViewChildren(MatMenuTrigger)\n triggers: QueryList<MatMenuTrigger>;\n\n readonly hasMixedIcons: ValueModel<boolean>;\n readonly commandProxy: Command<unknown>;\n\n TrackBy = TrackBy;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n // this.children = chain(this.groupViewDataModel).pluckList('children');\n // this.hasMixedIcons = chain(this.groupViewDataModel).pluck('hasMixedIcons');\n const faces = chain(this._childList).map(child => {\n return child.getFace();\n }).rejectNil();\n const icons = faces.select(face => !!CommandFace.getIconOf(face));\n const iconCount = icons.count();\n const totalFaces = faces.count();\n this.hasMixedIcons = valueOf.all(\n iconCount.isGreaterThan(0),\n totalFaces.doesNotEqual(iconCount)\n ).areTruthy();\n }\n\n get children(): PopupAwareComponent[] {\n return this.parent.children.value;\n }\n\n executeCommand(data: PopupAwareComponent) {\n if (this.isCommand(data)) {\n data.command.execute().finally(() => {\n this.commandFired.emit();\n });\n }\n }\n\n isCommandEnabled(data: PopupAwareComponent) {\n return this.isCommand(data) && data.command.enabled.value;\n }\n\n // @Trace()\n onCommandFired() {\n this.commandFired.emit();\n this.triggers.forEach(trigger => {\n if (trigger.menuOpen) {\n trigger.closeMenu();\n }\n });\n }\n\n isCommand(child: any): child is CommandComponent {\n return child instanceof CommandComponent;\n }\n\n isPopupMenu(child: any): child is AbstractPopupMenuComponent {\n return child instanceof AbstractPopupMenuComponent;\n }\n\n isPopupMenuEnabled(child: any): child is AbstractPopupMenuComponent {\n return this.isPopupMenu(child) && child.enabled;\n }\n\n isSeparator(child: any): child is SeparatorComponent {\n return child instanceof SeparatorComponent;\n }\n\n getTooltip(child: any) {\n return this.isCommand(child) ? CommandFace.getTooltipOf(child.face) : undefined;\n }\n\n getFaces(child: PopupAwareComponent) {\n return this.isCommand(child) ?\n child.faces$.value :\n this.isPopupMenu(child) ?\n child.faces$.value :\n undefined;\n }\n}\n\n\n","<mat-menu #menu [xPosition]=\"parent.xPosition\" [yPosition]=\"parent.yPosition\">\n <ng-template matMenuContent>\n <ng-container *ngFor=\"let child of children; trackBy: TrackBy.byIndex\" >\n <button *ngIf=\"isCommand(child)\"\n (click)=\"executeCommand(child)\"\n [disabled]=\"!isCommandEnabled(child)\"\n [matTooltip]=\"getTooltip(child)\"\n mat-menu-item>\n <aup-command-face [faces]=\"getFaces(child)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n\n <ng-container *ngIf=\"isPopupMenu(child)\">\n <button mat-menu-item\n matMenuTrigger\n [disabled]=\"!isPopupMenuEnabled(child)\"\n [matMenuTriggerFor]=\"innerPanel.menuComponent\"\n >\n <aup-command-face [faces]=\"getFaces(child)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #innerPanel\n [parent]=\"child\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <mat-divider *ngIf=\"isSeparator(child)\"></mat-divider>\n\n </ng-container>\n\n </ng-template>\n</mat-menu>\n","import { Component, ElementRef, Inject, Input, Optional, SkipSelf } from '@angular/core';\nimport { Dsl, MutableValueModel, StoreInValueModel } from '@coolon/pectin';\nimport { POPUP_CONTAINER, PopupContainer } from '../popup-container';\nimport { AbstractPopupMenuComponent } from './abstract-popup-menu.component';\n\n/**\n *\n */\n@Component({\n selector: 'aup-more-menu',\n templateUrl: './popup-menu.component.html',\n providers:[\n {provide: POPUP_CONTAINER, useExisting: MoreMenuComponent}\n ]\n})\nexport class MoreMenuComponent extends AbstractPopupMenuComponent {\n\n private tooltipModel = new MutableValueModel<string>();\n\n @Input() @StoreInValueModel('tooltipModel')\n tooltip: string;\n\n constructor(element: ElementRef, @Inject(POPUP_CONTAINER) @Optional() @SkipSelf() parent?: PopupContainer) {\n super(element, parent);\n const { chain } = Dsl.disposeWith(this);\n this.faceModelDelegate.setDelegate(chain(this.tooltipModel).map(tooltip => {\n return {\n icon: () => 'mat:more_vert',\n tooltip(): string {\n return tooltip;\n }\n };\n }, { allowNil: true }));\n }\n\n get face() {\n return this.faceModelDelegate.value;\n }\n\n}\n","<div class=\"content\" style=\"display: none\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"isRoot()\">\n <ng-container *ngIf=\"faceAdapter.text\" [ngSwitch]=\"faceAdapter.style\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-stroked-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-raised-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu [parent]=\"this\" (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!faceAdapter.text\">\n <button matMenuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n >\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n</ng-container>\n","import { AfterContentChecked, Component, ElementRef, Inject, Input, Optional, SkipSelf } from '@angular/core';\n\nimport { Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\nimport { CommandFace } from '../../command-face';\nimport { POPUP_CONTAINER, PopupContainer } from '../popup-container';\nimport { AbstractPopupMenuComponent } from './abstract-popup-menu.component';\n\n/**\n *\n */\n@Component({\n selector: 'aup-popup-menu',\n templateUrl: './popup-menu.component.html',\n styleUrls: [],\n providers:[\n {provide: POPUP_CONTAINER, useExisting: PopupMenuComponent}\n ]\n})\nexport class PopupMenuComponent extends AbstractPopupMenuComponent {\n\n @Input() @TrackExternal({ delegateTo: 'faceModelDelegate' })\n faceModel: ValueModel<CommandFace>;\n\n @Input() @StoreInValueModel('faceModel')\n face: CommandFace;\n\n constructor(element: ElementRef, @Inject(POPUP_CONTAINER) @Optional() @SkipSelf() parent?: PopupContainer) {\n super(element, parent);\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n // group.faceListModel = chain(this.faceModel).mapToList(face => [face]);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'aup-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 { Component, Host, HostBinding, OnInit, Self } from '@angular/core';\nimport { Command, FocusManager, Trace } from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\n@Component({\n selector: 'aup-focus-container',\n templateUrl: './focus-container.component.html',\n styleUrls: ['./focus-container.component.scss'],\n providers: [\n { provide: FocusManager }\n ]\n})\nexport class FocusContainerComponent extends DisposableComponent implements OnInit {\n\n readonly restoreFocusCommand = Command.create(() => {\n this.restoreFocus();\n });\n\n @HostBinding('attr.tabindex')\n readonly tabIndex = -1;\n\n constructor(@Self() readonly focusManager: FocusManager) {\n super();\n }\n\n ngOnInit() {\n }\n\n // @Trace()\n restoreFocus() {\n this.focusManager.restoreFocus();\n }\n\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, HostBinding, HostListener } from '@angular/core';\n\nimport { Dsl, FocusManager } from '@coolon/pectin';\nimport { FocusBindingFactory } from '../directives/focus-binding-factory';\nimport { DisposableComponent } from './disposable-component';\n\n@Component({ template: '' })\nexport class FocusableComponent extends DisposableComponent {\n\n private _focusContext: FocusManager.Context;\n\n @HostBinding('attr.tabindex')\n get focusable() {\n return !!this.focusContext ? 0 : undefined;\n }\n\n @HostListener('focus')\n onFocus() {\n this.focusContext?.notifyFocusIn();\n }\n\n @HostListener('blur')\n onBlur() {\n this.focusContext?.notifyFocusOut();\n }\n\n constructor(protected readonly el: ElementRef, readonly focusManager: FocusManager, focusBindingFactory: FocusBindingFactory) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n if (this.focusManager) {\n this._focusContext = this.focusManager.registerFocusable(this);\n this.registerDisposable(this._focusContext);\n this.registerDisposable(focusBindingFactory.createBinding(el.nativeElement, this.focusContext));\n }\n }\n\n get focusContext(): FocusManager.Context {\n return this._focusContext;\n }\n\n}\n","/* tslint:disable:no-input-rename */\nimport { Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport {\n Command, Disposable,\n EventListenerList,\n FocusManager,\n ListModel,\n MutableValueModel,\n StoreInValueModel,\n ValueModel\n} from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\ninterface InputModel<T> {\n value: T;\n enabled: ValueModel<boolean>;\n errorList: ListModel<string>;\n focusContext: FocusManager.Context;\n}\n\n@Component({ template: '' })\nexport class AbstractInputComponent<T> extends DisposableComponent implements OnInit {\n\n protected onValueEditedListeners = new EventListenerList<(is: T, was: T) => void>();\n\n protected formValueModel: InputModel<T>;\n\n @Input() label: string;\n @Input('floatLabel') userFloatLabel: 'auto' | 'always' | 'never' = 'always'; // TODO: make this an injectable default\n @Input() hint: string;\n @Input() placeholder: string;\n\n @HostBinding('class.dense')\n @Input() dense = false;\n\n // Note: I don't need to use delegates here as I never subscribe to the commands models\n @Input('command.focus') focusCommand: Command<any>;\n @Input('command.blur') blurCommand: Command<any>;\n @Input('command.enter') enterCommand: Command<any>;\n @Input('command.escape') escapeCommand: Command<any>;\n @Input('command.click') clickCommand: Command<any>;\n\n // TODO: fix this.\n // tslint:disable-next-line:no-output-native\n @Output() focus = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() blur = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() enterKey = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() escapeKey = new EventEmitter();\n\n readonly errorStateMatcher: ErrorStateMatcher;\n\n @HostBinding('class')\n baseClassName = 'aup-input-component';\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 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: Command<any>) {\n if (command && command.enabled.value) {\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 }\n\n isEnabled(): boolean {\n return this.enabled.value;\n }\n\n get enabled(): ValueModel<boolean> {\n return this.formValueModel.enabled;\n }\n\n hasErrors(): boolean {\n return !this.errorList.query().isEmpty();\n }\n\n get errorList(): ListModel<string> {\n return this.formValueModel.errorList;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList.value[0] : null;\n }\n\n get focusContext() {\n return this.formValueModel.focusContext;\n }\n\n get floatLabel(): 'auto' | 'always' | 'never' {\n return this.dense ? 'never' : this.userFloatLabel;\n }\n\n get showHint(): boolean {\n return this.dense ? false : !!this.hint;\n }\n\n /**\n * Invokes the callback when this components value is changed by a user edit.\n * @param callback\n */\n onValueEdited(callback: (is: T, was: T) => void): Disposable {\n return this.onValueEditedListeners.add(callback);\n }\n\n}\n","/* tslint:disable:no-input-rename */\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Binding, DebugContext, Dsl, Form, Guard, MutableListModel, TrackExternal } from '@coolon/pectin';\nimport { AbstractInputComponent } from './abstract-input.component';\n\n@Component({ template: '' })\nexport class AbstractListInputComponent<T> extends AbstractInputComponent<T[]> implements OnInit {\n\n @Input() @TrackExternal({ delegateTo: 'formValueModel' })\n listModel: Form.ListModelBase<T> | MutableListModel<T>;\n\n /**\n * A backing model for all our @Input() valueModel properties which should be defined as follows.\n *\n * @Input() @TrackExternal({useExisting: \"inputModel\"})\n * valueModel: Form.ListModelBase<string> | MutableListModel<string>;\n *\n * This approach allows the input to accept plain or form models but all backed by a form\n * friendly delegate. We have to use an existing delegate for union types as pectin just\n * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).\n */\n // We have to register it as a disposable so it ditches any listeners when we're disposed.\n protected readonly formValueModel = this.registerDisposable(new Form.DelegatingFormListModel<T>());\n readonly componentListModel = new MutableListModel<T>();\n\n private setValueIsInProgress = new Guard();\n // we need this for plain values otherwise our Form.DelegatingListModel will stay disabled.\n private listHolder: MutableListModel<T>;\n\n // We add support for simple direct display of values by allowing components to be used\n // by `component.value = ...` This use of the component without a value model in tables\n // and the like.\n @Input() set value(value: T[]) {\n this.setValueIsInProgress.whileTrue(() => {\n if (!this.listHolder) {\n this.listHolder = new MutableListModel<T>(value);\n this.listModel = this.listHolder;\n } else {\n this.listHolder.value = value;\n }\n });\n }\n\n @Output() readonly valueChange = new EventEmitter<T[]>();\n\n constructor() {\n super();\n const { when, valueOf, chain } = Dsl.disposeWith(this);\n const binding = new Binding.Identity(this.formValueModel, this.componentListModel).writeRight();\n const inExternalChange = valueOf.any(\n this.setValueIsInProgress,\n chain(binding.direction).equals(Binding.Direction.RIGHT)\n ).areTruthy();\n\n when(this.componentListModel).changes((is, was) => {\n this.valueChange.emit(is);\n this.onValueEditedListeners.fire(l => l(is, was));\n }, {\n initialValue: 'ignore',\n // we never fire events during an external changes to the value. This allows\n // the component to behave when used in the conventional angular\n // fashion, i.e. [(value)]=\"...\"\n unless: inExternalChange\n });\n DebugContext.tag(this.formValueModel, `${this.constructor.name}.formValueModel`);\n }\n\n}\n","/* tslint:disable:no-input-rename */\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n Binding,\n DebugContext,\n Dsl,\n Form,\n Guard,\n MutableValueModel,\n TrackExternal\n} from '@coolon/pectin';\nimport { AbstractInputComponent } from './abstract-input.component';\n\n@Component({ template: '' })\nexport class AbstractValueInputComponent<T> extends AbstractInputComponent<T> implements OnInit {\n\n @Input() @TrackExternal({ delegateTo: 'formValueModel' })\n valueModel: Form.ValueModelBase<T> | MutableValueModel<T>;\n\n /**\n * A backing model for all our @Input() valueModel properties which should be defined as follows.\n *\n * @Input() @TrackExternal({useExisting: \"inputModel\"})\n * valueModel: DirtyTrackingForm.ValueModel<string> | MutableValueModel<string>;\n *\n * This approach allows the input to accept plain or form models but all backed by a form\n * friendly delegate. We have to use an existing delegate for union types as pectin just\n * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).\n */\n // We have to register it as a disposable so it ditches any listeners when we're disposed.\n protected readonly formValueModel = this.registerDisposable(new Form.DelegatingFormValueModel<T>());\n\n protected setValueInProgress = new Guard();\n readonly componentValueModel = new MutableValueModel<T>();\n // we need this for plain values otherwise our Form.DelegatingValueModel will stay disabled.\n private plainValueHolder: MutableValueModel<T>;\n\n // We add support for simple direct display of values by allowing components to be used\n // by `component.value = ...` This use of the component without a value model in tables\n // and the like.\n @Input() set value(value: T) {\n this.setValueInProgress.whileTrue(() => {\n if (!this.plainValueHolder) {\n this.plainValueHolder = new MutableValueModel<T>(value);\n this.valueModel = this.plainValueHolder;\n } else {\n this.plainValueHolder.value = value;\n }\n });\n }\n\n @Output() readonly valueChange = new EventEmitter<T>();\n\n constructor() {\n super();\n const { when, chain, valueOf } = Dsl.disposeWith(this);\n const binding = new Binding.Identity(this.formValueModel, this.componentValueModel).writeRight();\n const inExternalChange = valueOf.any(\n this.setValueInProgress,\n chain(binding.direction).equals(Binding.Direction.RIGHT)\n ).areTruthy();\n\n when(this.componentValueModel).changes((is, was) => {\n this.valueChange.emit(is);\n this.onValueEditedListeners.fire(l => l(is, was));\n }, {\n initialValue: 'ignore',\n // we never fire events during an external set value operation. This allows\n // the component to behave when used in the conventional angular\n // fashion, i.e. [(value)]=\"...\"\n unless: inExternalChange\n });\n DebugContext.tag(this.formValueModel, `${this.constructor.name}.formValueModel`);\n }\n\n}\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport {\n Dsl,\n ListModel,\n ListModelChain,\n MutableValueModel,\n StoreInListModel,\n Trace,\n TrackExternal, TransactionObserver\n} from '@coolon/pectin';\n\nimport { isEmpty, isString } from 'lodash';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n/**\n * Using templates (not only supported for nil values:\n * <aup-autocomplete-input [valueModel]=\"myModel\" [options]=\"myOptions\">\n * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>\n * </aup-autocomplete-input>\n */\n@Component({\n selector: 'aup-autocomplete-input',\n templateUrl: './autocomplete-input.component.html',\n styleUrls: ['./autocomplete-input.component.scss']\n})\nexport class AutocompleteInputComponent<T = any> extends AbstractValueInputComponent<T> implements OnInit {\n\n @Input() @TrackExternal()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n allowNil: boolean;\n\n @ContentChild('nilOptionTemplate')\n nilOptionTemplateRef: TemplateRef<any>;\n\n private filterValue = new MutableValueModel<string>();\n readonly filteredOptions: ListModelChain<T>;\n\n @Input()\n optionLabelFormat: (option: T) => any = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n const lowerCaseFilterValue = chain(this.filterValue)\n .map(v => isString(v) ? v.toLowerCase() : '');\n\n this.filteredOptions = chain(this.optionsModel)\n .select(option => {\n return isEmpty(this.filterValue.value) || this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);\n }, { dependsOn: lowerCaseFilterValue });\n }\n\n ngOnInit() {\n }\n\n formatOption(option: T) {\n return this.optionLabelFormat(option);\n }\n\n updateFilter($event: string) {\n this.filterValue.value = $event;\n }\n\n onSelect($event: MatAutocompleteSelectedEvent) {\n this.valueModel.value = $event.option.value;\n }\n}\n","<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValueModel.value\"\n (ngModelChange)=\"updateFilter($event)\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-autocomplete #autocomplete [displayWith]=\"optionLabelFormat\" [autoActiveFirstOption]=\"true\" (optionSelected)=\"onSelect($event)\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\"\n >{{formatOption(option)}}</mat-option>\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div>{{placeholder}}</div>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n@Component({\n selector: 'aup-checkbox-input',\n templateUrl: './checkbox-input.component.html',\n styleUrls: ['./checkbox-input.component.scss']\n})\nexport class CheckboxInputComponent extends AbstractValueInputComponent<boolean> implements OnInit {\n\n // @Input() @TrackExternal({ delegateTo: 'inputModel' })\n // valueModel: Form.ValueModelBase<boolean> | MutableValueModel<boolean>;\n\n @Input()\n color: 'primary' | 'warn' | 'accent' = 'accent';\n\n @Input()\n labelPosition: 'before' | 'after' = 'after';\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\nimport { ListModel, StoreInListModel, TrackExternal } from '@coolon/pectin';\nimport { AbstractListInputComponent } from '../abstract-list-input.component';\n\n/**\n * Using templates:\n * <aup-multiple-select-input [valueModel]=\"myModel\" [options]=\"myOptions\">\n * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>\n * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>\n * </aup-multiple-select_input>\n */\n@Component({\n selector: 'aup-multiple-select-input',\n templateUrl: './multiple-select-input.component.html',\n styleUrls: ['./multiple-select-input.component.scss']\n})\nexport class MultipleSelectInputComponent<T = any> extends AbstractListInputComponent<T> implements OnInit {\n\n @Input() @TrackExternal()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @ContentChild('optionTemplate')\n optionTemplateRef: TemplateRef<any>;\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","<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [(ngModel)]=\"componentListModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div>{{placeholder}}</div>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n\n@Component({\n selector: 'aup-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss']\n})\nexport class NumberInputComponent extends AbstractValueInputComponent<number> implements OnInit {\n\n @Input() autocomplete: string;\n\n @Input()\n min = Number.MIN_SAFE_INTEGER;\n\n @Input()\n max = Number.MAX_SAFE_INTEGER;\n\n @Input() iconPrefix: string;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","<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 [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n >\n <mat-hint *ngIf=\"hint && !dense\" >{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n@Component({\n selector: 'aup-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss']\n})\nexport class PasswordInputComponent extends AbstractValueInputComponent<string> implements OnInit {\n\n @Input() autocomplete: string;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","<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 [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\nimport { ListModel, StoreInListModel, TrackExternal } from '@coolon/pectin';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n/**\n * Using templates:\n * <aup-select-input [valueModel]=\"myModel\" [options]=\"myOptions\">\n * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>\n * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>\n * </aup-select_input>\n */\n@Component({\n selector: 'aup-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss']\n})\nexport class SelectInputComponent<T = any> extends AbstractValueInputComponent<T> implements OnInit {\n\n @Input() @TrackExternal()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n allowNil: boolean;\n\n @ContentChild('optionTemplate')\n optionTemplateRef: TemplateRef<any>;\n\n @ContentChild('nilOptionTemplate')\n nilOptionTemplateRef: TemplateRef<any>;\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","<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Command, Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n@Component({\n selector: 'aup-string-input',\n templateUrl: './string-input.component.html',\n styleUrls: ['./string-input.component.scss']\n})\nexport class StringInputComponent extends AbstractValueInputComponent<string> implements OnInit {\n\n @Input() autocomplete: string;\n\n @Input() @TrackExternal({ defaultValue: false })\n enableClearModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('enableClearModel')\n enableClear: boolean;\n\n @Input() iconPrefix: string;\n\n\n readonly clearCommand: Command<void>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.clearCommand = Command.create(() => {\n this.componentValueModel.value = null;\n });\n this.clearCommand.disableWhile(chain.stringValue(this.componentValueModel).isBlank());\n }\n\n ngOnInit() {\n }\n\n}\n","<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractValueInputComponent } from '../abstract-value-input.component';\n\n@Component({\n selector: 'aup-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss']\n})\nexport class TextInputComponent extends AbstractValueInputComponent<string> implements OnInit {\n\n // @Input() @TrackExternal({ delegateTo: 'inputModel' })\n // valueModel: Form.ValueModelBase<string> | MutableValueModel<string>;\n\n @Input() rows = 2;\n @Input() cols: number;\n\n constructor() {\n super();\n // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n }\n\n ngOnInit() {\n }\n\n}\n","<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { GarbageCollector, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\n\n@Component({\n selector: 'aup-loading-container',\n templateUrl: `./loading-container.component.html`,\n styleUrls: ['./loading-container.component.scss']\n})\nexport class LoadingContainerComponent extends GarbageCollector implements OnInit {\n\n @Input()\n @TrackExternal()\n loadingModel: ValueModel<boolean>;\n\n @Input()\n @StoreInValueModel(\"loadingModel\")\n loading: boolean;\n\n @Input()\n @TrackExternal()\n messageModel: ValueModel<string>;\n\n @Input()\n @StoreInValueModel(\"messageModel\")\n message: string;\n\n\n @HostBinding(\"class\")\n get state():string {\n return this.loadingModel.value ? \"loaded\" : \"loading\";\n }\n\n constructor() {\n super()\n }\n\n ngOnInit() {\n }\n\n}\n","<ng-content *ngIf=\"!loadingModel.value\"></ng-content>\n<section *ngIf=\"loadingModel.value\" class=\"loading-indicator-overlay\">\n <div class=\"loading-message\">\n <p>{{messageModel.value}}</p>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'aup-noop',\n templateUrl: './noop.component.html',\n styleUrls: ['./noop.component.scss']\n})\nexport class NoopComponent {\n constructor() {\n }\n}\n","","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { DisposableComponent } from '../disposable-component';\n\n@Component({\n selector: 'aup-section-header',\n templateUrl: './section-header.component.html',\n styleUrls: ['./section-header.component.scss']\n})\nexport class SectionHeaderComponent extends DisposableComponent implements OnInit {\n\n // readonly i18n = I18nMarsUi.components.layout.header;\n\n @Input()\n @HostBinding('class')\n size: 'toolbar' | 'large' | 'medium' | 'small' = 'medium';\n\n @Input()\n @HostBinding('class.border-top')\n borderTop = false;\n\n @Input()\n @HostBinding('class.border-bottom')\n borderBottom = false;\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n }\n\n}\n","<span class=\"container-start\"><ng-content select=\"[header-start]\"></ng-content><ng-content></ng-content></span>\n<span class=\"container-middle\"><ng-content select=\"[header-center]\"></ng-content></span>\n<span class=\"container-end\"><ng-content select=\"[header-end]\"></ng-content></span>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n Input,\n OnInit,\n QueryList,\n TemplateRef\n} from '@angular/core';\n\nimport { Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\n\nexport abstract class SwitchCaseOption<T> {\n\n abstract readonly isDefault: boolean;\n\n constructor(readonly templateRef: TemplateRef<Object>) {\n }\n\n get name() {\n return this.constructor.name;\n }\n\n abstract matches(value: T): boolean;\n}\n\n@Directive({\n selector: '[aupSwitchCaseWhen]',\n providers: [{ provide: SwitchCaseOption, useExisting: SwitchCaseWhenDirective }]\n})\nexport class SwitchCaseWhenDirective<T> extends SwitchCaseOption<T> {\n @Input() aupSwitchCaseWhen: T;\n readonly isDefault = false;\n\n constructor(templateRef: TemplateRef<Object>) {\n super(templateRef);\n }\n\n matches(value: T): boolean {\n return this.aupSwitchCaseWhen === value;\n }\n}\n\n@Directive({\n selector: '[aupSwitchCaseDefault]',\n providers: [{ provide: SwitchCaseOption, useExisting: SwitchCaseDefaultDirective }]\n})\nexport class SwitchCaseDefaultDirective<T> extends SwitchCaseOption<T> {\n readonly isDefault = true;\n\n constructor(templateRef: TemplateRef<Object>) {\n super(templateRef);\n }\n\n matches(value: T): boolean {\n return false;\n }\n}\n\n/**\n * @example\n * <aup-switch-case [switchModel]=\"booleanModel\">\n * <div *aupSwitchCaseWhen=\"true\"></div>\n * <div *aupSwitchCaseDefault>The default content</div>\n * </aup-switch-case>\n */\n@Component({\n selector: 'aup-switch-case',\n templateUrl: './switch-case.component.html',\n styleUrls: ['./switch-case.component.scss']\n})\nexport class SwitchCaseComponent<T> extends DisposableComponent implements OnInit, AfterContentInit {\n\n @Input() @TrackExternal()\n switchModel: ValueModel<T>;\n\n @Input() @StoreInValueModel('switchModel')\n switch: T;\n\n @ContentChildren(SwitchCaseOption)\n switchCaseOptions: QueryList<SwitchCaseOption<T>>;\n\n selectedIndex = 0;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n }\n\n ngAfterContentInit(): void {\n const subscription = this.switchCaseOptions.changes.subscribe(change => this.updateSelection());\n this.onDispose(() => subscription.unsubscribe());\n const { chain, when } = Dsl.disposeWith(this);\n when(this.switchModel).changes(() => this.updateSelection(), { initialValue: 'triggerChange' });\n this.cdr.detectChanges();\n }\n\n private updateSelection() {\n const matchingIndicies = [];\n this.switchCaseOptions.forEach((option, index) => {\n if (option.matches(this.switchModel.value)) {\n matchingIndicies.push(index);\n }\n });\n if (matchingIndicies.length > 1) {\n console.warn(`found ${matchingIndicies.length} matching case values, displaying the first.`);\n }\n if (matchingIndicies.length === 0) {\n this.switchCaseOptions.forEach((option, index) => {\n if (option.isDefault) {\n matchingIndicies.push(index);\n }\n });\n if (matchingIndicies.length > 1) {\n console.warn(`found ${matchingIndicies.length} default case values, displaying the first.`);\n }\n }\n if (matchingIndicies.length > 0) {\n this.selectedIndex = matchingIndicies[0];\n } else {\n console.warn(`found no matching or default case values.`);\n this.selectedIndex = -1;\n }\n }\n}\n\n","<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n","export class Dimension {\n constructor(readonly width: number, readonly height: number) {\n }\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, Directive, ElementRef, NgZone } from '@angular/core';\nimport { MutableValueModel, 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\n@Directive()\nexport class ResizeAwareComponent extends DisposableComponent implements AfterViewInit {\n\n private _boundsModel = new MutableValueModel<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 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 setTimeout(() => this._updateBounds());\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\nexport namespace ResizeAwareComponent {\n\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Trace } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { ColumnModel, RowData } from './column-model';\nimport { EditSession } from '../edit-session';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\n\nexport const HEADER_CELL_RENDERER_PORTAL = Symbol('aup-cell-header-renderer-component-ref');\nexport const CELL_RENDERER_PORTAL = Symbol('aup-cell-renderer-component-ref');\nexport const CELL_EDITOR_PORTAL = Symbol('aup-cell-editor-component-ref');\nexport const PORTAL_RENDERER_COMPONENT = Symbol('aup-cell-renderer-portal-component');\nexport const PORTAL_EDITOR_COMPONENT = Symbol('aup-cell-editor-portal-component');\n\n\nexport abstract class CellPortalRef<Row, Host, Portal> {\n constructor() {\n }\n\n abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>)\n\n abstract onPortalAttached(host: Host, portalComponent: Portal);\n}\n\nexport class CellHeaderPortalRef<Row, C> extends CellPortalRef<Row, TableHeaderCellRendererComponent, C> {\n constructor(readonly componentType: ComponentType<C>, readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableHeaderCellRendererComponent, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableHeaderCellRendererComponent, portalComponent: C) {\n this.initialiseHeader(portalComponent, host.column);\n }\n\n}\n\nexport abstract class CellRendererPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellRendererComponent<Row>, Portal> {\n abstract pushState(host: TableCellRendererComponent<Row>): void;\n}\n\nexport class ComponentCellRendererPortalRef<Row, Portal> extends CellRendererPortalRef<Row, Portal> {\n\n\n constructor(readonly componentType: ComponentType<Portal>, readonly updateComponent: (component: Portal, rowData: RowData<Row>, firstTime: boolean) => void) {\n super();\n }\n\n initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>) {\n host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: Portal) {\n host[PORTAL_RENDERER_COMPONENT] = portalComponent;\n this.updateComponent(portalComponent, host.getRowData(), true);\n }\n\n // @Trace()\n pushState(host: TableCellRendererComponent<Row>): void {\n if (host[PORTAL_RENDERER_COMPONENT]) {\n this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);\n }\n }\n\n}\n\nexport class CellEditorPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellRendererComponent<Row>, Portal> {\n\n constructor(readonly componentType: ComponentType<Portal>, readonly initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: Portal) {\n host[PORTAL_EDITOR_COMPONENT] = portalComponent;\n this.initialiseEditorSession(portalComponent, host.editSession);\n }\n\n}\n\nexport class TemplateCellRendererPortalRef<Row> extends CellRendererPortalRef<Row, undefined> {\n\n private templateRef: TemplateRef<any>;\n private viewContainer: ViewContainerRef;\n private fillCell: boolean;\n private padChild: boolean;\n\n constructor() {\n super();\n }\n\n public registerPortal(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n this.fillCell = fillCell;\n this.padChild = padChild;\n }\n\n initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: undefined) {\n // don't care\n }\n\n // @Trace()\n pushState(host: TableCellRendererComponent<Row>): void {\n host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());\n host.fillCell = this.fillCell;\n host.padChild = this.padChild;\n }\n\n private createPortal(data: RowData<Row>) {\n return new TemplatePortal<any>(this.templateRef, this.viewContainer, { ...(data), $implicit: data.row });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CellRenderer } from '../cell-renderer';\n\n\n@Component({\n selector: 'aup-default-cell-renderer',\n templateUrl: './default-cell-renderer.component.html',\n styleUrls: ['./default-cell-renderer.component.scss']\n})\nexport class DefaultCellRendererComponent<T> implements CellRenderer<T>{\n private _value: T;\n\n @Input()\n set value(value: T) {\n this._value = value;\n }\n\n get value(): T {\n return this._value;\n }\n\n constructor() {\n }\n}\n","<span [innerHTML]=\"value| aupHighlight\"></span>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aup-default-header-renderer',\n templateUrl: './default-header-cell-renderer.component.html',\n styleUrls: ['./default-header-cell-renderer.component.scss']\n})\nexport class DefaultHeaderCellRendererComponent {\n\n @Input()\n headerText: string;\n\n constructor() {\n }\n}\n","{{headerText}}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Command, DirtyTrackingForm, Form, Trace, TrackExternal } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\nimport { EditSession } from '../../edit-session';\nimport { TableModel } from '../table-model';\n\n@Component({\n selector: 'aup-row-editor-controls',\n templateUrl: './edit-row-controls.component.html',\n styleUrls: ['./edit-row-controls.component.scss']\n})\nexport class EditRowControls<Row> extends DisposableComponent implements OnInit {\n\n @Input()\n row: Row\n\n @Input()\n @TrackExternal()\n editRowCommand: Command<void>\n\n private _session: EditSession<Row>;\n\n @Input()\n set editSession(session: EditSession<Row>) {\n if (session) {\n session.form.disableWhile(this.saveCommand.busy);\n }\n this._session = session;\n }\n get editSession(): EditSession<Row> {\n return this._session;\n }\n\n readonly saveCommand: Command<void>;\n readonly cancelCommand: Command<void>;\n\n constructor() {\n super();\n this.saveCommand = Command.create(async () => {\n const finished = await this.editSession.saveCommand.execute()\n if (finished) {\n this.editSession.dispose();\n }\n });\n this.cancelCommand = Command.create(() => {\n this.editSession.dispose();\n }).disableWhile(this.saveCommand.busy);\n }\n\n ngOnInit() {\n }\n\n get form(): DirtyTrackingForm<Row> {\n return this.editSession?.form;\n }\n\n}\n","<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n","import { Component, Input } from '@angular/core';\n\nimport { Command, DelegatingSelectionModel, SelectionModel, Trace } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\n\n@Component({\n selector: 'aup-select-cell-renderer',\n templateUrl: './select-cell-renderer.component.html',\n styleUrls: ['./select-cell-renderer.component.scss']\n})\nexport class SelectCellRendererComponent<Row> extends DisposableComponent {\n\n readonly selectCommand: Command<void>;\n\n @Input()\n row: Row\n\n selectionModel: DelegatingSelectionModel<Row, unknown>;\n\n constructor() {\n super();\n this.selectCommand = Command.create(() => {\n this.selectionModel?.selectCommand.execute(this.row);\n });\n }\n\n isSelected(): boolean {\n return this.selectionModel?.isSelected(this.row);\n }\n}\n","<mat-checkbox [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\"></mat-checkbox>\n","import { Component } from '@angular/core';\n\nimport { Command, DelegatingSelectionModel, MultipleSelectionModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\n\n@Component({\n selector: 'aup-select-header-cell-renderer',\n templateUrl: './select-header-cell-renderer.component.html',\n styleUrls: ['./select-header-cell-renderer.component.scss']\n})\nexport class SelectHeaderCellRendererComponent<Row> extends DisposableComponent {\n\n readonly selectCommand: Command<void>;\n\n selectionModel: DelegatingSelectionModel<Row, any>;\n enableHeaderControls: boolean;\n\n constructor() {\n super();\n this.selectCommand = Command.create(() => {\n this.selectionModel.toggleAllCommand.execute();\n });\n }\n\n isSelected(): boolean {\n return this.selectionModel?.allSelected.value || false;\n }\n\n isIntermediate() {\n return this.selectionModel?.someSelected.value || false;\n }\n\n isVisible() {\n return this.enableHeaderControls && this.selectionModel.getDelegate() instanceof MultipleSelectionModel\n }\n}\n","<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\"></mat-checkbox>\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { CdkPortalOutletAttachedRef } from \"@angular/cdk/portal/portal-directives\";\nimport { ComponentRef, TemplateRef, ViewContainerRef } from \"@angular/core\";\nimport {\n Command, CommandFactory,\n DelegatingSelectionModel,\n DelegatingValueModel,\n DirtyTrackingForm,\n GarbageCollector,\n MultipleSelectionModel,\n SelectionModel,\n Types,\n UnaryCommand,\n Validator,\n ValueModel\n} from '@coolon/pectin';\nimport { assert, lang, Stringy } from \"@coolon/typescript-utilities\";\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { isFunction } from 'lodash';\nimport { CellEditorComponent, CellListEditorComponent } from './cell-editors';\nimport {\n CellEditorPortalRef,\n CellHeaderPortalRef,\n CellRendererPortalRef,\n ComponentCellRendererPortalRef,\n TemplateCellRendererPortalRef\n} from './cell-portal-ref';\nimport { CellRenderer } from './cell-renderer';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';\nimport { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';\nimport { EditRowControls } from './edit-row-controls/edit-row-controls.component';\nimport { EditSession } from '../edit-session';\nimport { MutableCellRenderer } from './mutable-cell-renderer';\nimport { SelectCellRendererComponent } from './select-cell-renderer/select-cell-renderer.component';\nimport { SelectHeaderCellRendererComponent } from './select-header-cell-renderer/select-header-cell-renderer.component';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\nimport { TextSearchPredicate } from './text-search-predicate';\n\n\nconst noop = () => {\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\n\nconst CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');\n\nexport type OnComponentInit<C> = (component: C) => void;\n\nexport interface CellRendererOptions<Row, E> {\n onComponentInit?: (component: E) => void;\n onRowUpdate?: (component: E, row: Row) => void;\n}\n\n\nexport interface MutableCellRendererOptions<Row, E, P extends keyof Row> extends CellRendererOptions<Row, E> {\n onValueEdit: (row: Row, is: Row[P], was: Row[P]) => void;\n}\n\nconst DEFAULT_TEXT_SEARCH_PREDICATE: TextSearchPredicate<unknown> = (row: unknown, text: RegExp) => false;\n\nexport class ColumnModel<Row> extends GarbageCollector {\n\n private _columnTextProperties: ColumnTextProperties;\n\n private _columnHeaderPortalRef: CellHeaderPortalRef<Row, any>;\n private _cellRendererPortalRef: CellRendererPortalRef<Row, any>;\n private _cellEditorPortalRef: CellEditorPortalRef<Row, any>;\n\n private _enableRowSelection = true;\n private _flex = false;\n\n private _defaultVisibility = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(true));\n private _visible = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(this._defaultVisibility));\n readonly dasherisedColumnId: string;\n protected _columnModelTextSearchPredicate: TextSearchPredicate<Row> = undefined;\n protected _cellRendererTextSearchPredicate: TextSearchPredicate<Row> = undefined;\n\n constructor(readonly columnId: string, private textPropertiesProvider: ColumnModel.TextPropertiesProvider) {\n super();\n this.installHeaderRenderer();\n this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();\n }\n\n protected installHeaderRenderer() {\n this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {\n component.headerText = column.getHeaderText();\n });\n }\n\n @Memoize()\n getHeaderText(): string {\n return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();\n }\n\n isVisible() {\n return this.visible.value;\n }\n\n get visible() {\n return this._visible.readonly;\n }\n\n visibleWhile(visible: ValueModel<boolean>): this {\n this._visible.setDelegate(visible);\n return this;\n }\n\n protected setDefaultVisibility(visible: ValueModel<boolean>) {\n this._defaultVisibility.setDelegate(visible);\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\n }\n\n get isTextMatch(): TextSearchPredicate<Row> {\n return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;\n }\n\n /**\n * Sets the predicate to use when checking if the specified row is a text match for this column.\n * @param predicate\n */\n useTextSearchPredicate(predicate: TextSearchPredicate<Row>):this {\n this._columnModelTextSearchPredicate = predicate;\n return this;\n }\n\n @Memoize()\n getColumnTextProperties(): ColumnTextProperties {\n return this._columnTextProperties || this.textPropertiesProvider();\n }\n\n /**\n * @deprecated use #columnTextProperties instead\n * @param columnTextProperties\n */\n textProperties(columnTextProperties: ColumnTextProperties): this {\n return this.columnTextProperties(columnTextProperties);\n }\n\n columnTextProperties(columnTextProperties: ColumnTextProperties): this {\n this._columnTextProperties = columnTextProperties;\n return this;\n }\n\n protected configureHeaderRenderer<C>(config: CellHeaderPortalRef<Row, any>): void {\n this._columnHeaderPortalRef = config;\n }\n\n protected configureCellRenderer<C>(config: CellRendererPortalRef<Row, any>): void {\n this._cellRendererPortalRef = config;\n }\n\n protected configureCellEditor<E>(cellEditor: CellEditorPortalRef<Row, E>): void {\n this._cellEditorPortalRef = cellEditor;\n }\n\n cellHeaderRenderer<C>(componentType: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this {\n this.configureHeaderRenderer(new CellHeaderPortalRef<Row, C>(componentType, initialiser));\n return this;\n }\n\n flex(flex = true) {\n this._flex = flex;\n }\n\n isFlex() {\n return this._flex;\n }\n\n hasEditorPortal() {\n return !!this._cellEditorPortalRef;\n }\n\n attachHeaderCell(host: any) {\n this._columnHeaderPortalRef.initialiseHost(host, this);\n }\n\n attachCell(host: any) {\n this._cellRendererPortalRef.initialiseHost(host, this);\n if (this.hasEditorPortal()) {\n this._cellEditorPortalRef.initialiseHost(host, this);\n }\n }\n\n onHeaderAttached(host: TableHeaderCellRendererComponent, ref: CdkPortalOutletAttachedRef) {\n const component = this.getComponent(ref);\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellRendererComponent<Row>, ref: CdkPortalOutletAttachedRef) {\n const component = this.getComponentOrEmbeddedView(ref);\n this._cellRendererPortalRef.onPortalAttached(host, component);\n if (isFunction(component?.matches)) {\n this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);\n } else {\n this._cellRendererTextSearchPredicate = undefined;\n }\n }\n\n // @Trace()\n onEditorAttached(host: TableCellRendererComponent<Row>, ref: CdkPortalOutletAttachedRef) {\n this._cellEditorPortalRef.onPortalAttached(host, this.getComponent(ref));\n }\n\n updatePortalContent(host: TableCellRendererComponent<Row>) {\n this._cellRendererPortalRef.pushState(host);\n }\n\n protected _selectRowOnClick(selectRowOnClick: boolean): this {\n this._enableRowSelection = selectRowOnClick;\n return this;\n }\n\n isRowSelectionEnabled(): boolean {\n return this._enableRowSelection;\n }\n\n protected getComponent(ref: CdkPortalOutletAttachedRef): any {\n if (ref instanceof ComponentRef) {\n return ref.instance;\n } else {\n console.error(\"headers only support component portals, got\", ref);\n lang.illegalState(`headers only support component portals, got ${ref}`)\n }\n }\n protected getComponentOrEmbeddedView(ref: CdkPortalOutletAttachedRef): any {\n if (ref instanceof ComponentRef) {\n return ref.instance;\n } else {\n return ref;\n }\n }\n}\n\nexport namespace ColumnModel {\n export type TextPropertiesProvider = () => ColumnTextProperties\n}\n\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Row[P]) => any = (value) => value?.toString();\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n this.useTextSearchPredicate((row: Row, regex: RegExp) => {\n return regex.test(this._format(row[this.property]));\n });\n }\n\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, options?: CellRendererOptions<Row, E>): this\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInit?: OnComponentInit<E>): this\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInitOrOptions?: CellRendererOptions<Row, E> | OnComponentInit<E>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n if (isFunction(onComponentInitOrOptions)) {\n onComponentInitOrOptions(component);\n } else {\n if (isFunction(onComponentInitOrOptions?.onComponentInit)) {\n onComponentInitOrOptions.onComponentInit(component);\n }\n }\n }\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n liveEditCellRenderer<E extends MutableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this {\n return this.mutableCellRenderer(componentType, options);\n }\n\n /**\n * Deprecated. Use #liveEditCellRenderer instead.\n * @param componentType\n * @param options\n */\n mutableCellRenderer<E extends MutableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this {\n\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n\n // keep a local copy most recent row value so it's available to teh\n // edit callback without having to add/remove subscribers all the time.\n component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;\n let disableEditCallback = false;\n\n if (firstTime) {\n if (isFunction(options?.onComponentInit)) {\n options.onComponentInit(component);\n }\n // install our edit callback\n component.onValueEdited((is, was) => {\n if (!disableEditCallback) {\n options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);\n }\n });\n\n }\n\n // now push the value the component and disable the callback just incase the component misbehaves\n // and fires a value change during the operation.\n disableEditCallback = true;\n component.value = rowData.row[this.property];\n disableEditCallback = false;\n\n if (!isFunction(options) && isFunction(options?.onRowUpdate)) {\n options.onRowUpdate(component, rowData.row);\n }\n\n }));\n return this;\n }\n\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validators?: Validator<Row[P]>[], initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validatorsOrInitialiser?: Validator<Row[P]>[] | ((component: E) => void), onComponentInit?: (component: E) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: E, editSession: EditSession<Row>) => {\n const formValueModel = editSession.form.pluck(this.property);\n if (validators) {\n formValueModel.validateUsing(validators);\n }\n component.valueModel = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Types.ArrayElementType<Row, P>[]) => any = (value) => value.map(v => v?.toString()).join(', ');\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n this.useTextSearchPredicate((row: Row, regex: RegExp) => {\n let rowElement = row[this.property];\n // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...\n return regex.test(this._format(rowElement));\n });\n }\n\n cellRenderer(componentType: ComponentType<{ value: Types.ArrayElementType<Row, P>[] }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n let rowElement = rowData.row[this.property];\n // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...\n component.value = this._format(rowElement);\n }));\n return this;\n }\n\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validatorsOrInitialiser?: Validator<Types.ArrayElementType<Row, P>[]>[] | ((component: C) => void), initialiseComponent?: (component: C) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;\n\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: C, editSession: EditSession<Row>) => {\n const formListModel = editSession.form.pluckList(this.property);\n if (validators) {\n formListModel.validateUsing(validators);\n }\n component.listModel = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectRowOnClick: boolean): this {\n return this._selectRowOnClick(selectRowOnClick);\n }\n\n}\n\nexport class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, private getValue: (row: Row) => V) {\n super(columnId, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer<C extends { value: Partial<V> }>(componentType: ComponentType<C>, onComponentInitOrOptions?: CellRendererOptions<Row, C> | OnComponentInit<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n if (isFunction(onComponentInitOrOptions)) {\n onComponentInitOrOptions(component);\n } else {\n if (isFunction(onComponentInitOrOptions?.onComponentInit)) {\n onComponentInitOrOptions.onComponentInit(component);\n }\n }\n }\n component.value = this.getValue(rowData.row);\n\n if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {\n onComponentInitOrOptions.onRowUpdate(component, rowData.row);\n }\n }));\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class EditorControlColumnModel<Row> extends ColumnModel<Row> {\n\n constructor(columnId: string, saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, defaults);\n this.cellRenderer(EditRowControls);\n }\n\n cellRenderer(componentType: ComponentType<{ row: Row, editSession: EditSession<Row>, editRowCommand: Command<void> }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.editSession = rowData.editSession;\n component.editRowCommand = rowData.editRowCommand;\n }));\n return this;\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n}\n\nexport class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {\n private readonly config = new TemplateCellRendererPortalRef<Row>();\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, defaults);\n this.configureCellRenderer(this.config);\n }\n\n setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n readonly selectionModel = DelegatingSelectionModel.createDelegate<Row, unknown>();\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, selectionModel: SelectionModel<Row>) {\n super(columnId, defaults);\n this._selectRowOnClick(false);\n this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {\n component.selectionModel = this.selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n });\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = this.selectionModel;\n }));\n this.setSelectionModel(selectionModel);\n }\n\n setSelectionModel(selectionModel: SelectionModel<Row>) {\n this.selectionModel.setDelegate(selectionModel);\n this.setDefaultVisibility(selectionModel instanceof MultipleSelectionModel ? ValueModel.TRUE : ValueModel.FALSE);\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n selectRow(row: Row) {\n this.selectionModel.selectCommand.execute(row);\n }\n\n isSelected(row: Row) {\n return this.selectionModel.isSelected(row);\n }\n}\n\n\n","import {\n Component,\n ElementRef,\n HostBinding,\n Input,\n NgZone,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport {\n Dsl, ListModel,\n ListModelChain,\n MapModelChain,\n MutableValueModel,\n StoreInValueModel,\n TrackExternal,\n ValueModel\n} from '@coolon/pectin';\nimport { lang } from '@coolon/typescript-utilities';\nimport { ResizeAwareComponent } from '../resize-aware.component';\nimport { AbstractTableModel } from './abstract-table-model';\nimport { ColumnModel, CustomTemplateColumnModel } from './table/column-model';\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * Create your table\n * @example\n * <aup-table [tableModel]=\"heroTableModel\"></aup-table>\n *\n * Column templates\n * @example\n * this.heroTableModel = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addTemplateColumn(\"specialColumn\");\n * });\n * <aup-table [tableModel]=\"heroTableModel\">\n * <div *aupColumnTemplate=\"let hero; columnId: 'specialColumn'; fillCell: true; padChild:false\">\n * {{hero.name}}\n * </div>\n * </aup-table>\n *\n * Styling\n * @example\n * // global settings\n * :root {\n * --aup-table-column-gap: 10px; // defaults to 24px\n * --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)\n * --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent\n * --aup-table-first-column-padding-left: 18px // defaults to --column-gap\n * --aup-table-last-column-padding-right: 18px // defaults to --column-gap\n * }\n *\n * // per table settings.\n * aup-table {\n * --column-gap: 10px; // defaults to 24px\n * --row-hover-background-color, rgba(0, 0, 0, 0.05)\n * --row-selected-background-color: rebeccapurple; // defaults to transparent\n * --first-column-padding-left: 18px // defaults to --column-gap\n * --last-column-padding-right: 18px // defaults to --column-gap\n *\n * aup-table-header-cell-renderer,\n * aup-table-cell-renderer {\n * &.aup-col-my-dasherised-column-id {\n * // do stuff\n * }\n * &.first-visible-column {\n * // do stuff\n * }\n * &.last-visible-column {\n * // do stuff\n * }\n * }\n * }\n */\n@Component({\n selector: 'aup-abstract-table',\n template: ''\n})\nexport class AbstractTableComponent<Row> extends ResizeAwareComponent implements OnInit {\n\n @Input()\n @TrackExternal({ defaultValue: true })\n showHeaderModel: ValueModel<boolean>;\n\n @Input()\n @StoreInValueModel('showHeaderModel')\n showHeader: boolean;\n\n /**\n * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either\n * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's\n * containment area.\n */\n @Input()\n @HostBinding('class.enable-scrolling')\n enableScrolling = false;\n\n columns: ListModelChain<ColumnModel<Row>>;\n columnIds: ListModelChain<string>;\n private columnsById: MapModelChain<string, ColumnModel<Row>>;\n\n readonly visibleRowCount: ValueModel<number>;\n\n\n // TODO: support user defined header and row heights via css vars.\n private readonly headerHeight = new MutableValueModel<number>(56);\n private readonly rowHeight = new MutableValueModel<number>(48);\n\n @HostBinding('class')\n baseCssClass = 'aup-table-component';\n\n constructor(elementRef: ElementRef, ngZone: NgZone) {\n super(elementRef, ngZone);\n const { chain, when } = Dsl.disposeWith(this);\n\n const actualHeaderHeight = chain(this.showHeaderModel).map(show => {\n return show ? this.headerHeight.value : 0;\n }, { dependsOn: this.headerHeight });\n\n this.visibleRowCount = chain(this.boundsModel).map(bounds => {\n // TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.\n const rawRowCount = (bounds.height - actualHeaderHeight.value) / this.rowHeight.value;\n return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);\n }, {\n dependsOn: [actualHeaderHeight, this.rowHeight],\n postponeWhile: chain(this.boundsModel).pluckNumeric('height').isLessThan(1)\n });\n\n }\n\n @HostBinding('class.hide-header')\n get hideHeader() {\n return !this.showHeader;\n }\n\n getModel(): AbstractTableModel<Row> {\n return lang.abstractMethod(this.constructor);\n }\n\n ngOnInit(): void {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.columns = chain(this.getModel().columns);\n this.columnIds = chain(this.columns).pluck('columnId');\n this.columnsById = chain(this.columns).indexBy('columnId');\n }\n\n isEditing(row: Row): boolean {\n return !!this.getModel().getEditSessionFor(row);\n }\n\n registerColumnTemplate(columnId: string, templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n const column = this.columnsById.get(columnId);\n if (column instanceof CustomTemplateColumnModel) {\n column.setTemplate(templateRef, viewContainer, fillCell, padChild);\n }\n }\n\n notifyCellClicked(columnModel: ColumnModel<Row>, row: Row) {\n this.getModel()._notifyCellClicked(columnModel, row);\n }\n\n // @Trace()\n isFirstVisibleColumn(columnId: string): boolean {\n return this.getModel().firstVisibleColumn.query().value?.columnId === columnId;\n }\n\n // @Trace()\n isLastVisibleColumn(columnId: string): boolean {\n return this.getModel().lastVisibleColumn.query().value?.columnId === columnId;\n }\n\n getColumnClasses(columnId: string) {\n const classes = [`aup-col-${this.columnsById.get(columnId).dasherisedColumnId}`];\n if (this.isFirstVisibleColumn(columnId)) {\n classes.push('first-visible-column');\n }\n if (this.isLastVisibleColumn(columnId)) {\n classes.push('last-visible-column');\n }\n return classes;\n }\n}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { AbstractTableComponent } from '../../abstract-table.component';\n\n@Directive({\n selector: '[aupColumnTemplate]'\n})\nexport class ColumnTemplateDirective implements OnInit {\n\n @Input()\n aupColumnTemplate: string;\n\n @Input()\n aupColumnTemplateColumnId: string;\n\n @Input()\n aupColumnTemplateFillCell = false;\n\n @Input()\n aupColumnTemplateAutoPadChild = undefined;\n\n constructor(readonly host: AbstractTableComponent<any>,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef) {\n }\n\n ngOnInit() {\n assert.isTruthy(this.aupColumnTemplateColumnId);\n this.host.registerColumnTemplate(this.aupColumnTemplateColumnId,\n this.templateRef,\n this.viewContainer,\n this.aupColumnTemplateFillCell,\n this.aupColumnTemplateAutoPadChild ?? this.aupColumnTemplateFillCell);\n }\n\n}\n","import { Portal } from '@angular/cdk/portal';\nimport {CdkPortalOutletAttachedRef} from \"@angular/cdk/portal/portal-directives\";\nimport {Component, ComponentRef, HostBinding, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\nimport { BooleanValueModelChain, Command, Dsl, HasFocusContext, Trace } from '@coolon/pectin';\nimport { Stringy } from '@coolon/typescript-utilities';\nimport { DisposableComponent } from '../../../disposable-component';\nimport { AbstractTableModel } from '../../abstract-table-model';\nimport { CellEditorComponent, CellListEditorComponent } from '../cell-editors';\nimport { ColumnModel, RowData } from '../column-model';\nimport { EditSession } from '../../edit-session';\nimport { TableModel } from '../table-model';\nimport { CELL_RENDERER_PORTAL, CELL_EDITOR_PORTAL } from '../cell-portal-ref';\n\n@Component({\n selector: 'aup-table-cell-renderer',\n templateUrl: './table-cell-renderer.component.html',\n styleUrls: ['./table-cell-renderer.component.scss']\n})\nexport class TableCellRendererComponent<Row> extends DisposableComponent implements OnInit, OnChanges {\n\n @Input()\n row: Row;\n\n @Input()\n column: ColumnModel<Row>;\n\n @Input()\n editSession: EditSession<Row>;\n\n @Input()\n tableModel: AbstractTableModel<Row>;\n\n private editRowCommand: Command<void>;\n\n [CELL_RENDERER_PORTAL]: Portal<any>;\n [CELL_EDITOR_PORTAL]: Portal<any>;\n\n @HostBinding('class')\n defaultClassNames = 'aup-cell-renderer';\n\n @HostBinding('class.fillCell')\n fillCell = false;\n\n @HostBinding('class.padChild')\n padChild = false;\n\n private firstEditableColumn: BooleanValueModelChain;\n\n constructor() {\n super();\n this.editRowCommand = Command.create(() => {\n this.tableModel.startEditSession(this.row);\n });\n }\n\n ngOnInit(): void {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.firstEditableColumn = chain(this.tableModel.firstEditableColumn).equals(this.column); // this would break if the column changed.\n this.column.attachCell(this);\n }\n\n hasActiveEditor(): boolean {\n return !!this.editSession && !!this.column.hasEditorPortal();\n }\n\n initialiseRenderer(ref: CdkPortalOutletAttachedRef) {\n this.column.onRendererAttached(this, ref);\n }\n\n initialiseEditor(ref: CdkPortalOutletAttachedRef) {\n this.column.onEditorAttached(this, ref);\n if (this.firstEditableColumn.value) {\n // @see https://github.com/angular/components/issues/12070\n setTimeout(() => this.tryAndFocusEditor(ref));\n }\n }\n\n private tryAndFocusEditor(ref: CdkPortalOutletAttachedRef) {\n if (ref instanceof ComponentRef) {\n const editor = ref.instance;\n // CellEditorComponent<Row> | CellListEditorComponent<Row>\n if (editor.requestFocus) {\n editor.requestFocus();\n } else {\n const model = (editor['valueModel'] || editor['listModel']) as HasFocusContext;\n model?.focusContext?.requestFocus();\n }\n }\n\n }\n\n // @Trace()\n ngOnChanges(changes: SimpleChanges): void {\n this.column.updatePortalContent(this);\n }\n\n getRendererPortal() {\n return this[CELL_RENDERER_PORTAL];\n }\n\n getEditorPortal() {\n return this[CELL_EDITOR_PORTAL];\n }\n\n getRowData(): RowData<Row> {\n return {\n row: this.row,\n editSession: this.editSession,\n editRowCommand: this.editRowCommand\n };\n }\n}\n","<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n","import { Portal } from '@angular/cdk/portal';\nimport {CdkPortalOutletAttachedRef} from \"@angular/cdk/portal/portal-directives\";\nimport {Component, ComponentRef, HostBinding, Input, OnInit} from '@angular/core';\nimport {lang} from \"@coolon/typescript-utilities\";\nimport { ColumnModel } from '../column-model';\nimport { HEADER_CELL_RENDERER_PORTAL } from '../cell-portal-ref';\n\n@Component({\n selector: 'aup-table-header-cell-renderer',\n templateUrl: './table-header-cell-renderer.component.html',\n styleUrls: ['./table-header-cell-renderer.component.scss']\n})\nexport class TableHeaderCellRendererComponent implements OnInit {\n\n @Input()\n column: ColumnModel<any>;\n\n @HostBinding('class')\n defaultClassNames = 'aup-header-cell-renderer';\n\n [HEADER_CELL_RENDERER_PORTAL]: Portal<any>;\n\n constructor() {\n }\n\n ngOnInit() {\n this.column.attachHeaderCell(this);\n }\n\n // @Trace()\n initialiseHeader(ref: CdkPortalOutletAttachedRef) {\n this.column.onHeaderAttached(this, ref);\n }\n\n getPortal() {\n return this[HEADER_CELL_RENDERER_PORTAL];\n }\n}\n","<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\nimport { Command, Dsl } from '@coolon/pectin';\nimport { CommandFace } from '../../../commands/command-face';\nimport { DisposableComponent } from '../../../disposable-component';\nimport { CellRenderer } from '../cell-renderer';\n\n\nclass MenuItemData<T> {\n constructor(readonly factory: Command.Factory<T, void>, readonly face: CommandFace) {\n }\n}\n\n/**\n *\n */\n@Component({\n selector: 'aup-table-row-menu',\n template: `\n <aup-tool-bar>\n <aup-command *ngFor=\"let action of actions\" [command]=\"action.factory.create(value)\"\n [face]=\"action.face\"></aup-command>\n </aup-tool-bar>\n <ng-container *ngIf=\"moreActions.length > 0\">\n <aup-more-menu>\n <aup-command *ngFor=\"let action of moreActions\" [command]=\"action.factory.create(value)\"\n [face]=\"action.face\"></aup-command>\n </aup-more-menu>\n </ng-container>\n `,\n styles: [`:host {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n }`]\n})\nexport class TableRowMenuComponent<T> extends DisposableComponent implements CellRenderer<T> {\n\n @Input()\n value: T;\n\n @ViewChild(MatMenuTrigger)\n menu: MatMenuTrigger;\n\n readonly actions: MenuItemData<T>[] = [];\n readonly moreActions: MenuItemData<T>[] = [];\n\n registerAction(commandFactory: Command.Factory<T, void>, properties: CommandFace) {\n this.actions.push(new MenuItemData(commandFactory, properties));\n }\n\n registerMoreAction(commandFactory: Command.Factory<T, void>, properties: CommandFace) {\n this.moreActions.push(new MenuItemData(commandFactory, properties));\n }\n\n constructor() {\n super();\n }\n\n createMoreMenuCommand(item: MenuItemData<T>, value: T): Command<void> {\n const { when } = Dsl.disposeWith(this);\n const command = item.factory.create(value);\n when(command.busy).becomesFalsey(() => {\n this.closeMoreMenu();\n });\n return command;\n }\n\n private closeMoreMenu() {\n this.menu.closeMenu();\n }\n}\n","import { AbstractComputedListModel, Dsl, lang, ListModel, MapModelChain, MutableListModel } from '@coolon/pectin';\n\nimport { isNil } from 'lodash';\nimport { ColumnModel } from './table/column-model';\n\nexport class ColumnListModel<Row> extends AbstractComputedListModel<ColumnModel<Row>, boolean> {\n\n private readonly _allColumns = new MutableListModel<ColumnModel<Row>>();\n private readonly columnsById: MapModelChain<string, ColumnModel<Row>>;\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.columnsById = chain(this._allColumns).indexBy('columnId');\n }\n\n get allColumns(): ListModel<ColumnModel<Row>> {\n return this._allColumns.readonly;\n }\n\n getColumn(id: string): ColumnModel<Row> {\n return this.columnsById.get(id);\n }\n\n hasColumn(id: string): boolean {\n return !!this.columnsById.get(id);\n }\n\n addColumn<C extends ColumnModel<Row>>(column: C, index?: number): C {\n if (this.hasColumn(column.columnId)) {\n lang.illegalState(`Column with id=${column.columnId} already exists`);\n }\n this.registerDisposable(column);\n this.runInTransaction(() => {\n if (!isNil(index)) {\n this._allColumns.insert(index, column);\n } else {\n this._allColumns.push(column);\n }\n this.registerDisposable(this.trackSource(column.visible));\n });\n return column;\n }\n\n doComputeValue(): ColumnModel<Row>[] {\n return this._allColumns.value.filter(c => c.visible.value);\n }\n}\n","import { Command, DirtyTrackingForm, GarbageCollector, MutableValueModel } from '@coolon/pectin';\nimport { PickMutable } from '@coolon/typescript-utilities';\nimport produce from 'immer';\n\nexport class EditSession<Row> extends GarbageCollector {\n private _liveRowValue = new MutableValueModel<Row>();\n readonly liveRowValue = this._liveRowValue.readonly;\n\n constructor(readonly rowId: any, row: Row, readonly form: DirtyTrackingForm<Row>, readonly saveCommand: Command<boolean | Promise<boolean>>) {\n super();\n this.form.load(row);\n this._liveRowValue.value = row;\n this.form.onEdit(() => {\n // if (!this._liveRowValue.value[immerable]) {\n // console.warn()\n // }\n this._liveRowValue.value = produce(this._liveRowValue.value, draft => {\n this.form.writeDirtyStateTo(draft as PickMutable<Row>);\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport {\n assert,\n BooleanValueModelChain, Command,\n CommandFactory,\n DelegatingListModel,\n DirtyTrackingForm,\n Disposable,\n Dsl,\n EventListenerList,\n GarbageCollector,\n lang,\n ListModel,\n ListModelChain,\n MapModelChain,\n MutableListModel,\n SelectionModel,\n TrackExternal,\n Types,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\n\nimport { isFunction, isNil } from 'lodash';\nimport { ColumnListModel } from './column-list-model';\nimport { EditSession } from './edit-session';\nimport { CellRenderer } from './table/cell-renderer';\nimport {\n CellRendererOptions,\n ColumnModel,\n CustomTemplateColumnModel,\n CustomValueColumnModel,\n EditorControlColumnModel,\n ListPropertyColumnModel,\n OnComponentInit,\n PropertyColumnModel,\n SelectionColumnModel\n} from './table/column-model';\nimport { ColumnTextProperties } from './table/column-text-properties';\n\n// export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];\n// export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];\n\nclass RowClass<Row> {\n constructor(readonly className: string,\n readonly matches: (row: Row) => boolean) {\n }\n}\n\n\nexport class AbstractTableModel<Row> extends GarbageCollector {\n\n private readonly _dataSource = this.registerDisposable(new DelegatingListModel<Row>());\n readonly dataSource: ListModelChain<Row>;\n\n private readonly _columnList = this.registerDisposable(new ColumnListModel<Row>());\n\n private _editorSessions = new MutableListModel<EditSession<Row>>();\n private readonly _rowsBeingEdited: MutableListModel<Row>;\n private readonly rowClassNamePredicates: RowClass<Row>[] = [];\n\n private _columnTextPropertiesLookup: { [columnName: string]: ColumnTextProperties };\n\n private saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>;\n private _editorSessionByRowId: MapModelChain<any, EditSession<Row>>;\n\n readonly editing: BooleanValueModelChain;\n readonly firstEditableColumn: ValueModelChain<ColumnModel<Row>>;\n private selectionColumnModel: SelectionColumnModel<Row>;\n private rowSelectionDisabledOnAllColumns: BooleanValueModelChain;\n private readonly rowClickListeners = new EventListenerList<(row: Row) => void>();\n readonly firstVisibleColumn: ValueModel<ColumnModel<Row>>;\n readonly lastVisibleColumn: ValueModel<ColumnModel<Row>>;\n\n private _createForm: (row: Row) => DirtyTrackingForm<Row> = (row) => new DirtyTrackingForm<Row>();\n\n public constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this._rowsBeingEdited = new MutableListModel<Row>([], {\n identifiedWith: row => this.identityOf(row)\n });\n this._editorSessionByRowId = chain(this._editorSessions).indexBy('rowId');\n this.editing = chain(this._editorSessions).count().isGreaterThan(0);\n this.dataSource = chain(this._dataSource).replaceAll(this.rowsBeingEdited);\n\n this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();\n this.firstVisibleColumn = chain(this._columnList).first();\n this.lastVisibleColumn = chain(this._columnList).last();\n\n this.rowSelectionDisabledOnAllColumns = chain(this._columnList).select(column => column.isRowSelectionEnabled()).count().equals(0);\n }\n\n findMatchingColumns(row: Row, regex: RegExp): ColumnModel<Row>[] {\n return this.columns.value.filter(c => c.isTextMatch(row, regex));\n }\n\n hasMatchingColumn(row: Row, regex: RegExp): boolean {\n return !!this.columns.value.find(c => c.isTextMatch(row, regex));\n }\n\n protected setDataSource(sourceOfTruth: ListModel<Row>) {\n this._dataSource.setDelegate(sourceOfTruth);\n }\n\n identityOf(row: Row): any {\n return this._dataSource.identityOf(row);\n }\n\n get rowsBeingEdited(): ListModel<Row> {\n return this._rowsBeingEdited.readonly;\n }\n\n readonly trackBy = (index: number, item: Row) => {\n return this.identityOf ? this.identityOf(item) : index;\n };\n\n get columns(): ListModel<ColumnModel<Row>> {\n return this._columnList.allColumns;\n }\n\n get visibleColumns(): ListModel<ColumnModel<Row>> {\n return this._columnList.readonly;\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P, options?: { columnId: string }): PropertyColumnModel<Row, P> {\n const columnId = options?.columnId || property.toString();\n return this.addColumn(new PropertyColumnModel<Row, P>(columnId, property, () => this.getColumnTextProperties(columnId)));\n }\n\n pluckList<P extends Types.ArrayPropertiesOf<Row>>(property: P, options?: { columnId: string }): ListPropertyColumnModel<Row, P> {\n const columnId = options?.columnId || property.toString();\n return this.addColumn(new ListPropertyColumnModel<Row, P>(columnId, property, () => this.getColumnTextProperties(columnId)));\n }\n\n protected _addSelectionColumn(selectionModel?: SelectionModel<Row>, visible?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n assert.isNil(this.selectionColumnModel);\n const columnId = 'selection-column';\n this.selectionColumnModel = new SelectionColumnModel<Row>(columnId, () => this.getColumnTextProperties(columnId), selectionModel);\n this.addRowClass('aup-row-selected', row => this.selectionColumnModel.isSelected(row));\n const selectionColumnModel = this.addColumn(this.selectionColumnModel, 0);\n if (!isNil(visible)) {\n selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));\n }\n return selectionColumnModel;\n }\n\n addEditControls(saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean|Promise<boolean>>, formFactory?: (row: Row) => DirtyTrackingForm<Row>): EditorControlColumnModel<Row> {\n this.saveCommandFactory = saveCommandFactory;\n if (isFunction(formFactory)) {\n this._createForm = formFactory;\n }\n const columnId = 'editControls';\n return this.addColumn(new EditorControlColumnModel<Row>(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));\n }\n\n addCustomColumn<V>(columnId: string, dataAccessor: (row: Row) => V): CustomValueColumnModel<Row, V> {\n return this.addColumn(new CustomValueColumnModel<Row, V>(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));\n }\n\n addComponentColumn<C extends CellRenderer<Partial<Row>>>(columnId: string, component: ComponentType<C>, onInit?: OnComponentInit<C>): CustomValueColumnModel<Row, Row>\n addComponentColumn<C extends CellRenderer<Partial<Row>>>(columnId: string, component: ComponentType<C>, options?: CellRendererOptions<Row, C>): CustomValueColumnModel<Row, Row>\n addComponentColumn<C extends CellRenderer<Partial<Row>>>(columnId: string, component: ComponentType<C>, onComponentInitOrOptions?: OnComponentInit<C> | CellRendererOptions<Row, C>): CustomValueColumnModel<Row, Row> {\n return this.addColumn(new CustomValueColumnModel<Row, Row>(columnId, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);\n }\n\n addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row> {\n return this.addColumn(new CustomTemplateColumnModel<Row>(columnId, () => this.getColumnTextProperties(columnId)));\n }\n\n addRowClass(className: string, predicate: (row: Row) => boolean) {\n this.rowClassNamePredicates.push(new RowClass<Row>(className, predicate));\n }\n\n getRowClasses(row: Row): string[] {\n const classNames: string[] = [];\n this.rowClassNamePredicates.forEach(i => {\n if (i.matches(row)) {\n classNames.push(i.className);\n }\n });\n return classNames;\n }\n\n useFormFactory(factory: (row: Row) => DirtyTrackingForm<Row>): this {\n this._createForm = factory;\n return this;\n }\n\n protected addColumn<C extends ColumnModel<Row>>(column: C, index?: number): C {\n return this._columnList.addColumn(column, index);\n }\n\n // removeColumn(column: ColumnModel<Row>) {\n //\n // }\n\n columnTextProperties(columnTextProperties: { [columnName: string]: ColumnTextProperties }) {\n this._columnTextPropertiesLookup = columnTextProperties;\n }\n\n getColumnTextProperties(columnId: string): ColumnTextProperties {\n return this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[columnId] : undefined;\n }\n\n startEditSession(row: Row): EditSession<Row> {\n const rowId = this.identityOf(row);\n if (this._rowsBeingEdited.query().indexOf(row) > -1) {\n return lang.illegalState(`Row with id=${rowId} already being edited`);\n }\n\n // todo: pass the factories to the edit session so we can make the whole lot pluggable?\n const form = this._createForm(row);\n const saveCommand = this.saveCommandFactory.create(form);\n const editSession = new EditSession<Row>(rowId, row, form, saveCommand);\n const { when } = Dsl.disposeWith(editSession);\n when(editSession.liveRowValue).changes((editedValue) => {\n this._rowsBeingEdited.replaceOrPush(editedValue);\n }, { initialValue: 'triggerChangeUnlessNil' });\n\n this._editorSessions.push(editSession);\n editSession.onDispose(() => {\n this._rowsBeingEdited.remove(editSession.liveRowValue.value);\n this._editorSessions.remove(editSession);\n });\n return editSession;\n }\n\n getEditSessionFor(row: Row): EditSession<Row> {\n return this._editorSessionByRowId.get(this.identityOf(row));\n }\n\n cancelAllEditorSessions() {\n this._editorSessions.runInTransaction((draft) => {\n this._rowsBeingEdited.runInTransaction(() => {\n draft.value.forEach(session => session.dispose());\n });\n });\n }\n\n isRowSelectionEnabledFor(column: ColumnModel<Row>): boolean {\n return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();\n }\n\n isRowSelectionEnabled() {\n return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;\n }\n\n hasUserSelectionModel() {\n return !!this.selectionColumnModel?.selectionModel.getDelegate();\n }\n\n getSelectionModel(): SelectionModel<Row> | undefined {\n return this.selectionColumnModel?.selectionModel;\n }\n\n isHoverEnabled(): boolean {\n return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;\n }\n\n isCursorEnabled(column: ColumnModel<Row>) {\n return this.isRowSelectionEnabledFor(column) || this.rowClickListeners.listenerCount > 0;\n }\n\n selectRow(row: Row) {\n this.selectionColumnModel?.selectRow(row);\n }\n\n onRowClicked(callback: (row: Row) => void): Disposable {\n return this.rowClickListeners.add(callback);\n }\n\n _notifyCellClicked(columnModel: ColumnModel<Row>, row: Row) {\n if (this.isRowSelectionEnabledFor(columnModel)) {\n this.selectRow(row);\n }\n this.rowClickListeners.fire(l => l(row));\n }\n}\n\n\nTrackExternal.oneTimeBinding(AbstractTableModel);\n","import { Component, ElementRef, Input, NgZone } from '@angular/core';\nimport { TrackExternal } from '@coolon/pectin';\nimport { AbstractTableModel } from '../abstract-table-model';\nimport { AbstractTableComponent } from '../abstract-table.component';\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * Create your table\n * @example\n * <aup-table [tableModel]=\"heroTableModel\"></aup-table>\n *\n * Column templates\n * @example\n * this.heroTableModel = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addTemplateColumn(\"specialColumn\");\n * });\n * <aup-table [tableModel]=\"heroTableModel\">\n * <div *aupColumnTemplate=\"let hero; columnId: 'specialColumn'; fillCell: true; padChild:false\">\n * {{hero.name}}\n * </div>\n * </aup-table>\n *\n * Styling\n * @example\n * // global settings\n * :root {\n * --aup-table-column-gap: 10px; // defaults to 24px\n * --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)\n * --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent\n * --aup-table-first-column-padding-left: 18px // defaults to --column-gap\n * --aup-table-last-column-padding-right: 18px // defaults to --column-gap\n * }\n *\n * // per table settings.\n * aup-table {\n * --column-gap: 10px; // defaults to 24px\n * --row-hover-background-color, rgba(0, 0, 0, 0.05)\n * --row-selected-background-color: rebeccapurple; // defaults to transparent\n * --first-column-padding-left: 18px // defaults to --column-gap\n * --last-column-padding-right: 18px // defaults to --column-gap\n * ::ng-deep {\n * aup-table-header-cell-renderer,\n * aup-table-cell-renderer {\n * &.aup-col-my-dasherised-column-id {\n * // do stuff\n * }\n * &.first-visible-column {\n * // do stuff\n * }\n * &.last-visible-column {\n * // do stuff\n * }\n * }\n * }\n * }\n */\n@Component({\n selector: 'aup-table',\n templateUrl: '../table.component.html',\n styleUrls: ['../table.component.scss'],\n providers: [\n {provide: AbstractTableComponent, useExisting: TableComponent}\n ]\n})\nexport class TableComponent<Row> extends AbstractTableComponent<Row> {\n\n @Input()\n @TrackExternal()\n tableModel: AbstractTableModel<Row>;\n\n constructor(elementRef: ElementRef, ngZone: NgZone) {\n super(elementRef, ngZone);\n }\n\n getModel(): AbstractTableModel<Row> {\n return this.tableModel;\n }\n\n}\n","<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"getModel().dataSource.value\" [trackBy]=\"getModel().trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"getModel().isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"getModel()\"\n [editSession]=\"getModel().getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"getModel().getRowClasses(row)\" [class.enable-hover]=\"getModel().isHoverEnabled()\"\n [attr.aup-row-id]=\"getModel().trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { Enum } from 'typescript-string-enums';\n\nconst SVG_HEIGHT = 60;\n\n@Component({\n selector: 'aup-tree-inheritance-icon',\n templateUrl: './tree-inheritance-icon.component.svg',\n styleUrls: ['./tree-inheritance-icon.component.scss']\n})\nexport class TreeInheritanceIconComponent<T> {\n\n @Input()\n @HostBinding(\"class\")\n type: TreeInheritanceIconComponent.Type | string; // angualr doesn't like this type in templates.\n\n @Input()\n pixelWidth = 24;\n\n @Input()\n pixelHeight = 48;\n\n constructor() {\n }\n\n get heightOffset() {\n return SVG_HEIGHT - this.pixelHeight;\n }\n\n get viewBox() {\n return `${0} ${this.heightOffset} ${this.pixelWidth} ${this.pixelHeight - this.heightOffset}`\n }\n\n hasHead() {\n return TreeInheritanceIconComponent.HAS_HEAD.includes(this.type)\n }\n\n hasTerminal() {\n return TreeInheritanceIconComponent.HAS_TERMINAL.includes(this.type)\n }\n\n hasLeadIn() {\n return TreeInheritanceIconComponent.HAS_LEAD_IN.includes(this.type)\n }\n\n hasTail() {\n return TreeInheritanceIconComponent.HAS_TAIL.includes(this.type)\n }\n\n}\n\nexport namespace TreeInheritanceIconComponent {\n export const Type = Enum({\n ICON_BLANK: 'blank',\n ICON_PARENT: 'parent', // ┬\n ICON_INHERITED_TERMINAL: 'inherited_terminal', // ˪\n ICON_INHERITED_THROUGH_TERMINAL: 'inherited_through_terminal', // ˫\n ICON_THROUGH: 'through' // |\n });\n export type Type = Enum<typeof Type>;\n\n export const HAS_LEAD_IN = [\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_TERMINAL = [\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_PARENT\n ];\n\n export const HAS_HEAD = [\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n export const HAS_TAIL = [\n TreeInheritanceIconComponent.Type.ICON_PARENT,\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ];\n\n\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"pixelWidth\" [attr.height]=\"pixelHeight\" [attr.viewBox]=\"viewBox\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <rect *ngIf=\"hasHead()\" width=\"1\" height=\"32.5\" x=\"11.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTail()\" width=\"1\" height=\"32.5\" x=\"11.5\" y=\"31.5\" fill=\"currentColor\"/>\n\n <rect *ngIf=\"hasLeadIn()\" width=\"12\" height=\"1\" y=\"31.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTerminal()\" width=\"12\" height=\"1\" x=\"12\" y=\"31.5\" fill=\"currentColor\"/>\n </g>\n</svg>\n","import { assert } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nexport const treeNodeDecorator = Symbol('TreeDecorator');\n\nexport interface HasTreeNodeDecorator<T> {\n [treeNodeDecorator]: DecoratedTreeNode.Decorator<T>\n}\n\nexport type DecoratedTreeNode<T> = T & HasTreeNodeDecorator<T>\n\nexport namespace DecoratedTreeNode {\n\n export function decorateRoot<T>(node: T, extractChildren: (node: T) => T[]):DecoratedTreeNode<T> {\n return new Decorator<T>(undefined, node, extractChildren).decoratedNode;\n }\n\n export function getDecorator<T>(node:T):Decorator<T> {\n assert.notNil(node[treeNodeDecorator]);\n return node[treeNodeDecorator];\n }\n\n export class Decorator<T> {\n\n constructor(readonly parent: DecoratedTreeNode<T> | undefined, private readonly node: T, private readonly extractChildren: (node: T) => T[]) {\n node[treeNodeDecorator] = this; // inject our decorator.\n }\n\n @Memoize()\n get children(): DecoratedTreeNode<T>[] {\n return this.extractChildren(this.node)\n .map(child => child[treeNodeDecorator] ?? new Decorator(this.decoratedNode, child, this.extractChildren))\n .map(d => d.decoratedNode)\n }\n\n get decoratedNode(): DecoratedTreeNode<T> {\n return this.node as DecoratedTreeNode<T>\n }\n\n @Memoize()\n siblingsBefore(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(0, this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblingsAfter(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(1 + this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblings(): T[] {\n return [].concat(this.siblingsBefore(), this.siblingsAfter());\n }\n\n @Memoize()\n isFirstChild(): boolean {\n return this.parent ? this.myIndex() === 0 : false;\n }\n\n @Memoize()\n protected myIndex() {\n const myIndex = this.parent[treeNodeDecorator].children.findIndex(child => this.node === child);\n assert.isTruthy(myIndex >= 0, 'illegal state, expected index to be >= 0');\n return myIndex;\n }\n\n @Memoize()\n isLastChild(): boolean {\n return this.parent ? this.myIndex() === this.parent[treeNodeDecorator].children.length - 1 : false;\n }\n\n @Memoize()\n hasSiblings(): boolean {\n return this.parent ? this.parent[treeNodeDecorator].children.length > 1 : false;\n }\n\n // find(predicate: Predicate<T>): T {\n // return find(this.descendants(), predicate);\n // }\n //\n // select(predicate: Predicate<T>): T[] {\n // return filter(this.descendants(), predicate);\n // }\n //\n // flattenInto(array: T[]): T[] {\n // this.visitSelfAndDescendants(child => array.push(child));\n // return array;\n // }\n\n @Memoize()\n ancestors(): T[] {\n return this.parent ? this.parent[treeNodeDecorator].ancestors().concat([this.parent]) : [];\n }\n\n // ancestorsAndSelf(): T[] {\n // return this.memoize('ancestorsAndSelf', () => {\n // return this.ancestors().concat([(this.decoratedSelf)]);\n // });\n // }\n\n // pathToParent(parent: T): T[] {\n // if (this.node === parent.node) {\n // return [];\n // } else if (this.parent) {\n // const pathToParent = this.parent.pathToParent(parent);\n // return pathToParent.concat([this.parent]);\n // } else {\n // throw new Error('parent is not an ancestor');\n // }\n // }\n //\n // pathToParentAndSelf(parent): T[] {\n // return this.pathToParent(parent).concat([this.decoratedSelf]);\n // }\n\n isRoot(): boolean {\n return !this.parent;\n }\n\n @Memoize()\n get depth(): number {\n return this.isRoot() ? 0 : this.parent[treeNodeDecorator].depth + 1;\n }\n\n isLeaf(): boolean {\n return !this.isRoot() && this.children.length < 1;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n // depthFromParent(parent): number {\n // return this.pathToParent(parent).length;\n // }\n //\n // treeDepth(): number {\n // return this.memoize('treeDepth', () => {\n // return 1 + this.descendants().map(child => child.depthFromParent(this)).reduce((prev, current) => Math.max(prev, current));\n // });\n // }\n\n // flatten(): T[] {\n // return this.memoize('flatten', () => {\n // return this.flattenInto([]);\n // });\n // }\n //\n // visit<V extends Visitor<T>>(visitor: V): V {\n // visitor.visit(this as any as T);\n // return visitor;\n // }\n //\n // visitChildren<V extends Visitor<T>>(visitor: V): V {\n // each(this.decoratedChildren, child => child.visit(visitor));\n // return visitor;\n // }\n //\n // visitSelfAndDescendants(callback: (it: T) => void) {\n // this.visit(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n // visitDescendants(callback: (it: T) => void) {\n // this.visitChildren(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n\n }\n\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Dsl, ListModelChain, MutableValueModel, StoreInValueModel, ValueModelChain } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\nimport { CellRenderer } from '../../table/cell-renderer';\nimport { DecoratedTreeNode } from '../decorated-tree-node';\nimport { TreeExpansionModel } from '../tree-expansion-model';\nimport { TreeInheritanceIconComponent } from '../tree-inheritance-icon/tree-inheritance-icon.component';\nimport { TreeTableModel } from '../tree-table-model';\n\n@Component({\n selector: 'aup-tree-label-cell-renderer',\n templateUrl: './tree-label-cell-renderer.component.html',\n styleUrls: ['./tree-label-cell-renderer.component.scss']\n})\nexport class TreeLabelCellRendererComponent<T> extends DisposableComponent implements CellRenderer<T>, OnInit {\n\n private nodeModel = new MutableValueModel<T>();\n\n @Input()\n @StoreInValueModel('nodeModel')\n value: T;\n\n @Input()\n label: string;\n\n @Input()\n iconFactory: TreeTableModel.IconFactory<T>;\n\n // TODO: Make this have a proper delegate so I can safely use it here..\n @Input()\n treeTableModel: TreeTableModel<T>;\n\n readonly iconList: ListModelChain<TreeInheritanceIconComponent.Type>;\n\n canExpand: ValueModelChain<boolean>;\n canCollapse: ValueModelChain<boolean>;\n iconModel: ValueModelChain<string>;\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.iconList = chain(this.nodeModel).mapToList(node => {\n const icons: TreeInheritanceIconComponent.Type[] = DecoratedTreeNode.getDecorator(node).ancestors().slice(1).map(ancestor => {\n return DecoratedTreeNode.getDecorator(ancestor).isLastChild() ? TreeInheritanceIconComponent.Type.ICON_BLANK : TreeInheritanceIconComponent.Type.ICON_THROUGH;\n });\n if (!DecoratedTreeNode.getDecorator(node).isRoot()) {\n icons.push(DecoratedTreeNode.getDecorator(node).isLastChild() ? TreeInheritanceIconComponent.Type.ICON_INHERITED_TERMINAL : TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL);\n }\n return icons;\n });\n }\n\n ngOnInit(): void {\n const { chain } = Dsl.disposeWith(this);\n this.canExpand = chain(this.nodeModel).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && this.treeTableModel.isCollapsed(node);\n }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });\n\n this.canCollapse = chain(this.nodeModel).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.treeTableModel.isCollapsed(node);\n }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });\n\n this.iconModel = chain(this.nodeModel).map(node => {\n const expanded = this.treeTableModel.treeExpansionModel.isExpanded(this.node);\n const iconFactory = this.iconFactory ?? TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY;\n return iconFactory(node, expanded, TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY(node, expanded, undefined));\n }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });\n }\n\n @HostBinding('class.root')\n get isRoot() {\n return DecoratedTreeNode.getDecorator(this.node).isRoot();\n }\n\n @HostBinding('class.leaf')\n get isLeaf() {\n return DecoratedTreeNode.getDecorator(this.node).isLeaf();\n }\n\n get node() {\n return this.nodeModel.value;\n }\n\n // @Trace()\n expandOrCollapse($event: MouseEvent, node: T) {\n $event.preventDefault();\n $event.stopPropagation();\n this.treeTableModel.isCollapsed(node) ? this.treeTableModel.expand(node) : this.treeTableModel.collapse(node);\n }\n}\n\nexport namespace TreeLabelCellRendererComponent {\n export const DEFAULT_ICON_FACTORY: TreeTableModel.IconFactory<any> = (node: any, expanded: boolean, defaultIcon: string) => {\n const isLeaf = DecoratedTreeNode.getDecorator(node).isLeaf();\n return isLeaf ?\n undefined :\n expanded ?\n 'mat:expand_more' :\n 'mat:chevron_right';\n };\n}\n","<div class=\"tree-icons\">\n <aup-tree-inheritance-icon *ngFor=\"let type of iconList.value\" [type]=\"type\"></aup-tree-inheritance-icon>\n <aup-icon *ngIf=\"iconModel.value\"\n [icon]=\"iconModel.value\"\n [class.clickable]=\"canExpand.value || canCollapse.value\"\n (click)=\"expandOrCollapse($event, node)\" ></aup-icon>\n</div>\n<div class=\"label\">{{label}}</div>\n","import { ComputedListModel, ListModel } from '@coolon/pectin';\nimport { DecoratedTreeNode, treeNodeDecorator } from './decorated-tree-node';\nimport { TreeExpansionModel } from './tree-expansion-model';\n\nexport class FlattenedTreeListModel<T> extends ComputedListModel<DecoratedTreeNode<T>, T[]> {\n\n constructor(private readonly source: ListModel<T>, private readonly childRef: (node: T) => T[], readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>) {\n super(source, {\n initialValue: [],\n identifiedWith: row => source.identityOf(row)\n });\n this.trackSource(expansionModel.isExpandedPredicate)\n }\n\n compute(values: T[]): DecoratedTreeNode<T>[] {\n const result: DecoratedTreeNode<T>[] = [];\n values.forEach(rootNode => {\n return this.addNodeAndVisibleChildren(DecoratedTreeNode.decorateRoot(rootNode, this.childRef), result);\n });\n return result;\n }\n\n\n private addNodeAndVisibleChildren(node: DecoratedTreeNode<T>, result: DecoratedTreeNode<T>[]) {\n result.push(node);\n const decorator = node[treeNodeDecorator];\n if (decorator.hasChildren() && !this.expansionModel.isCollapsed(node)) {\n decorator.children.forEach(child => this.addNodeAndVisibleChildren(child, result));\n }\n }\n\n}\n","import { MutableValueModel } from '@coolon/pectin';\nimport { DecoratedTreeNode} from './decorated-tree-node';\n\nexport class TreeExpansionModel<T> {\n private readonly collapsedIds = new Set<any>();\n\n private readonly _isExpandedPredicate = new MutableValueModel<(node: T) => boolean>(() => true);\n\n constructor(private readonly identityOf: (node: T) => any) {\n this.updatePredicate();\n }\n\n get isExpandedPredicate() {\n return this._isExpandedPredicate.readonly;\n }\n\n // @Trace()\n expand(node: T) { // TODO: add DecoratedTreeNode.isDecorated(node) to allow using the raw node type as well.\n if (this.isCollapsed(node)) {\n this.collapsedIds.delete(this.identityOf(node));\n this.updatePredicate();\n }\n }\n\n // @Trace()\n collapse(node: T) {\n if (!this.isCollapsed(node)) {\n this.collapsedIds.add(this.identityOf(node));\n this.updatePredicate();\n }\n }\n\n canExpand(node: T): boolean {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && this.isCollapsed(node);\n }\n\n canCollapse(node: T): boolean {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.isCollapsed(node);\n }\n\n isCollapsed(node: T): boolean {\n return this.collapsedIds.has(this.identityOf(node));\n }\n\n isExpanded(node: T): boolean {\n return !this.isCollapsed(node);\n }\n\n ensureAncestorsAndSelfVisible(node: T) {\n DecoratedTreeNode.getDecorator(node).ancestors()\n .map(a => this.identityOf(node))\n .forEach(id => this.collapsedIds.delete(id));\n this.updatePredicate();\n }\n\n private updatePredicate() {\n this._isExpandedPredicate.value = (node: T) => !this.collapsedIds.has(this.identityOf(node));\n }\n\n}\n\nexport namespace TreeExpansionModel {\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { Types } from '@coolon/pectin';\n\nimport { isNil } from 'lodash';\nimport { ComponentCellRendererPortalRef } from '../table/cell-portal-ref';\nimport { ColumnModel } from '../table/column-model';\nimport { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport { TreeTableModel } from './tree-table-model';\n\nexport class TreeLabelColumnModel<Row> extends ColumnModel<Row> {\n\n private labelProperty: string | number | symbol;\n private iconFactory: TreeTableModel.IconFactory<Row>;\n\n constructor(columnId: string,\n textPropertiesProvider: ColumnModel.TextPropertiesProvider,\n readonly expansionModel: TreeTableModel<Row>) {\n super(columnId, textPropertiesProvider);\n this.cellRenderer(TreeLabelCellRendererComponent);\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P) {\n this.labelProperty = property;\n }\n\n /**\n * @deprecated use #useIcon instead.\n * @param factory\n */\n addIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeTableModel.IconFactory<Row>) {\n this.useIcon(factory);\n }\n\n useIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeTableModel.IconFactory<Row>) {\n this.iconFactory = factory;\n }\n\n protected cellRenderer<C extends TreeLabelCellRendererComponent<Row>>(componentType: ComponentType<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n component.treeTableModel = this.expansionModel;\n }\n component.value = rowData.row;\n component.label = isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];\n component.iconFactory = this.iconFactory;\n }));\n return this;\n }\n\n public _selectRowOnClick(selectOnRowClick: boolean): this {\n return super._selectRowOnClick(selectOnRowClick);\n }\n\n}\n","import { ListModel, MutableValueModel, SelectionModel, ValueModel } from '@coolon/pectin';\n\nimport { isFunction } from 'lodash';\nimport { AbstractTableModel } from '../abstract-table-model';\nimport { SelectionColumnModel } from '../table/column-model';\nimport { FlattenedTreeListModel } from './flattened-tree-list-model';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeLabelColumnModel } from './tree-label-column-model';\n\nexport type ChildArrayPropertiesOf<T> = { [K in keyof T]: T[K] extends T[] ? K : never }[keyof T];\n\n// TODO:\n// Selection Models:\n// - as simple navigation tree\n// - as editable grid (selecte all, even hidden etc?)\n// - fixing selection on underlying model changes.\n// - rendering selection: row highlighting, checkboxes (in the tree renderer or in separate column), both.\n// Expansion Models:\n// - Add ability to auto show to depth\n// - Add a predicate to check default expansion (i.e. has children of a certain type)\n//\nexport class TreeTableModel<Row> extends AbstractTableModel<Row> {\n\n readonly treeExpansionModel = new TreeExpansionModel<Row>(row => this.identityOf(row));\n private readonly flattenedDataSource: FlattenedTreeListModel<Row>;\n\n constructor(source: ListModel<Row>, childAccessor: ChildArrayPropertiesOf<Row> | ((node: Row) => Row[]), builder?: (model: TreeTableModel<Row>) => void) {\n super();\n if (builder) builder(this);\n const childExtractor = isFunction(childAccessor) ? childAccessor : row => row[childAccessor];\n this.flattenedDataSource = this.registerDisposable(new FlattenedTreeListModel<Row>(source, childExtractor, this.treeExpansionModel));\n this.setDataSource(this.flattenedDataSource);\n\n this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));\n }\n\n treeControlColumn(builder: (column: TreeLabelColumnModel<Row>) => void) {\n const columnId = 'tree-label';\n const column = new TreeLabelColumnModel<Row>(columnId, () => this.getColumnTextProperties(columnId), this);\n builder(column);\n this.addColumn(column);\n }\n\n expand(node: Row) {\n this.treeExpansionModel.expand(node);\n }\n\n collapse(node: Row) {\n this.treeExpansionModel.collapse(node);\n }\n\n isCollapsed(node: Row): boolean {\n return this.treeExpansionModel.isCollapsed(node);\n }\n\n ensureAncestorsAndSelfVisible(node: Row) {\n this.treeExpansionModel.ensureAncestorsAndSelfVisible(node);\n }\n\n addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n return this._addSelectionColumn(selectionModel, showSelectionColumn);\n }\n\n // saveSelection() {\n // const selectionModel = this.getSelectionModel();\n // if (selectionModel) {\n // let ids: any[] = [];\n // const selectedArea = selectionModel.leadSelection.value;\n // if (selectedArea) {\n // ids.push(selectedArea.id);\n // ids = ids.concat(selectedArea.siblingsAfter().map(a => a.id));\n // ids = ids.concat(selectedArea.siblingsBefore().reverse().map(a => a.id));\n // ids = ids.concat(selectedArea.ancestorsToZone().reverse().map(a => a.id));\n // }\n // this._storedSelection = ids;\n // }\n // }\n //\n // restoreSelection() {\n // const all = this.rootNodeModel.value.selfAndDescendants();\n // for (let i = 0; i < this._storedSelection.length; i++) {\n // const id = this._storedSelection[i];\n // const found = all.find(area => area.id === id);\n // if (found) {\n // this.selectedAreaId.value = found.id;\n // break;\n // }\n // }\n // }\n //\n // collapseAll(areas: T[]) {\n // this.collapsedAreaIds.value = [].concat(this.collapsedAreaIds.value, areas.map(a => a.id));\n // }\n\n // disableSelection(disable: boolean = true) {\n // this._disableSelection.value = disable;\n // }\n\n\n}\n\n\nexport namespace TreeTableModel {\n\n export interface Options<T, K extends keyof T> {\n storeIdIn: MutableValueModel<K>;\n }\n\n export type IconFactory<Row> = (node: Row, expanded: boolean, defaultIcon: string) => string;\n\n}\n\n\n// export class FlattenStrategy<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {\n//\n// private _areas: T[] = [];\n// private _collapsed: Set<T>;\n//\n// constructor(private collapsedIds: T[]) {\n// super();\n// this._collapsed = new Set<T>(collapsedIds);\n// }\n//\n// protected onVisit(it: T) {\n// this._areas.push(it);\n// }\n//\n// protected shouldVisitChildrenOf(it: T): boolean {\n// return !this._collapsed.has(it);\n// }\n//\n// get flattenedAreas(): T[] {\n// return this._areas;\n// }\n//\n// }\n\n// class DecoratorCache {\n//\n// private map = new Map<number, T>();\n//\n// get(area:T): T {\n//\n// if (!area) return null;\n//\n// let decoratedArea = this.map.get(area.id);\n// if (!decoratedArea) {\n// decoratedArea = TreeModel.AreaDecorator.decorate(area);\n// this.map.set(area.id, decoratedArea);\n// }\n// return decoratedArea;\n// }\n//\n// clear() {\n// this.map.clear();\n// }\n//\n//\n// }\n\n\n\n\n","import { Component, ElementRef, Input, NgZone } from '@angular/core';\nimport { TrackExternal } from '@coolon/pectin';\nimport { TreeNode } from '@coolon/typescript-utilities';\nimport { AbstractTableModel } from '../abstract-table-model';\nimport { AbstractTableComponent } from '../abstract-table.component';\nimport { TreeTableModel } from './tree-table-model';\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = TableTreeModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * table.addTemplateColumn(\"specialColumn\");\n * });\n *\n * Create your table\n * @example\n * <aup-tree-table [treeTableModel]=\"heroTableModel\"></aup-table>\n *\n * Column templates\n * @example\n * this.heroTableModel = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addTemplateColumn(\"specialColumn\");\n * });\n * <aup-table [tableModel]=\"heroTableModel\">\n * <div *aupColumnTemplate=\"let hero; columnId: 'specialColumn'; fillCell: true; padChild:false\">\n * {{hero.name}}\n * </div>\n * </aup-table>\n *\n * Styling\n * @example\n * // global settings\n * :root {\n * --aup-table-column-gap: 10px; // defaults to 24px\n * --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)\n * --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent\n * --aup-table-first-column-padding-left: 18px // defaults to --column-gap\n * --aup-table-last-column-padding-right: 18px // defaults to --column-gap\n * }\n *\n * // per table settings.\n * aup-table {\n * --column-gap: 10px; // defaults to 24px\n * --row-hover-background-color, rgba(0, 0, 0, 0.05)\n * --row-selected-background-color: rebeccapurple; // defaults to transparent\n * --first-column-padding-left: 18px // defaults to --column-gap\n * --last-column-padding-right: 18px // defaults to --column-gap\n *\n * aup-table-header-cell-renderer,\n * aup-table-cell-renderer {\n * &.aup-col-my-dasherised-column-id {\n * // do stuff\n * }\n * &.first-visible-column {\n * // do stuff\n * }\n * &.last-visible-column {\n * // do stuff\n * }\n * }\n * }\n */\n@Component({\n selector: 'aup-tree-table',\n templateUrl: '../table.component.html',\n styleUrls: ['../table.component.scss', './tree-table.component.scss'],\n providers: [\n { provide: AbstractTableComponent, useExisting: TreeTableComponent }\n ]\n})\nexport class TreeTableComponent<T extends TreeNode<T>> extends AbstractTableComponent<T> {\n\n @Input()\n @TrackExternal()\n treeTableModel: TreeTableModel<T>;\n\n constructor(elementRef: ElementRef, ngZone: NgZone) {\n super(elementRef, ngZone);\n }\n\n getModel(): AbstractTableModel<T> {\n return this.treeTableModel;\n }\n\n}\n","import { Component, HostListener, Input, OnInit, Self } from '@angular/core';\nimport { Command, FocusManager, TrackExternal } from '@coolon/pectin';\nimport { FocusContainerComponent } from '../focus-container/focus-container.component';\n\n@Component({\n selector: 'aup-vertical-focus-container',\n templateUrl: './vertical-focus-container.component.html',\n styleUrls: ['./vertical-focus-container.component.scss'],\n providers: [\n { provide: FocusManager }\n ]\n})\nexport class VerticalFocusContainerComponent extends FocusContainerComponent implements OnInit {\n\n @Input('command.arrowRight')\n @TrackExternal()\n rightArrowCommand: Command<void>;\n\n @Input('command.arrowLeft')\n @TrackExternal()\n leftArrowCommand: Command<void>;\n\n @HostListener('keyup.arrowLeft', ['$event'])\n arrowLeft(event: KeyboardEvent) {\n if (this.leftArrowCommand.enabled.value) {\n event.preventDefault();\n event.stopPropagation();\n this.leftArrowCommand.execute();\n }\n }\n\n @HostListener('keyup.arrowRight', ['$event'])\n arrowRight(event: KeyboardEvent) {\n if (this.rightArrowCommand.enabled.value) {\n event.preventDefault();\n event.stopPropagation();\n this.rightArrowCommand.execute();\n }\n }\n\n @HostListener('keyup.arrowDown', ['$event'])\n arrowDown(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.focusManager.focusNext();\n }\n\n @HostListener('keyup.arrowUp', ['$event'])\n arrowUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.focusManager.focusPrevious();\n }\n\n constructor(@Self() readonly focusManager: FocusManager) {\n super(focusManager);\n }\n\n ngOnInit() {\n }\n\n}\n","<ng-content></ng-content>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PageController, TrackExternal } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../disposable-component';\n\n@Component({\n selector: 'aup-paginator',\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.scss']\n})\nexport class PaginatorComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @TrackExternal()\n pageController: PageController;\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n }\n\n get totalPages(): number {\n return this.pageController.totalPages.value;\n }\n\n get pageNumber(): number {\n return this.pageController.pageNumber.value;\n }\n\n get previousCommand() {\n return this.pageController.previousCommand;\n }\n\n get nextCommand() {\n return this.pageController.nextCommand;\n }\n\n\n}\n","<p>Page {{pageNumber}} of {{totalPages}}</p>\n<button mat-icon-button [pectinCommand]=\"previousCommand\"><aup-icon icon=\"mat:keyboard_arrow_left\"></aup-icon></button>\n<button mat-icon-button [pectinCommand]=\"nextCommand\"><aup-icon icon=\"mat:keyboard_arrow_right\"></aup-icon></button>\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DisposableComponent } from '../disposable-component';\n\n@Component({\n selector: 'aup-labelled-value',\n templateUrl: './labelled-value.component.html',\n styleUrls: ['./labelled-value.component.scss']\n})\nexport class LabelledValueComponent extends DisposableComponent implements OnInit {\n\n // readonly i18n = I18nMarsUi.components.layout.valueDisplay;\n\n @Input()\n label: string;\n\n constructor() {\n super();\n // const {chain} = Dsl.disposeWith(this);\n }\n\n ngOnInit(): void {\n }\n\n}\n","<label>{{label}}</label>\n<ng-content></ng-content>\n","import { Component, ElementRef, Inject, Input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\n\nimport { isEmpty, isNil } from 'lodash';\nimport { MarkdownService } from '../../../services/markdown/markdown.service';\nimport { DisposableComponent } from '../../disposable-component';\n\n\n// TODO: Look at using unified parser: https://javascript.plainenglish.io/markdown-to-angular-rendering-using-unified-and-remark-96835bb877\n/**\n * @example\n * <aup-markdown [content]=\"...\"></aup-markdown>\n * <aup-markdown [content$]=\"stringValueModel$\"></aup-markdown>\n * <aup-markdown ngPreserveWhitespaces>\n * # This is markdown content\n *\n * With a list\n * - a\n * - b\n * </aup-markdown>\n */\n@Component({\n selector: 'aup-markdown, [aupMarkdown]',\n templateUrl: './markdown.component.html',\n styleUrls: ['./markdown.component.scss']\n})\nexport class MarkdownComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @TrackExternal()\n content$: ValueModel<string>;\n\n @Input()\n @StoreInValueModel('content$')\n content: string;\n\n @Input()\n inline = false;\n\n constructor(\n @Inject(PLATFORM_ID) private platform: Object,\n private readonly element: ElementRef<HTMLElement>,\n private readonly markdownService: MarkdownService) {\n super();\n const { chain } = Dsl.disposeWith(this);\n }\n\n ngOnInit() {\n const { when } = Dsl.disposeWith(this);\n when(this.content$).changes(content => this.renderContent(content), { initialValue: 'triggerChangeUnlessNil' });\n if (isNil(this.content) && !isEmpty(this.element.nativeElement.innerHTML)) {\n this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));\n }\n }\n\n private extractInnerContent(content: string) {\n const lines = content.split('\\n');\n const prefix = lines.reduce((minPrefix, line) => {\n const leadingWhitespace = line.search(/\\S/);\n return leadingWhitespace < 0 ? minPrefix : Math.min(minPrefix, leadingWhitespace);\n }, Number.MAX_SAFE_INTEGER);\n return lines.map(l => l.substr(prefix)).join('\\n');\n }\n\n private renderContent(content: string) {\n if (!isNil(content)) {\n const markdown = this.inline ?\n this.markdownService.renderInline(content) :\n this.markdownService.render(content);\n this.element.nativeElement.innerHTML = markdown;\n }\n }\n}\n","<ng-content></ng-content>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { FocusBindingFactory } from '../directives/focus-binding-factory';\nimport { MarkdownService } from '../services/markdown/markdown.service';\nimport { BusyOverlayComponent } from './busy-overlay/busy-overlay.component';\nimport { AbstractCardContainerComponent } from './cards/abstract-card-container.component';\nimport { CardContainerComponent } from './cards/card-container/card-container.component';\nimport { CardStackComponent } from './cards/card-stack/card-stack.component';\nimport { CommandFaceComponent } from './commands/command-face/command-face.component';\nimport { CommandComponent } from './commands/command/command.component';\nimport { FlexComponent } from './commands/flex.component';\nimport { AbstractPopupMenuComponent } from './commands/group/popup-menu/abstract-popup-menu.component';\nimport { MoreMenuComponent } from './commands/group/popup-menu/more-menu.component';\nimport { PopupMenuRendererComponent } from './commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component';\nimport { PopupMenuComponent } from './commands/group/popup-menu/popup-menu.component';\nimport { ToolBarComponent } from './commands/group/tool-bar/tool-bar.component';\nimport { SeparatorComponent } from './commands/separator.component';\nimport { EmptyStateComponent } from './empty-state/empty-state.component';\nimport { FocusContainerComponent } from './focus-container/focus-container.component';\nimport { FocusableComponent } from './focusable.component';\nimport { AbstractInputComponent } from './forms/abstract-input.component';\nimport { AbstractListInputComponent } from './forms/abstract-list-input.component';\nimport { AbstractValueInputComponent } from './forms/abstract-value-input.component';\nimport { AutocompleteInputComponent } from './forms/autocomplete-input/autocomplete-input.component';\nimport { CheckboxInputComponent } from './forms/checkbox-input/checkbox-input.component';\nimport { MultipleSelectInputComponent } from './forms/multiple-select-input/multiple-select-input.component';\nimport { NumberInputComponent } from './forms/number-input/number-input.component';\nimport { PasswordInputComponent } from './forms/password-input/password-input.component';\nimport { SelectInputComponent } from './forms/select-input/select-input.component';\nimport { StringInputComponent } from './forms/string-input/string-input.component';\nimport { TextInputComponent } from './forms/text-input/text-input.component';\nimport { IconComponent } from './icon/icon.component';\nimport { LoadingContainerComponent } from './loading-container/loading-container.component';\nimport { NoopComponent } from './noop/noop.component';\nimport { ScrollContainerComponent } from './scroll-container/scroll-container.component';\nimport { SectionHeaderComponent } from './section-header/section-header.component';\nimport {\n SwitchCaseComponent,\n SwitchCaseDefaultDirective,\n SwitchCaseWhenDirective\n} from './switch-case/switch-case.component';\nimport { AbstractTableComponent } from './tables/abstract-table.component';\nimport { ColumnTemplateDirective } from './tables/table/column-template/column-template.directive';\nimport { DefaultCellRendererComponent } from './tables/table/default-cell-renderer/default-cell-renderer.component';\nimport { DefaultHeaderCellRendererComponent } from './tables/table/default-header-cell-renderer/default-header-cell-renderer.component';\nimport { EditRowControls } from './tables/table/edit-row-controls/edit-row-controls.component';\nimport { SelectCellRendererComponent } from './tables/table/select-cell-renderer/select-cell-renderer.component';\nimport { SelectHeaderCellRendererComponent } from './tables/table/select-header-cell-renderer/select-header-cell-renderer.component';\nimport { TableCellRendererComponent } from './tables/table/table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './tables/table/table-header-cell-renderer/table-header-cell-renderer.component';\nimport { TableRowMenuComponent } from './tables/table/table-row-menu/table-row-menu.component';\nimport { TableComponent } from './tables/table/table.component';\nimport { TreeInheritanceIconComponent } from './tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component';\nimport { TreeLabelCellRendererComponent } from './tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport { TreeTableComponent } from './tables/tree-table/tree-table-component';\nimport { VerticalFocusContainerComponent } from './vertical-focus-container/vertical-focus-container.component';\nimport { PaginatorComponent } from './tables/table/paginator/paginator.component';\nimport { LabelledValueComponent } from './labelled-value/labelled-value.component';\nimport { MarkdownComponent } from './text/markdown/markdown.component';\n\n\nimport { fas } from '@fortawesome/free-solid-svg-icons';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule,\n DirectivesModule,\n MatIconModule,\n MatButtonModule,\n MatCheckboxModule,\n MatTableModule,\n PortalModule,\n CdkScrollableModule,\n FontAwesomeModule,\n MatTooltipModule,\n MatAutocompleteModule,\n MatMenuModule,\n MatDividerModule,\n MatProgressSpinnerModule,\n MatProgressBarModule\n ],\n declarations: [\n AbstractInputComponent,\n AbstractValueInputComponent,\n AbstractListInputComponent,\n NumberInputComponent,\n StringInputComponent,\n TextInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n MultipleSelectInputComponent,\n AutocompleteInputComponent,\n CheckboxInputComponent,\n ScrollContainerComponent,\n NoopComponent,\n SwitchCaseComponent,\n SwitchCaseWhenDirective,\n SwitchCaseDefaultDirective,\n FocusContainerComponent,\n VerticalFocusContainerComponent,\n FocusableComponent,\n CardContainerComponent,\n TableComponent,\n EditRowControls,\n ColumnTemplateDirective,\n DefaultCellRendererComponent,\n TableCellRendererComponent,\n SelectCellRendererComponent,\n SelectHeaderCellRendererComponent,\n DefaultHeaderCellRendererComponent,\n TableHeaderCellRendererComponent,\n IconComponent,\n SectionHeaderComponent,\n TableRowMenuComponent,\n ToolBarComponent,\n CommandComponent,\n PopupMenuComponent,\n CommandFaceComponent,\n MoreMenuComponent,\n SeparatorComponent,\n FlexComponent,\n AbstractPopupMenuComponent,\n PopupMenuRendererComponent,\n TreeTableComponent,\n TreeInheritanceIconComponent,\n TreeLabelCellRendererComponent,\n BusyOverlayComponent,\n EmptyStateComponent,\n PaginatorComponent,\n AbstractTableComponent,\n AbstractCardContainerComponent,\n CardStackComponent,\n LabelledValueComponent,\n LoadingContainerComponent,\n MarkdownComponent\n ],\n exports: [\n NumberInputComponent,\n StringInputComponent,\n TextInputComponent,\n PasswordInputComponent,\n CheckboxInputComponent,\n SelectInputComponent,\n MultipleSelectInputComponent,\n AutocompleteInputComponent,\n ScrollContainerComponent,\n NoopComponent,\n SwitchCaseComponent,\n SwitchCaseWhenDirective,\n SwitchCaseDefaultDirective,\n FocusContainerComponent,\n VerticalFocusContainerComponent,\n FocusableComponent,\n CardContainerComponent,\n TableComponent,\n EditRowControls,\n ColumnTemplateDirective,\n IconComponent,\n SectionHeaderComponent,\n TableRowMenuComponent,\n ToolBarComponent,\n CommandComponent,\n PopupMenuComponent,\n CommandFaceComponent,\n MoreMenuComponent,\n SeparatorComponent,\n FlexComponent,\n TreeTableComponent,\n BusyOverlayComponent,\n EmptyStateComponent,\n PaginatorComponent,\n CardStackComponent,\n LabelledValueComponent,\n LoadingContainerComponent,\n MarkdownComponent\n ],\n providers: [\n FocusBindingFactory,\n MarkdownService\n ]\n\n})\nexport class ComponentsModule {\n\n constructor(faIconLibrary: FaIconLibrary) {\n faIconLibrary.addIconPacks(fas);\n }\n}\n","import { ChangeDetectorRef, Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Command, TrackExternal } from '@coolon/pectin';\nimport { Enum } from 'typescript-string-enums';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { DisposableComponent } from '../../../components/disposable-component';\n\n/**\n * @example\n * <aup-activity-actions [confirmFace]=\"saveFace\" [cancelFace]=\"cancelFace\">\n * </aup-activity-actions>\n *\n * <aup-activity-actions [faces]=\"{confirm: saveFace, cancel: cancelFace}\">\n * </aup-activity-actions>\n *\n * // Running `ng g @coolon/angular-ui-powerups:aup-i18n` will install default\n * // style definitions\n * <aup-activity-actions [faces]=\"I18n.aup.components.activityActions.styles.okCancelIcons\">\n * </aup-activity-actions>\n *\n * // you can also add additional content that will be displayed along with the buttons.\n * // The location of the content depends on the alignment attribute.\n * <aup-activity-actions\n * align=\"stretch\"\n * [faces]=\"I18n.aup.components.activityActions.styles.okCancelIcons\">\n * <span>This content will be between the two commands</span>\n * </aup-activity-actions>\n */\n@Component({\n selector: 'aup-activity-actions',\n templateUrl: './activity-actions.component.html',\n styleUrls: ['./activity-actions.component.scss']\n})\nexport class ActivityActionsComponent extends DisposableComponent implements OnInit {\n\n /**\n * @deprecated activity actions now use the confirm command of the activity automatically\n */\n @Input()\n @TrackExternal()\n confirmCommand: Command<any>;\n\n /**\n * @deprecated activity actions now use the cancel command of the activity automatically\n */\n @Input()\n @TrackExternal()\n cancelCommand: Command<any>;\n\n @Input()\n set faces(faces: ActivityActionsComponent.Style) {\n this.confirmFace = faces.confirm;\n this.cancelFace = faces.cancel;\n }\n\n @Input()\n confirmFace: CommandFace;\n\n @Input()\n cancelFace: CommandFace;\n\n /**\n * @deprecated use #faces instead.\n */\n @Input()\n set style(style: ActivityActionsComponent.Style) {\n this.faces = style;\n }\n\n @Input()\n @HostBinding('attr.layout')\n layout: ActivityActionsComponent.Layout = ActivityActionsComponent.Layout.BLOCK;\n\n @Input()\n @HostBinding('attr.align')\n align: ActivityActionsComponent.Align = ActivityActionsComponent.Align.STRETCH;\n\n\n constructor(private readonly cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n }\n\n hasConfirmFace() {\n return !!this.confirmFace;\n }\n\n hasCancelFace() {\n return !!this.cancelFace;\n }\n\n initCommands(activity: { confirmCommand: Command<unknown>, cancelCommand: Command<unknown> }) {\n this.confirmCommand = activity.confirmCommand;\n this.cancelCommand = activity.cancelCommand;\n this.cdr.detectChanges();\n }\n\n}\n\nexport namespace ActivityActionsComponent {\n\n export const Layout = Enum({\n INLINE: 'inline',\n BLOCK: 'block'\n });\n export type Layout = Enum<typeof Layout>;\n\n export const Align = Enum({\n START: 'start',\n END: 'end',\n STRETCH: 'stretch'\n });\n export type Align = Enum<typeof Align>;\n\n export interface Style {\n confirm: CommandFace;\n cancel: CommandFace;\n }\n\n}\n","<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n","import { AfterViewInit, Component, forwardRef, HostBinding, InjectionToken, ViewChild } from '@angular/core';\nimport { Command, DelegatingValueModel, Dsl, Trace, TrackExternal, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { ActivityActionsComponent } from './components/activity-actions/activity-actions.component';\nimport { InteractionContext } from './interaction-context';\n\nexport const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');\n\n@Component({\n template: ''\n})\nexport class Activity<D, R, E = any> extends DisposableComponent implements AfterViewInit {\n\n private readonly _busyModel = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n private _focusedModel = this.registerDisposable(new DelegatingValueModel<boolean>());\n private _activityContext: Activity.Context<R, E>;\n\n @ViewChild(ActivityActionsComponent)\n protected activityActions: ActivityActionsComponent;\n\n @TrackExternal()\n public confirmCommand: Command<unknown>;\n\n @TrackExternal()\n public cancelCommand: Command<unknown>;\n\n // @Trace()\n private _interactionContext: InteractionContext;\n\n @HostBinding('class') class = 'aup-activity';\n\n @HostBinding('attr.focused')\n get isFocused() {\n return this._focusedModel.value;\n }\n\n constructor() {\n super();\n this.busyWhile(this.confirmCommand.busy);\n }\n\n initialise(nestedInteractionContext: InteractionContext, activityContext: Activity.Context<R, E>): void {\n const { chain, when } = Dsl.disposeWith(this);\n assert.isNil(this._activityContext);\n this._activityContext = activityContext;\n this._interactionContext = nestedInteractionContext;\n this._focusedModel.setDelegate(activityContext.focused);\n when(this._focusedModel).becomesTruthy(() => {\n this.onActivityReady();\n });\n }\n\n ngAfterViewInit() {\n this.activityActions?.initCommands(this);\n }\n\n get interactionContext() {\n assert.isTruthy(this.isInitialised());\n return this._interactionContext;\n }\n\n done(result?: R): void {\n return this._activityContext.onDone(result);\n }\n\n cancel(error?: E): void {\n this._activityContext.onCancel(error);\n }\n\n // @Trace()\n onActivityReady() {\n }\n\n get busy(): ValueModel<boolean> {\n return this._busyModel.readonly;\n }\n\n get focused(): ValueModel<boolean> {\n return this._focusedModel.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 isInitialised() {\n return !!this._activityContext;\n }\n}\n\nexport namespace Activity {\n\n export interface Context<R, E> {\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n focused: ValueModel<boolean>\n }\n}\n","\nimport { isFunction } from 'lodash';\n\nexport interface Alert {\n title?(): string;\n\n color?(): string;\n\n content(): string | string[];\n\n ok(): string;\n}\n\nexport namespace Alert {\n\n export function getContent(alert: Alert): string[] {\n const content = alert.content();\n return Array.isArray(content) ? content : [content];\n }\n\n export function getTitle(alert: Alert): string {\n return isFunction(alert.title) ? alert.title() : undefined;\n }\n\n export function getColor(alert: Alert): string {\n return isFunction(alert.color) ? alert.color() : undefined;\n }\n}\n","import { Component, Inject, InjectionToken } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { lang } from '@coolon/typescript-utilities';\nimport {isFunction} from \"lodash\";\nimport { CommandFace } from '../../components/commands/command-face';\nimport { Activity } from '../activity';\nimport { Alert } from '../alert';\nimport { Confirm } from '../confirm';\n\nexport const ALERT_CONFIG = new InjectionToken<any>('AlertConfig');\n@Component({\n template: ''\n})\nexport class AbstractDialogComponent<D, R, E = any> extends Activity<D, R, E> {\n\n readonly confirmFace: CommandFace;\n readonly title: string;\n readonly content: string[];\n readonly color?: 'primary' | 'accent' | 'warn';\n\n constructor(@Inject(ALERT_CONFIG) protected readonly config: Alert | Confirm) {\n super();\n assert.notNil(config);\n this.title = Alert.getTitle(config);\n this.color = this.checkColor(Alert.getColor(config));\n this.content = Alert.getContent(config);\n\n this.confirmFace = {\n text: () => config.ok(),\n color: () => this.color || 'primary',\n style: () => 'raised'\n };\n }\n\n getConfig():Alert | Confirm {\n return lang.abstractMethod(this.constructor)\n }\n\n protected checkColor(rawColor: string): 'primary' | 'accent' | 'warn' {\n if (this.isDestructive()) {\n return 'warn';\n } else {\n if (['primary', 'accent', 'warn'].includes(rawColor)) {\n return rawColor as 'primary' | 'accent' | 'warn';\n } else {\n console.warn(`Invalid color string ${rawColor}`);\n return undefined;\n }\n }\n }\n\n isDestructive(): boolean {\n // @ts-ignore\n return isFunction(this.config['destructive']) && this.config.destructive();\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { assert, Command } from '@coolon/pectin';\nimport { CommandFace } from '../../components/commands/command-face';\nimport { Confirm } from '../confirm';\nimport { AbstractDialogComponent, ALERT_CONFIG } from './abstract-dialog.component';\n\n@Component({\n template: ''\n})\nexport class AbstractConfirmDialogComponent<D, R, E = any> extends AbstractDialogComponent<D, R, E> {\n\n readonly cancelFace: CommandFace;\n\n constructor(@Inject(ALERT_CONFIG) config: Confirm) {\n super(config);\n this.cancelFace = {\n text: () => config.cancel()\n };\n this.cancelCommand = Command.create(() => {\n return this.cancel();\n });\n }\n\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\nimport { isNil } from 'lodash';\nimport { DisposableComponent } from '../../../components/disposable-component';\n\n@Component({\n selector: 'aup-activity-title',\n templateUrl: './activity-title.component.html',\n styleUrls: ['./activity-title.component.scss']\n})\nexport class ActivityTitleComponent extends DisposableComponent implements OnInit {\n\n private _color: ThemePalette;\n private _hasUserTransparentBackground: boolean;\n\n /**\n * Adjusts layout to ensure the title and body are cleanly separated with even\n * gaps for teh case where the title component has a painted background.\n */\n @Input()\n @HostBinding('class.transparent-background')\n set hasTransparentBackground(value: boolean) {\n this._hasUserTransparentBackground = value;\n }\n\n get hasTransparentBackground(): boolean {\n return isNil(this._hasUserTransparentBackground) ? !this._color : this._hasUserTransparentBackground;\n }\n\n\n @Input()\n @HostBinding('attr.color')\n set color(color: ThemePalette) {\n this._color = color;\n }\n\n get color() {\n return this._color;\n }\n\n ngOnInit() {\n }\n\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { Command, DelegatingCommand, TrackExternal } from '@coolon/pectin';\n\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { DisposableComponent } from '../../../components/disposable-component';\n\n@Component({\n selector: 'aup-activity-body',\n templateUrl: './activity-body.component.html',\n styleUrls: ['./activity-body.component.html'],\n})\nexport class ActivityBodyComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @HostBinding(\"class.full-width\")\n fullWidth = false;\n\n ngOnInit() {\n }\n\n}\n","<ng-content></ng-content>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { Command } from '@coolon/pectin';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { AbstractDialogComponent } from '../abstract-dialog.component';\n\n@Component({\n selector: 'aup-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss']\n})\nexport class AlertDialogComponent extends AbstractDialogComponent<Alert, void> {\n\n constructor(@Inject(ACTIVITY_DATA) alert: Alert) {\n super(alert);\n this.confirmCommand = Command.create(() => {\n this.done();\n });\n }\n}\n","<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\"></aup-activity-actions>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert, Command, Constructable } from '@coolon/pectin';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { AbstractConfirmDialogComponent } from '../abstract-confirm-dialog.component';\n\n@Component({\n selector: 'aup-confirmation-dialog',\n templateUrl: './confirm-then-dialog.component.html',\n styleUrls: ['./confirm-then-dialog.component.scss']\n})\nexport class ConfirmThenDialogComponent<D, R, E> extends AbstractConfirmDialogComponent<ConfirmThenDialogComponent.Data<D, R, E>, R, E> {\n\n constructor(@Inject(ACTIVITY_DATA) config: ConfirmThenDialogComponent.Data<D, R, E>) {\n super(config.confirm);\n\n this.confirmCommand = Command.create(() => {\n this.interactionContext.startActivity(config.activityType, config.data)\n .then((result) => this.done(result))\n .catch(error => this.cancel(error));\n });\n }\n\n}\n\nexport namespace ConfirmThenDialogComponent {\n export interface Data<D, R, E> {\n confirm: Confirm,\n activityType: Constructable<Activity<D, R, E>>,\n data: D\n }\n}\n","<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n","import { Component, Inject } from '@angular/core';\nimport { assert, Command } from '@coolon/pectin';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { AbstractConfirmDialogComponent } from '../abstract-confirm-dialog.component';\n\n@Component({\n selector: 'aup-confirmation-execute-dialog',\n templateUrl: './confirm-then-execute-dialog.component.html',\n styleUrls: ['./confirm-then-execute-dialog.component.scss']\n})\nexport class ConfirmThenExecuteDialogComponent<R, E> extends AbstractConfirmDialogComponent<ConfirmThenExecuteDialogComponent.Data<R, E>, R, E> {\n\n constructor(@Inject(ACTIVITY_DATA) data: ConfirmThenExecuteDialogComponent.Data<R, E>) {\n super(data.confirm);\n this.confirmCommand = Command.create(async () => {\n try {\n const result = await data.operation(this.interactionContext);\n this.done(result);\n } catch (e) {\n this.cancel(e);\n }\n });\n\n }\n}\n\nexport namespace ConfirmThenExecuteDialogComponent {\n\n export interface Data<R, E> {\n confirm: Confirm,\n operation: (interactionContext:InteractionContext) => R | Promise<R>;\n }\n}\n","<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert, Command } from '@coolon/pectin';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { AbstractConfirmDialogComponent } from '../abstract-confirm-dialog.component';\n\n@Component({\n selector: 'aup-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent extends AbstractConfirmDialogComponent<Confirm, void> {\n\n constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {\n super(confirm);\n\n this.confirmCommand = Command.create(() => {\n return this.done();\n });\n\n }\n}\n","<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n\n","import { Constructable, Disposable } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmThenExecuteDialogComponent } from './components/confirm-then-execute-dialog/confirm-then-execute-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from './confirm';\nimport { InteractionContext } from './interaction-context';\n\n\nexport abstract class AbstractInteractionContext implements InteractionContext {\n abstract readonly identifier: string;\n\n abstract cancelActiveActivity(): Promise<boolean>;\n\n abstract dispose(): void;\n\n abstract registerDisposable<T extends Disposable>(disposable: T): T;\n\n abstract isActive(): boolean;\n\n protected abstract createAndLaunchActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean): Promise<R>;\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D, options?: InteractionContext.Options): Promise<R> {\n return this.createAndLaunchActivity(activityType, data, Opts.get(options).getOptional('disableClose', false));\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n // Important: we have to implement confirmOrReject as the main entry point\n // as the canDeactivation guards need to be able to cancel an interaction\n // without caring about returning a value.\n return this.confirmOrReject(confirm).then(() => true).catch(() => false);\n }\n\n alert(alert: Alert): Promise<void> {\n // TODO: Test disableClose === false\n return this.createAndLaunchActivity(AlertDialogComponent, alert, false);\n }\n\n confirmOrReject(confirm: Confirm): Promise<void> {\n return this.createAndLaunchActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n /**\n * Presents the confirmation to the user and runs the activity only if the user confirms.\n * @param confirm:Confirm the confirmation to display.\n * @param activityType the activity to run if confirmed.\n * @param data the activity data.\n */\n confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this.createAndLaunchActivity<ConfirmThenDialogComponent.Data<D, R, E>, R, E>(ConfirmThenDialogComponent, {\n confirm,\n activityType: activityType,\n data: data\n }, true);\n }\n\n confirmThenExecute<R>(confirm: Confirm, operation: (interactionContext:InteractionContext) => (Promise<R> | R)): Promise<R> {\n return this.createAndLaunchActivity<ConfirmThenExecuteDialogComponent.Data<R, unknown>, R, unknown>(ConfirmThenExecuteDialogComponent, {\n confirm,\n operation: operation\n }, true);\n\n }\n\n\n\n}\n","import { assert, Constructable, Deferred, Form, MutableValueModel, DelegatingValueModel, Trace, ValueModel } from '@coolon/pectin';\nimport { Activity } from './activity';\nimport { InteractionContext } from './interaction-context';\n\nexport class ActivityRef<D, R, E> {\n\n private _complete = false;\n private _activity: Activity<D, R, E>;\n private deferredResult = Deferred.defer<R>();\n private readonly focusedModel = new MutableValueModel<boolean>();\n private readonly _activityBusy = new DelegatingValueModel<boolean>().withDefault(false);\n\n constructor(readonly activityClass: Constructable<Activity<D, R, E>>,\n readonly activityData: D,\n readonly onComplete: (activityRef: ActivityRef<D, R, E>) => void) {\n }\n\n isActivityRealised(): boolean {\n return !!this._activity;\n }\n\n isComplete() {\n return this._complete;\n }\n\n get activity(): Activity<D, R, E> {\n assert.isTruthy(this.isActivityRealised());\n return this._activity;\n }\n\n setFocused(focused: boolean) {\n this.focusedModel.value = focused;\n }\n\n get focused() {\n return this.focusedModel.value\n }\n\n notifyActivityCreated(activity: Activity<D, R, E>, nestedInteractionContext: InteractionContext) {\n assert.isNil(this._activity);\n this._activity = activity;\n const self = this;\n this._activity.initialise(nestedInteractionContext, {\n onDone(result: R) {\n self.finishActivity(deferred => deferred.resolve(result));\n },\n onCancel(error: E) {\n self.finishActivity(deferred => deferred.reject(error));\n },\n focused: this.focusedModel.readonly\n });\n this._activityBusy.setDelegate(this._activity.busy);\n }\n\n protected finishActivity(resolveOrReject: (deferred: Deferred<R>) => void) {\n\n assert.isFalsey(this.isComplete());\n resolveOrReject(this.deferredResult);\n this._complete = true;\n this.onComplete(this);\n this._activityBusy.dispose();\n }\n\n cancel() {\n this.activity.cancel();\n }\n\n get activityResult(): Promise<R> {\n return this.deferredResult.promise;\n }\n\n get activityBusy() {\n return this._activityBusy.readonly;\n }\n\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Injector,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { lang } from '@coolon/typescript-utilities';\nimport { Activity, ACTIVITY_DATA } from '../../../activity';\nimport { ActivityRef } from '../../../activity-ref';\nimport { InteractionContext } from '../../../interaction-context';\n\n/**\n * ActivityOutletComponent creates and displays an activity and delegates the interaction context functionality to an\n * external service.\n */\n@Component({\n selector: 'aup-activity-outlet',\n template: '',\n styleUrls: ['./activity-outlet.component.scss']\n})\nexport class ActivityOutletComponent<D, R, E> implements OnInit {\n\n private activityComponentRef: ComponentRef<Activity<D, R, E>>;\n\n @Input()\n nestedInteractionContext: InteractionContext;\n\n private _activityRef: ActivityRef<D, R, E>;\n\n @Input()\n set activityRef(activityRef: ActivityRef<D, R, E>) {\n if (this.activityRef && !this.activityRef.isComplete()) {\n lang.illegalState('changing activity before previous one has completed');\n }\n this._activityRef = activityRef;\n this.loadActivity(activityRef);\n };\n\n get activityRef(): ActivityRef<D, R, E> {\n return this._activityRef;\n }\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n }\n\n ngOnInit() {\n }\n\n loadActivity(activityRef: ActivityRef<D, R, E>) {\n const injector = Injector.create({\n providers: [\n { provide: ACTIVITY_DATA, useValue: activityRef.activityData }\n ],\n parent: this.injector\n });\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityRef.activityClass);\n this.viewContainerRef.clear();\n // console.log(`creating component -> ${activityRef.activityClass.name}`);\n this.activityComponentRef = this.viewContainerRef.createComponent(componentFactory, 0, injector);\n this.activityRef.notifyActivityCreated(this.activityComponentRef.instance, this.nestedInteractionContext);\n }\n\n get component(): Activity<D, R, E> {\n return this.activityComponentRef.instance;\n }\n\n}\n","import { AfterViewInit, Component, Input, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { MatTabGroup } from '@angular/material/tabs';\nimport {\n assert,\n Constructable,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector,\n MutableValueModel,\n Trace\n} from '@coolon/pectin';\nimport { lang } from '@coolon/typescript-utilities';\n\nimport { findLast } from 'lodash';\nimport { slideDownOnEnterAnimation } from '../../../animations/slide-animations';\nimport { AbstractInteractionContext } from '../../abstract-interaction-context';\nimport { Activity } from '../../activity';\nimport { ActivityRef } from '../../activity-ref';\nimport { InteractionService } from '../../services/interaction.service';\nimport { ActivityOutletComponent } from './activity-outlet/activity-outlet.component';\n\n@Component({\n selector: 'aup-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent<D, R, E> extends AbstractInteractionContext implements OnInit, AfterViewInit {\n\n @Input()\n dynamicHeight = false;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n @ViewChildren(ActivityOutletComponent)\n activityOutlets: QueryList<ActivityOutletComponent<any, any, any>>;\n\n activityRefs: ActivityRef<any, any, any>[] = [];\n\n private _identifier: string;\n private _deferredCleanUp: Promise<any>;\n\n private interactionServiceApi: InteractionService.Api;\n\n private garbage = new GarbageCollector();\n private syncSelectedTabTimeout: any;\n private onAnimationFinishedJob: () => void;\n\n readonly inAnimation = new MutableValueModel<boolean>(false);\n\n readonly busy = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n\n constructor() {\n super();\n this.registerDisposable(this.busy);\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { chain, observe } = Dsl.disposeWith(this);\n // using the component directly rather than (animationDone)=.. allows us\n // to keep our callback private.\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.onAnimationFinished());\n }\n\n initialise(identifier: string, api: InteractionService.Api) {\n assert.isFalsey(this.isInitialised());\n assert.notNil(identifier);\n assert.notNil(api);\n this._identifier = identifier;\n this.interactionServiceApi = api;\n }\n\n get identifier() {\n return this._identifier;\n }\n\n isInitialised() {\n return !!this.identifier;\n }\n\n /**\n * Returns true if an activity is currently running.\n */\n isActive(): boolean {\n return this.getActiveActivityCount() > 0;\n }\n\n registerDisposable<T extends Disposable>(disposable: T): T {\n return this.garbage.registerDisposable(disposable);\n }\n\n // @Trace()\n dispose(): void {\n // TODO: think about auto cancelling any outstanding activity on dispose.\n // See NavigationState.Navigating for a use-case.\n assert.isFalsey(this.isActive());\n this.garbage.dispose();\n }\n\n getActiveActivityRef(): ActivityRef<any, any, any> {\n if (!this.isActive()) {\n lang.illegalState('no activity in progress');\n }\n return findLast(this.activityRefs, tab => !tab.isComplete());\n }\n\n /**\n * Cancels the current activity and returns true the context is no longer active, false if\n * there is still another activity running.\n */\n // @Trace()\n async cancelActiveActivity(): Promise<boolean> {\n const activity = this.getActiveActivityRef();\n activity.cancel();\n if (this.isCleaningUp()) {\n return this.waitForInteractionContextCleanupToFinish();\n } else {\n return !this.isActive();\n }\n }\n\n // TODO: this handling of multiple nested activities is only used by the activity component and is not a general case.\n // @Trace()\n protected createAndLaunchActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data: D1, disableClose: boolean): Promise<R1> {\n assert.isTruthy(this.isInitialised()); // make sure we've been initialised\n const activityRef = new ActivityRef<D1, R1, E1>(activityType, data, () => {\n const activeActivityCount = this.getActiveActivityCount() > 0;\n if (activeActivityCount) {\n this.triggerTabSynchronisation();\n } else {\n this.finishAndStartCleanup();\n }\n });\n this.launchActivity(activityRef);\n // if this is the first activity let the interaction service know.\n if (this.activityRefs.length === 1) {\n // console.log('Now active!!!');\n this.interactionServiceApi.notifyActive(this);\n }\n return activityRef.activityResult;\n }\n\n private getActiveActivityCount(): number {\n return this.activityRefs.filter(ref => !ref.isComplete()).length;\n }\n\n /**\n * Checks if this interaction context has finished an is in the process of waiting\n * for all the infrastructure (including route updates) to be completed.\n */\n isCleaningUp(): boolean {\n return !!this._deferredCleanUp;\n }\n\n async waitForInteractionContextCleanupToFinish(): Promise<any> {\n return this._deferredCleanUp ?\n this._deferredCleanUp :\n true;\n }\n\n // @Trace()\n private finishAndStartCleanup(): void {\n if (!this._deferredCleanUp) {\n // Important:\n // Clear our tabs so the next activity triggers a tab change.\n // Without this our animation done wasn't called when a single\n // new activity followed a single tab activity (since we're tracking\n // by activity index)\n this.activityRefs = [];\n const promise = this.interactionServiceApi.notifyFinished(this);\n this._deferredCleanUp = promise\n .finally(() => {\n this._deferredCleanUp = null;\n });\n }\n }\n\n// @Trace()\n launchActivity<D1, R1, E1>(activityRef: ActivityRef<D1, R1, E1>) {\n const cleanedTabs = this.activityRefs.filter(tab => !tab.isComplete());\n this.activityRefs = cleanedTabs.concat(activityRef);\n this.synchroniseSelectedTabIndex();\n }\n\n activityIndex(index: number, activityRef: ActivityRef<any, any, any>) {\n return index;\n };\n\n // @Trace()\n private onAnimationFinished() {\n if (this.onAnimationFinishedJob) {\n this.onAnimationFinishedJob();\n this.onAnimationFinishedJob = undefined;\n }\n }\n\n /**\n * Synchronises the selected tab index.\n */\n // @Trace()\n private synchroniseSelectedTabIndex(): void {\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.getActiveActivityCount() - 1;\n if (previousIndex !== newIndex) {\n this.inAnimation.value = true;\n this.activityRefs[newIndex].setFocused(false);\n this.busy.setDelegate(this.activityRefs[newIndex].activityBusy)\n this.tabs.selectedIndex = newIndex;\n this.onAnimationFinishedJob = () => {\n this.activityRefs = this.activityRefs.filter(tab => !tab.isComplete());\n this.inAnimation.value = false;\n this.activityRefs.forEach((ref, index) => {\n ref.setFocused(index === newIndex)\n })\n };\n }\n }\n\n private getSelectedOutlet() {\n return this.activityOutlets.toArray()[this.tabs.selectedIndex];\n }\n\n // @Trace()\n getSelectedTabIndex() {\n return this.tabs.selectedIndex;\n }\n\n // @Trace()\n private triggerTabSynchronisation() {\n if (this.syncSelectedTabTimeout) {\n clearTimeout(this.syncSelectedTabTimeout);\n }\n this.syncSelectedTabTimeout = setTimeout(() => {\n this.syncSelectedTabTimeout = null;\n this.synchroniseSelectedTabIndex();\n }, 75);\n }\n}\n","<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busyModel]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { assert, Command, Constructable, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\nimport { lang } from '@coolon/typescript-utilities';\nimport { HorizontalAlignment } from '../../../components/alignment';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\nimport { InputActivity } from '../input-activities/input-activity';\n\n@Component({\n selector: 'aup-abstract-activity-trigger',\n template: ''\n})\nexport class AbstractActivityTriggerComponent<D = any, R = any, E = any> extends DisposableComponent implements OnInit {\n\n @Input()\n @StoreInValueModel('activityClassModel')\n activityClass: Constructable<Activity<D, R, E>>;\n\n @Input()\n @TrackExternal()\n activityClassModel: ValueModel<Constructable<Activity<D, R, E>>>;\n\n @Input()\n @StoreInValueModel('activityDataModel')\n activityData: D;\n\n @Input()\n @TrackExternal()\n activityDataModel: ValueModel<D>;\n \n @Input()\n @StoreInValueModel('faceModel')\n face: CommandFace;\n\n @Input()\n @TrackExternal()\n faceModel: ValueModel<CommandFace>;\n\n @Input()\n alignFace: HorizontalAlignment = HorizontalAlignment.CENTER;\n\n readonly startActivityCommand: Command<unknown>;\n\n get interactionContext(): InteractionContext {\n return lang.abstractMethod(this.constructor)\n }\n\n @Output()\n confirmEvent = new EventEmitter<R>();\n\n @Output()\n cancelEvent = new EventEmitter<E>();\n\n constructor() {\n super();\n this.startActivityCommand = Command.create(() => {\n assert.notNil(this.activityClass);\n assert.notNil(this.interactionContext);\n this.interactionContext.startActivity(this.activityClass, this.activityData)\n .then(result => {\n this.confirmEvent.emit(result);\n }).catch(error => {\n this.cancelEvent.emit(error);\n });\n });\n }\n\n ngOnInit(): void {\n }\n\n @HostBinding('class.active')\n get isActive() {\n return this.interactionContext?.isActive();\n }\n\n}\n","import { ListModel, Trace, ValueModel } from '@coolon/pectin';\nimport { PlaceComponent } from '../../place/place-component';\nimport { InteractionContext } from '../interaction-context';\n\nexport class InteractionServiceRoutingAdapter {\n\n constructor(private readonly activeInteractionContextIds: ListModel<string>,\n private readonly activeModalContext: ValueModel<InteractionContext>,\n readonly createExclusiveInteractionContext: () => InteractionContext) {\n }\n\n isActive(): boolean {\n return this.getActiveInteractionContextIds().length > 0;\n }\n\n isModalActive(): boolean {\n return !!this.activeModalContext.value;\n }\n\n // @Trace()\n isComponentInteracting(component: PlaceComponent): boolean {\n return component.interactionContext && component.interactionContext.isActive();\n }\n\n getActiveInteractionContextIds(): string[] {\n return this.activeInteractionContextIds.value;\n }\n\n // @Trace()\n cancelCurrentModalInteraction(): Promise<boolean> {\n return this.activeModalContext.value.cancelActiveActivity();\n }\n\n // @Trace()\n cancelComponentInteraction(component: PlaceComponent): Promise<boolean> {\n return component.interactionContext.cancelActiveActivity();\n }\n\n}\n","import { InteractionContext } from '../interaction-context';\nimport { InteractionService } from './interaction.service';\n\nexport abstract class ModalInteractionContextFactory {\n\n abstract createInteractionContext(identifier: string, api: InteractionService.Api): InteractionContext;\n}\n","import { Injectable } from '@angular/core';\nimport {\n BooleanValueModelChain,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector, ListModel,\n ListModelChain,\n MutableListModel,\n MutableValueModel, Trace,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { PlaceRouter } from '../../place/place-router';\nimport { InPlaceInteractionContext } from \"../in-place-interaction-context\";\nimport { InteractionContext } from '../interaction-context';\nimport { InteractionServiceRoutingAdapter } from './interaction-service-routing-adapter';\n\nimport { ModalInteractionContextFactory } from './modal-interaction-context.factory';\n\nlet inplaceMonitorCount = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n\n private readonly garbage = new GarbageCollector();\n readonly active: BooleanValueModelChain;\n\n // private readonly _activeModalContext = new MutableValueModel<InteractionContext>();\n // private readonly _activeInlineContext = new MutableValueModel<InteractionContext>();\n // private readonly _activeContext: ValueModelChain<InteractionContext>;\n private readonly _navigationInProgress = new DelegatingValueModel<boolean>().withDefault(false);\n\n private placeRouter: PlaceRouter;\n private exclusiveInteractionRegistry: InteractionService.ContextRegistry;\n private modalInteractionRegistry: InteractionService.ContextRegistry;\n private inPlaceInteractionRegistry: InteractionService.ContextRegistry;\n private activeModalContext: ValueModelChain<InteractionContext>;\n\n readonly activeInteractionContextIds: ListModelChain<string>;\n readonly inModalInteraction: BooleanValueModelChain;\n\n constructor(readonly modelInteractionContextFactory: ModalInteractionContextFactory) {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this.garbage);\n\n this.exclusiveInteractionRegistry = new InteractionService.ContextRegistry();\n this.modalInteractionRegistry = new InteractionService.ContextRegistry();\n this.inPlaceInteractionRegistry = new InteractionService.ContextRegistry();\n\n this.modalInteractionRegistry.disableWhen(valueOf.any(\n this.exclusiveInteractionRegistry.active,\n this.modalInteractionRegistry.active\n ).areTruthy());\n\n this.inPlaceInteractionRegistry.disableWhen(valueOf.any(\n this.exclusiveInteractionRegistry.active,\n this.modalInteractionRegistry.active,\n this.inPlaceInteractionRegistry.active\n ).areTruthy());\n\n this.active = valueOf.any(\n this.inPlaceInteractionRegistry.active,\n this.modalInteractionRegistry.active\n ).areTruthy();\n\n\n // TODO: chain.concat(listOrValueModels) would be nice.\n this.activeInteractionContextIds = chain(this.inPlaceInteractionRegistry.interactionContextIds)\n .concat(this.modalInteractionRegistry.interactionContextIds);\n\n this.activeModalContext = chain(this.modalInteractionRegistry.interactionContexts).first();\n this.inModalInteraction = chain(this.activeModalContext).isNotNil();\n\n }\n\n isActive(): boolean {\n return this.active.value;\n }\n\n /**\n * @deprecated use #createModalInteractionContextDisposedWith instead.\n * @param disposable\n */\n createModalInteractionContextFor(disposable: Disposable.Collector): InteractionContext {\n return this.createModalInteractionContextDisposedWith(disposable);\n }\n\n /**\n * Creates a new model interaction context that will be disposed along with the component.\n * @param disposable\n */\n createModalInteractionContextDisposedWith(disposable: Disposable.Collector): InteractionContext {\n // TODO: look at making the registry the factory..\n return this.modelInteractionContextFactory.createInteractionContext('modal', new InteractionService.ApiAdapter(this.placeRouter, this.modalInteractionRegistry));\n }\n\n registerInplaceInteractionContext(interactionContext: InPlaceInteractionContext) {\n // TODO: look at making the registry the factory..\n // Todo: check for double registration.\n // Todo: allow multiple inplace interactions..\n interactionContext.initialise(`ip${++inplaceMonitorCount}`, new InteractionService.ApiAdapter(this.placeRouter, this.inPlaceInteractionRegistry));\n }\n\n\n /**\n * Creates an interaction context that will prevent any other contexts from starting an\n * activity until it is disposed. This is intended for use by the router for passing\n * to PlaceComponent.canDeactivate(interactionContext). This ensures components don't\n * try and interact in a way that we can't track and synchronise with the browser back\n * button.\n */\n registerPlaceRouter(router: PlaceRouter): InteractionServiceRoutingAdapter {\n assert.isFalsey(this.placeRouter);\n this.placeRouter = router;\n this._navigationInProgress.setDelegate(this.placeRouter.navigationInProgress);\n const self = this;\n return new InteractionServiceRoutingAdapter(\n this.activeInteractionContextIds,\n this.activeModalContext,\n () => {\n return self.modelInteractionContextFactory.createInteractionContext('exclusive', new InteractionService.ApiAdapter(this.placeRouter, this.exclusiveInteractionRegistry));\n });\n }\n\n}\n\nexport namespace InteractionService {\n\n export interface Api {\n\n /**\n * Notifies the interaction service that a particular interactionContext has become active. The interaction\n * services will then push changes to the router to track state. If the router is idle, the promise will\n * resolve when the routing has finished updating. Otherwise it will return immediately.\n * @param interactionContext\n */\n notifyActive(interactionContext: InteractionContext): Promise<unknown>;\n\n /**\n * Notifies the interaction service that a particular interactionContext has become idle. The interaction\n * services will then push changes to the router to track state. If the router is idle, the promise will\n * resolve when the routing has finished updating. Otherwise it will return immediately.\n * @param interactionContext\n */\n notifyFinished(interactionContext: InteractionContext): Promise<unknown>;\n }\n\n /**\n * Provides a mechanism for the service to keep track of what the API adapters are doing to\n * ensure the rules are followed, i.e. modal or in-place interaction aren't started while\n * an exclusive routing interaction is active.\n */\n export class ContextRegistry extends GarbageCollector {\n\n private _interactions = new MutableListModel<InteractionContext>();\n private _disabledDelegate = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n readonly active: BooleanValueModelChain;\n readonly interactionContextIds: ListModelChain<string>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.active = chain(this._interactions).isNotEmpty();\n this.interactionContextIds = chain(this._interactions).pluck(\"identifier\");\n }\n\n get interactionContexts():ListModel<InteractionContext> {\n return this._interactions.readonly;\n }\n\n start(context: InteractionContext) {\n this._interactions.push(context);\n }\n\n finish(context: InteractionContext) {\n this._interactions.remove(context);\n }\n\n isActive() {\n return this.active.value;\n }\n\n disableWhen(disabled: ValueModel<boolean>) {\n this._disabledDelegate.setDelegate(disabled);\n }\n }\n\n export class ApiAdapter implements Api {\n\n constructor(private readonly placeRouter: PlaceRouter, private readonly contextRegistry: ContextRegistry) {\n }\n\n // @Trace()\n notifyActive(context: InteractionContext): Promise<any> {\n assert.isTruthy(context.identifier);\n this.contextRegistry.start(context);\n return this.isNavigationInProgress() ? Promise.resolve() : this.placeRouter.syncInteractionContextIdsWithRouter();\n }\n\n // @Trace()\n private isNavigationInProgress() {\n return this.placeRouter.navigationInProgress.value;\n }\n\n // @Trace()\n notifyFinished(context: InteractionContext): Promise<any> {\n this.contextRegistry.finish(context);\n // :: Important ::\n // This method will be traversed by both the place router (during can canDeactivate guards) and user land code\n // (both when routing is idle and while it is active in PlaceComponent.canDeactivate()).\n // The result of pushInteractionIdsToRoute will not start until after the current route finishes, and the\n // current route won't finish until after this promise returns... Deadlock.\n // So in order to keep this logic out of the activities we perform the check here and ensure that\n // any interactions with the context while routing is active returns immediately.\n return this.isNavigationInProgress() ? Promise.resolve() : this.placeRouter.syncInteractionContextIdsWithRouter();\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport { Activity } from '../../../activity';\nimport { InteractionContext } from '../../../interaction-context';\nimport { InteractionService } from '../../../services/interaction.service';\nimport { AbstractActivityTriggerComponent } from '../abstract-activity-trigger.component';\n\n@Component({\n selector: 'aup-modal-activity-trigger',\n templateUrl: './modal-activity-trigger.component.html',\n styleUrls: ['./modal-activity-trigger.component.scss']\n})\nexport class ModalActivityTriggerComponent<D = any, R = any, E = any> extends AbstractActivityTriggerComponent<D, R, E> {\n\n _interactionContext: InteractionContext;\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n\n constructor(interactionService: InteractionService) {\n super();\n this._interactionContext = interactionService.createModalInteractionContextDisposedWith(this);\n }\n}\n","<aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n","import { AfterViewInit, Component, HostBinding, Inject, Input, Optional, ViewChild } from \"@angular/core\";\nimport { MAT_TABS_CONFIG, MatTabsConfig } from \"@angular/material/tabs\";\nimport { Constructable } from \"@coolon/pectin\";\nimport { DisposableComponent } from \"../../../components/disposable-component\";\nimport { Activity } from \"../../activity\";\nimport { Alert } from \"../../alert\";\nimport { Confirm } from \"../../confirm\";\nimport { InPlaceInteractionContext } from \"../../in-place-interaction-context\";\nimport { InteractionContext } from \"../../interaction-context\";\nimport { InteractionService } from \"../../services/interaction.service\";\nimport { ActivityContainerComponent } from \"../activity-container/activity-container.component\";\n\n/**\n * @example\n * <aup-in-place-interaction-context #inPlaceInteractionContext>\n * </aup-in-place-interaction-context>\n *\n * in your component\n * @ViewChild('inPlaceInteractionContext', { static: true })\n * interactionContext: InteractionContext;\n *\n *\n */\n@Component({\n selector: \"aup-in-place-interaction-context\",\n templateUrl: \"./in-place-interaction-context.component.html\",\n styleUrls: [\"./in-place-interaction-context.component.scss\"]\n})\nexport class InPlaceInteractionContextComponent<D, R, E> extends DisposableComponent implements InPlaceInteractionContext, AfterViewInit {\n\n @ViewChild(\"activityContainer\", { static: true })\n activityContainerComponent: ActivityContainerComponent<any, any, any>;\n\n /**\n * If true then the first startActivity call will slide the activity into view. If false\n * the activity will replace the existing content immediately.\n */\n @Input()\n animateFirstActivity = true;\n\n get animationDuration(): string {\n return this.animateFirstActivity ? (this.tabConfig?.animationDuration || \"500ms\") : \"0ms\";\n }\n\n @HostBinding(\"class.active\")\n get active() {\n return this.isActive();\n }\n\n constructor(readonly interactionService: InteractionService, @Inject(MAT_TABS_CONFIG) @Optional() private readonly tabConfig: MatTabsConfig) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.interactionService.registerInplaceInteractionContext(this);\n }\n\n initialise(id: string, api: InteractionService.Api) {\n this.activityContainerComponent.initialise(id, api);\n }\n\n get identifier() {\n return this.activityContainerComponent.identifier;\n }\n\n alert(alert: Alert): Promise<void> {\n return this.activityContainerComponent.alert(alert);\n }\n\n cancelActiveActivity(): Promise<boolean> {\n return this.activityContainerComponent.cancelActiveActivity();\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.activityContainerComponent.confirm(confirm);\n }\n\n confirmOrReject(confirm: Confirm): Promise<void> {\n return this.activityContainerComponent.confirmOrReject(confirm);\n }\n\n confirmThen<D1, R1, E1>(confirm: Confirm, activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return this.activityContainerComponent.confirmThen(confirm, activityType);\n }\n\n confirmThenExecute<R1>(confirm: Confirm, operation: (interactionContext: InteractionContext) => (Promise<R1> | R1)): Promise<R1> {\n return this.activityContainerComponent.confirmThenExecute(confirm, operation);\n }\n\n\n isActive(): boolean {\n return this.activityContainerComponent.isActive();\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1, options?: InteractionContext.Options): Promise<R1> {\n return this.activityContainerComponent.startActivity(activityType, data, options);\n }\n\n}\n","<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs [dynamicHeight]=\"false\" [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n","import { Component, HostBinding, Input, OnInit, ViewChild } from '@angular/core';\nimport { Dsl, ListModelChain } from '@coolon/pectin';\nimport { Enum } from 'typescript-string-enums';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { InteractionContext } from '../../interaction-context';\nimport { InteractionService } from '../../services/interaction.service';\nimport { AbstractActivityTriggerComponent } from '../activity-triggers/abstract-activity-trigger.component';\nimport { InPlaceInteractionContextComponent } from '../inplace-interaction-context/in-place-interaction-context.component';\n\n/**\n *\n */\n@Component({\n selector: 'aup-add-card-activity',\n templateUrl: './add-card-activity.component.html',\n styleUrls: ['./add-card-activity.component.scss'],\n})\nexport class AddCardActivityComponent extends AbstractActivityTriggerComponent implements OnInit {\n\n private modalInteractionContext: InteractionContext;\n\n @ViewChild(InPlaceInteractionContextComponent, { static: true })\n inlineInteractionContext: InteractionContext;\n\n @Input()\n interactionStyle: AddCardActivityComponent.InteractionType = AddCardActivityComponent.InteractionType.MODAL;\n\n @Input()\n @HostBinding('class')\n renderAs: AddCardActivityComponent.RenderAs = AddCardActivityComponent.RenderAs.CARD;\n\n @HostBinding('class.not-card')\n notCard = true;\n\n readonly faceList: ListModelChain<CommandFace>;\n\n @HostBinding('class')\n get renderAsClass() {\n return `render-as-${this.renderAs}`;\n }\n\n @HostBinding('class')\n get activityTypeClass() {\n return `${this.interactionStyle}-activity`;\n }\n\n isRenderAsCard(): boolean {\n return this.renderAs === 'card';\n }\n\n isRenderAsButton(): boolean {\n return this.renderAs === 'button';\n }\n\n constructor(interactionService: InteractionService) {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.modalInteractionContext = interactionService.createModalInteractionContextDisposedWith(this);\n this.faceList = chain(this.faceModel).mapToList(face => [face]);\n }\n\n ngOnInit(): void {\n }\n\n get interactionContext(): InteractionContext {\n switch (this.interactionStyle) {\n case 'inline':\n return this.inlineInteractionContext;\n default:\n return this.modalInteractionContext;\n }\n }\n\n isModal() {\n return this.interactionStyle === 'modal';\n }\n\n isInline() {\n return this.interactionStyle === 'inline';\n }\n\n\n}\n\nexport namespace AddCardActivityComponent {\n export const InteractionType = Enum({\n MODAL: 'modal',\n INLINE: 'inline'\n });\n export type InteractionType = Enum<typeof InteractionType>;\n export const RenderAs = Enum({\n CARD: 'card',\n BUTTON: 'button'\n });\n export type RenderAs = Enum<typeof RenderAs>;\n}\n","<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n","import { Component, HostBinding, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Command, Constructable, TrackExternal } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { Activity } from '../../activity';\nimport { InPlaceInteractionContextComponent } from '../inplace-interaction-context/in-place-interaction-context.component';\n\n/**\n * Css Vars.\n * --link-color\n * --link-color-hover\n * --link-background\n * --link-background-hover\n * --link-border-radius\n * --link-padding\n */\n@Component({\n selector: 'aup-add-item-interaction-context',\n templateUrl: './add-item-interaction-context.component.html',\n styleUrls: ['./add-item-interaction-context.component.scss']\n})\nexport class AddItemInteractionContextComponent extends DisposableComponent implements OnInit {\n\n @Input()\n label: string;\n\n @Input()\n icon = \"mat:add\";\n\n @Input()\n activityClass: Constructable<Activity<any, any, any>>;\n\n @Input()\n activityData: any;\n\n @Input()\n @TrackExternal()\n addCommand: Command<any>;\n\n @ViewChild(InPlaceInteractionContextComponent)\n protected interactionContext: InPlaceInteractionContextComponent<any, any, any>;\n\n readonly clickCommand: Command<void>;\n\n @HostBinding('class.interaction-active')\n public get active(): boolean {\n return this.interactionContext ? this.interactionContext.isActive() : false;\n }\n\n @HostBinding('tabindex')\n readonly tabindex = 0;\n\n constructor() {\n super();\n\n this.clickCommand = Command.create((context) => {\n if (this.activityClass) {\n this.startActivity(this.activityClass, this.activityData).catch(e => {\n // don't care.\n });\n } else {\n this.addCommand.withContext(context).execute();\n }\n });\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this.interactionContext.startActivity(activityType, data);\n }\n\n ngOnInit() {\n }\n\n\n}\n","<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n","import { Component, ViewChild } from '@angular/core';\nimport { Activity } from '../../../activity';\nimport { InteractionContext } from '../../../interaction-context';\nimport { InPlaceInteractionContextComponent } from '../../inplace-interaction-context/in-place-interaction-context.component';\nimport { PopupInteractionContextComponent } from '../../popup-interaction-context/popup-interaction-context.component';\nimport { AbstractActivityTriggerComponent } from '../abstract-activity-trigger.component';\n\n@Component({\n selector: 'aup-inline-activity-trigger',\n templateUrl: './inline-activity-trigger.component.html',\n styleUrls: ['./inline-activity-trigger.component.scss']\n})\nexport class InlineActivityTriggerComponent<D = any, R = any, E = any> extends AbstractActivityTriggerComponent<D, R, E> {\n\n @ViewChild(InPlaceInteractionContextComponent, { static: true })\n _interactionContext: InteractionContext;\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n constructor() {\n super();\n }\n\n}\n","<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n","import { CdkScrollable, ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, OnInit, Optional, SkipSelf } from '@angular/core';\nimport { Constructable } from '@coolon/pectin';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { Activity } from '../../activity';\nimport { InPlaceInteractionContextComponent } from '../inplace-interaction-context/in-place-interaction-context.component';\n\n/**\n * <aup-popup-interaction-context #ctx></aup-popup-interaction-context>\n *\n * in your component\n * @ViewChild('inPlaceInteractionContext', { static: true })\n * interactionContext: InteractionContext;\n * or\n * @ViewChild('ctx', { static: true })\n * interactionContext: InteractionContext;\n */\n@Component({\n selector: 'aup-popup-interaction-context',\n templateUrl: './popup-interaction-context.component.html',\n styleUrls: ['./popup-interaction-context.component.scss']\n})\nexport class PopupInteractionContextComponent extends DisposableComponent implements OnInit {\n\n private interactionContext: InPlaceInteractionContextComponent<any, any, any>;\n private scrollContainers: CdkScrollable[];\n\n @HostBinding('class.interaction-active')\n public get active(): boolean {\n return this.isActive();\n }\n\n readonly outputPortal = new ComponentPortal<InPlaceInteractionContextComponent<any, any, any>>(InPlaceInteractionContextComponent);\n\n @Input()\n anchorX: 'start' | 'end' = 'start';\n\n @Input()\n anchorY: 'top' | 'bottom' = 'bottom';\n\n constructor(private _element: ElementRef, private _overlay: Overlay, @Optional() @SkipSelf() scrollable: CdkScrollable) {\n super();\n this.scrollContainers = scrollable ? [scrollable] : [];\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n // console.log({ element: this._element });\n const self = this;\n const overlayRef = this._overlay.create({\n hasBackdrop: false,\n disposeOnNavigation: true,\n panelClass: 'aup-popup-interaction-panel',\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._element)\n .withPush(true)\n .withPositions(this.computePositions())\n .withGrowAfterOpen(true)\n .withScrollableContainers(self.scrollContainers) // this isn't working. sigh.\n });\n\n const subs = this.scrollContainers.map(sc => sc.elementScrolled().subscribe(() => {\n overlayRef.updatePosition();\n }))\n\n\n const componentRef = overlayRef.attach(this.outputPortal);\n this.interactionContext = componentRef.instance;\n\n return new Promise((resolve, reject) => {\n // HACK: afterViewInit won't have been called yet. Need to add when(interactionContext.ready).becomesTruthy(...)\n setTimeout(() => {\n this.interactionContext.startActivity(activityType, data)\n .then(resolve)\n .catch(reject)\n .finally(() => {\n subs.forEach(s => s.unsubscribe())\n overlayRef.dispose();\n });\n setTimeout(() => {\n overlayRef.updatePosition();\n })\n });\n\n });\n }\n\n computePositions(): ConnectedPosition[] {\n const overlayX = this.anchorX === 'start' ? 'start' : 'end';\n const overlayY = this.anchorY === 'top' ? 'bottom' : 'top';\n return [\n { originX: this.anchorX, originY: this.anchorY, overlayX: overlayX, overlayY: overlayY }\n // TODO: compute some meaningful alternatives.\n // { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n // { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n // { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n // { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' }\n ];\n }\n\n cancelActiveActivity(): Promise<boolean> {\n return this.interactionContext.cancelActiveActivity();\n }\n\n isActive(): boolean {\n return this.interactionContext && this.interactionContext.isActive();\n }\n\n ngOnInit() {\n }\n\n\n}\n","<ng-content></ng-content>\n","import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { assert, Constructable, GarbageCollector } from '@coolon/pectin';\n\nimport { isFunction } from 'lodash';\nimport { Activity } from '../activity';\nimport { InteractionContext } from '../interaction-context';\n\n@Directive({\n selector: '[aupInteractionContextTriggerFor]'\n})\nexport class InteractionContextTriggerFor<D, R, E> extends GarbageCollector {\n\n @Input()\n aupInteractionContextTriggerFor: Pick<InteractionContext, 'startActivity' | 'isActive' | 'cancelActiveActivity'>;\n\n @Input()\n activityClass: Constructable<Activity<D, R, E>>;\n\n @Input()\n activityData?: D;\n\n @Input()\n activityDataFactory?: () => D;\n\n @Output()\n activityDone = new EventEmitter<R>();\n\n @Output()\n activityCancelled = new EventEmitter<E>();\n\n constructor() {\n super();\n }\n\n @HostListener('keyup.enter', ['$event'])\n onEnter(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.aupInteractionContextTriggerFor.isActive()) {\n this.startActivity();\n } else {\n this.aupInteractionContextTriggerFor.cancelActiveActivity();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.aupInteractionContextTriggerFor.isActive()) {\n this.startActivity();\n } else {\n this.aupInteractionContextTriggerFor.cancelActiveActivity();\n }\n }\n\n protected startActivity() {\n assert.isTruthy(this.aupInteractionContextTriggerFor);\n assert.isFalsey(this.aupInteractionContextTriggerFor.isActive());\n assert.isTruthy(this.activityClass);\n this.aupInteractionContextTriggerFor.startActivity(this.activityClass, this.activityData)\n .then(result => {\n this.activityDone.emit(result);\n })\n .catch(error => {\n this.activityCancelled.emit(error);\n });\n }\n\n prepareActivityData(): D {\n return isFunction(this.activityDataFactory()) ? this.activityDataFactory() : this.activityData;\n }\n\n}\n","import { Component, HostBinding, HostListener, Inject, Input } from '@angular/core';\nimport { Command, DirtyTrackingForm, Form, Validator } from '@coolon/pectin';\n\nimport { isNil } from 'lodash';\nimport { Enum } from 'typescript-string-enums';\nimport { CommandFace } from '../../../components/commands/command-face';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\n\n// @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123\n// we're getting a metadata error for D for no reason that I can find and only during the build (ng serve works fine)\n// @dynamic\n@Component({ template: `` })\nexport class InputActivity<T, D extends InputActivity.Data<T> = InputActivity.Data<T>> extends Activity<D, T> {\n\n readonly confirmCommand: Command<void>;\n readonly cancelCommand: Command<void>;\n readonly valueModel: Form.ValueModelBase<T>;\n\n @HostBinding('class') class = 'aup-input-activity';\n\n readonly confirmFace: CommandFace;\n readonly cancelFace: CommandFace;\n\n @Input()\n @HostBinding('attr.layout')\n get layout(): InputActivity.Layout {\n return this.data?.layout ?? InputActivity.Layout.BLOCK;\n }\n\n constructor(@Inject(ACTIVITY_DATA) readonly data: D) {\n super();\n\n const form = new DirtyTrackingForm();\n this.valueModel = form.valueModel<T>(this.data.initialValue);\n this.valueModel.validateUsing(data.validators || []);\n\n // TODO: move to global configuration\n this.confirmFace = data.confirmFace ?? {\n icon: () => 'mat:check'\n };\n this.cancelFace = data.cancelFace ?? {\n icon: () => 'mat:clear'\n };\n\n this.confirmCommand = Command.create(async () => {\n if (this.valueModel.validate()) {\n if (data.save) {\n const self = this;\n try {\n let allGood = true;\n const result = await data.save(this.valueModel.value, {\n injectError(error: string) {\n allGood = false;\n self.valueModel.injectErrors([error]);\n }\n });\n if (allGood) {\n this.done(this.valueModel.value);\n }\n } catch (e) {\n console.error(e);\n }\n } else {\n this.done(this.valueModel.value);\n }\n\n }\n });\n this.cancelCommand = Command.create(() => {\n this.cancel();\n });\n\n this.busyWhile(this.confirmCommand.busy);\n }\n\n onActivityReady() {\n this.valueModel.focusContext.requestFocus();\n }\n\n @HostBinding(\"class\")\n get additionalCssClassName():string {\n return this.data.cssClassName ?? ''\n }\n\n @HostListener('keydown.escape')\n onEscape() {\n if (this.shouldCancelOnEscape() && this.cancelCommand.enabled.value) {\n this.cancelCommand.execute();\n }\n }\n\n shouldCancelOnEscape(): boolean {\n return isNil(this.data.cancelOnEscape) // we default to true..\n || this.data.cancelOnEscape;\n }\n\n}\n\nexport namespace InputActivity {\n\n export const Layout = Enum({\n INLINE: 'inline',\n BLOCK: 'block'\n });\n export type Layout = Enum<typeof Layout>;\n\n export interface Context {\n injectError(error: string);\n }\n\n export interface Data<T> {\n initialValue: T;\n label?: string;\n placeholder?: string;\n layout?: InputActivity.Layout\n confirmFace?: CommandFace,\n cancelFace?: CommandFace,\n validators?: Validator<T>[],\n cancelOnEscape?: boolean,\n cssClassName?: string,\n save?(valueModel: T, interactionContext?: Context): void | Promise<void>\n }\n}\n","import { Component } from '@angular/core';\nimport { InputActivity } from './input-activity';\n\n\n@Component({\n selector: 'aup-string-input-activity',\n template: `\n <aup-string-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"></aup-string-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n `\n})\nexport class StringInputActivity extends InputActivity<string> {\n}\n\nexport namespace StringInputActivity {\n export interface Data extends InputActivity.Data<String> {\n }\n}\n","import { Component } from '@angular/core';\nimport { ListModel } from '@coolon/pectin';\nimport { InputActivity } from './input-activity';\n\n@Component({\n selector: 'aup-select-input-activity',\n template: `\n <aup-select-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n ></aup-select-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n `\n})\nexport class SelectInputActivity<T> extends InputActivity<T, SelectInputActivity.Data<T>> {\n\n readonly defaultOptionLabelFormat = (option: T) => {\n return this.data.optionLabel ? option[this.data.optionLabel] : option;\n };\n\n get optionLabelFormat() {\n return this.data.optionLabelFormat ?? this.defaultOptionLabelFormat;\n }\n\n get options(): T[] {\n return this.data.optionsModel?.value || this.data.options;\n }\n}\n\nexport namespace SelectInputActivity {\n export interface Data<T> extends InputActivity.Data<T> {\n options?: T[];\n optionsModel?: ListModel<T>;\n optionLabel?: keyof T;\n optionLabelFormat?: (option: T) => any;\n }\n}\n","import { Constructable, ListModel, SelectionModel, ValueModel } from '@coolon/pectin';\nimport { AbstractTableModel } from '../abstract-table-model';\nimport { SelectionColumnModel } from './column-model';\n\n/**\n * Example:\n * @example\n * const model = new TableModel(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * Editable tables\n * @example\n * const saveCommand = UnaryCommand.create((form: Form<Hero>) => {\n * if (form.validate()) {\n * // normal form save stuff\n * return true; // finish editing\n * }\n * return false; // continue editiing\n * }\n * const colorsNames: ListModel<string> = ...;\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\").cellEditor(StringInputComponent); <-- interface CellEditor { valueModel: DirtyTrackingForm.ValueModel<string> | ValueModel<string>; }\n * table.pluck(\"lastName\").cellEditor(StringInputComponent, {\n * validators: [Validator.present(\"We need a last name\")]\n * });\n * table.pluck(\"age\").cellEditor(NumberInputComponent);\n * table.pluck(\"favoriteColor\").cellEditor(SelectInputComponent, {\n * initialiseComponent(component: SelectInputComponent) {\n * selectInput.optionsModel = colorsNames; // <- initialise our component\n * }\n * });\n * table.addEditControls(saveCommand); // <- required to enable editing\n * });\n *\n * Selection models\n * @example\n * const model = new TableModel(heroList, table => {\n * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * });\n *\n * Custom cell renderers and editors\n * @example\n * const model = new TableModel(heroList, table => {\n * table.pluck(\"favoriteColor\")\n * .cellHeaderRenderer(CellHeaderRendererComponent, (component, column) => {\n * // configure your component with what ever you need.\n * });\n * .cellRenderer(CellRendererComponent) // <-- interface CellEditor { value: string; }\n * .cellEditor(CellEditorComponent.); // <-- interface CellEditor { valueModel: DirtyTrackingForm.ValueModel<string> | ValueModel<string>; }\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * Template columns\n * @example\n * const model = new TableModel(heroList, table => {\n * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model\n * table.addTemplateColumn(\"myTemplate\");\n * });\n *\n * <div *aupColumnTemplate=\"let hero; columnId: 'myTemplate'\">{{hero.age}}</div>\n *\n * I18n\n * @example\n * [table.yml]\n * table:\n * columns(ColumnTextProperties[]):\n * firstName:\n * headerText: \"First Name\"\n * fullName:\n * headerText: \"Full Name\"\n *\n * const model = new TableModel(heroList, table => {\n * table.pluck(\"favoriteColor\").cellRenderer(...).cellEditor(...);\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n *\n * table.columnTextProperties(I18n.table.columns); // <- configures all columns\n * });\n */\nexport class TableModel<Row> extends AbstractTableModel<Row> {\n\n constructor(sourceOfTruth: ListModel<Row>, builder?: (table: TableModel<Row>) => void) {\n super();\n if (builder) {\n builder(this);\n }\n this.setDataSource(sourceOfTruth);\n }\n\n /**\n * @deprecated use new TableModel(sourceOfTruth, table => {...}); instead.\n * @param sourceOfTruth\n * @param builder\n */\n static fromList<Row>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TableModel<Row>) => void): TableModel<Row> {\n return new TableModel(sourceOfTruth, builder);\n }\n\n\n addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n return this._addSelectionColumn(selectionModel, showSelectionColumn);\n }\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./alignment\";\nexport * from \"./components.module\";\nexport * from \"./disposable-component\";\nexport * from \"./focusable.component\";\nexport * from \"./resize-aware.component\";\nexport * from \"./track-by\";\nexport * from \"./busy-overlay/busy-overlay.component\";\nexport * from \"./cards/abstract-card-container.component\";\nexport * from \"./cards/card-container/card-container.component\";\nexport * from \"./cards/card-stack/card-stack.component\";\nexport * from \"./commands/command-face\";\nexport * from \"./commands/flex.component\";\nexport * from \"./commands/separator.component\";\nexport * from \"./commands/command/command.component\";\nexport * from \"./commands/command-face/command-face.component\";\nexport * from \"./commands/group/command-container\";\nexport * from \"./commands/group/popup-aware.component\";\nexport * from \"./commands/group/popup-container\";\nexport * from \"./commands/group/popup-menu/abstract-popup-menu.component\";\nexport * from \"./commands/group/popup-menu/more-menu.component\";\nexport * from \"./commands/group/popup-menu/popup-menu.component\";\nexport * from \"./commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component\";\nexport * from \"./commands/group/tool-bar/tool-bar.component\";\nexport * from \"./empty-state/empty-state.component\";\nexport * from \"./focus-container/focus-container.component\";\nexport * from \"./forms/abstract-input.component\";\nexport * from \"./forms/abstract-list-input.component\";\nexport * from \"./forms/abstract-value-input.component\";\nexport * from \"./forms/autocomplete-input/autocomplete-input.component\";\nexport * from \"./forms/checkbox-input/checkbox-input.component\";\nexport * from \"./forms/multiple-select-input/multiple-select-input.component\";\nexport * from \"./forms/number-input/number-input.component\";\nexport * from \"./forms/password-input/password-input.component\";\nexport * from \"./forms/select-input/select-input.component\";\nexport * from \"./forms/string-input/string-input.component\";\nexport * from \"./forms/text-input/text-input.component\";\nexport * from \"./icon/icon.component\";\nexport * from \"./labelled-value/labelled-value.component\";\nexport * from \"./loading-container/loading-container.component\";\nexport * from \"./noop/noop.component\";\nexport * from \"./scroll-container/scroll-container.component\";\nexport * from \"./section-header/section-header.component\";\nexport * from \"./switch-case/switch-case.component\";\nexport * from \"./tables/abstract-table-model\";\nexport * from \"./tables/abstract-table.component\";\nexport * from \"./tables/column-list-model\";\nexport * from \"./tables/edit-session\";\nexport * from \"./tables/table/cell-editors\";\nexport * from \"./tables/table/cell-portal-ref\";\nexport * from \"./tables/table/cell-renderer\";\nexport * from \"./tables/table/column-model\";\nexport * from \"./tables/table/column-text-properties\";\nexport * from \"./tables/table/mutable-cell-renderer\";\nexport * from \"./tables/table/table-def\";\nexport * from \"./tables/table/table-model\";\nexport * from \"./tables/table/table.component\";\nexport * from \"./tables/table/text-search-predicate\";\nexport * from \"./tables/table/column-template/column-template.directive\";\nexport * from \"./tables/table/default-cell-renderer/default-cell-renderer.component\";\nexport * from \"./tables/table/default-header-cell-renderer/default-header-cell-renderer.component\";\nexport * from \"./tables/table/edit-row-controls/edit-row-controls.component\";\nexport * from \"./tables/table/paginator/paginator.component\";\nexport * from \"./tables/table/select-cell-renderer/select-cell-renderer.component\";\nexport * from \"./tables/table/select-header-cell-renderer/select-header-cell-renderer.component\";\nexport * from \"./tables/table/table-cell-renderer/table-cell-renderer.component\";\nexport * from \"./tables/table/table-header-cell-renderer/table-header-cell-renderer.component\";\nexport * from \"./tables/table/table-row-menu/table-row-menu.component\";\nexport * from \"./tables/tree-table/decorated-tree-node\";\nexport * from \"./tables/tree-table/flattened-tree-list-model\";\nexport * from \"./tables/tree-table/tree-expansion-model\";\nexport * from \"./tables/tree-table/tree-label-column-model\";\nexport * from \"./tables/tree-table/tree-table-component\";\nexport * from \"./tables/tree-table/tree-table-model\";\nexport * from \"./tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component\";\nexport * from \"./tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component\";\nexport * from \"./text/markdown/markdown.component\";\nexport * from \"./types/bounds.class\";\nexport * from \"./types/dimension.class\";\nexport * from \"./types/point.class\";\nexport * from \"./vertical-focus-container/vertical-focus-container.component\";\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { InteractionContext } from '../../../interaction-context';\nimport { PopupInteractionContextComponent } from '../../popup-interaction-context/popup-interaction-context.component';\nimport { AbstractActivityTriggerComponent } from '../abstract-activity-trigger.component';\n\n@Component({\n selector: 'aup-popup-activity-trigger',\n templateUrl: './popup-activity-trigger.component.html',\n styleUrls: ['./popup-activity-trigger.component.scss']\n})\nexport class PopupActivityTriggerComponent<D = any, R = any, E = any> extends AbstractActivityTriggerComponent<D, R, E> {\n\n @Input()\n anchorX: 'start' | 'end' = 'start';\n\n @Input()\n anchorY: 'top' | 'bottom' = 'bottom';\n\n @ViewChild(PopupInteractionContextComponent, { static: true })\n _interactionContext: InteractionContext;\n\n constructor() {\n super();\n }\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n\n}\n","<aup-popup-interaction-context [anchorX]=\"anchorX\" [anchorY]=\"anchorY\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-popup-interaction-context>\n","import {\n DelegatingValueModel,\n Dsl,\n GarbageCollector,\n ListModel,\n MutableListModel,\n MutableValueModel,\n TrackExternal,\n Validator,\n ValueModel,\n assert\n} from '@coolon/pectin';\nimport { EditContext } from '../edit-context';\n\n\nexport class InlineEditorModel<T> extends GarbageCollector {\n\n readonly editing = new MutableValueModel<boolean>(false);\n private readonly _validators: MutableListModel<Validator<T>> = new MutableListModel<Validator<T>>();\n private _editingEnabled = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(true));\n\n constructor(readonly valueModel: ValueModel<T>, readonly saveCallback: InlineEditorModel.SaveCallback<T>) {\n super();\n assert.notNil(valueModel);\n const { when } = Dsl.disposeWith(this);\n when(this.editingEnabled).becomesFalsey(() => this.cancelEdit());\n }\n\n get editingEnabled(): ValueModel<boolean> {\n return this._editingEnabled.readonly;\n }\n\n disableWhile(condition: ValueModel<boolean>): this {\n const { chain } = Dsl.disposeWith(this);\n this.enableWhile(chain(condition).isFalsey());\n return this;\n }\n\n enableWhile(condition: ValueModel<boolean>): this {\n this._editingEnabled.setDelegate(condition);\n return this;\n }\n\n get validators(): ListModel<Validator<T>> {\n return this._validators.readonly;\n }\n\n validateUsing(validator: Validator<T>): this { //}, options?: HasValidators.Options): this {\n this._validators.push(validator);\n return this;\n }\n\n\n isEditing(): boolean {\n return this.editing.value;\n }\n\n cancelEdit() {\n this.editing.value = false;\n }\n\n startEditing() {\n this.editing.value = true;\n }\n\n}\n\nexport namespace InlineEditorModel {\n\n export type SaveCallback<T> = (value: T, context: EditContext<T>) => void | Promise<void>;\n\n export function create<T>(valueModel: ValueModel<T>, options: { save: SaveCallback<T> }): InlineEditorModel<T> {\n return new InlineEditorModel<T>(valueModel, options.save);\n }\n\n}\n\nTrackExternal.oneTimeBinding(InlineEditorModel);\n","import { Component, HostBinding, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n BooleanValueModelChain,\n Command, DelegatingValueModel,\n Dsl,\n StoreInValueModel,\n TrackExternal,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { lang } from '@coolon/typescript-utilities';\n\nimport { isEmpty } from 'lodash';\nimport { CommandFace } from '../../../../components/commands/command-face';\nimport { DisposableComponent } from '../../../../components/disposable-component';\nimport { InteractionService } from '../../../services/interaction.service';\nimport { InPlaceInteractionContextComponent } from '../../inplace-interaction-context/in-place-interaction-context.component';\nimport { InputActivity } from '../../input-activities/input-activity';\nimport { StringInputActivity } from '../../input-activities/string-input-activity';\nimport { InlineEditorModel } from './inline-editor-model';\n\n/**\n * @example\n * const source: ValueModel<string> = ...;\n * const model = InlineEditorModel.create(source, {\n * save(updated:string, context: EditContext) => {\n * try {\n * try and save the thing...\n * } catch(error) {\n * context.injectError(error)\n * }\n * }).validateUsing(Validator.present(\"We'll need a value\");\n *\n * # in the view\n * <aup-inline-string-editor\n * label=\"My field\"\n * placeHolder=\"I'm ready for a string...\"\n * [editorModel]=\"model\"></aup-inline-string-editor>\n */\n@Component({\n selector: 'aup-inline-string-editor',\n templateUrl: './inline-string-editor.component.html',\n styleUrls: [] // See assets/interaction/editor/inline-string-editor.scss\n})\nexport class InlineStringEditorComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @TrackExternal()\n editorModel: InlineEditorModel<string>;\n\n @Input()\n @TrackExternal()\n facesModel: ValueModel<InlineStringEditorComponent.Faces>;\n\n @Input()\n @StoreInValueModel('facesModel')\n faces: InlineStringEditorComponent.Faces;\n\n @ViewChild(InPlaceInteractionContextComponent)\n interactionContext: InPlaceInteractionContextComponent<any, any, any>;\n\n @Input()\n label: string;\n\n @Input()\n @StoreInValueModel('placeHolderModel')\n placeHolder: string;\n\n @Input()\n @TrackExternal()\n placeHolderModel: ValueModel<string>;\n\n readonly description: ValueModelChain<string>;\n empty: BooleanValueModelChain;\n readonly editCommand: Command<void>;\n\n displayValue: ValueModelChain<string>;\n readonly editFaceModel: ValueModelChain<CommandFace>;\n readonly saveFace: ValueModelChain<CommandFace>;\n readonly cancelFace: ValueModelChain<CommandFace>;\n\n readonly editingEnabled = this.registerDisposable(new DelegatingValueModel<boolean>());\n\n constructor(interactionService: InteractionService) {\n super();\n const { chain, when, valueOf } = Dsl.disposeWith(this);\n const modalIC = interactionService.createModalInteractionContextDisposedWith(this);\n\n const resolvedFacesModel = chain(this.facesModel).map(userFaces => {\n return {\n ...InlineStringEditorComponent.DEFAULT_FACES, // todo: should really inject app wide defaults as well\n ...userFaces\n };\n }, { allowNil: true });\n\n this.editFaceModel = resolvedFacesModel.pluck('edit');\n this.saveFace = resolvedFacesModel.pluck('save');\n this.cancelFace = resolvedFacesModel.pluck('cancel');\n\n const self = this;\n this.editCommand = Command.create(async () => {\n this.editorModel.editing.value = true;\n try {\n await this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData());\n } catch (e) {\n // don't care if they cancelled, just hiding the console errors\n } finally {\n this.editorModel.editing.value = false;\n }\n }).enableWhile(this.editingEnabled);\n\n this.onDispose(() => this.cancelEdit());\n\n }\n\n\n ngOnInit(): void {\n // our editor model is a one time binding without delegates so we can only\n // use it once we've been initialised\n const { chain, when, valueOf } = Dsl.disposeWith(this);\n\n if (!this.editorModel) {\n lang.illegalState('editorModel is required');\n }\n\n this.editingEnabled.setDelegate(this.editorModel.editingEnabled);\n\n when(this.editorModel.editing).becomesTruthy(() => {\n this.editCommand.execute();\n }, { asLongAs: this.editCommand.enabled });\n\n when(this.editorModel.editing).becomesFalsey(() => this.cancelEdit());\n\n this.empty = valueOf.any(\n chain.stringValue(this.editorModel.valueModel).isBlank()\n // deviceDescription.isNil()\n ).areTruthy();\n\n this.displayValue = chain(this.editorModel.valueModel).map(v => {\n return isEmpty(v) ? this.placeHolderModel.value : v;\n }, { dependsOn: this.placeHolderModel, allowNil: true });\n\n }\n\n\n private createInputActivityData(): InputActivity.Data<string> {\n const self = this;\n return {\n initialValue: self.editorModel.valueModel.value,\n confirmFace: self.saveFace.value,\n cancelFace: self.cancelFace.value,\n placeholder: self.placeHolderModel.value,\n label: self.label,\n layout: InputActivity.Layout.INLINE,\n validators: self.editorModel.validators.value,\n async save(value: string, inputContext: InputActivity.Context): Promise<void> {\n await self.editorModel.saveCallback(value, inputContext);\n }\n };\n }\n\n cancelEdit() {\n if (this.isEditing()) {\n this.interactionContext.cancelActiveActivity();\n }\n }\n\n startEdit() {\n if (!this.isEditing() && this.editCommand.enabled.value) {\n this.editCommand.execute();\n }\n }\n\n private isEditing() {\n return this.interactionContext.isActive();\n }\n\n isEmpty(): boolean {\n return this.empty.value;\n }\n\n\n}\n\nexport namespace InlineStringEditorComponent {\n\n export interface Faces {\n edit?: CommandFace;\n save?: CommandFace;\n cancel?: CommandFace;\n }\n\n export const DEFAULT_FACES: Faces = {\n edit: {\n icon: () => 'mat:edit'\n },\n save: {\n icon: () => 'mat:check'\n },\n cancel: {\n icon: () => 'mat:clear'\n }\n };\n\n}\n","<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field appearance=\"standard\" floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\n >\n <!-- <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>-->\n <!-- <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>-->\n <!-- <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>-->\n </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled.value\" [command]=\"editCommand\" [faceModel]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexModule, GridModule } from '@angular/flex-layout';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { RouterModule } from '@angular/router';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { Activity } from './activity';\nimport { AbstractConfirmDialogComponent } from './components/abstract-confirm-dialog.component';\nimport { AbstractDialogComponent } from './components/abstract-dialog.component';\nimport { ActivityActionsComponent } from './components/activity-actions/activity-actions.component';\nimport { ActivityContainerComponent } from './components/activity-container/activity-container.component';\nimport { ActivityOutletComponent } from './components/activity-container/activity-outlet/activity-outlet.component';\nimport { ActivityBodyComponent } from './components/activity-body/activity-body.component';\nimport { ActivityTitleComponent } from './components/activity-title/activity-title.component';\nimport { AbstractActivityTriggerComponent } from './components/activity-triggers/abstract-activity-trigger.component';\nimport { ModalActivityTriggerComponent } from './components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component';\nimport { AddCardActivityComponent } from './components/add-card-activity/add-card-activity.component';\nimport { AddItemInteractionContextComponent } from './components/add-item-interaction-context/add-item-interaction-context.component';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmThenExecuteDialogComponent } from './components/confirm-then-execute-dialog/confirm-then-execute-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { InlineActivityTriggerComponent } from './components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component';\nimport { InPlaceInteractionContextComponent } from './components/inplace-interaction-context/in-place-interaction-context.component';\nimport { PopupInteractionContextComponent } from './components/popup-interaction-context/popup-interaction-context.component';\nimport { InteractionContextTriggerFor } from './directives/interaction-context-trigger-for.directive';\nimport { InteractionService } from './services/interaction.service';\nimport { StringInputActivity } from './components/input-activities/string-input-activity';\nimport { SelectInputActivity } from './components/input-activities/select-input-activity';\nimport { InputActivity } from './components/input-activities/input-activity';\nimport { ComponentsModule } from '../components/exports';\nimport { PopupActivityTriggerComponent } from './components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component';\nimport { InlineStringEditorComponent } from './components/editors/inline-string-editor/inline-string-editor.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule,\n RouterModule,\n MatIconModule,\n DirectivesModule,\n FlexModule,\n GridModule,\n ComponentsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n A11yModule\n ],\n declarations: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n ConfirmThenDialogComponent,\n ConfirmThenExecuteDialogComponent,\n AlertDialogComponent,\n ActivityOutletComponent,\n InPlaceInteractionContextComponent,\n AddItemInteractionContextComponent,\n ActivityActionsComponent,\n PopupInteractionContextComponent,\n StringInputActivity,\n SelectInputActivity,\n InputActivity,\n InteractionContextTriggerFor,\n Activity,\n ActivityTitleComponent,\n ActivityBodyComponent,\n ActivityActionsComponent,\n AbstractActivityTriggerComponent,\n PopupActivityTriggerComponent,\n InlineActivityTriggerComponent,\n ModalActivityTriggerComponent,\n AddCardActivityComponent,\n InlineStringEditorComponent,\n AbstractDialogComponent,\n AbstractConfirmDialogComponent,\n ],\n exports: [\n ActivityContainerComponent,\n ActivityOutletComponent,\n ActivityTitleComponent,\n InPlaceInteractionContextComponent,\n AddItemInteractionContextComponent,\n ActivityActionsComponent,\n PopupInteractionContextComponent,\n InteractionContextTriggerFor,\n StringInputActivity,\n SelectInputActivity,\n ActivityBodyComponent,\n PopupActivityTriggerComponent,\n InlineActivityTriggerComponent,\n ModalActivityTriggerComponent,\n AddCardActivityComponent,\n InlineStringEditorComponent,\n ],\n providers: [\n InteractionService\n // {\n // provide: MAT_TABS_CONFIG, useValue: { animationDuration: \"2s\" }\n // }\n ]\n})\nexport class InteractionModule {\n}\n","import { Injector } from '@angular/core';\nimport { Constructable, HasValue, ListModel, MutableListModel, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport { lang, Opts } from '@coolon/typescript-utilities';\n\nimport { isEqual, isFunction, isNil, isObject } from 'lodash';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\nimport { Formatter } from './formatter';\nimport { ParameterSanitiser } from './parameter-sanitiser';\n\nconst PARAMETER_DEFINITION_KEY = Symbol('parameterDefinition');\n\n\nexport abstract class ParameterDefinition<T, E = T> {\n\n abstract readonly isRouteId: boolean;\n abstract readonly isArray: boolean;\n\n readonly remember: boolean;\n readonly defaultValue: T;\n private options: Opts<ParameterDefinition.Options<T>>;\n protected abstract backingModelFactory: () => HasValue<T>;\n\n constructor(readonly propertyName: string, options: ParameterDefinition.Options<T>, readonly urlFormat?: Formatter<E>) {\n this.options = Opts.get(options);\n this.remember = this.options.getOptional('remember', false);\n this.defaultValue = this.options.getOptional('defaultValue', null);\n }\n\n get name() {\n return this.options.getOptional('as', this.propertyName);\n }\n\n // @Trace()\n get isRouteParameter(): boolean {\n return !!this.urlFormat;\n }\n\n abstract isEmptyValue(value: T): boolean;\n\n abstract hasChanged(a: any, b: any): boolean;\n\n createBackingModel(): HasValue<T> {\n const model = this.backingModelFactory();\n model[PARAMETER_DEFINITION_KEY] = this;\n return model;\n }\n\n protected getOptionValue<K extends keyof ParameterDefinition.Options<T>>(key: K): ParameterDefinition.Options<T>[K] {\n return this.options.getOptional(key, null);\n }\n\n // @Trace()\n async sanitise(value: T, visit: Visit, placeHistory: PlaceHistory, injector: Injector, isPopState: boolean): Promise<T> {\n // console.log(`sanitise(${this.propertyName})`)\n value = await this.sanitiseMissing(visit, placeHistory, value);\n value = await this.runCustomSanitiser(value, visit, placeHistory, injector, isPopState);\n return value;\n }\n\n private async runCustomSanitiser(value: T, visit: Visit, placeHistory: PlaceHistory, injector: Injector, isPopState: boolean): Promise<T> {\n const customSanitiser = this.prepareCustomSanitiser(injector);\n return customSanitiser ? customSanitiser.sanitise(value, visit, injector) : value;\n }\n\n private sanitiseMissing(visit: Visit, placeHistory: PlaceHistory, value: T) {\n if (this.isMissingFrom(visit)) {\n const returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);\n if (returningFromSomewhereElse) {\n const lastKnownVisit = placeHistory.getMostRecentVisitFor(visit.placeDefinition);\n if (this.remember && lastKnownVisit) {\n value = lastKnownVisit.getParameterValue(this);\n }\n value = this.isEmptyValue(value) ? this.defaultValue : value;\n }\n }\n return value;\n }\n\n private prepareCustomSanitiser(injector: Injector): ParameterSanitiser<any> {\n const customSanitiser = this.options.getOptional('sanitiser', null);\n if (isFunction(customSanitiser)) {\n return injector.get(customSanitiser);\n }\n if (isObject(customSanitiser)) {\n return isFunction(customSanitiser['sanitise']) ?\n customSanitiser as ParameterSanitiser<any> :\n lang.illegalState(`expected @VisitParameter({sanitiser: ...}) for ${this.propertyName} to be a constructor or instance of ParameterSanitiser, got: ` + customSanitiser);\n }\n return undefined;\n }\n\n private isMissingFrom(visit: Visit) {\n return !visit.hasParameter(this);\n }\n}\n\nexport namespace ParameterDefinition {\n\n export interface Options<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n }\n\n export class RouteId<T> extends ParameterDefinition<T> {\n readonly isRouteId = true;\n readonly isArray = false;\n protected backingModelFactory = () => new MutableValueModel<T>();\n\n isEmptyValue(value: T): boolean {\n return isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n\n }\n\n export class ValueParameter<T> extends ParameterDefinition<T> {\n readonly isRouteId = false;\n readonly isArray = false;\n protected backingModelFactory = () => new MutableValueModel<T>();\n\n isEmptyValue(value: T): boolean {\n return isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n }\n\n export class ArrayParameter<T> extends ParameterDefinition<T[], T> {\n readonly isRouteId = false;\n readonly isArray = true;\n protected backingModelFactory = () => new MutableListModel<T>();\n\n constructor(parameterName: string, options: Options<T[]>, urlFormat: Formatter<T>) {\n super(parameterName, options, urlFormat);\n }\n\n isEmptyValue(value: T[]): boolean {\n return isNil(value) || value.length < 1;\n }\n\n hasChanged(a: T[], b: T[]): boolean {\n return !isEqual(a, b);\n }\n\n }\n\n export function get<T>(model: ValueModel<T>): ParameterDefinition.ValueParameter<T>\n export function get<T>(model: ListModel<T>): ParameterDefinition.ArrayParameter<T>\n export function get<T>(model: ValueModel<T> | ListModel<T>): ParameterDefinition.ValueParameter<T> | ParameterDefinition.ArrayParameter<T> {\n const parameterDefinition = model[PARAMETER_DEFINITION_KEY];\n if (!parameterDefinition) {\n lang.illegalArgument('model hasn\\'t been annotated with @VisitParameter, @VisitParameterList or @RouteId');\n }\n return parameterDefinition;\n }\n\n\n}\n","import { ParamMap } from '@angular/router';\nimport { assert, Constructable, Trace } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { isEmpty, isNil } from 'lodash';\nimport { PlaceComponent } from './place-component';\nimport { ParameterDefinition } from './route/parameter-definition';\nimport { Visit } from './visit';\n\nexport class PlaceDefinition {\n\n constructor(readonly component: Constructable<PlaceComponent>,\n readonly path: string,\n readonly authenticate: boolean,\n readonly role: any,\n readonly data: { [key: string]: any },\n readonly routeParameters: ParameterDefinition<any>[],\n readonly children: PlaceDefinition[]) {\n }\n\n hasRouteId() {\n return !!this.getRouteIdParameterDef();\n }\n\n @Memoize()\n getRouteIdParameterDef(): ParameterDefinition<any> {\n return this.routeParameters.find(p => p.isRouteId);\n }\n\n @Memoize()\n getRouteParameterDefs(includeRouteId = false): ParameterDefinition<any>[] {\n return this.getVisitParameterDefs({ includeRouteId, includeRouteParameters: true });\n }\n\n @Memoize()\n getVisitParameterDefs(include?: PlaceDefinition.ParameterOptions): ParameterDefinition<any>[] {\n const opts = Opts.get(include);\n // includes\n const includeRouteId = !include || opts.getOptional('includeRouteId', false);\n const includeRouteParameters = !include || opts.getOptional('includeRouteParameters', false);\n const includeNonRouteParameters = !include || opts.getOptional('includeNonRouteParameters', false);\n return this.routeParameters.filter(p => {\n return (includeRouteId && p.isRouteId)\n || (includeRouteParameters && p.isRouteParameter && !p.isRouteId) // route id is included in the line above\n || (includeNonRouteParameters && !p.isRouteParameter);\n });\n }\n\n getPlaceData<T>(key: string, defaultValue?: T): T {\n return this.data ?\n isNil(this.data[key]) ? defaultValue : this.data[key] :\n defaultValue;\n }\n\n searchPlaceData<T>(keys: string[], defaultValue?: T): T {\n if (this.data) {\n const found = keys.find(key => !isNil(this.data[key]));\n return found ? this.data[found] : defaultValue;\n } else {\n return defaultValue;\n }\n }\n\n getRouteIdFrom(visit: Visit) {\n const routeIdParameterDef = this.getRouteIdParameterDef();\n return routeIdParameterDef ? visit.getParameterValue(routeIdParameterDef) : null;\n }\n\n getFormattedRouteId(visit: Visit): any {\n // Note: RouteIds are always present in the url and are just empty strings when not defined. This is\n // mandated by the fact that redirects from <path> to <path>/:id always include the id parameter as\n // an empty string.\n return visit.hasRouteId() ? this.getRouteIdParameterDef().urlFormat.format(visit.getRouteId()) : \"\";\n }\n\n // @Trace()\n getFormattedRouteParameters(visit: Visit, includeRouteId = false): { [p: string]: string } {\n const result: { [p: string]: string } = {};\n this.getVisitParameterDefs({\n includeRouteId, includeRouteParameters: true\n }).forEach(def => {\n const value = visit.getParameterValue(def);\n if (!def.isEmptyValue(value)) {\n if (def.isArray) {\n assert.isArray(value);\n result[def.name] = value.map(v => def.urlFormat.format(v));\n } else {\n assert.isFalsey(Array.isArray(value));\n result[def.name] = def.urlFormat.format(value);\n }\n }\n });\n return result;\n }\n\n getNonRouteParameters(visit: Visit): { [p: string]: string } {\n const result: { [p: string]: string } = {};\n this.getVisitParameterDefs({ includeNonRouteParameters: true }).forEach(def => {\n const value = visit.getParameterValue(def);\n if (!def.isEmptyValue(value)) {\n result[def.name] = value;\n }\n });\n return result;\n }\n\n // @Trace()\n parseRouteParams(params: ParamMap): { [p: string]: any } {\n const result: { [p: string]: any } = {};\n this.getVisitParameterDefs({\n includeRouteId: true,\n includeRouteParameters: true,\n includeNonRouteParameters: false\n }).forEach(def => {\n // params will return null for non existent names\n if (params.has(def.name)) {\n if (def.isArray) {\n // const values = params.getAll(def.name); // TODO: EEEK getAll is returning [\"1,2,3,4\"] when we gave it [\"1\",\"2\",\"3\",\"4\"].\n const values = params.get(def.name).split(',').map(s => s.trim());\n result[def.name] = values.map(v => def.urlFormat.parse(v));\n } else {\n const value = params.get(def.name);\n if (def.isRouteId) { // TODO: Move this to parameter def so it's a strategy pattern\n // because our id routes redirect if the id isn't present we always have a id\n // parameter in our params. This will bugger our remember and defaultvalue sanitisation\n // as it'll see that the id is present (event thought its a blank string).\n if (!isEmpty(value)) {\n result[def.name] = def.urlFormat.parse(value);\n }\n } else {\n result[def.name] = def.urlFormat.parse(value);\n }\n }\n }\n });\n return result;\n }\n\n}\n\nexport namespace PlaceDefinition {\n export interface ParameterOptions {\n includeRouteId?: boolean;\n includeRouteParameters?: boolean;\n includeNonRouteParameters?: boolean;\n }\n}\n","import { Directive } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport {\n assert,\n Binding,\n Constructable,\n DebugContext,\n Dsl,\n Guard,\n IMutableHasValue,\n lang,\n MutableValueModel,\n ValueModel\n} from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport 'reflect-metadata';\nimport { isNil } from 'lodash';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { InteractionContext } from '../interaction/interaction-context';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\n\n// RAKE: making this Symbol(...) broke things.\nexport const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';\n// this one seems ok.\nexport const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n\n\nclass ParameterChangeInterceptor<T> {\n constructor(parameterDef: ParameterDefinition<T>, model: ValueModel<T>, callback: PlaceComponent.InterceptCallback<T>, options: PlaceComponent.InterceptOptions) {\n }\n\n async canProceed(nextState: Visit, interactionContext: InteractionContext) {\n return true;\n }\n}\n\n@Directive()\nexport class PlaceComponent extends DisposableComponent {\n\n private readonly _placeReadyCallbacks: Function[] = [];\n private visitModel = new MutableValueModel<Visit>();\n private _inVisitUpdate = new Guard();\n private _active = new MutableValueModel<boolean>(false);\n\n interactionContext?: InteractionContext;\n childPlaces: Constructable<PlaceComponent>[];\n private readonly _parameterChangeInterceptors: ParameterChangeInterceptor<any>[] = [];\n\n canDeactivate?(interactionContext: InteractionContext): boolean | Promise<boolean>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n when(this._active).becomesTruthy(() => this._notifyPlaceReady());\n this.childPlaces = this.placeDefinition.children.map(d => d.component);\n }\n\n public initialiseVisit(visit: Visit, notifyVisitChanged: (current: Visit, previous: Visit) => void) {\n assert.isNil(this.visitModel.value);\n\n const { when } = Dsl.disposeWith(this);\n\n this.visitModel.value = visit;\n DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);\n\n // we track if the any of the bindings updated the route. If so we remember it and update the\n // route in one go at the end.\n this.placeDefinition\n .getVisitParameterDefs()\n .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));\n\n when(this.visitModel).changes((current, previous) => {\n notifyVisitChanged(current, previous);\n }, { unless: this._inVisitUpdate });\n\n // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for\n // now we're not doing it as it's a fair bit of effort and will only affect people if they're\n // cutting and pasting urls to each other.\n // // the binding process can update the visit (e.g. if a selection model has already selected during\n // // component construction) and there was no value specified in the route\n // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {\n // notifyVisitChanged(this.visitModel.value, visit)\n // }\n }\n\n public updateVisit(visit: Visit) {\n assert.isTruthy(this.isInitialised());\n assert.notNil(visit);\n this._inVisitUpdate.whileTrue(() => {\n this.visitModel.value = visit;\n });\n }\n\n isInitialised() {\n return !!this.visitModel.value;\n }\n\n // @Trace()\n /**\n * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model\n * initialised during the constructor) and the route has nothing, then the visit will be udpated and this\n * method will return ture to nofiy the the visit has changed.\n */\n private installAndInitialiseBinding<T, S>(initialVisit: Visit, parameterDef: ParameterDefinition<T, S>) {\n const model = this[parameterDef.propertyName] as IMutableHasValue<T>;\n DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);\n const binding = this.registerDisposable(new Binding(this.visitModel, model, {\n toRight(visit: Visit): T {\n const value = visit.getParameterValue(parameterDef);\n // console.log('push to component', { name: parameterDef.name, value, visit });\n return value;\n },\n toLeft(value: T, currentVisit?: Visit): Visit {\n // console.log('push to route', { name: parameterDef.name, value, currentVisit });\n return currentVisit.replace(parameterDef, value);\n }\n }));\n\n // Now we need to initialise the binding direction. If we have a value in the Url then we should always push\n // that to the view. If we don't and the view already has a value (e.g. a selection model has already initialised in the\n // component constructor) then we should push that to the route.\n const isInVisit = !isNil(initialVisit.getParameterValue(parameterDef));\n const isInModel = !isNil(model.value);\n if (!isInVisit && isInModel) {\n binding.writeLeft(); // push it to the route\n } else {\n binding.writeRight(); // push it to the model\n }\n }\n\n @Memoize()\n get placeDefinition(): PlaceDefinition {\n const definition = PlaceComponent.getDefinition(this.constructor as any as Constructable<PlaceComponent>);\n if (!definition) {\n lang.illegalState(`${this.constructor.name} extends PlaceComponent but doesn't have @Place({..}) decorator.`)\n }\n return definition;\n }\n\n get active() {\n return this._active.readonly;\n }\n\n /**\n * Called by the router to see if this component can deactivate. This isn't called for route parameter changes.\n * @param interactionContext\n */\n async _canLeavePlace(interactionContext: InteractionContext): Promise<boolean> {\n return this.canDeactivate ? this.canDeactivate(interactionContext) : true;\n }\n\n /**\n * Called by the router to see if this component can deactivate. This isn't called for route parameter changes.\n * @param interactionContext\n * @param nextState\n */\n async _canChangeRouteParameters(interactionContext: InteractionContext, nextState: UrlSnapshot): Promise<boolean> {\n if (this._parameterChangeInterceptors.length > 0) {\n const visit = nextState.createVisitFor(this.placeDefinition);\n for (let i = 0; i < this._parameterChangeInterceptors.length; i++) {\n const interceptor = this._parameterChangeInterceptors[i];\n const keepGoing = await interceptor.canProceed(visit, interactionContext);\n if (!keepGoing) {\n return false;\n }\n }\n }\n return true;\n }\n\n\n /**\n * Called by the router when the place is ready to interact after any animations have run.\n */\n _notifyActive(active: boolean) {\n this._active.value = active;\n }\n\n /**\n * Called by the router when the place is ready to interact after any animations have run.\n */\n _notifyPlaceReady() {\n if (this.onPlaceReady.length === 1) {\n this._placeReadyCallbacks.forEach(callback => callback());\n } else {\n console.warn('Overriding PlaceComponent.onPlaceReady has been deprecated. Use PlaceComponent.onPlaceReady(() => {... do stuff...}) instead.');\n this.onPlaceReady(undefined);\n }\n }\n\n onPlaceReady(callback: () => void) {\n this._placeReadyCallbacks.push(callback);\n }\n\n interceptVisitParameterChange<T>(model: ValueModel<T>, callback: PlaceComponent.InterceptCallback<T>, options?: PlaceComponent.InterceptOptions) {\n const parameterDef = ParameterDefinition.get(model);\n this._parameterChangeInterceptors.push(new ParameterChangeInterceptor(parameterDef, model, callback, options));\n }\n\n}\n\nexport namespace PlaceComponent {\n\n export function isPlaceComponentConstructor(target: any): target is Constructable<PlaceComponent> {\n return lang.constructorChain(target as Constructable<any>).includes(PlaceComponent);\n }\n\n export function getRouteParameters(klass: Constructable<PlaceComponent>): ParameterDefinition<any>[] {\n return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY) as ParameterDefinition<any>[];\n }\n\n export function getDefinition(snapshotOrConstructor: ActivatedRouteSnapshot | Constructable<PlaceComponent>): PlaceDefinition {\n if (snapshotOrConstructor instanceof ActivatedRouteSnapshot) {\n const component = snapshotOrConstructor.component;\n if (!isPlaceComponentConstructor(component)) {\n throw new Error(`ActivatedRouteSnapshot component is not a PlaceComponent, got ${component}`);\n }\n return Reflect.getMetadata(DEFINITION_META_DATA_KEY, component);\n } else {\n return Reflect.getMetadata(DEFINITION_META_DATA_KEY, snapshotOrConstructor);\n }\n }\n\n export function injectDefinition(klass: Constructable<PlaceComponent>, definition: PlaceDefinition) {\n Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);\n }\n\n export type InterceptCallback<T> = (is: T, was: T, interactionContext: InteractionContext) => boolean | Promise<boolean>;\n\n export interface InterceptOptions {\n initialValue: 'evaluationUnlessNil' | 'evaluate'\n }\n\n\n}\n","import { Trace } from '@coolon/pectin';\n\nimport { isEqual, isNil, isString } from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition';\n\ninterface Params {\n [p: string]: any;\n}\n\n\nexport class Visit {\n\n constructor(readonly placeDefinition: PlaceDefinition, private readonly visitParameters: Params = {}) {\n }\n\n // @Trace()\n getRouteId(): any {\n return this.placeDefinition.getRouteIdFrom(this);\n }\n\n // @Trace()\n hasRouteId(): boolean {\n return !isNil(this.getRouteId());\n }\n\n /**\n * Returns the value of the place parameter with the specified name. The parameter\n * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the\n * same as the the ValueModel property name.\n * @param parameter the visit parameter definition\n */\n getParameterValue<T, S>(parameter: ParameterDefinition<T, S> | string): T {\n return isString(parameter) ? this.visitParameters[parameter] : this.visitParameters[parameter.name];\n }\n\n // @Trace()\n hasParameter(parameterDef: ParameterDefinition<any>): boolean {\n return Object.keys(this.visitParameters).includes(parameterDef.name);\n }\n\n replace<T>(parameter: ParameterDefinition<T, any>, value: T): Visit {\n return new Visit(this.placeDefinition, { ...this.visitParameters, [parameter.name]: value });\n }\n\n mergeRouteParameters<S>(routeParams: { [p: string]: any }): Visit {\n // todo: whitelist parameters.\n const routeParameterKeys = Object.keys(routeParams);\n const params = {};\n this.placeDefinition.getVisitParameterDefs().forEach(def => {\n if (def.isRouteId || def.isRouteParameter) {\n if (routeParameterKeys.includes(def.name)) {\n params[def.name] = routeParams[def.name];\n }\n } else {\n // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the\n // defaults and remember sanitisation process.\n const value = this.getParameterValue(def);\n if (this.hasParameter(def)) {\n params[def.name] = value;\n }\n }\n });\n return new Visit(this.placeDefinition, params);\n }\n\n // @Trace()\n hasRoutingChangedFrom(other: Visit): boolean {\n const samePlace = other.placeDefinition === this.placeDefinition;\n const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);\n const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);\n // console.log({currentParams, otherParams});\n const sameRouteParameters = isEqual(currentParams, otherParams);\n return !samePlace || !sameRouteParameters;\n }\n\n hasChangedFrom(other: Visit) {\n const sameNonRouteParameters = isEqual(\n this.placeDefinition.getNonRouteParameters(this),\n this.placeDefinition.getNonRouteParameters(other)\n );\n return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);\n }\n\n toDebugString() {\n return Object.keys(this.visitParameters).map(k => `${k}=${this.visitParameters[k]}`).join(',');\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const AUP_PLACE_CONFIG = new InjectionToken<PlaceConfig>('AUP_PLACE_CONFIG');\n\nexport interface PlaceConfig {\n animationDuration: string;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'aup-not-authorised-notice',\n templateUrl: './not-authorised-notice.component.html',\n styleUrls: ['./not-authorised-notice.component.scss']\n})\nexport class NotAuthorisedNoticeComponent {\n\n constructor() {\n }\n}\n","<p>You are not authorised to access this page</p>\n","import { animate, group, query, style, transition, trigger } from '@angular/animations';\n\n// Freezes the state of the components at the start of the animation.\nconst animationStartStyle = style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });\n\nconst left = [\n query(':enter, :leave', animationStartStyle, { optional: true }),\n group([\n query(':enter', [\n style({ transform: 'translateX(-100%)' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(0%)' }))\n ], {\n optional: true\n }),\n query(':leave', [\n style({ transform: 'translateX(0%)' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(100%)' }))\n ], {\n optional: true\n })\n ])\n];\n\nconst right = [\n query(':enter, :leave', animationStartStyle, { optional: true }),\n group([\n query(':enter', [\n style({ transform: 'translateX(100%)', minHeight: '1px' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(0%)' }))\n ], {\n optional: true\n }),\n query(':leave', [style({ transform: 'translateX(0%)' }), animate('{{duration}} ease-out', style({\n transform: 'translateX(-100%)',\n minHeight: '1px'\n }))], {\n optional: true\n })\n ])\n];\n\nexport function leftRightPlaceAnimation(duration: string) {\n return trigger('routeAnimations', [\n transition(':increment', right, { params: { duration: duration } }),\n transition(':decrement', left, { params: { duration: duration } })\n ]);\n}\n\nexport const LEFT_RIGHT_PLACE_ANIMATION = leftRightPlaceAnimation('0.3s');\n","import { Trace, assert } from '@coolon/pectin';\n\nimport { isEqual } from 'lodash';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { NavigationSession } from './session/navigation-session';\n\n/**\n * This class handles the logic around canDeactivate for a given router state transition. It's core responsibilities are:\n * 1. Ensure we only ask the component to deactivate once on a given navigation cycle (since visit sanitisation can result in multiple round trips to through the router.)\n * 2. Ensure only the primary place component is asked when there are nested places. The primary component is the one at the top\n * of the routing change tree.\n * 3. Automatically handle standard interaction scenarios on the components behalf.\n */\nexport class PlaceComponentDeactivationHandler {\n\n private canDeactivatePromise: Promise<boolean | UrlSnapshot>;\n\n constructor(readonly component: PlaceComponent, readonly navigationSession: NavigationSession, readonly isPrimaryComponent: boolean) {\n assert.notNil(component);\n }\n\n get routerInteractionAdapter() {\n return this.navigationSession.interactionServiceAdapter;\n }\n\n get urlService() {\n return this.navigationSession.urlService;\n }\n\n get placeDefinition():PlaceDefinition {\n return this.component.placeDefinition;\n }\n\n // @Trace()\n async canDeactivate(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // We'll get called multiple times if there's any parameter sanitisation so\n // we always return true if we accepted promise from a previous cycle of the current\n // navigation session.\n if (!this.canDeactivatePromise) {\n // console.log(`creating deactivate promise for -> ${this.component.constructor.name}`);\n this.canDeactivatePromise = this.canDeactivateComponent(currentUrl, nextState);\n }\n return this.canDeactivatePromise;\n }\n\n\n // @Trace()\n protected async canDeactivateComponent(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<UrlSnapshot | boolean> {\n // Automatically cancel any active activities if the navigation session was triggered by the back button.\n // If we handled more than just the pop state then it leads to the UI ignoring clicks and just cancelling things which is deeply disconcerting.\n if (this.navigationSession.isPopState) {\n\n if (this.isPrimaryComponent && this.routerInteractionAdapter.isModalActive()) {\n const routeIds = this.urlService.getActiveInteractionIdsFromUrl(nextState.url);\n const currentIds = this.routerInteractionAdapter.getActiveInteractionContextIds();\n if (!isEqual(currentIds, routeIds)) { // why am I checking this????\n await this.routerInteractionAdapter.cancelCurrentModalInteraction();\n return false;\n }\n } else {\n // check if the component has an in place interaction\n if (this.routerInteractionAdapter.isComponentInteracting(this.component)) {\n await this.routerInteractionAdapter.cancelComponentInteraction(this.component);\n return false;\n }\n }\n }\n\n // No interaction in progress, so ask the component .\n // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and\n // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.\n if (this.isGoingToADifferentPlace(nextState)) {\n const canLeave = await this.component._canLeavePlace(this.navigationSession.canDeactivateInteractionContext);\n // The component has an active interaction but no deactivation hook. Rather than guessing what to do\n // we'll just cancel the navigation and print a warning.\n if (canLeave && this.routerInteractionAdapter.isComponentInteracting(this.component)) {\n console.warn('Route changed while component has active interaction, cancelling navigation');\n return false;\n }\n\n return canLeave;\n } else {\n // either an interaction or visit parameter change.\n return await this.component._canChangeRouteParameters(this.navigationSession.canDeactivateInteractionContext, nextState);\n }\n }\n\n protected isGoingToADifferentPlace(nextState: UrlSnapshot) {\n // Because places with a route-id cover two route segments we get asked to deactivate\n // if the route id is added or removed. So if our path is still present the url\n // then we shouldn't deactivate the place.\n return !nextState.includesPathOf(this.component.placeDefinition);\n }\n}\n","import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, RouterEvent } from '@angular/router';\nimport { Dsl, GarbageCollector, lang, Logger, Trace } from '@coolon/pectin';\nimport { InteractionContext } from '../../../interaction/interaction-context';\nimport { InteractionServiceRoutingAdapter } from '../../../interaction/services/interaction-service-routing-adapter';\nimport { PlaceComponent } from '../../place-component';\nimport { PlaceDefinition } from '../../place-definition';\nimport { UrlService } from '../../url-service';\nimport { UrlSnapshot } from '../../url-snapshot';\nimport { Visit } from '../../visit';\nimport { PlaceComponentDeactivationHandler } from '../place-component-deactivation-handler';\nimport { NavigationContext } from './navigation-context';\n\n/**\n * Transient states\n */\nexport abstract class NavigationSession extends GarbageCollector {\n\n debugPropertyKeys: string[] = [];\n private _visits = new Map<PlaceDefinition, Visit>();\n\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n abstract readonly isPopState: boolean;\n\n private _interactionContext: InteractionContext;\n\n constructor(readonly context: NavigationContext, readonly startingUrl: string) {\n super();\n // TODO: can I get away without creating one every time?\n this._interactionContext = this.context.routerInteractionAdapter.createExclusiveInteractionContext();\n this.onDispose(() => {\n // the interaction context can be detached during the back button cancellation state transition\n // as the transition is synchronous and activityCancellation isn't. Otherwise dispose will be\n // called before the context has been cancelled. It might be work having the interaction context\n // automatically cancel if the context is disposed so we don't have worry about detaching etc.\n if (this._interactionContext) {\n this._interactionContext.dispose(); // or do something like cancelAndDispose?\n }\n });\n }\n\n get name(): string {\n return this.constructor.name;\n }\n\n get urlService(): UrlService {\n return this.context.urlService;\n }\n\n get interactionServiceAdapter(): InteractionServiceRoutingAdapter {\n return this.context.routerInteractionAdapter;\n }\n\n storeVisit(visit: Visit) {\n // console.log(`Storing visit for ${visit.placeDefinition.component.name}`, {visit});\n this._visits.set(visit.placeDefinition, visit);\n }\n\n\n getVisitFor(placeDef: PlaceDefinition) {\n const visit = this._visits.get(placeDef);\n // console.log(`Getting visit for ${placeDef.component.name}`, {visit});\n return visit;\n }\n\n get canDeactivateInteractionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n notifyActive() {\n // noop.\n }\n\n onRouterStarted(event: NavigationStart): void {\n // navigation sessions can have many cancel start cycles due to place guard redirects\n this.ignore(event);\n }\n\n // @Trace()\n onUrlChange(url: string) {\n // Normally we just ignore these but they are the only way of detecting if the back button\n // was clicked during a canDeactivate promise.\n // 1. a route is in progress and awaiting a canDeactivateGuard\n // 2. the user the clicks the back button.\n // So to handle that scenario we need to check if we've got a can deactivate interaction in\n // progress and the do the appropriate clean up.\n if (this.canDeactivateInteractionContext && this.canDeactivateInteractionContext.isActive()) {\n this.cancelCanDeactivateInteraction(url);\n }\n }\n\n onPopState(event: NavigationStart): void {\n return this.illegalTransition(event);\n }\n\n onRouterCancelled(event: NavigationCancel): void {\n return this.illegalTransition(event);\n }\n\n onRouterError(event: NavigationError): void {\n return this.illegalTransition(event);\n }\n\n onRouterEnd(event: NavigationEnd): void {\n return this.illegalTransition(event);\n }\n\n getVisits(): Visit[] {\n return Array.from(this._visits.values());\n }\n\n protected illegalTransition<R>(message: string | RouterEvent): R {\n return lang.illegalState(`${message.toString()} not supported by ${this.toString()}`);\n }\n\n protected currentRouterUrl(): string {\n return this.urlService.getCurrentRouterUrl();\n }\n\n resetBrowserLocation(url, options: { replaceCurrent: boolean } = { replaceCurrent: false }) {\n // console.log(`---> resetting browser location to: ${url}`);\n this.urlService.resetBrowserLocation(url, options);\n }\n\n // @Trace()\n protected repairBrowserHistoryAndUrlAfterGuardCancellation(poppedHistoryToReplace: string, activeUrl:string): void {\n // Important: I tried to perform this fix at a later point int he routing cycle but it created all kinds of\n // strangeness.\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n // console.log(`replacing ${this.urlService.getCurrentLocationUrlSnapshot().url} with ${poppedHistoryToReplace}`);\n this.urlService.resetBrowserLocation(poppedHistoryToReplace, { replaceCurrent: true });\n // console.log(`pushing ${activeUrl} back onto the history.`);\n this.urlService.resetBrowserLocation(activeUrl, { replaceCurrent: false });\n }\n\n\n ignore(event: RouterEvent, reason?: string): void {\n reason = reason ? ` -> ${reason}` : '';\n // Logger.get(this).info(`Ignoring router event${reason}: ${event.constructor.name} -> ${event.url} :: ${this.toString()}`);\n }\n\n toString(): string {\n return `${this.constructor.name}(${this.debugState()})`;\n }\n\n protected debugState(properties?: string[]) {\n return (properties || this.debugPropertyKeys).map(p => {\n return `${p}: ${this[p]}`;\n }).join(', ');\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // console.log(`---> canDeactivatePlace(${component.placeDefinition.path}, ${currentUrl.url} -> ${nextUrl.url})`);\n // lookup the handler and create it if we've not seen it yet\n let handler = this.componentDeactivationHandlers.get(component);\n if (!handler) {\n const isPrimaryHandler = this.componentDeactivationHandlers.size === 0; // only primary handler cancels the app model interations\n handler = new PlaceComponentDeactivationHandler(component, this, isPrimaryHandler);\n this.componentDeactivationHandlers.set(component, handler);\n }\n return handler.canDeactivate(currentUrl, nextUrl).then(result => {\n // console.log(`<--- canDeactivatePlace(${component.placeDefinition.path}): ${result}`);\n return result;\n }).catch(error => {\n throw error;\n });\n }\n\n cancelCanDeactivateInteraction(newUrl: string): void {\n Logger.get(this).info(`back button pressed during navigation session interaction promise`);\n // detach the interaction from the session so it doesn't get disposed until the activity has finished\n // all it's things.\n const canDeactivateInteractionContext = this.detachCanDeactivateInteractionContext();\n // TODO: I need to make the exclusive interaction context disallow nested activities or\n // that would mess things up entirely. Or, can I do a context.abortAll().then(..)\n Logger.get(this).info('cancelling current navigation activity..');\n canDeactivateInteractionContext.cancelActiveActivity().then(() => {\n canDeactivateInteractionContext.dispose();\n });\n\n this.handleCanDeactivateCancelledEventScenario(newUrl);\n }\n\n abstract handleCanDeactivateCancelledEventScenario(newUrl: string): void\n\n protected reinstateUrlAfterAngularChangedItOnCancellation(url: string) {\n // Angular calls _this.resetUrlToCurrentUrlTree() on cancelling and fucks our history.\n // So this means that the top of the stack is the url we want to go back to, and not the one that was on\n // it before the cancel event fired.\n // So we need to:\n // - replace the just inserted url with the one that used to be there.\n // - push our actual url back onto the top of the stack.\n this.resetBrowserLocation(url, { replaceCurrent: true });\n }\n\n protected detachCanDeactivateInteractionContext(): InteractionContext {\n const context = this._interactionContext;\n this._interactionContext = null;\n return context;\n }\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { NavigationSession } from '../navigation-session';\n\nexport abstract class EventCleanUpSession extends NavigationSession {\n\n\n handleCanDeactivateCancelledEventScenario(newUrl: string): void {\n lang.illegalState('onCanDeactivateInteractionCancelled not supported for event clean up states');\n }\n\n}\n","import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart } from '@angular/router';\nimport { Logger, Trace } from '@coolon/pectin';\nimport { PlaceComponent } from '../../../place-component';\nimport { UrlSnapshot } from '../../../url-snapshot';\nimport { SynchroniseInteractionContextIdsWithRoute } from '../interactions/synchronise-interaction-context-ids-with-route';\nimport { NavigationContext } from '../navigation-context';\nimport { NavigationSession } from '../navigation-session';\nimport { lang } from '@coolon/typescript-utilities';\nimport { EventCleanUpSession } from './event-clean-up-session';\n\n/**\n * The sequence of router events are:\n * NavigationError -> url = url of navigation link\n * NavigationEnd\n * onPopState url = Our currentUrl sans and interaction query params\n * NavigationCancel url == same as above.\n */\nexport class WaitUntilLeavingInteractionTransitionCancelled extends EventCleanUpSession {\n\n readonly isPopState = false;\n firstCancelHandled = false;\n popStateHandled = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n\n constructor(context: NavigationContext,\n startingUrl: string,\n readonly locationChangeTriggerUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.locationChangeTriggerUrl, this.startingUrl);\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n onPopState(event: NavigationStart): void {\n this.ignore(event);\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n}\n","import { NavigationCancel, NavigationEnd, NavigationStart } from '@angular/router';\nimport { Deferred, lang, Trace } from '@coolon/pectin';\nimport { NavigationContext } from '../navigation-context';\nimport { NavigationSession } from '../navigation-session';\n\n/**\n * This session tracks the process of removing the last interaction context from the URL and provides a promise\n * the resolves when the process and completed. This case is special as the process involves a regular routing cycle\n * followed by a call to location.back(). The later triggers a url change with no other routing events. So this\n * class tracks when the first routing cycle finishes and then waits for the subsequent lone url change event.\n */\nexport class RemoveLastInteractionFromUrlNavigationSession extends NavigationSession {\n readonly isPopState = true;\n debugPropertyKeys = ['startingUrl', 'poppedHistoryUrl'];\n\n private finished: Deferred<boolean>;\n private gotPopState: boolean;\n\n constructor(context: NavigationContext, startingUrl: string) {\n super(context, startingUrl);\n this.finished = Deferred.defer<boolean>();\n }\n\n // @Trace()\n onPopState(event: NavigationStart): void {\n this.gotPopState = true;\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n this.ignore(event);\n }\n\n // @Trace()\n onUrlChange(url: string) {\n }\n\n private finishUp() {\n this.context.finishRoutingSession();\n this.finished.resolve(true);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n if (this.gotPopState) {\n this.finishUp();\n }\n }\n\n // @Trace()\n handleCanDeactivateCancelledEventScenario(locationTriggerUrl: string): void {\n lang.illegalState('onCanDeactivateInteractionCancelled not supported for activity context synchronisation since we should never leave a place');\n }\n\n get finishedPromise(): Promise<boolean> {\n return this.finished.promise;\n }\n\n}\n","import { NavigationCancel, NavigationEnd } from '@angular/router';\nimport { lang } from '@coolon/typescript-utilities';\n\nimport { isEqual } from 'lodash';\nimport { NavigationContext } from '../navigation-context';\nimport { NavigationSession } from '../navigation-session';\nimport { RemoveLastInteractionFromUrlNavigationSession } from './remove-last-interaction-from-url-navigation-session';\n\nexport class SynchroniseInteractionContextIdsWithRoute extends NavigationSession {\n\n readonly isPopState = false;\n\n constructor(context: NavigationContext, startingUrl: string, readonly wasTriggeredByPopState: boolean) {\n super(context, startingUrl);\n }\n\n notifyActive() {\n // TODO: Do I still need this??\n setTimeout(() => {\n this.syncInteractionIdsWithRouter();\n });\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n syncInteractionIdsWithRouter(): void {\n const currentIds = this.interactionServiceAdapter.getActiveInteractionContextIds();\n const previousIds = this.urlService.getCurrentLocationUrlSnapshot().getInteractionIds();\n // console.log(`---> synchroniseInteractionIds`, { is: currentIds.join(','), was: previousIds.join(',') });\n if (isEqual(currentIds, previousIds)) {\n // console.log('### Activity context ids were the same, skipping');\n this.context.finishRoutingSession();\n } else {\n if (currentIds.length > previousIds.length) {\n const isFirstActivity = currentIds.length > previousIds.length && previousIds.length < 1;\n this.addActivityContextToRoute(currentIds, isFirstActivity);\n } else {\n this.removeActivityContextFromRoute(currentIds);\n }\n }\n }\n\n // @Trace()\n addActivityContextToRoute(activeInteractionContextIds: string[], isFirst: boolean): void {\n const urlSnapshot = this.urlService.getCurrentRouterSnapshot().updateInteractionIds(activeInteractionContextIds);\n this.context.navigateByUrl(urlSnapshot, {\n replaceUrl: !isFirst\n }).then(result => {\n if (!this.urlService.getCurrentLocationUrlSnapshot().hasInteractionIds(activeInteractionContextIds)) {\n lang.illegalState(`Expected url to be ${urlSnapshot.url} but was ${this.urlService.getCurrentLocationUrl()}`);\n // this.urlService.resetBrowserLocation(urlSnapshot.url, {replaceCurrent: !isFirst})\n }\n });\n }\n\n\n // @Trace()\n removeActivityContextFromRoute(activeInteractionContextId: string[]): void {\n const urlSnapshot = this.urlService.getCurrentRouterSnapshot().updateInteractionIds(activeInteractionContextId);\n const isRemovingLastActivity = activeInteractionContextId.length < 1;\n if (isRemovingLastActivity) {\n if (this.wasTriggeredByPopState) {\n // console.log('removal was triggered by pop state, nothing to do.');\n // noop. Our url will be back to the non interaction version now so we dont' need to do anything.\n } else {\n // now we just pop our interaction id's from the browser history.\n // console.log(`Removal of the last activity wasn't triggered by pop state so we have to trigger one to clean the history`);\n const session = new RemoveLastInteractionFromUrlNavigationSession(this.context, this.urlService.getCurrentRouterUrl());\n this.context.transitionTo(session);\n this.urlService.back();\n }\n } else {\n // we've removed an interaction, but we still have remaining activities so we\n // update the url in place if it wasn't a pop state. If it was a pop state we need\n // to push it back up.\n // this.urlService.resetBrowserLocation(urlSnapshot.url, { replaceCurrent: !this.wasTriggeredByPopState });\n this.context.navigateByUrl(urlSnapshot, { replaceUrl: !this.wasTriggeredByPopState });\n }\n }\n\n handleCanDeactivateCancelledEventScenario(newUrl: string): void {\n lang.methodNotSupported();\n }\n\n}\n","import { NavigationCancel, NavigationEnd, NavigationError } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { NavigationSession } from '../navigation-session';\n\nimport { WaitUntilLeavingInteractionTransitionCancelled } from '../event-cleanup/wait-until-leaving-interaction-transition-cancelled';\nimport { SynchroniseInteractionContextIdsWithRoute } from './synchronise-interaction-context-ids-with-route';\n\n/**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n * NOTE: This state is activated when ever an interaction is started. It might be better to split it into\n * different states for different scenarios, e.g. starting model, starting model during route guard etc.\n */\nexport class NavigatingDuringInteraction extends NavigationSession {\n readonly isPopState = false;\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n onRouterError(event: NavigationError): void {\n // navigation was aborted.\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n if (this.context.routerInteractionAdapter.isActive()) {\n this.context.transitionTo(new SynchroniseInteractionContextIdsWithRoute(this.context, this.startingUrl, false))\n } else {\n this.context.finishRoutingSession(this.getVisits());\n }\n }\n\n // @Trace()\n handleCanDeactivateCancelledEventScenario(locationTriggerUrl: string): void {\n this.context.transitionTo(new WaitUntilLeavingInteractionTransitionCancelled(this.context,\n this.startingUrl,\n locationTriggerUrl));\n }\n\n}\n","import { Logger, Trace } from '@coolon/pectin';\nimport { NavigationContext } from './navigation-context';\nimport { NavigationSession } from './navigation-session';\n\nexport abstract class AbstractPopStateNavigation extends NavigationSession {\n readonly isPopState = true;\n debugPropertyKeys = ['startingUrl', 'poppedHistoryUrl'];\n\n constructor(context: NavigationContext, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n repairBrowserHistoryAndUrlAfterGuardCancellation(): void {\n super.repairBrowserHistoryAndUrlAfterGuardCancellation(this.poppedHistoryUrl, this.startingUrl)\n }\n\n}\n","import { NavigationCancel, NavigationEnd } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { AbstractPopStateNavigation } from '../abstract-pop-state-navigation';\nimport { NavigationContext } from '../navigation-context';\nimport { SynchroniseInteractionContextIdsWithRoute } from './synchronise-interaction-context-ids-with-route';\n\n/**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\nexport class PopStateDuringInteractionNavigation extends AbstractPopStateNavigation {\n\n constructor(context: NavigationContext, startingUrl: string, poppedHistoryUrl: string) {\n super(context, startingUrl, poppedHistoryUrl);\n }\n\n /**\n * Invoked when the place refuses to deactivate because of an unfinished interaction.\n * @param event\n */\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation();\n // NOTE: for now we need to wasTriggeredByPopState=false because we're resetting the url and history in the previous line.\n this.context.transitionTo(new SynchroniseInteractionContextIdsWithRoute(this.context, this.poppedHistoryUrl, false));\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n // this.context.transitionTo(new SynchroniseInteractionContextIdsWithRoute(this.context, this.poppedHistoryUrl, false));\n this.context.finishRoutingSession();\n }\n\n handleCanDeactivateCancelledEventScenario(newUrl: string): void {\n this.illegalTransition('Leaving interaction after pop-state should\\'t block so should never see a back button click');\n }\n\n}\n","import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { PlaceComponent } from '../../../place-component';\nimport { UrlSnapshot } from '../../../url-snapshot';\nimport { NavigationContext } from '../navigation-context';\nimport { EventCleanUpSession } from './event-clean-up-session';\n\n/**\n * This state handles the scenario where a link navigation triggered an interaction and the user clicked back a to cancel it.\n * The routing event sequence is different depending on the link that was clicked.\n *\n * NOTE: In angular prior to 10 the sequence of routing events was different depending on the initial link that was clicked.\n * This class used have ugle if/else code to handle it and a not that it should be split into sub states.\n * During the update to angular 10 I did this (as the tests for this scenario were failings). After doing so\n * it appears that angular now behaves the same in both cases. But rather that revert the changes I've left the\n * sub-state handling in in case it ever comes back.\n */\nexport class WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined extends EventCleanUpSession {\n\n readonly isPopState = false;\n firstCancelEventUrl: string;\n popStateEventUrl: string;\n clickedLinkMatchedBackButtonUrl = false;\n debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'firstCancelEventUrl', 'clickedLinkMatchedBackButtonUrl', 'popStateEventUrl'];\n\n constructor(context: NavigationContext,\n startingUrl: string,\n readonly clickedLinkUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n if (event.url === this.clickedLinkUrl) {\n this.context.transitionTo(new WaitForLinkSameAsBackToPlayOut(this.context, this.startingUrl, this.clickedLinkUrl));\n } else {\n this.context.transitionTo(new WaitForLinkDifferentFromBackToPlayOut(this.context, this.startingUrl, this.clickedLinkUrl));\n }\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n}\n\nclass WaitForLinkSameAsBackToPlayOut extends EventCleanUpSession {\n readonly isPopState = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'popStateEventUrl'];\n\n constructor(context: NavigationContext,\n startingUrl: string,\n readonly clickedLinkUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n onPopState(event: NavigationStart): void {\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel) {\n if (this.popStateEventUrl) {\n this.finaliseRouting();\n }\n }\n\n // @Trace()\n finaliseRouting() {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.clickedLinkUrl, this.startingUrl);\n return this.context.finishRoutingSession();\n }\n\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n\n}\n\n// See the note above. This class is identical to the previous but I've left it here in case angular decides to\n// route differently in this scenario going forward.\nclass WaitForLinkDifferentFromBackToPlayOut extends EventCleanUpSession {\n readonly isPopState = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'popStateEventUrl'];\n\n constructor(context: NavigationContext,\n startingUrl: string,\n readonly clickedLinkUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n onPopState(event: NavigationStart): void {\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel) {\n if (this.popStateEventUrl) {\n this.finaliseRouting();\n }\n }\n\n // @Trace()\n finaliseRouting() {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.clickedLinkUrl, this.startingUrl);\n return this.context.finishRoutingSession();\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n}\n\n\n//\n// ### Router State Transition: null -> Navigating(startingUrl: /activities/dialogs;l=en, urlAfterRedirects: undefined)\n// ### ###### Router Event: NavigationStart\n// NavigationStart(id: 6, url: '/home')\n// NavigationStart {id: 6, url: \"/home\", navigationTrigger: \"imperative\", restoredState: null}\n// logger.js:39 Ignoring router event: NavigationStart -> /home :: Navigating(startingUrl: /activities/dialogs;l=en, urlAfterRedirects: undefined)\n// ### ###### Router Event: RoutesRecognized\n// RoutesRecognized(id: 6, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )\n// RoutesRecognized {id: 6, url: \"/home\", urlAfterRedirects: \"/home\", state: RouterStateSnapshot}\n// ###### Router Event: GuardsCheckStart\n// GuardsCheckStart(id: 6, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )\n// GuardsCheckStart {id: 6, url: \"/home\", urlAfterRedirects: \"/home\", state: RouterStateSnapshot}\n// logger.js:39 back button pressed during navigation session interaction promise\n// logger.js:39 cancelling current navigation activity..\n// logger.js:39 ### Router State Transition: Navigating(startingUrl: /activities/dialogs;l=en, urlAfterRedirects: undefined) -> WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish(idle: undefined, startingUrl: /activities/dialogs;l=en, clickedLinkUrl: /home, firstCancelEventUrl: undefined, clickedLinkMatchedBackButtonUrl: false, popStateEventUrl: undefined)\n// ###### Router Event: GuardsCheckEnd\n// GuardsCheckEnd(id: 6, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } , shouldActivate: false)\n// GuardsCheckEnd {id: 6, url: \"/home\", urlAfterRedirects: \"/home\", state: RouterStateSnapshot, shouldActivate: false}\n// ###### Router Event: NavigationCancel\n// NavigationCancel(id: 6, url: '/home')\n// NavigationCancel {id: 6, url: \"/home\", reason: \"\"}\n// logger.js:54 WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterCancelled\n// logger.js:19 args NavigationCancel {id: 6, url: \"/home\", reason: \"\"}\n// logger.js:39 Ignoring router event: NavigationCancel -> /home :: WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish(idle: undefined, startingUrl: /activities/dialogs;l=en, clickedLinkUrl: /home, firstCancelEventUrl: /home, clickedLinkMatchedBackButtonUrl: true, popStateEventUrl: undefined)\n// logger.js:28 <-- WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterCancelled undefined\n// logger.js:54 WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterEnd\n// logger.js:19 args NavigationEnd {id: -1, url: \"\", urlAfterRedirects: \"\"}\n// logger.js:54 WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.finaliseRouting\n// logger.js:39 WORK-AROUND: Updating browser location after pop state - see angular issue #13586\n// navigation-session.ts:129 replacing /activities/dialogs;l=en with /home\n// navigation-session.ts:131 pushing /activities/dialogs;l=en back onto the history.\n// ????? place-router.ts:281 ### Router Session Finished (was WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish(idle: undefined, startingUrl: /activities/dialogs;l=en, clickedLinkUrl: /home, firstCancelEventUrl: /home, clickedLinkMatchedBackButtonUrl: true, popStateEventUrl: undefined))\n// logger.js:28 <-- WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.finaliseRouting undefined\n// logger.js:28 <-- WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterEnd undefined\n// ###### Router Event: NavigationStart\n// NavigationStart(id: 7, url: '/home')\n// NavigationStart {id: 7, url: \"/home\", navigationTrigger: \"popstate\", restoredState: {…}}\n// logger.js:39 ### Router State Transition: null -> PopStateNavigation(startingUrl: /activities/dialogs;l=en, poppedHistoryUrl: /home)\n// ###### Router Event: RoutesRecognized\n// RoutesRecognized(id: 7, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )\n// RoutesRecognized {id: 7, url: \"/home\", urlAfterRedirects: \"/home\", state: RouterStateSnapshot}\n// ###### Router Event: GuardsCheckStart\n// GuardsCheckStart(id: 7, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )\n","import { NavigationCancel, NavigationEnd, NavigationError } from '@angular/router';\nimport { NavigationSession } from './navigation-session';\nimport { WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined } from './event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined';\n\n\nexport class Navigating extends NavigationSession {\n readonly isPopState = false;\n\n debugPropertyKeys = ['startingUrl', 'urlAfterRedirects'];\n private urlAfterRedirects: string;\n\n onRouterCancelled(event: NavigationCancel): void {\n }\n\n onRouterError(event: NavigationError): void {\n // navigation was aborted.\n this.context.finishRoutingSession();\n }\n\n onRouterEnd(event: NavigationEnd): void {\n this.urlAfterRedirects = event.urlAfterRedirects;\n this.context.finishRoutingSession(this.getVisits());\n }\n\n handleCanDeactivateCancelledEventScenario(newUrl: string): void {\n this.context.transitionTo(new WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined(\n this.context,\n this.startingUrl,\n newUrl\n ));\n }\n\n}\n","import { InteractionServiceRoutingAdapter } from '../../../interaction/services/interaction-service-routing-adapter';\nimport { UrlService } from '../../url-service';\nimport { UrlSnapshot } from '../../url-snapshot';\nimport { Visit } from '../../visit';\nimport { NavigationSession } from './navigation-session';\n\nexport interface NavigationContext {\n readonly urlService: UrlService,\n readonly routerInteractionAdapter: InteractionServiceRoutingAdapter;\n\n finishRoutingSession(visits?: Visit[]);\n\n transitionTo(newState: NavigationSession);\n\n navigateByUrl(urlSnapshot: UrlSnapshot, options: { replaceUrl: boolean }): Promise<boolean>;\n}\n\nexport namespace NavigationContext {\n export class Impl implements NavigationContext {\n constructor(readonly urlService: UrlService,\n readonly routerInteractionAdapter: InteractionServiceRoutingAdapter,\n readonly navigateByUrl: (urlSnapshot: UrlSnapshot, options: { replaceUrl: boolean })=> Promise<boolean>,\n readonly transitionTo: (newState: NavigationSession) => void,\n readonly finishRoutingSession: (visits?: Visit[]) => void) {\n }\n\n }\n\n}\n","import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart } from '@angular/router';\nimport { Logger, Trace } from '@coolon/pectin';\nimport { PlaceComponent } from '../../../place-component';\nimport { UrlSnapshot } from '../../../url-snapshot';\nimport { NavigationContext } from '../navigation-context';\nimport { EventCleanUpSession } from './event-clean-up-session';\n\n/**\n * This state handles the scenario where a pop state triggered and interaction and the user clickeb back a second time to cancel it.\n * The sequence of routing events/state transitions is as follows.\n * -> Idle -> PopStateTransition (poppedHistoryUrl == page to go to, startingUrl = page to stay on )\n * -> confirm dialog shown.\n * -> click back\n * -> PopStateTransition -> CancelledDuringBackButtonNavigationInteraction(trigger url is the page before the popped history url)\n * -> NavigationCancel (for the previous back)\n * -> PopState\n * -> NavigationCancel\n */\nexport class WaitUntilPopStateDuringCanDeactivateInteractionFinishes extends EventCleanUpSession {\n\n readonly isPopState = false;\n firstCancelHandled = false;\n popStateHandled = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n private parentPageUrl: string;\n\n constructor(context: NavigationContext,\n startingUrl: string,\n readonly locationChangeTriggerUrl: string,\n readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): void {\n if (!this.firstCancelHandled) {\n this.firstCancelHandled = true;\n this.parentPageUrl = event.url;\n this.ignore(event);\n } else {\n if (this.popStateHandled) {\n const grandParentPageUrl = event.url;\n this.repairBrowserHistoryAndUrlAfterGuardCancellation(grandParentPageUrl, this.parentPageUrl);\n // we've had one more back click than normal so we need to add our initial url back in as well.\n this.resetBrowserLocation(this.startingUrl, {replaceCurrent: false});\n return this.context.finishRoutingSession();\n }\n }\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError): void {\n void this.ignore(event);\n }\n\n // @Trace()\n onPopState(event: NavigationStart): void {\n this.popStateHandled = true;\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n}\n","import { NavigationCancel, NavigationEnd } from '@angular/router';\nimport { AbstractPopStateNavigation } from './abstract-pop-state-navigation';\nimport { WaitUntilPopStateDuringCanDeactivateInteractionFinishes } from './event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes';\n\nexport class PopStateNavigation extends AbstractPopStateNavigation {\n\n onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation();\n this.context.finishRoutingSession();\n }\n\n onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession(this.getVisits());\n }\n\n handleCanDeactivateCancelledEventScenario(locationTriggerUrl: string): void {\n this.context.transitionTo(new WaitUntilPopStateDuringCanDeactivateInteractionFinishes(this.context,\n this.startingUrl,\n locationTriggerUrl,\n this.poppedHistoryUrl));\n }\n\n}\n","import { Trace } from '@coolon/pectin';\nimport { PlaceDefinition } from './place-definition';\n\nexport interface PlaceAccessGuard {\n isAuthenticated(): boolean | Promise<boolean>;\n isAuthorised(placeDefinition: PlaceDefinition): boolean;\n}\n\nexport namespace PlaceAccessGuard {\n export class NoAuth implements PlaceAccessGuard {\n // @Trace()\n isAuthenticated(): boolean | Promise<boolean> {\n return true;\n }\n // @Trace()\n isAuthorised(placeDefinition: PlaceDefinition): boolean {\n return true;\n }\n\n }\n}\n","import { ParamMap, UrlSegment } from '@angular/router';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { uniq } from 'lodash';\n\n/**\n * This a work around for the fact that an activated route with multiple segments doesn't\n * include the segment params in the paramMap as well as each segment returns an empty\n * param map even when `parameter`s has content.\n */\nexport class ConsolidatedParameterMap implements ParamMap {\n\n private readonly paramMaps: ParamMap[] = [];\n\n constructor(urlSegments: UrlSegment[], paramMap?: ParamMap) {\n // TODO: can we get all our params from teh url segments? If so we can drop the paramMap altogether.\n const segmentParams = (urlSegments || []).map(s => new ParamMapAdapter(s.parameters)) as ParamMap[];\n this.paramMaps = segmentParams\n .concat(paramMap)\n .filter(m => !!m); // the activated route param map can be null\n }\n\n get(name: string): string | null {\n const paramMap = this.paramMaps.find(m => m.has(name));\n return paramMap.get(name);\n }\n\n getAll(name: string): string[] {\n const paramMap = this.paramMaps.find(m => m.has(name));\n return paramMap.getAll(name);\n }\n\n has(name: string): boolean {\n return !!this.paramMaps.find(m => m.has(name));\n }\n\n @Memoize()\n get keys(): string[] {\n return uniq(this.paramMaps.reduce((result, params) => result.concat(params.keys), []));\n }\n}\n\nclass ParamMapAdapter implements ParamMap {\n constructor(private readonly params: { [p: string]: string }) {\n }\n\n get(name: string): string | null {\n return this.params[name];\n }\n\n getAll(name: string): string[] {\n const value = this.get(name);\n return Array.isArray(value) ? value : [value];\n }\n\n has(name: string): boolean {\n return this.keys.includes(name);\n }\n\n get keys(): string[] {\n return Object.keys(this.params);\n }\n\n}\n","import { UrlSegment, UrlSerializer, UrlTree } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { isEqual } from 'lodash';\nimport { ConsolidatedParameterMap } from './guards/consolidated-param-map';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\nfunction extractPrimarySegments(urlTree: UrlTree): UrlSegment[] {\n return urlTree.root.children.primary.segments;\n}\n\nexport class UrlSnapshot {\n\n readonly urlTree: UrlTree;\n\n // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.\n constructor(readonly urlSerializer: UrlSerializer, readonly url: string) {\n this.urlTree = urlSerializer.parse(url);\n }\n\n // @Trace()\n public updateVisitSegments(visit: Visit): UrlSnapshot {\n const newUrlTree = this.urlSerializer.parse(this.url);\n // Ugly, but it works for now.\n const segments = [...extractPrimarySegments(newUrlTree)];\n const visitSegments = this.getSegmentsFor(visit);\n const replaceAt = segments.findIndex(segment => segment.path === visitSegments[0].path);\n // do not use the return value, it's the items that were removed!\n segments.splice(replaceAt, visitSegments.length, ...visitSegments);\n newUrlTree.root.children.primary.segments = segments;\n return new UrlSnapshot(this.urlSerializer, newUrlTree.toString());\n }\n\n @Memoize()\n private getPrimarySegments(): UrlSegment[] {\n return extractPrimarySegments(this.urlTree);\n }\n\n /**\n * Converts the visit into segments. Please not that these segments are not e\n * @param visit\n */\n protected getSegmentsFor(visit: Visit): UrlSegment[] {\n return visit.placeDefinition.hasRouteId() ?\n [\n // NOTE:\n // It's important to attach the params to the root path and not the id. If we attach them\n // to an empty id then the angular router won't match the pattern.\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit)),\n new UrlSegment(visit.placeDefinition.getFormattedRouteId(visit), {})]\n :\n [\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit))\n ];\n }\n\n includesPathOf(placeDef: PlaceDefinition) {\n return this.getPrimarySegments().find(s => s.path === placeDef.path);\n }\n\n createVisitFor(placeDef: PlaceDefinition) {\n return new Visit(placeDef, new ConsolidatedParameterMap(this.getPrimarySegments()));\n }\n\n getInteractionIds() {\n const queryParam = this.urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM];\n if (queryParam) {\n return UrlSnapshot.parseInteractionIds(queryParam);\n } else {\n return [];\n }\n }\n\n hasInteractions() {\n return this.getInteractionIds().length > 0;\n }\n\n hasInteractionIds(ids: string[]): boolean {\n return isEqual(this.getInteractionIds(), ids);\n }\n\n // @Trace()\n updateInteractionIds(ids: string[]): UrlSnapshot {\n if (ids.length === 0) {\n return this.removeInteractionIds();\n } else {\n const urlTree = this.urlSerializer.parse(this.url);\n urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM] = UrlSnapshot.createPathIdFor(ids);\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n }\n\n // @Trace()\n removeInteractionIds(): UrlSnapshot {\n const urlTree = this.urlSerializer.parse(this.url);\n if (urlTree.queryParams && urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM]) {\n urlTree.queryParams = {};//[UrlSnapshot.INTERACTION_ROUTER_OUTLET]\n }\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n\n toString(): string {\n return `UrlSnapshot(${this.url})`;\n }\n\n // withOptions(options: NavigationExtras) {\n // return new UrlSnapshot(this.urlSerializer, this.url, options);\n // }\n //\n // @Trace()\n // getNavigationExtras(): NavigationExtras {\n // return this.options;\n // }\n\n}\n\nexport namespace UrlSnapshot {\n\n export const INTERACTION_QUERY_PARAM = 'aup-interactions';\n export const INTERACTION_ID_SEPARATOR = '--';\n\n export function parseInteractionIds(path: string) {\n return path.split(INTERACTION_ID_SEPARATOR);\n }\n\n export function createPathIdFor(interactionIds: string[]) {\n return interactionIds.join(INTERACTION_ID_SEPARATOR);\n }\n\n export interface NavigationOptions {\n replaceUrl?: boolean;\n }\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { Router, UrlSerializer } from '@angular/router';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UrlService {\n constructor(private readonly angularRouter: Router, readonly angularLocation: Location, readonly urlSerializer: UrlSerializer) {\n }\n\n parseUrl(url: string): UrlSnapshot {\n return new UrlSnapshot(this.urlSerializer, url);\n }\n\n createUrlSnapshot(...visits: Visit[]): UrlSnapshot {\n const bits = [];\n visits.forEach(v => {\n bits.push(this.parseUrl(`${v.placeDefinition.path}`).updateVisitSegments(v).url);\n });\n return this.parseUrl(bits.join(''));\n }\n\n getCurrentRouterUrl(): string {\n return this.angularRouter.routerState ? this.angularRouter.routerState.snapshot.url : null;\n }\n\n getCurrentLocationUrl(): string {\n return this.angularLocation.path();\n }\n\n /**\n * Return the a UrlSnapshot using the browsers current location. Note this may not be the same\n * as the routers current url.\n */\n getCurrentLocationUrlSnapshot(): UrlSnapshot {\n return this.parseUrl(this.getCurrentLocationUrl());\n }\n\n /**\n * Return the a UrlSnapshot using the routers current state. This may not be the same as\n * the browsers actual url.\n */\n getCurrentRouterSnapshot(): UrlSnapshot {\n return this.parseUrl(this.getCurrentRouterUrl());\n }\n\n getActiveInteractionIdsFromUrl(url: string): string[] {\n return this.parseUrl(url).getInteractionIds();\n }\n\n hasActiveInteractions(url: string) {\n return this.getActiveInteractionIdsFromUrl(url).length > 0;\n }\n\n resetBrowserLocation(url: string, options: { replaceCurrent: boolean }) {\n options.replaceCurrent ? this.angularLocation.replaceState(url) : this.angularLocation.go(url);\n }\n\n back() {\n this.angularLocation.back();\n }\n\n\n}\n","import { Injectable } from '@angular/core';\nimport { assert, Trace } from '@coolon/pectin';\n\nimport { first } from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceHistory {\n\n private _activeVisits: PlaceHistory.VisitRecord;\n private _previousVisits: PlaceHistory.VisitRecord;\n\n private _archive = new Map<PlaceDefinition, Visit[]>();\n private readonly placeHistoryDepth: number = 4;\n\n constructor() {\n }\n\n notifyNavigationStarted() {\n if (this._activeVisits) {\n this.archive(this._activeVisits.visits);\n this._previousVisits = this._activeVisits;\n }\n }\n\n notifyNavigationFinished(visits: Visit[]) {\n this._activeVisits = new PlaceHistory.VisitRecord(visits);\n }\n\n updateVisit(visit: Visit) {\n assert.isTruthy(this._activeVisits);\n this._activeVisits.update(visit);\n }\n\n lastVisitIncluded(placeDef: PlaceDefinition): boolean {\n return !!this._previousVisits?.getVisitFor(placeDef);\n }\n\n getMostRecentVisitFor(placeDef: PlaceDefinition) {\n return first(this.getHistory(placeDef));\n }\n\n getHistory(placeDef: PlaceDefinition): Visit[] {\n let history = this._archive.get(placeDef);\n if (!history) {\n history = [];\n this.setHistory(placeDef, history);\n }\n return history;\n }\n\n private setHistory(placeDef: PlaceDefinition, history: Visit[]) {\n this._archive.set(placeDef, history);\n }\n\n protected archive(visits: Visit[]) {\n visits.forEach(state => {\n const history = this.getHistory(state.placeDefinition);\n const previousState = first(history);\n if (!previousState || state.hasChangedFrom(previousState)) {\n history.unshift(state); // LIFO\n this.setHistory(state.placeDefinition, history.slice(0, this.placeHistoryDepth));\n }\n });\n }\n\n\n}\n\nexport namespace PlaceHistory {\n\n export class VisitRecord {\n constructor(public visits: Visit[]) {\n }\n\n update(visit: Visit) {\n this.visits = this.visits.filter(v => v.placeDefinition !== visit.placeDefinition).concat(visit);\n }\n\n getVisitFor(placeDef: PlaceDefinition): Visit | undefined {\n return this.visits.find(v => v.placeDefinition === placeDef);\n }\n }\n\n // export class Query {\n // private _history: Visit.State[];\n // private _places: Place[];\n // private _predicate: (visit: any) => boolean;\n // private _limit: number;\n //\n // constructor(history, limit = history.length) {\n // this._history = history;\n // this._places = [];\n // this._predicate = (visit => true);\n // this._limit = limit;\n // }\n //\n // to(...places:Place[]):this {\n // this._places = places;\n // return this;\n // }\n //\n // with(parameters: { [parameter: string]: any }): this {\n // this.matching(state => {\n // return Object.keys(parameters).reduce((acc, key) => {\n // const matchValue = parameters[key];\n // const visitValue = state.get(key);\n // const matched = matchValue === '*' ? !isNil(visitValue) : visitValue == matchValue;\n // // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);\n // return acc && matched;\n // }, true);\n // });\n // return this;\n // }\n //\n // last(): Visit.State {\n // return findLast(this._history, visit => this._matches(visit))\n // }\n //\n // // @trace\n // allThatMatch(): Visit.State[] {\n // return filter(this._history, visit => this._matches(visit)).slice(-this._limit);\n // }\n //\n // // @trace\n // mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {\n // const lastStateWithParam = findLast(this.allThatMatch(), state => !isNil(state.get(param)));\n // return isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);\n // }\n //\n // limit(limit: number): this {\n // this._limit = limit;\n // return this;\n // }\n //\n // matching(predicate: (visit: Visit.State) => boolean): this {\n // this._predicate = predicate;\n // return this;\n // }\n //\n // _matches(visit: Visit.State) {\n // return this._isPlaceMatch(visit) && this._predicate(visit);\n // }\n //\n // _isPlaceMatch(visit: Visit.State) {\n // return this._places.length < 1 || this._places.includes(visit.place)\n // }\n //\n // }\n\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\nimport {\n assert,\n Binding,\n DebugContext,\n DelegatingValueModel,\n Dsl,\n GarbageCollector,\n lang,\n ListModel,\n MutableListModel,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { InteractionServiceRoutingAdapter } from '../interaction/services/interaction-service-routing-adapter';\nimport { InteractionService } from '../interaction/services/interaction.service';\nimport { NavigatingDuringInteraction } from './navigation/session/interactions/navigating-during-interaction';\nimport { PopStateDuringInteractionNavigation } from './navigation/session/interactions/pop-state-during-interaction-navigation';\nimport { SynchroniseInteractionContextIdsWithRoute } from './navigation/session/interactions/synchronise-interaction-context-ids-with-route';\nimport { Navigating } from './navigation/session/navigating';\nimport { NavigationContext } from './navigation/session/navigation-context';\nimport { NavigationSession } from './navigation/session/navigation-session';\nimport { PopStateNavigation } from './navigation/session/pop-state-navigation';\nimport { PlaceAccessGuard } from './place-access-guard';\nimport { PlaceDefinition } from './place-definition';\nimport { PlaceHistory } from './place-history';\nimport { UrlService } from './url-service';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\nfunction asArray<T>(item: T | T[]):T[] {\n return Array.isArray(item) ? item : [item];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouter extends GarbageCollector {\n\n readonly navigationSessionModel = new MutableValueModel<NavigationSession>();\n readonly navigationInProgress: ValueModelChain<boolean>;\n readonly navigationSessionName: ValueModelChain<string>; // used by tests\n\n private readonly navigationContext: NavigationContext.Impl;\n\n private readonly _activeVisits = new MutableListModel<Visit>();\n private readonly routerInteractionAdapter: InteractionServiceRoutingAdapter;\n private sessionFinishedJobs: (() => void)[] = [];\n\n public readonly state: ValueModel<PlaceRouter.State>;\n\n /**\n * An observable model containing the authoriser function. This allows places to react to changes\n * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.\n */\n private readonly _accessGuard = this.registerDisposable(new DelegatingValueModel<PlaceAccessGuard>().withDefault(new PlaceAccessGuard.NoAuth()));\n private redirections: PlaceRouter.Redirections;\n\n constructor(private readonly angularRouter: Router,\n private readonly angularLocation: Location,\n private readonly interactionService: InteractionService,\n private readonly urlService: UrlService,\n private readonly placeHistory: PlaceHistory) {\n super();\n\n if (window['Cypress']) {\n window['aup.PlaceRouter'] = this;\n }\n\n this.routerInteractionAdapter = interactionService.registerPlaceRouter(this);\n\n // TODO: Make this an interface and use 'this' instead.\n this.navigationContext = new NavigationContext.Impl(\n this.urlService,\n this.routerInteractionAdapter,\n (urlSnapshot: UrlSnapshot, options: { replaceUrl: boolean }) => {\n return this.navigateByUrl(urlSnapshot, options);\n },\n state => {\n this.transitionTo(state);\n },\n visits => {\n this.routingSessionFinished(visits);\n });\n\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.navigationInProgress = chain(this.navigationSessionModel).isNotNil();\n\n const idleStateName = chain(this.interactionService.active).map(active => active ? 'IdleDuringInteraction' : 'Idle');\n this.navigationSessionName = chain(this.navigationSessionModel)\n .pluck('name')\n .otherwise(idleStateName);\n\n DebugContext.tag(this._activeVisits, 'PlaceRouter.activeVisits');\n this.state = chain(this._activeVisits).reduce(visits => new PlaceRouter.State(visits));\n\n // TODO: make setup the callbacks in during module initiation to make this testable.\n angularRouter.events.subscribe(event => {\n // Routing event sequence\n // ======================\n // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session\n // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.\n // NavigationStart -> .... -> NavigationError --> navigation aborted, end session.\n // =======================\n if (event instanceof NavigationStart) {\n // console.log(`---> NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);\n if (event.navigationTrigger === 'popstate') {\n this.onPopState(event);\n } else {\n this.onRouterStarted(event);\n }\n // console.log(`<--- NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);\n }\n if (event instanceof NavigationEnd) {\n // console.log(`---> NavigationEnd[${event.id}]: ${event.url}`);\n this.onRouterEnd(event);\n // console.log(`<--- NavigationEnd[${event.id}]: ${event.url}`);\n }\n if (event instanceof NavigationError) {\n // console.log(`---> NavigationError[${event.id}]: ${event.url}`);\n this.onRouterError(event);\n // console.log(`<--- NavigationError[${event.id}]: ${event.url}`);\n }\n if (event instanceof NavigationCancel) {\n // console.log(`---> NavigationCancel[${event.id}]: ${event.url}`);\n this.onRouterCancelled(event);\n // console.log(`<--- NavigationCancel[${event.id}]: ${event.url}`);\n }\n });\n\n // The router needs to know about url changes and in some cases they are the only way the router can know if\n // the back button was clicked.\n angularLocation.onUrlChange(url => this.onUrlChanged(url));\n\n }\n\n get accessGuard(): ValueModel<PlaceAccessGuard> {\n return this._accessGuard.readonly;\n }\n\n // @Trace()\n configureAuth(accessGrant: ValueModel<PlaceAccessGuard>, redirections: PlaceRouter.Redirections) {\n // We need a shitty mutable model until setDelegate is clever enough to work with readonly models.\n const hackyMutableModel = new MutableValueModel<PlaceAccessGuard>();\n const binding = new Binding(hackyMutableModel, accessGrant, {\n toRight(leftValue: PlaceAccessGuard) {\n return lang.illegalState('hackyMutableModel is read only');\n },\n toLeft: (rightValue: PlaceAccessGuard) => rightValue\n });\n binding.writeLeft();\n this._accessGuard.setDelegate(hackyMutableModel);\n this.redirections = redirections;\n }\n\n getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n return this.redirections.onAuthenticationFailure(activatedRoute, state);\n }\n\n get navigationSession() {\n return this.navigationSessionModel.value;\n }\n\n get currentSession() {\n return this.navigationSessionModel.value;\n }\n\n isNavigating(): boolean {\n return this.navigationInProgress.value;\n }\n\n waitUntilIdle(): Promise<this> {\n const { when } = Dsl.disposeWith(this);\n return new Promise<this>(resolve => {\n when(this.navigationInProgress).becomesFalsey(() => resolve(this), {\n initialValue: 'evaluate',\n once: true\n });\n });\n }\n\n // @Trace()\n onPopState(event: NavigationStart) {\n assert.isTruthy(event.navigationTrigger === 'popstate');\n if (this.currentSession) {\n this.currentSession.onPopState(event);\n } else {\n const poppedHistoryUrl = event.url;\n const currentRouterUrl = this.urlService.getCurrentRouterUrl();\n const session = this.interactionService.isActive() ?\n new PopStateDuringInteractionNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl) :\n new PopStateNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl);\n this.transitionTo(session);\n }\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart) {\n assert.isFalsey(event.navigationTrigger === 'popstate');\n const inInteraction = this.interactionService.isActive();\n if (this.currentSession) {\n this.currentSession.onRouterStarted(event);\n } else {\n this.transitionTo(this.createNavigationSession(this.urlService.getCurrentRouterUrl()));\n }\n }\n\n // @Trace()\n onUrlChanged(newUrl: string) {\n // the back button can trigger a url change without a navigation session in progress so we\n // console.log(`---> Url Changed ${newUrl}`);\n if (this.currentSession) {\n this.currentSession.onUrlChange(newUrl);\n } else {\n console.log('FYI: url changed without a navigation session in progress');\n }\n // console.log(`<--- Url Changed`);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel) {\n this.currentSession.onRouterCancelled(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError) {\n this.currentSession.onRouterError(event);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd) {\n this.currentSession.onRouterEnd(event);\n }\n\n navigate(visit: Visit | Visit[], options?: { relativeTo: ActivatedRoute }) {\n const commands = asArray(visit).reduce((result, v) => {\n return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];\n }, []);\n return this.doNavigation(visit, async router => {\n await this.angularRouter.navigate(commands, {\n relativeTo: options ? options.relativeTo : null\n });\n });\n }\n\n // @Trace()\n async doNavigation(visit: Visit| Visit[], runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress.value) {\n lang.illegalState('Navigation already in progress');\n }\n const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());\n asArray(visit).forEach(v => navigation.storeVisit(v));\n this.transitionTo(navigation);\n try {\n await runNavigationCommands(this.angularRouter);\n } finally {\n // Check if the router has finished (in the case where no router change required) and we're still in a\n // transient state and finish of the transition.\n if (!this.angularRouter.getCurrentNavigation() && this.currentSession) {\n this.currentSession.onRouterEnd(new NavigationEnd(-1, '', ''));\n }\n }\n }\n\n navigateByUrl(urlSnapshot: UrlSnapshot, navigationExtras?: NavigationExtras): Promise<boolean> {\n console.log(`### navigationByUrl -> ${urlSnapshot.urlTree.toString()}`);\n return this.angularRouter.navigateByUrl(urlSnapshot.urlTree, navigationExtras);\n }\n\n get activeVisits(): ListModel<Visit> {\n return this._activeVisits.readonly;\n }\n\n // @Trace()\n async pushVisitChangesToRoute(previous: Visit, next: Visit): Promise<void> {\n this.placeHistory.updateVisit(next);\n\n // FIXME: no route id -> route id duplicates route parameters\n if (next.hasRoutingChangedFrom(previous)) {\n return this.doNavigation(next, router => {\n const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegments(next);\n // console.log('### Push Changes to route Redirect', { commands: urlSnapshot.url });\n return this.navigateByUrl(urlSnapshot);\n });\n }\n }\n\n\n private createNavigationSession(currentRouterUrl: string): NavigationSession {\n const inInteraction = this.interactionService.isActive();\n return inInteraction ?\n new NavigatingDuringInteraction(this.navigationContext, currentRouterUrl) :\n new Navigating(this.navigationContext, currentRouterUrl);\n }\n\n // @Trace()\n protected transitionTo(next: NavigationSession) {\n const previous = this.navigationSessionModel.value;\n if (!previous) {\n this.placeHistory.notifyNavigationStarted();\n }\n assert.isTruthy(next !== previous);\n // Logger.get(this).info(`### Router State Transition: ${previous ? previous.toString() : 'null'} -> ${next.toString()}`);\n this.navigationSessionModel.value = next;\n if (!!previous) {\n previous.dispose();\n }\n next.notifyActive();\n }\n\n // @Trace()\n private routingSessionFinished(visits: Visit[]) {\n if (visits && visits.length > 0) {\n assert.isTruthy(this.navigationInProgress.value);\n this.placeHistory.notifyNavigationFinished(visits);\n // We update the active visits before we finish the session so the\n // place outlets can ignore the incoming changes until things are\n // settled. TODO: can we removed the event'ness here and just do a push?\n this._activeVisits.value = visits;\n }\n const session = this.currentSession;\n session.dispose();\n this.navigationSessionModel.value = null;\n // console.log(`### Router Session Finished (was ${session.toString()})`);\n this.sessionFinishedJobs.forEach(job => job());\n this.sessionFinishedJobs = [];\n }\n\n private runAfterRoutingSessionFinishes(func: () => void) {\n assert.isTruthy(this.navigationInProgress);\n this.sessionFinishedJobs.push(func);\n }\n\n\n /**\n * Sync's the current interaction state with the URL. We need to push something in the URL in order\n * to be able to capture the back button on the first page. If we don't then the back click will exit\n * the app directly and we don't get to ask.\n */\n // @Trace()\n syncInteractionContextIdsWithRouter(): Promise<void> {\n if (this.navigationSession) {\n // console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);\n const session = this.navigationSession;\n return new Promise<void>((resolve, reject) => {\n this.runAfterRoutingSessionFinishes(() => {\n this.runAfterRoutingSessionFinishes(resolve);\n const syncSession = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(syncSession);\n });\n });\n } else {\n return new Promise<void>(((resolve, reject) => {\n // console.log(`No navigation in progress, starting synchronisation job`);\n this.runAfterRoutingSessionFinishes(resolve);\n const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(session);\n }));\n\n }\n }\n\n\n private createRouteParameters(visit: Visit) {\n const def = visit.placeDefinition;\n return visit.hasRouteId() ?\n [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :\n [def.getFormattedRouteParameters(visit)];\n }\n\n}\n\nexport namespace PlaceRouter {\n\n export interface Redirections {\n onAuthenticationFailure(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit;\n }\n\n export class State {\n constructor(private readonly activeVisits: Visit[]) {\n }\n\n isPlaceActive(placeDefinition: PlaceDefinition): boolean {\n return !!this.getVisitFor(placeDefinition);\n }\n\n getVisitFor(placeDefinition: PlaceDefinition): Visit {\n return this.activeVisits.find(v => v.placeDefinition === placeDefinition);\n }\n }\n\n}\n","import { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter, HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnInit,\n Optional,\n Output,\n SkipSelf,\n ViewChild\n} from '@angular/core';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport {\n BooleanValueModelChain,\n Constructable,\n DebugContext,\n Dsl,\n lang,\n ListModel,\n ListModelChain,\n MutableValueModel,\n StoreInListModel,\n StoreInValueModel,\n TrackExternal,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\n\nimport { isNil } from 'lodash';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { PlaceComponent } from '../../place-component';\n\nimport { AUP_PLACE_CONFIG, PlaceConfig } from '../../place-config';\nimport { PlaceDefinition } from '../../place-definition';\nimport { PlaceRouter } from '../../place-router';\nimport { Visit } from '../../visit';\n\nimport { NotAuthorisedNoticeComponent } from '../not-authorised-notice/not-authorised-notice.component';\nimport { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';\n\n\nexport const AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT = new InjectionToken<Constructable<any>>('AUP_UNAUTHORISED_PLACE_COMPONENT');\n\n@Component({\n selector: 'aup-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss'],\n animations: [LEFT_RIGHT_PLACE_ANIMATION]\n})\nexport class PlaceOutletComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInValueModel('animateModel')\n animate: boolean;\n\n @Input() @TrackExternal({ defaultValue: true })\n animateModel: ValueModel<boolean>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @TrackExternal()\n customPlaceAnimationOrderModel: ListModel<Constructable<PlaceComponent>>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel('customPlaceAnimationOrderModel')\n customPlaceAnimationOrder: Constructable<PlaceComponent>[];\n\n @Output()\n readonly placeChanged = new EventEmitter<PlaceComponent>();\n\n @ViewChild('routeOutlet', { static: true })\n routerOut: RouterOutlet;\n\n private onAnimationFinishedJob: () => void;\n\n\n private outletActivated = new MutableValueModel(false);\n private readonly _activatedRouteModel = new MutableValueModel<ActivatedRoute>();\n private readonly _activePlaceModel = new MutableValueModel<PlaceComponent>();\n\n readonly _activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n private parentOutletModel: MutableValueModel<PlaceOutletComponent>;\n public readonly activePlaceAnimationPosition: ValueModelChain<number>;\n\n private initialPlaceIndex: number = null;\n private routerVisitModel: ValueModelChain<Visit>;\n private _isPushingVisitToRoute = new MutableValueModel<boolean>(false);\n private navigationInProgress: ValueModelChain<boolean>;\n\n private isVeryFirstLoad = true;\n private placesInAnimationOrder: ListModelChain<Constructable<PlaceComponent>>;\n private animationSupported: BooleanValueModelChain;\n readonly animationEnabled: BooleanValueModelChain;\n readonly authorised: ValueModelChain<boolean>;\n readonly notAuthorisedNoticePortal: ComponentPortal<any>;\n\n constructor(private readonly router: Router,\n private readonly placeRouter: PlaceRouter,\n @Optional() @Inject(AUP_PLACE_CONFIG) readonly placeConfig: PlaceConfig,\n @Optional() @Inject(AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT) unauthorisedPlaceNotice: Constructable<any>,\n @SkipSelf() @Optional() parentOutlet: PlaceOutletComponent,\n private readonly cdr: ChangeDetectorRef) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.parentOutletModel = new MutableValueModel(parentOutlet);\n\n const defaultPlaceAnimationOrder = chain(this.parentOutletModel)\n .pullValueModel(o => o.activePlaceModel)\n .pluck('placeDefinition')\n .pluckList('children')\n .pluck('component');\n\n const activatePlaceType = chain(this.activePlaceModel).map(p => p.constructor as Constructable<PlaceComponent>);\n\n this.placesInAnimationOrder = chain(this.customPlaceAnimationOrderModel)\n .otherwise(defaultPlaceAnimationOrder);\n\n this.activePlaceAnimationPosition = this.placesInAnimationOrder\n .reduce((placesInOrder) => {\n let placeIndex = 0;\n if (activatePlaceType.value) {\n placeIndex = placesInOrder.indexOf(activatePlaceType.value);\n if (isNil(this.initialPlaceIndex)) {\n this.initialPlaceIndex = placeIndex;\n }\n }\n return isNil(this.initialPlaceIndex) ? 0 : placeIndex - this.initialPlaceIndex;\n }, { dependsOn: activatePlaceType });\n\n this.animationSupported = this.placesInAnimationOrder.count().isGreaterThan(0);\n this.animationEnabled = valueOf.all(\n this.animateModel,\n this.animationSupported\n ).areTruthy();\n\n // Extract our visit model from the place router.\n this._activePlaceDefinition = chain(this._activePlaceModel).pluck('placeDefinition');\n this.routerVisitModel = chain(placeRouter.state).map(state => state.getVisitFor(this._activePlaceDefinition.value), { dependsOn: this._activePlaceDefinition });\n\n this.navigationInProgress = chain(this.placeRouter.navigationInProgress);\n\n when(this.navigationInProgress).becomesFalsey(() => {\n this.checkStateAndInitialise();\n });\n when(this.outletActivated).becomesTruthy(() => {\n this.checkStateAndInitialise();\n });\n\n chain(this._activePlaceModel)\n .postponeWhile(this.navigationInProgress)\n .subscribe(place => this.placeChanged.emit(place));\n\n this.authorised = chain(placeRouter.accessGuard).map(guard => guard.isAuthorised(this._activePlaceDefinition.value), {\n dependsOn: this._activePlaceDefinition,\n postponeWhile: chain(this._activePlaceDefinition).isNil()\n }).otherwise(true); // if we don't have a place def yet we need to show the outlet so we get one injected.\n\n this.notAuthorisedNoticePortal = new ComponentPortal(unauthorisedPlaceNotice ?? NotAuthorisedNoticeComponent);\n }\n\n // @Trace()\n ngOnInit() {\n }\n\n // @Trace()\n getAnimationOrder() {\n return this.activePlaceAnimationPosition.value;\n }\n\n get animationDuration() {\n return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';\n }\n\n @HostBinding(\"class.authorised\")\n get isAuthorised() {\n return this.authorised.value;\n }\n\n // @Trace()\n navigate(visit: Visit) {\n // const place = this.placesInAnimationOrder.query().findMatching(p => visit.placeDefinition.component === p);\n // if (!place) {\n // lang.illegalState()\n // }\n this.placeRouter.navigate(visit, {\n relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null\n });\n }\n\n get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\n }\n\n\n get activePlaceModel(): ValueModel<PlaceComponent> {\n return this._activePlaceModel.readonly;\n }\n\n get activatedRouteModel(): ValueModel<ActivatedRoute> {\n return this._activatedRouteModel.readonly;\n }\n\n // @Trace()\n onOutletActivated(routerOutlet: RouterOutlet, place: PlaceComponent) {\n this._activatedRouteModel.value = routerOutlet.activatedRoute;\n this._activePlaceModel.value = place;\n this.validateAnimationState(place);\n this.outletActivated.value = true;\n this.checkStateAndInitialise();\n }\n\n private validateAnimationState(place: PlaceComponent) {\n if (this.animateModel.value) {\n if (this.placesInAnimationOrder.length < 1) {\n console.error('PlaceOutlet.animate === true but placeAnimationOrder has not been set. Animation is disabled.');\n } else {\n if (!this.placesInAnimationOrder.query().includes(place.placeDefinition.component)) {\n console.error(`PlaceOutlet.animate === true but placeAnimationOrder doesn't contain ${place.placeDefinition.component.name}.`);\n }\n }\n }\n }\n\n // @Trace()\n onOutletDeactivated() {\n this.outletActivated.value = false;\n this._activePlaceModel.value = null;\n this._activatedRouteModel.value = null;\n }\n\n // @Trace()\n private checkStateAndInitialise() {\n const routerVisit = this.routerVisitModel.value;\n const activePlace = this.activePlaceModel.value;\n if (routerVisit && activePlace && !activePlace.isInitialised()) {\n if (routerVisit.placeDefinition !== activePlace.placeDefinition) {\n lang.illegalState('wrong visit!!!');\n }\n this.initialisePlace(routerVisit, activePlace);\n this.cdr.detectChanges()\n }\n }\n\n private initialisePlace(routerVisit: Visit, activePlace: PlaceComponent) {\n const visitModel = new MutableValueModel<Visit>(routerVisit);\n DebugContext.tag(visitModel, `PlaceOutletComponent[${activePlace.constructor.name})].visitModel`);\n activePlace.initialiseVisit(routerVisit, (current, previous) => {\n this.pushVisitChangeToRoute(previous, current);\n });\n const finishPlaceLoad = () => {\n this._activePlaceModel.value._notifyActive(true);\n };\n if (!this.animationEnabled.value || this.isVeryFirstLoad) {\n // if animation is disabled or this is the very first load then\n // we won't get our animation done callback so we finish the\n // process here and now.\n this.isVeryFirstLoad = false;\n finishPlaceLoad();\n } else {\n this.onAnimationFinishedJob = finishPlaceLoad;\n }\n const { when, chain, valueOf } = Dsl.disposeWith(activePlace);\n when(this.routerVisitModel)\n .changes(visit => {\n console.log(\"routerVisitModel.change\", { routerVisitModel: this.routerVisitModel.value })\n this.pushVisitChangeToComponent(activePlace, visit);\n }, {\n unless: valueOf.any(\n this._isPushingVisitToRoute,\n this.routerVisitModel.isNil()\n ).areTruthy()\n });\n }\n\n private pushVisitChangeToComponent(activePlace: PlaceComponent, visit: Visit) {\n activePlace.updateVisit(visit);\n }\n\n private async pushVisitChangeToRoute(previous: Visit, current: Visit) {\n try {\n this._isPushingVisitToRoute.value = true;\n await this.placeRouter.pushVisitChangesToRoute(previous, current);\n } finally {\n this._isPushingVisitToRoute.value = false;\n }\n // sanitisers may have adjusted other values in the visit to we check and write it back.\n const routerVisit = this.routerVisitModel.value; // this is occasionally null... need to investigate if that's a normal state or not.\n if (routerVisit && current.hasRoutingChangedFrom(routerVisit)) {\n this.pushVisitChangeToComponent(this.activePlaceModel.value, routerVisit)\n }\n }\n\n// @Trace()\n animationStarted() {\n // console.log({ activePlace: this._activePlaceModel.value });\n }\n\n // @Trace()\n animationDone() {\n if (this.onAnimationFinishedJob) {\n this.onAnimationFinishedJob();\n this.onAnimationFinishedJob = undefined;\n }\n }\n\n}\n","<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n","import {Component, Input, OnInit, TrackByFunction} from '@angular/core';\nimport {\n Command,\n Constructable,\n DelegatingValueModel,\n Dsl,\n ListModel,\n ListModelChain,\n StoreInListModel,\n StoreInValueModel,\n TrackExternal,\n TransactionObserver,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport { CommandFace } from '../../components/commands/command-face';\nimport { DisposableComponent } from '../../components/disposable-component';\nimport { TrackBy } from '../../components/track-by';\nimport { NavItem } from '../nav-item';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { Visit } from '../visit';\nimport { PlaceOutletComponent } from './place-outlet/place-outlet.component';\n\ninterface MenuItem {\n active: boolean;\n place: PlaceDefinition\n}\n\n@Component({\n template: ''\n})\nexport class AbstractPlaceNavigationComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInListModel('placesModel')\n places: Constructable<PlaceComponent>[];\n\n @Input() @TrackExternal()\n placesModel: ListModel<Constructable<PlaceComponent>>;\n\n @Input() @StoreInValueModel('placeOutletModel')\n placeOutlet: PlaceOutletComponent;\n\n @Input() @TrackExternal()\n placeOutletModel: ValueModel<PlaceOutletComponent>;\n\n private readonly placeDefinitions: ListModelChain<PlaceDefinition>;\n readonly menuItems: ListModelChain<MenuItem>;\n\n readonly commandFactory: Command.Factory<PlaceDefinition, void>;\n readonly _activePlaceComponent = this.registerDisposable(new DelegatingValueModel<PlaceComponent>());\n private activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n readonly trackByPlaceDef:TrackByFunction<MenuItem> = (index: number, data:MenuItem) => data.place;\n\n constructor(readonly placeRouter: PlaceRouter) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.placeDefinitions = chain(this.placesModel)\n .map(c => PlaceComponent.getDefinition(c))\n .select(d => {\n const guard = placeRouter.accessGuard.value;\n const state = placeRouter.state.value;\n return guard.isAuthorised(d) || state.isPlaceActive(d);\n }, { dependsOn: [placeRouter.accessGuard, placeRouter.state] });\n\n this.commandFactory = Command.createFactory((placeDefinition: PlaceDefinition) => {\n this.placeOutlet.navigate(new Visit(placeDefinition));\n });\n\n when(this.placeOutletModel).changes(outlet => this.handlePlaceOutLetChanged(outlet), {initialValue: \"triggerChange\"});\n this.activePlaceDefinition = chain(this._activePlaceComponent).pluck('placeDefinition');\n\n this.menuItems = chain(this.placeDefinitions).map(d => {\n return {\n place: d,\n active: this.activePlaceDefinition.value === d\n };\n }, {\n dependsOn: this.activePlaceDefinition\n });\n\n\n // const txo = new TransactionObserver({ verbose: true }).onEvent(e => console.log(e.name, e.payload));\n // txo.observe('this.placesModel', this.placesModel);\n // txo.observe('this.placeDefinitions', this.placeDefinitions);\n // txo.observe('this.activePlaceDefinition', this.activePlaceDefinition);\n // txo.observe('this.menuItems', this.menuItems);\n }\n\n protected handlePlaceOutLetChanged(outlet: PlaceOutletComponent) {\n this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null)\n }\n\n @Memoize()\n getNavigationFace(placeDef: PlaceDefinition): CommandFace {\n const navItem = placeDef.getPlaceData('nav') as NavItem;\n return {\n text: () => navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']),\n tooltip: () => navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null),\n icon: () => navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null)\n };\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component } from '@angular/core';\nimport { PlaceRouter } from '../../place-router';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-list-place-nav',\n templateUrl: './list-place-nav.component.html',\n styleUrls: ['./list-place-nav.component.scss']\n})\nexport class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {\n\n constructor(router: PlaceRouter) {\n super(router);\n }\n}\n","<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n","import { Component, ContentChild, HostBinding, Inject, Input, TemplateRef } from \"@angular/core\";\nimport { Router } from '@angular/router';\nimport { MutableValueModel, StoreInValueModel, TrackExternal, ValueModel } from \"@coolon/pectin\";\nimport { PlaceRouter } from '../../place-router';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n\n/**\n * @example\n * // Usage\n * <aup-vertical-place-navigation [places]=\"placeConstructorArray\"\n * [placeOutlet]=\"placeOutletComponent\">\n * </aup-vertical-place-navigation>\n * <aup-place-outlet #placeOutletComponent></aup-place-outlet>\n *\n * // CSS overrides:\n * aup-side-place-navigation {\n * --nav-width: 56px\n * --nav-expanded-width: 235px\n * --nav-item-height: var(--nav-width)\n * --nav-background-color: #555;\n * --nav-color: rgba(255, 255, 255, 0.9);\n * }\n *\n * // Content Templates:\n * #navEndTemplate\n * <ng-template #navEndTemplate>\n * <a mat-list-item (click)=\"logout()\" matTooltip=\"Logout\">\n * <mat-icon>exit_to_app</mat-icon>\n * <span *ngIf=\"sideNav.expanded\">Logout</span>\n * </a>\n * </nav-template>\n *\n * // Place nav item in an i18n.yml\n * places:\n * myPlace:\n * nav(NavItem):\n * title: \"Activities\"\n * icon: \"build\"\n * tooltip: \"Alerts, confirms and dialogs\"\n *\n * // In your place\n * (at)Place({\n * path: 'myPlace',\n * data: {\n * nav: I18n.places.myPlace.nav\n * }\n * })\n */\n@Component({\n selector: 'aup-side-place-navigation',\n templateUrl: './side-place-navigation.component.html',\n styleUrls: ['./side-place-navigation.component.scss']\n})\nexport class SidePlaceNavigationComponent extends AbstractPlaceNavigationComponent {\n\n @Input()\n @TrackExternal()\n expanded$: MutableValueModel<boolean>;\n\n @Input()\n @StoreInValueModel(\"expanded$\")\n @HostBinding('class.expanded')\n expanded: boolean;\n\n @ContentChild('navEndTemplate')\n navEndTemplate: TemplateRef<any>;\n\n constructor(router: PlaceRouter) {\n super(router);\n }\n\n expandMenu() {\n this.expanded = true;\n }\n\n collapseMenu() {\n this.expanded = false;\n }\n\n toggleMenu() {\n this.expanded = !this.expanded;\n }\n}\n","<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n","import { Component } from '@angular/core';\nimport { PlaceRouter } from '../../place-router';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-tabbed-place-navigation',\n templateUrl: './tabbed-place-navigation.component.html',\n styleUrls: ['./tabbed-place-navigation.component.scss']\n})\nexport class TabbedPlaceNavigationComponent extends AbstractPlaceNavigationComponent {\n constructor(router: PlaceRouter) {\n super(router);\n }\n}\n","<nav mat-tab-nav-bar>\n <ng-content select=\"[nav-start]\"></ng-content>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n <ng-content select=\"[nav-end]\"></ng-content>\n</nav>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { InjectionToken, NgModule } from '@angular/core';\nimport { FlexModule } from '@angular/flex-layout';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { Constructable } from '@coolon/pectin';\nimport { ComponentsModule } from '../components/exports';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { AbstractPlaceNavigationComponent } from './components/abstract-place-navigation.component';\nimport { ListPlaceNavComponent } from './components/list-place-nav/list-place-nav.component';\nimport { NotAuthorisedNoticeComponent } from './components/not-authorised-notice/not-authorised-notice.component';\nimport { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';\nimport { SidePlaceNavigationComponent } from './components/side-place-navigation/side-place-navigation.component';\nimport { TabbedPlaceNavigationComponent } from './components/tabbed-place-navigation/tabbed-place-navigation.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n MatProgressSpinnerModule,\n RouterModule,\n MatTabsModule,\n MatListModule,\n MatTooltipModule,\n MatIconModule,\n DirectivesModule,\n FlexModule,\n ComponentsModule,\n PortalModule\n ],\n declarations: [\n PlaceOutletComponent,\n TabbedPlaceNavigationComponent,\n ListPlaceNavComponent,\n SidePlaceNavigationComponent,\n AbstractPlaceNavigationComponent,\n NotAuthorisedNoticeComponent\n ],\n exports: [\n PlaceOutletComponent,\n TabbedPlaceNavigationComponent,\n ListPlaceNavComponent,\n SidePlaceNavigationComponent,\n AbstractPlaceNavigationComponent\n ],\n providers: [\n // {provide: AUP_PLACE_CONFIG, useValue: {animationDuration: \"2000ms\"}}\n ]\n})\nexport class PlaceModule {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ComponentsModule } from './components/components.module';\nimport { NoopComponent } from './components/noop/noop.component';\nimport { DirectivesModule } from './directives/directives.module';\nimport { InteractionModule } from './interaction/interaction.module';\nimport { PlaceModule } from './place/place.module';\n\n// Trick @jscutlery/semver to bump the version again..\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule,\n DirectivesModule,\n ComponentsModule,\n PlaceModule,\n InteractionModule\n ],\n exports: [\n InteractionModule,\n PlaceModule,\n DirectivesModule,\n ComponentsModule,\n NoopComponent\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nconst slideDownOnEnterDef = style({\n opacity: 0,\n 'height': '0',\n paddingTop: '0',\n paddingBottom: '0'\n});\n\n// TODO: params aren't getting customised in the view. Need to figure out the correct approach.\nexport const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [\n transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })\n]);\n\nconst slideLeftOnEnterDef = style({\n opacity: 0,\n 'width': '0',\n paddingLeft: '0',\n paddingRight: '0'\n});\n\nexport const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [\n transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })\n]);\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./slide-animations\";\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./command.directive\";\nexport * from \"./directives.module\";\nexport * from \"./focus-binding-factory\";\nexport * from \"./focus-binding.directive\";\nexport * from \"./focus-binding\";\nexport * from \"./highlight-text-model.directive\";\nexport * from \"./highlight.pipe\";\n","import { MatDialog } from '@angular/material/dialog';\nimport { MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Constructable, DelegatingValueModel, Disposable, GarbageCollector, lang, Trace } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { AbstractInteractionContext } from '../../abstract-interaction-context';\nimport { Activity } from '../../activity';\nimport { ActivityRef } from '../../activity-ref';\nimport { ActivityContainerComponent } from '../../components/activity-container/activity-container.component';\nimport { InteractionService } from '../interaction.service';\n\nexport class DialogInteractionContext extends AbstractInteractionContext {\n\n private garbage = new GarbageCollector();\n private _currentActivityRef: ActivityRef<any, any, any>;\n private activityContainer: ActivityContainerComponent<any, any, any>;\n\n constructor(readonly identifier: string,\n private readonly api: InteractionService.Api,\n private readonly dialogService: MatDialog,\n readonly config: MatDialogConfig<any>) {\n super();\n assert.notNil(dialogService);\n }\n\n cancelActiveActivity(): Promise<boolean> {\n return this.activityContainer.cancelActiveActivity();\n }\n\n dispose(): void {\n if (this.isActive()) {\n lang.illegalState('Dispose called while active.');\n }\n this.garbage.dispose();\n }\n\n registerDisposable<T extends Disposable>(disposable: T): T {\n return this.garbage.registerDisposable(disposable);\n }\n\n isActive(): boolean {\n return !!this.activityContainer && this.activityContainer.isActive();\n }\n\n protected createAndLaunchActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean): Promise<R> {\n assert.isNil(this._currentActivityRef);\n\n const config: MatDialogConfig = {\n ...this.config,\n ...{\n disableClose,\n panelClass: 'dialog-interaction-context'\n }\n };\n const self = this;\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent<D, R, E>>;\n const activityContainer = this.activityContainer = matDialogRef.componentInstance;\n this.activityContainer.initialise(this.identifier, this.api);\n const activityResult = this.activityContainer.startActivity(activityType, data);\n\n activityResult.finally(() => matDialogRef.close());\n // we need to check if our onDone/onCancel methods above we called or if we were\n // closed by the user clicking the backdrop. If the later then we need to cancel our\n // activity.\n matDialogRef.afterClosed().subscribe(promiseAlreadyFinished => {\n if (activityContainer.isActive()) {\n activityContainer.cancelActiveActivity();\n }\n this.activityContainer = null;\n });\n matDialogRef.updateSize();\n matDialogRef.afterOpened().subscribe(promiseAlreadyFinished => {\n matDialogRef.updateSize();\n });\n\n return activityResult;\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { BooleanValueModelChain } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\n\nimport { InteractionContext } from '../../interaction-context';\nimport { InteractionService } from '../interaction.service';\nimport { ModalInteractionContextFactory } from '../modal-interaction-context.factory';\nimport { DialogInteractionContext } from './dialog-interaction-context';\n\nexport const DIALOG_INTERACTION_SERVICE_DEFAULTS = new InjectionToken<MatDialogConfig<any>>('DIALOG_INTERACTION_SERVICE_DEFAULTS');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionContextFactory extends ModalInteractionContextFactory {\n\n readonly active: BooleanValueModelChain;\n\n constructor(private readonly dialogService: MatDialog,\n @Optional() @Inject(DIALOG_INTERACTION_SERVICE_DEFAULTS) readonly dialogServiceDefaults: MatDialogConfig<any>,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) readonly matDialogDefaultConfig: MatDialogConfig<any>\n ) {\n super();\n assert.notNil(dialogService);\n }\n\n createInteractionContext(identifier: string, api: InteractionService.Api, disableClose?: boolean): InteractionContext {\n const config: MatDialogConfig = {\n autoFocus: false,\n hasBackdrop: true,\n closeOnNavigation: false,\n ...this.matDialogDefaultConfig,\n ...this.dialogServiceDefaults\n };\n\n return new DialogInteractionContext(identifier, api, this.dialogService, config);\n }\n\n\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./abstract-interaction-context\";\nexport * from \"./activity-ref\";\nexport * from \"./activity\";\nexport * from \"./alert\";\nexport * from \"./confirm\";\nexport * from \"./in-place-interaction-context\";\nexport * from \"./interaction-context\";\nexport * from \"./interaction.module\";\nexport * from \"./route-synchronisation-adapter\";\nexport * from \"./components/abstract-confirm-dialog.component\";\nexport * from \"./components/abstract-dialog.component\";\nexport * from \"./components/activity-actions/activity-actions.component\";\nexport * from \"./components/activity-body/activity-body.component\";\nexport * from \"./components/activity-container/activity-container.component\";\nexport * from \"./components/activity-container/activity-outlet/activity-outlet.component\";\nexport * from \"./components/activity-title/activity-title.component\";\nexport * from \"./components/activity-triggers/abstract-activity-trigger.component\";\nexport * from \"./components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component\";\nexport * from \"./components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component\";\nexport * from \"./components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component\";\nexport * from \"./components/add-card-activity/add-card-activity.component\";\nexport * from \"./components/add-item-interaction-context/add-item-interaction-context.component\";\nexport * from \"./components/alert-dialog/alert-dialog.component\";\nexport * from \"./components/confirm-then-dialog/confirm-then-dialog.component\";\nexport * from \"./components/confirm-then-execute-dialog/confirm-then-execute-dialog.component\";\nexport * from \"./components/confirmation-dialog/confirmation-dialog.component\";\nexport * from \"./components/editors/edit-context\";\nexport * from \"./components/editors/inline-string-editor/inline-editor-model\";\nexport * from \"./components/editors/inline-string-editor/inline-string-editor.component\";\nexport * from \"./components/inplace-interaction-context/in-place-interaction-context.component\";\nexport * from \"./components/input-activities/input-activity\";\nexport * from \"./components/input-activities/select-input-activity\";\nexport * from \"./components/input-activities/string-input-activity\";\nexport * from \"./components/popup-interaction-context/popup-interaction-context.component\";\nexport * from \"./directives/interaction-context-trigger-for.directive\";\nexport * from \"./services/interaction-service-routing-adapter\";\nexport * from \"./services/interaction.service\";\nexport * from \"./services/modal-interaction-context.factory\";\nexport * from \"./services/mat-dialog-interaction/dialog-interaction-context-factory\";\nexport * from \"./services/mat-dialog-interaction/dialog-interaction-context\";\n","import { Constructable, lang, Logger } from '@coolon/pectin';\n\nimport { isNil } from 'lodash';\nimport { PlaceComponent } from './place-component';\nimport { PlaceDefinition } from './place-definition';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n if (PlaceComponent.isPlaceComponentConstructor(target)) {\n PlaceComponent.injectDefinition(target, new PlaceDefinition(\n target,\n options.path,\n isNil(options.authenticate) ? true : options.authenticate,\n options.role ?? options.roles,\n options.data,\n PlaceComponent.getRouteParameters(target),\n (options.children || []).map(c => PlaceComponent.getDefinition(c))\n ));\n\n if (options.roles) {\n console.warn(`${target.name} @Place({roles: string[]}) is deprecated. Use @Place({role:any}) instead`)\n }\n\n } else {\n lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);\n }\n };\n}\n\nexport namespace Place {\n\n export interface Options {\n path: string;\n data?: { [key: string]: any }; // defaults to true\n authenticate?: boolean; // defaults to true\n role?: any; // defaults to empty array\n\n /**\n * @deprecated use #role instead\n */\n roles?: string[]; // defaults to empty array\n\n children?: Constructable<PlaceComponent>[];\n defaultChild?: Constructable<PlaceComponent>;\n }\n\n}\n\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoopAuthGuard implements CanActivate {\n\n constructor() {\n }\n\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n return true;\n }\n}\n","import { Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { NavigationSession } from '../navigation/session/navigation-session';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\n\nexport class VisitSanitiser {\n constructor(private navigationSession: NavigationSession, private activatedRoute: ActivatedRouteSnapshot, private router: Router, private placeHistory: PlaceHistory, private injector: Injector) {\n\n }\n\n // @Trace()\n async sanitise(visit: Visit): Promise<Visit> {\n const placeDef = visit.placeDefinition;\n if (placeDef.hasRouteId()) {\n const routeIdDef = placeDef.getRouteIdParameterDef();\n const routeId = visit.getRouteId();\n const sanitisedValue = await routeIdDef.sanitise(routeId, visit, this.placeHistory, this.injector, this.navigationSession.isPopState);\n // console.log({routeId, sanitisedValue});\n // ###------- EARLY EXIT --------###\n if (routeIdDef.hasChanged(routeId, sanitisedValue)) {\n // if the route id has changed we redirect immediately as other\n // parameter sanitisers might use it.\n return visit.replace(routeIdDef, sanitisedValue);\n }\n }\n\n // if we didn't replace the routeId we continue the url present parameters.\n const parameterDefs = placeDef.getVisitParameterDefs({\n includeRouteParameters: true,\n includeNonRouteParameters: true\n });\n let sanitisedVisit: Visit = visit;\n for (let i = 0; i < parameterDefs.length; i++) {\n const def = parameterDefs[i];\n const value = visit.getParameterValue(def);\n const sanitisedValue = await def.sanitise(value, sanitisedVisit, this.placeHistory, this.injector, this.navigationSession.isPopState);\n if (def.hasChanged(value, sanitisedValue)) {\n sanitisedVisit = sanitisedVisit.replace(def, sanitisedValue);\n }\n }\n\n return sanitisedVisit.hasChangedFrom(visit) ? sanitisedVisit : visit;\n }\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 { Constructable, lang } from '@coolon/pectin';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceHistory } from '../place-history';\nimport { PlaceRouter } from '../place-router';\nimport { VisitSanitiser } from '../route/visit-sanitiser';\nimport { UrlService } from '../url-service';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { ConsolidatedParameterMap } from './consolidated-param-map';\n\n@Injectable({ providedIn: 'root' })\nexport class PlaceGuard implements CanActivate, CanDeactivate<PlaceComponent> {\n\n\n constructor(private readonly router: Router,\n private urlService: UrlService,\n private readonly placeRouter: PlaceRouter,\n private readonly placeHistory: PlaceHistory,\n private readonly interactionService: InteractionService,\n private readonly injector: Injector) {\n }\n\n // @Trace()\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n\n if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {\n const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);\n\n if (placeDefinition.authenticate) {\n\n if (!await this.placeRouter.accessGuard.value.isAuthenticated()) {\n const redirectLocation = this.placeRouter.getAuthenticationFailureRedirect(activatedRoute, state);\n const nextPlaceDef = this.getPlaceDefinition(redirectLocation);\n if (nextPlaceDef.authenticate) {\n lang.illegalState(`handleNotAuthenticated hook returned place ${nextPlaceDef.component.name} that requires authentication.`);\n }\n return this.createUrlTree(redirectLocation);\n }\n }\n\n const result = await this.cleanInteractionState(activatedRoute, state, async () => {\n const navigationSession = this.placeRouter.navigationSession;\n\n // Parse our route params.\n const params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);\n // console.log(\"RouteParams\", params)\n const parsedParams = placeDefinition.parseRouteParams(params);\n const initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);\n\n const sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);\n const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));\n\n // Save the visit with any updated parameters. We need to save it so we remember any non route parameters\n navigationSession.storeVisit(sanitisedVisit);\n if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {\n // Regenerate the url\n const urlSnapshot = this.urlService.parseUrl(state.url).updateVisitSegments(sanitisedVisit);\n // console.log('##### Place Guard Redirect', urlSnapshot);\n return urlSnapshot;\n } else {\n return true;\n }\n });\n return result instanceof UrlSnapshot ? result.urlTree : result;\n\n } else {\n return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);\n }\n }\n\n // @Trace()\n async canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Promise<boolean | UrlTree> {\n if (!component) {\n // this happens when the place wasn't authorised and the associated\n // router outlet was removed from the dom.\n return true;\n }\n const currentUrl = this.urlService.parseUrl(currentState.url);\n const nextUrl = this.urlService.parseUrl(nextState.url);\n const result = await this.placeRouter.navigationSession.canDeactivatePlace(component, currentUrl, nextUrl);\n return result instanceof UrlSnapshot ? result.urlTree : result;\n }\n\n private getPlaceDefinition(result: Constructable<PlaceComponent> | Visit): PlaceDefinition {\n return result instanceof Visit ?\n result.placeDefinition :\n PlaceComponent.getDefinition(result);\n }\n\n private createUrlTree(result: Constructable<PlaceComponent> | Visit) {\n const visit = result instanceof Visit ? result : new Visit(PlaceComponent.getDefinition(result), {});\n return this.urlService.createUrlSnapshot(visit).urlTree;\n }\n\n // @Trace()\n async cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, next: () => Promise<boolean | UrlSnapshot>): Promise<boolean | UrlSnapshot> {\n const url = this.urlService.parseUrl(state.url);\n if (!this.interactionService.isActive() && url.hasInteractions()) {\n // This happens if we reload the page or the url was pasted as the route should only be activated\n // after the interaction context has become active.\n return url.removeInteractionIds();\n } else {\n return next();\n }\n }\n\n}\n","\nimport { isNumber , isNaN as _isNaN} from 'lodash';\n\nexport interface Formatter<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace Formatter {\n\n class StringType implements Formatter<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 Formatter<number> {\n format(value: number): string {\n return isNumber(value) && !isNaN(value) ? `${value}` : null;\n }\n\n parse(value: string): number {\n const parsed = Number.parseFloat(value);\n return _isNaN(parsed) ? null : parsed;\n }\n }\n\n class BooleanType implements Formatter<boolean> {\n format(value: boolean): string {\n return value ? 'true' : 'false';\n }\n\n parse(value: string): boolean {\n return value === 'true';\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n export const BOOLEAN = new BooleanType();\n}\n","import { Binding, Constructable, DebugContext, Functions, HasValue } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ROUTE_PARAMETER_LIST_KEY } from '../place-component';\nimport { Formatter } from './formatter';\nimport { ParameterDefinition } from './parameter-definition';\nimport { ParameterSanitiser } from './parameter-sanitiser';\n\n\nexport interface RouteIdOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n storeInUrl?: Formatter<T>\n sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteListParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T[];\n storeInUrl?: Formatter<T>\n sanitiser?: Constructable<ParameterSanitiser<T[]>> | ParameterSanitiser<T[]>;\n}\n\n\nfunction installMechanics<M extends HasValue<any>>(parameterDef: ParameterDefinition<any>, prototype: Object, propertyKey: string | symbol, tagPrefix: string) {\n\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);\n\n function getMechanics(instance: M, propertyName: string | symbol) {\n const key = `__mechanics_${propertyName.toString()}`;\n if (!instance[key]) {\n const backingModel = parameterDef.createBackingModel();\n instance[key] = {\n backingModel: backingModel,\n binding: null as Binding<any, any>\n };\n const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;\n DebugContext.getOrCreate(instance[key].backingModel).tag(tag);\n }\n return instance[key];\n }\n\n Object.defineProperty(prototype, propertyKey, {\n get: function() {\n return getMechanics(this, propertyKey).backingModel;\n },\n set: function(userModel: M) {\n const mechanics = getMechanics(this, propertyKey);\n // This handles the scenario where we want to push an existing value model (such as a form model)\n // to and from the route.\n if (mechanics.binding) {\n mechanics.binding.dispose();\n }\n if (userModel) {\n mechanics.binding = new Binding(mechanics.backingModel, userModel, {\n toLeft: Functions.identity,\n toRight: Functions.identity\n });\n if (parameterDef.isEmptyValue(userModel.value)) {\n // console.log(`Push visit to model for ${tag}`, {value: mechanics.backingModel.value});\n mechanics.binding.writeRight(); // push the visit into the user model;\n } else {\n if (!parameterDef.isEmptyValue(mechanics.backingModel.value)) {\n console.warn('Assigning a visit model with an existing value to a visit parameter with an existing value. Visit parameter will be overridden');\n }\n mechanics.binding.writeLeft(); // push the user model into the visit\n }\n }\n }\n });\n}\n\nexport function RouteId<T extends string | number>(type: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: Object, propertyKey: string | symbol) => {\n const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, type);\n installMechanics(parameterDef, prototype, propertyKey, '@RouteId');\n };\n}\n\nexport function VisitParameter<T>(options?: RouteParameterOptions<T>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const parameterDef = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));\n installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');\n };\n}\n\nexport function VisitParameterList<E>(options?: RouteListParameterOptions<E>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const parameterDef = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));\n installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');\n };\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./nav-item\";\nexport * from \"./place-access-guard\";\nexport * from \"./place-component\";\nexport * from \"./place-config\";\nexport * from \"./place-definition\";\nexport * from \"./place-history\";\nexport * from \"./place-router\";\nexport * from \"./place.decorator\";\nexport * from \"./place.module\";\nexport * from \"./url-service\";\nexport * from \"./url-snapshot\";\nexport * from \"./visit\";\nexport * from \"./components/abstract-place-navigation.component\";\nexport * from \"./components/list-place-nav/list-place-nav.component\";\nexport * from \"./components/not-authorised-notice/not-authorised-notice.component\";\nexport * from \"./components/place-outlet/place-outlet.component\";\nexport * from \"./components/place-outlet/route-animations\";\nexport * from \"./components/side-place-navigation/side-place-navigation.component\";\nexport * from \"./components/tabbed-place-navigation/tabbed-place-navigation.component\";\nexport * from \"./guards/consolidated-param-map\";\nexport * from \"./guards/noop-auth-guard.service\";\nexport * from \"./guards/place.guard\";\nexport * from \"./navigation/place-component-deactivation-handler\";\nexport * from \"./navigation/session/abstract-pop-state-navigation\";\nexport * from \"./navigation/session/navigating\";\nexport * from \"./navigation/session/navigation-context\";\nexport * from \"./navigation/session/navigation-session\";\nexport * from \"./navigation/session/pop-state-navigation\";\nexport * from \"./navigation/session/event-cleanup/event-clean-up-session\";\nexport * from \"./navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled\";\nexport * from \"./navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined\";\nexport * from \"./navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes\";\nexport * from \"./navigation/session/interactions/navigating-during-interaction\";\nexport * from \"./navigation/session/interactions/pop-state-during-interaction-navigation\";\nexport * from \"./navigation/session/interactions/remove-last-interaction-from-url-navigation-session\";\nexport * from \"./navigation/session/interactions/synchronise-interaction-context-ids-with-route\";\nexport * from \"./route/formatter\";\nexport * from \"./route/json-types\";\nexport * from \"./route/parameter-decorators\";\nexport * from \"./route/parameter-definition\";\nexport * from \"./route/parameter-sanitiser\";\nexport * from \"./route/parameter-snapshot\";\nexport * from \"./route/visit-sanitiser\";\n","// TODO: Merge various wake detection events into this class. visibility, wake events, websocket connection, online detection.\n\n\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Dsl, GarbageCollector, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport * as wakeEvent from 'wake-event';\n\n// Taken from: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\n\n@Injectable({ providedIn: 'root' })\nexport class VisibilityService extends GarbageCollector {\n\n private readonly document: Document;\n private readonly attributeName: string;\n private readonly eventName: string;\n\n private _visibleModel = new MutableValueModel<boolean>();\n // private _wakeEvents = new MutableStream<Instant>();\n // private _throttledWakeEvents: Stream<Instant>;\n\n constructor(@Inject(DOCUMENT) document: any) {\n super();\n this.document = document; // see https://stackoverflow.com/a/53715642\n\n const { chain } = Dsl.disposeWith(this);\n\n // Set the name of the hidden property and the change event for visibility\n if (typeof this.document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n this.attributeName = 'hidden';\n this.eventName = 'visibilitychange';\n } else if (typeof this.document['msHidden'] !== 'undefined') {\n this.attributeName = 'msHidden';\n this.eventName = 'msvisibilitychange';\n } else if (typeof this.document['webkitHidden'] !== 'undefined') {\n this.attributeName = 'webkitHidden';\n this.eventName = 'webkitvisibilitychange';\n }\n\n // Warn if the browser doesn't support addEventListener or the Page Visibility API\n if (typeof this.document.addEventListener === 'undefined' || typeof document[this.attributeName] === 'undefined') {\n console.log('This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.');\n } else {\n // Handle page visibility change\n const handler = () => this.updateVisibilityState();\n this.document.addEventListener(this.eventName, handler, false);\n this.onDispose(() => {\n this.document.removeEventListener(this.eventName, handler);\n });\n\n }\n\n wakeEvent(() => this.updateVisibilityState());\n this._visibleModel.value = this.isVisible();\n\n // give the network a chance to come back or we end up with a bunch of failed requests.\n // should probably also implement a connection service so that we can go\n // connectionServer.ensureConnectedThen(fireWakeEvent);\n // this._throttledWakeEvents = chain(this._wakeEvents).throttle(300);\n\n }\n\n // get wakeEvents(): Stream<Instant> {\n // return this._throttledWakeEvents;\n // }\n\n // @trace\n protected updateVisibilityState() {\n this._visibleModel.value = this.isVisible();\n // this._wakeEvents.publish(Instant.now());\n }\n\n get visibleModel(): ValueModel<boolean> {\n return this._visibleModel.readonly;\n }\n\n isHidden(): boolean {\n return !!this.document[this.attributeName];\n }\n\n isVisible(): boolean {\n return !this.isHidden();\n }\n\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./visibility-service\";\nexport * from \"./markdown/markdown.service\";\nexport * from \"./markdown/pill-plugin\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lang","assert","_isNaN"],"mappings":"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"}