@coolon/angular-ui-powerups 16.1.0-aplpha.89 → 16.1.0-aplpha.9

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 (145) hide show
  1. package/assets/activities/input-activities.scss +2 -10
  2. package/assets/form.scss +27 -62
  3. package/assets/table.scss +24 -13
  4. package/assets/tabs.scss +6 -2
  5. package/esm2022/lib/animations/slide-animations.mjs +1 -6
  6. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  7. package/esm2022/lib/components/commands/command/command.component.mjs +10 -24
  8. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +3 -11
  9. package/esm2022/lib/components/commands/command-face.mjs +11 -11
  10. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +11 -11
  11. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +4 -6
  12. package/esm2022/lib/components/components.module.mjs +8 -22
  13. package/esm2022/lib/components/disposable-component.mjs +37 -19
  14. package/esm2022/lib/components/exports.mjs +2 -6
  15. package/esm2022/lib/components/forms/abstract-input.component.mjs +12 -55
  16. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +2 -2
  17. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +3 -3
  18. package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +2 -2
  19. package/esm2022/lib/components/forms/number-input/number-input.component.mjs +10 -49
  20. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +3 -40
  21. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +10 -11
  22. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +9 -21
  23. package/esm2022/lib/components/icon/icon.component.mjs +4 -7
  24. package/esm2022/lib/components/resize-aware.component.mjs +24 -61
  25. package/esm2022/lib/components/switch-case/switch-case.component.mjs +7 -5
  26. package/esm2022/lib/components/tables/abstract-table-model.mjs +25 -42
  27. package/esm2022/lib/components/tables/abstract-table.component.mjs +5 -19
  28. package/esm2022/lib/components/tables/column/column-list-model.mjs +44 -0
  29. package/esm2022/lib/components/tables/column/column-model.mjs +3 -13
  30. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  31. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  32. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  33. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  34. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  35. package/esm2022/lib/components/tables/column/selection-column-model.mjs +3 -3
  36. package/esm2022/lib/components/tables/editor/edit-session.mjs +2 -4
  37. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +2 -4
  38. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +2 -16
  39. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  40. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +41 -132
  41. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +2 -7
  42. package/esm2022/lib/components/tables/table/table.component.mjs +68 -19
  43. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +4 -5
  44. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  45. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +4 -7
  46. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +3 -3
  47. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  48. package/esm2022/lib/directives/directives.module.mjs +1 -1
  49. package/esm2022/lib/directives/exports.mjs +1 -2
  50. package/esm2022/lib/directives/highlight.pipe.mjs +2 -2
  51. package/esm2022/lib/interaction/activity.mjs +4 -3
  52. package/esm2022/lib/interaction/alert.mjs +2 -2
  53. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +4 -8
  54. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +9 -7
  55. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +11 -28
  56. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  57. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  58. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +2 -2
  59. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +3 -3
  60. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  61. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +1 -3
  62. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +4 -8
  63. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  64. package/esm2022/lib/interaction/exports.mjs +1 -2
  65. package/esm2022/lib/interaction/interaction.module.mjs +9 -7
  66. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +4 -3
  67. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +9 -7
  68. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  69. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  70. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  71. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +6 -3
  72. package/esm2022/lib/place/place-component.mjs +7 -7
  73. package/esm2022/lib/place/place-definition.mjs +3 -3
  74. package/esm2022/lib/place/place-history.mjs +2 -2
  75. package/esm2022/lib/place/place.decorator.mjs +2 -2
  76. package/esm2022/lib/place/place.module.mjs +5 -1
  77. package/esm2022/lib/place/route/formatter.mjs +2 -2
  78. package/esm2022/lib/place/route/parameter-decorators.mjs +50 -54
  79. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  80. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  81. package/esm2022/lib/place/visit-segment.mjs +2 -2
  82. package/esm2022/lib/place/visit.mjs +2 -2
  83. package/fesm2022/coolon-angular-ui-powerups.mjs +488 -1078
  84. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  85. package/lib/animations/slide-animations.d.ts +0 -1
  86. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  87. package/lib/components/commands/command/command.component.d.ts +1 -2
  88. package/lib/components/commands/command-face/command-face.component.d.ts +0 -2
  89. package/lib/components/commands/command-face.d.ts +7 -5
  90. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +2 -2
  91. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  92. package/lib/components/components.module.d.ts +53 -55
  93. package/lib/components/disposable-component.d.ts +8 -11
  94. package/lib/components/exports.d.ts +1 -5
  95. package/lib/components/forms/abstract-input.component.d.ts +5 -13
  96. package/lib/components/forms/number-input/number-input.component.d.ts +4 -8
  97. package/lib/components/forms/password-input/password-input.component.d.ts +1 -7
  98. package/lib/components/forms/select-input/select-input.component.d.ts +3 -4
  99. package/lib/components/forms/string-input/string-input.component.d.ts +1 -3
  100. package/lib/components/resize-aware.component.d.ts +5 -24
  101. package/lib/components/switch-case/switch-case.component.d.ts +3 -2
  102. package/lib/components/tables/abstract-table-model.d.ts +5 -10
  103. package/lib/components/tables/abstract-table.component.d.ts +2 -3
  104. package/lib/components/tables/column/column-list-model.d.ts +13 -0
  105. package/lib/components/tables/column/column-model.d.ts +1 -5
  106. package/lib/components/tables/column/custom-template-column-model.d.ts +1 -2
  107. package/lib/components/tables/column/custom-value-column-model.d.ts +1 -2
  108. package/lib/components/tables/column/editor-controls-column-model.d.ts +1 -2
  109. package/lib/components/tables/column/list-propery-column-model.d.ts +1 -2
  110. package/lib/components/tables/column/property-column-model.d.ts +1 -2
  111. package/lib/components/tables/column/selection-column-model.d.ts +1 -2
  112. package/lib/components/tables/filter/text-search-predicate.d.ts +0 -9
  113. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +16 -35
  114. package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +1 -2
  115. package/lib/components/tables/table/table.component.d.ts +10 -5
  116. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +1 -2
  117. package/lib/components/tables/tree-table/tree-table-component.d.ts +0 -3
  118. package/lib/directives/exports.d.ts +0 -1
  119. package/lib/interaction/activity.d.ts +2 -2
  120. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +0 -1
  121. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +3 -1
  122. package/lib/interaction/components/activity-container/activity-container.component.d.ts +3 -7
  123. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  124. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  125. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +1 -1
  126. package/lib/interaction/exports.d.ts +0 -1
  127. package/lib/interaction/interaction.module.d.ts +28 -28
  128. package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -3
  129. package/lib/place/place-component.d.ts +4 -4
  130. package/lib/place/place.module.d.ts +5 -4
  131. package/package.json +5 -7
  132. package/esm2022/lib/components/forms/form-field.mjs +0 -2
  133. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +0 -33
  134. package/esm2022/lib/components/loadable-component.mjs +0 -49
  135. package/esm2022/lib/components/tables/column/column-manager.mjs +0 -81
  136. package/esm2022/lib/components/tables/column/column-order-manager.mjs +0 -19
  137. package/esm2022/lib/directives/resize-observer.directive.mjs +0 -40
  138. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +0 -129
  139. package/lib/components/forms/form-field.d.ts +0 -5
  140. package/lib/components/forms/search-input/search-input.component.d.ts +0 -10
  141. package/lib/components/loadable-component.d.ts +0 -17
  142. package/lib/components/tables/column/column-manager.d.ts +0 -19
  143. package/lib/components/tables/column/column-order-manager.d.ts +0 -20
  144. package/lib/directives/resize-observer.directive.d.ts +0 -16
  145. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +0 -53
@@ -1 +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/track.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/garbage-collector.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/commands/command-face.ts","../../../../libs/angular-ui-powerups/src/lib/components/cards/abstract-card-container.component.ts","../../../../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/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/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/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/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/search-input/search-input.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/forms/search-input/search-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/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/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/tables/renderer/cell-portal-ref.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/column-text-search-formatter.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/custom-template-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/abstract-table.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/column-template/column-template.directive.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/editor/edit-session.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/paginator/paginator.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/paginator/paginator.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/selection-cell/selection-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/selection-cell/selection-cell.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/column/column-order-manager.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/column-manager.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/enable-cell-text-search.decorator.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/custom-value-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/editor-controls-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/list-propery-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/property-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/selection-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-more-menu/table-more-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-more-menu/table-more-menu.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/abstract-table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-cell/table-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-cell/table-cell.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-header-cell/table-header-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-header-cell/table-header-cell.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-body/table-body.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-body/table-body.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table-row-menu/table-row-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/table-filter-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/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-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-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-table-component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-table.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/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/components.module.ts","../../../../libs/angular-ui-powerups/src/lib/components/loadable-component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/text-search-predicate.ts","../../../../libs/angular-ui-powerups/src/lib/components/exports.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-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/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/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-segment.ts","../../../../libs/angular-ui-powerups/src/lib/place/visit.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-auth-service.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-history.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-router.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/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/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/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/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/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/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/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/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/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/components/input-activities/select-input-activity.ts","../../../../libs/angular-ui-powerups/src/lib/animations/slide-animations.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/components/slide-down-interaction-context/slide-down-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/interaction.module.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/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/exports.ts","../../../../libs/angular-ui-powerups/src/lib/directives/resize-observer.directive.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-access-guard.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-segment-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 // eslint-disable-next-line @angular-eslint/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 {TrackByFunction} from '@angular/core';\nimport {AbstractConstructable, ValuePropertiesOf} from '@coolon/typescript-utilities';\n\nexport namespace Track {\n export const byIndex: TrackByFunction<any> = (index: number, item: any) => index;\n\n export function byId(): TrackByFunction<any> {\n return (index: number, item: any) => item[\"id\"];\n }\n\n export function byProperty<T, P extends keyof T = any>(property: P): TrackByFunction<T> {\n return (index: number, item: T) => item[property];\n }\n\n export function type<T>(type: AbstractConstructable<T>) {\n return {\n by<P extends ValuePropertiesOf<T>>(property: P) {\n return (index: number, item: T) => item[property];\n },\n using(callback: (instance: T) => any) {\n return (index: number, item: T) => callback(item);\n }\n };\n }\n}\n","import {ChangeDetectorRef, Directive, inject, OnDestroy, OnInit, ProviderToken} from '@angular/core';\nimport {Dsl, GarbageCollector, HasValue, MutableValueModel} from '@coolon/pectin';\nimport {Track} from \"./track\";\nimport {Loadable} from \"./types/loadable\";\n\n@Directive()\nexport class DisposableComponent extends GarbageCollector implements OnInit, OnDestroy {\n\n readonly trackById = Track.byId();\n\n // #_loaded$ = new MutableValueModel<boolean>();\n // #asyncLoadables: Loadable[] = [];\n // #awaitedLoadables: Loadable[] = [];\n #initCallbacks: (()=>void)[] = [];\n #initialised = false;\n\n protected readonly cdr = this.inject(ChangeDetectorRef);\n\n protected onInit(callback: () => void) {\n if (this.#initialised) {\n callback();\n } else {\n this.#initCallbacks.push(callback);\n }\n }\n\n ngOnInit(): void {\n this.#initCallbacks.forEach(it => it());\n this.#initialised = true;\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n protected inject<T>(token: ProviderToken<T>):T {\n return inject(token);\n }\n\n /**\n * Monitors the specified models for any change and triggers and angular change detect cycle. This is intended for use\n * when the component uses the ON_PUSH change detection strategy.\n * @param models\n * @protected\n */\n protected trackChangesAndMarkForCheck(...models: HasValue<any>[]) {\n const {when} = Dsl.disposeWith(this);\n when.anyOf(...models).changes(() => this.cdr.markForCheck())\n }\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 = 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 {Inject, Injectable, NgZone} from '@angular/core';\nimport {FocusManager} 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} 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 // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements AfterViewInit {\n\n\n @Input() pectinFocusBinding: FocusManager.Context; // TODO: Support @Proxify()\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 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, OnDestroy} from '@angular/core';\nimport {GarbageCollector} from \"@coolon/pectin\";\n\n/**\n * Attaches a garbage collector that will be disposed with the directive. The main use case for it is\n * providing a disposal hook when using command factories.\n *\n * @example\n * <a *ngFor=\"let item of menuItems.value\"\n * aup-gc #gc=\"aup-gc\"\n * [pectinCommand]=\"commandFactory.create(item.place, gc)\"\n * </a>\n *\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[aup-gc]',\n exportAs: \"aup-gc\"\n})\nexport class GarbageCollectorDirective extends GarbageCollector implements OnDestroy {\n\n constructor() {\n super()\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n}\n","import {Directive, Input, OnDestroy} from '@angular/core';\nimport {GarbageCollector, proxify, Proxify, ValueModel} from '@coolon/pectin';\n\n@Directive({\n selector: '[aupHighlightTextModel]'\n})\nexport class HighlightTextModelDirective extends GarbageCollector implements OnDestroy {\n\n @Input() @Proxify()\n accessor aupHighlightTextModel = proxify(ValueModel<string>);\n constructor() {\n super();\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n}\n","import {OnDestroy, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {GarbageCollector, ValueModel} from '@coolon/pectin';\nimport escapeStringRegexp from \"escape-string-regexp\";\n\nimport {isEmpty, isString} from 'lodash-es';\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(escapeStringRegexp(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 {GarbageCollectorDirective} from './garbage-collector.directive';\nimport {HighlightTextModelDirective} from './highlight-text-model.directive';\nimport {HighlightPipe} from './highlight.pipe';\nimport {ResizeObserverDirective} from \"./resize-observer.directive\";\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective,\n HighlightPipe,\n HighlightTextModelDirective,\n GarbageCollectorDirective\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 GarbageCollectorDirective\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 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 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, Proxify, proxify, StoreInValueModel, 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 {\n\n @Input() @Proxify()\n accessor busy$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor busy: boolean;\n\n}\n","<ng-content></ng-content>\n<div class=\"busy-overlay-backdrop\" *ngIf=\"busy$.value\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"52\"></mat-progress-spinner>\n</div>\n","import {MemoizeGet} from \"@coolon/typescript-utilities\";\n\nimport {isFunction} from 'lodash-es';\nimport {Enum} from 'typescript-string-enums';\n\nimport {CommandFace as PectinCommandFace} from \"@coolon/pectin\";\n\n/**\n * @deprectated, use import {CommandFace} from \"@coolon/pectin\"; instead\n */\nexport interface CommandFace extends PectinCommandFace {\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): string {\n return isFunction(face?.color) ? face.color() : undefined;\n }\n\n export function getStyleOf(face: CommandFace): string {\n return isFunction(face?.style) ? face.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 @MemoizeGet()\n get text() {\n return CommandFace.getTextOf(this.face);\n }\n\n @MemoizeGet()\n get icon() {\n return CommandFace.getIconOf(this.face);\n }\n\n @MemoizeGet()\n get iconPosition() {\n return CommandFace.getIconPositionOf(this.face);\n }\n\n @MemoizeGet()\n get tooltip() {\n return CommandFace.getTooltipOf(this.face);\n }\n\n @MemoizeGet()\n get iconPositionStart(): boolean {\n return this.iconPosition === CommandFace.Position.START;\n }\n\n @MemoizeGet()\n get iconPositionEnd(): boolean {\n return this.iconPosition === CommandFace.Position.END;\n }\n\n @MemoizeGet()\n get color(): string {\n return CommandFace.getColorOf(this.face);\n }\n\n @MemoizeGet()\n get style(): string {\n return CommandFace.getStyleOf(this.face);\n }\n\n }\n}\n","import {Component, ContentChild, Input, TemplateRef} from '@angular/core';\nimport {Command, proxify, Proxify} 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 {\n\n @Input() @Proxify()\n accessor addCardCommand = proxify(Command<any>);\n\n @Input()\n addCardFace: CommandFace;\n\n @ContentChild('addCardTemplate')\n addCardTemplate: TemplateRef<any>;\n\n constructor() {\n super();\n }\n\n}\n","import {Component, HostBinding, Input} from \"@angular/core\";\nimport {Proxify, proxify, StoreInValueModel, ValueModel} from \"@coolon/pectin\";\nimport {DisposableComponent} from \"../disposable-component\";\n\n@Component({\n selector: \"aup-scroll-container\",\n templateUrl: \"./scroll-container.component.html\",\n styleUrls: [\"./scroll-container.component.scss\"]\n})\nexport class ScrollContainerComponent extends DisposableComponent {\n\n @Input() @Proxify()\n accessor disableScroll$ = proxify(ValueModel<boolean>) ;\n\n @Input() @StoreInValueModel()\n @HostBinding(\"class.disable-scroll\")\n accessor disableScroll = false;\n\n constructor() {\n super();\n }\n\n}\n","<div class=\"scroll-container\" cdkScrollable>\n <ng-content></ng-content>\n</div>\n","/* eslint-disable @angular-eslint/no-host-metadata-property */\nimport {ChangeDetectionStrategy, Component, HostBinding, Input} from '@angular/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 changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"mat-icon\" // this ensures angular form styles that target mat icon also work with us\n }\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 @HostBinding(\"attr.icon\")\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():string {\n return `fa-${this.suffix}`;\n }\n\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\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\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, ViewEncapsulation} from '@angular/core';\nimport {\n BooleanValueModelChain,\n Dsl,\n ListModelChain,\n MutableListModel,\n StoreInListModel,\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 {\n\n private readonly faces$ = new MutableListModel<CommandFace>();\n\n // tslint:disable-next-line:no-input-rename\n @Input('faces') @StoreInListModel(\"faces$\")\n accessor _rawFaces: CommandFace[] | ReadonlyArray<CommandFace>;\n private hasTextAndLeadingIcon$: BooleanValueModelChain;\n\n @Input()\n set face(face: CommandFace) {\n this.faces$.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.faces$).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 this.hasTextAndLeadingIcon$ = valueOf.all(\n this.activeIcon.isNotNil(),\n activeFace.pluckString('text').isNotBlank(),\n activeFace.pluck(\"iconPosition\").doesNotEqual(CommandFace.Position.END)\n ).areTruthy()\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 @HostBinding('class.has-text-and-leading-icon')\n get hasTextAndIcon() {\n return this.hasTextAndLeadingIcon$.value\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, ElementRef, HostBinding, Input} from '@angular/core';\nimport {lang} from '@coolon/typescript-utilities';\n\nimport {isInteger, isNil} from 'lodash-es';\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 {\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 enableScroll = false;\n\n constructor(private readonly elementRef: ElementRef) {\n super();\n this.onInit(() => 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], [slot=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=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer], [slot=footer]\"></ng-content>\n</div>\n\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} from '@angular/core';\nimport {DisposableComponent} from '../../disposable-component';\nimport {CommandFace} from '../command-face';\nimport {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 {Component, ElementRef, HostBinding, Inject, Input, Optional, ViewChild} from \"@angular/core\";\n\nimport {MatButton} from \"@angular/material/button\";\n\nimport {\n BooleanValueModelChain,\n Command,\n Dsl,\n ListModelChain,\n Proxify,\n proxify,\n StoreInValueModel,\n ValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\n\nimport {isEmpty} from 'lodash-es';\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 {\n\n @Input() @Proxify()\n accessor command = proxify(Command<unknown>);\n\n @Input() @Proxify()\n accessor face$ = proxify(ValueModel<CommandFace>);\n\n @Input() @StoreInValueModel()\n accessor face: CommandFace;\n\n @Input() @Proxify()\n accessor busyFace$ = proxify(ValueModel<CommandFace>);\n\n @Input() @StoreInValueModel()\n accessor busyFace: CommandFace;\n\n CommandFace = CommandFace;\n\n @Input()\n @HostBinding(\"class\")\n alignFace: HorizontalAlignment = HorizontalAlignment.CENTER;\n\n @ViewChild(MatButton)\n protected button: MatButton;\n\n readonly faces$: ListModelChain<CommandFace>;\n readonly buttonStyle$: ValueModelChain<string>;\n readonly color$: ValueModelChain<string>\n private activeFace$: ValueModelChain<CommandFace>;\n\n readonly iconOnly$: BooleanValueModelChain;\n readonly tooltip$: ValueModelChain<string>;\n readonly visible$: ValueModelChain<boolean>;\n\n constructor(element: ElementRef, @Inject(POPUP_CONTAINER) @Optional() parent?: PopupContainer) {\n super(element, parent);\n const {chain, switchOn} = Dsl.disposeWith(this);\n\n this.faces$ = chain(this.command.busy$)\n .mapToList(busy => {\n return busy ?\n [this.busyFace$.value ?? this.command.busyFace$.value, this.face$.value ?? this.command.defaultFace$.value] :\n [this.face$.value ?? this.command.defaultFace$.value, this.busyFace$.value ?? this.command.busyFace$.value];\n }, {\n allowNil: true,\n dependsOn: [\n this.face$,\n this.busyFace$,\n this.command.defaultFace$,\n this.command.busyFace$\n ]\n })\n .rejectNil()\n\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 this.visible$ = chain(this.command.visible$);\n }\n\n @HostBinding(\"style.display\")\n get cssDisplayProperty() {\n return this.visible$.value ? undefined : 'none'\n }\n\n isActive(face: CommandFace): boolean {\n return this.activeFace$.query().equals(face);\n }\n\n requestFocus() {\n this.button.focus();\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} 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 {\n\n constructor() {\n super();\n }\n\n}\n","import {AfterContentChecked, Component, ElementRef, Inject, Input, QueryList, ViewChildren} from '@angular/core';\nimport {MatMenuTrigger} from '@angular/material/menu';\n\nimport {\n DelegatingValueModel,\n Disposable,\n Dsl,\n ListModelChain,\n MutableListModel,\n Proxify,\n proxify,\n StoreInValueModel,\n 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 faceAdapter$: 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() @Proxify()\n accessor enabled$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor enabled = true;\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.faceAdapter$ = chain(this.faceModelDelegate).map(f => new CommandFace.Adapter(f));\n this.faces$ = chain(this.faceAdapter$).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.faceAdapter$) {\n console.error('Somehow faceAdapterModel is nil -- set a break point here and let me know what\\'s going on');\n }\n return this.faceAdapter$?.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 override getFace(): CommandFace | undefined {\n return this.faceAdapter.face;\n }\n\n}\n","import {GarbageCollector} from '@coolon/pectin';\nimport {Enum} from 'typescript-string-enums';\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 {Component, Optional, 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 {\n\n\n constructor(@Optional() parent: CommandContainer) {\n super(parent);\n }\n\n override get orientation(): CommandContainer.Orientation {\n return CommandContainer.Orientation.HORIZONTAL;\n }\n\n}\n","import {Component, ElementRef, HostBinding, Inject, Optional} from '@angular/core';\nimport {CommandContainer} from './group/command-container';\nimport {PopupAwareComponent} from './group/popup-aware.component';\nimport {POPUP_CONTAINER, PopupContainer} from './group/popup-container';\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 {\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}\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 {Track} from \"../../../../track\";\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 = Track;\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(): readonly 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 tooltip$ = new MutableValueModel<string>();\n\n @Input() @StoreInValueModel()\n accessor 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.tooltip$).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 {Component, ElementRef, Inject, Input, Optional, SkipSelf} from '@angular/core';\n\nimport {DelegateToValueModel, Dsl, StoreInValueModel, 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() @DelegateToValueModel('faceModelDelegate')\n accessor face$: ValueModel<CommandFace>;\n\n @Input() @StoreInValueModel()\n accessor 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} 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 {\n\n}\n","import {Component, HostBinding, Self} from '@angular/core';\nimport {Command, FocusManager} 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 {\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 // @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","/* eslint-disable @angular-eslint/no-input-rename */\n/* tslint:disable:no-input-rename */\nimport {Component, EventEmitter, HostBinding, HostListener, Inject, InjectionToken, Input, Output} from '@angular/core';\nimport {FormGroupDirective, NgForm, UntypedFormControl} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {FloatLabelType} from \"@angular/material/form-field\";\nimport {\n Command,\n DelegatingValueModel,\n Disposable,\n EventListenerList,\n FocusManager,\n IMutableHasValue,\n ListModel,\n MutableValueModel,\n proxify,\n Proxify,\n StoreInValueModel,\n ValueModel\n} from '@coolon/pectin';\nimport {DisposableComponent} from '../disposable-component';\nimport {FormField} from \"./form-field\";\n\ninterface InputModel<T> extends IMutableHasValue<T>, Disposable {\n value: T;\n enabled$: ValueModel<boolean>;\n errors$: ListModel<string>;\n focusContext: FocusManager.Context;\n}\n\nconst INPUT_TOKEN_HACK = new InjectionToken<InputModel<any>>(\"INPUT_TOKEN_HACK\")\n\n@Component({template: ''})\nexport class AbstractInputComponent<T> extends DisposableComponent {\n\n protected onValueEditedListeners = new EventListenerList<(is: T, was: T) => void>();\n\n /**\n * A backing model for all our @Input() valueModel properties which should be defined as follows.\n *\n * @Input() @Proxify({useExisting: \"otherModel$\"})\n * value$: 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 protected readonly formValue$: InputModel<T>\n\n @Input() @Proxify()\n accessor i18n$ = proxify(MutableValueModel<FormField>);\n @Input() @StoreInValueModel()\n accessor i18n: FormField;\n\n @Input(\"label\") _label: string;\n @Input('floatLabel') userFloatLabel: FloatLabelType = 'always'; // TODO: make this an injectable default\n @Input('hint') _hint?: string;\n @Input('placeholder') _placeholder?: string;\n\n @HostBinding('class.dense')\n @Input() dense = false;\n\n private readonly _enabled$ = this.registerDisposable(new DelegatingValueModel<boolean>())\n\n @Input()\n set enabled$(condition$: ValueModel<boolean>) {\n this._enabled$.setDelegate(condition$);\n }\n\n get enabled$(): ValueModel<boolean> {\n return this._enabled$.readonly$;\n }\n\n // Note: I don't need to use delegates here as I never subscribe to the commands models\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.focus') focusCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.blur') blurCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.enter') enterCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.escape') escapeCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.click') clickCommand: Command<any>;\n\n // TODO: fix this.\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() focus = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() blur = new EventEmitter();\n @Output() enterKey = new EventEmitter();\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(@Inject(INPUT_TOKEN_HACK) formValue$: InputModel<T>) {\n super();\n const self = this;\n this.formValue$ = this.registerDisposable(formValue$);\n this._enabled$.setDefault(formValue$.enabled$)\n this.errorStateMatcher = {\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n isEnabled(): boolean {\n return this.enabled$.value;\n }\n\n @HostBinding(\"class.disabled\")\n get disabled(): boolean {\n return !this.isEnabled()\n }\n\n hasErrors(): boolean {\n return !this.errorList$.query().isEmpty();\n }\n\n get errorList$(): ListModel<string> {\n return this.formValue$.errors$;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList$.value[0] : null;\n }\n\n get focusContext() {\n return this.formValue$.focusContext;\n }\n\n get label() {\n return this._label ?? this.i18n?.label()\n }\n\n get hint() {\n return this._hint ?? this.hackyGetI18n(\"hint\");\n }\n\n get placeholder() {\n return this._placeholder ?? this.hackyGetI18n(\"placeholder\");\n }\n\n get floatLabel(): FloatLabelType {\n // return this.dense ? 'never' : this.userFloatLabel;\n return 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 protected hackyGetI18n(key: keyof FormField): string {\n // TODO: update I18n to make it possible to get an optional value with return the missing key message.\n const i18nFn = this.i18n ? this.i18n[key] : undefined;\n const i18nValue = i18nFn && i18nFn()\n return i18nValue?.startsWith(\"missing key\") ? undefined : i18nValue;\n }\n\n}\n","/* tslint:disable:no-input-rename */\nimport {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\nimport {\n Binding,\n ConvertedFormListModel,\n DebugContext,\n DelegateToListModel,\n DelegatingFormListModel,\n Dsl,\n FormListModel,\n Guard,\n MutableListModel\n} from \"@coolon/pectin\";\nimport {AbstractInputComponent} from \"./abstract-input.component\";\n\n@Component({template: \"\"})\nexport class AbstractListInputComponent<T> extends AbstractInputComponent<readonly T[]> implements OnInit {\n\n @Input() @DelegateToListModel(\"formValue$\")\n accessor list$: FormListModel<T> | ConvertedFormListModel<T, any> | MutableListModel<T>;\n\n readonly componentList$ = 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.list$ = 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(new DelegatingFormListModel<T>());\n const {when, valueOf, chain} = Dsl.disposeWith(this);\n const binding = this.registerDisposable(new Binding.Identity(this.formValue$, this.componentList$).writeRight());\n const inExternalChange = valueOf.any(\n this.setValueIsInProgress$,\n chain(binding.direction).equals(Binding.Direction.RIGHT)\n ).areTruthy();\n\n when(this.componentList$).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.formValue$, `${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 ConvertedFormValueModel,\n DebugContext,\n DelegateToValueModel,\n DelegatingFormValueModel,\n Dsl,\n FormValueModel,\n Guard,\n MutableValueModel\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() @DelegateToValueModel('formValue$')\n accessor value$: FormValueModel<T> | ConvertedFormValueModel<T, any> | MutableValueModel<T>;\n\n\n protected setValueInProgress$ = new Guard();\n readonly componentValue$ = 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.value$ = 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(new DelegatingFormValueModel<T>());\n const { when, chain, valueOf } = Dsl.disposeWith(this);\n const binding = this.registerDisposable(new Binding.Identity(this.formValue$, this.componentValue$).writeRight());\n const inExternalChange = valueOf.any(\n this.setValueInProgress$,\n chain(binding.direction).equals(Binding.Direction.RIGHT)\n ).areTruthy();\n\n when(this.componentValue$).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.formValue$, `${this.constructor.name}.formValueModel`);\n }\n\n}\n","import {AfterViewInit, Component, ContentChild, Input, TemplateRef, ViewChild} from \"@angular/core\";\nimport {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\nimport {MatInput} from \"@angular/material/input\";\nimport {\n Dsl,\n Guard,\n ListModel,\n ListModelChain,\n MutableValueModel,\n Predicate,\n Proxify,\n proxify,\n StoreInListModel\n} from \"@coolon/pectin\";\n\nimport {isEmpty, isString} from 'lodash-es';\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 AfterViewInit {\n\n @Input() @Proxify()\n accessor rawTextContent$ = proxify(MutableValueModel<string>);\n\n @Input() @Proxify()\n accessor options$ = proxify(ListModel<T>);\n\n @Input() @StoreInListModel()\n accessor options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n allowNil: boolean;\n\n @Input()\n autoActiveFirstOption = true;\n\n @Input()\n autoFilter = true;\n\n @ViewChild(MatInput)\n matInputComponent: MatInput;\n\n @ContentChild('optionTemplate')\n optionTemplateRef: TemplateRef<any>;\n\n @ContentChild('nilOptionTemplate')\n nilOptionTemplateRef: TemplateRef<any>;\n\n private readonly inSearchUpdate$ = new Guard()\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 @Input()\n filterFactory: (filterText:string) => Predicate<T> = (filterText: string) => {\n const lowerCaseFilterValue = isString(filterText) ? filterText.toLowerCase() : '';\n return (option: T) => {\n const matches = !isEmpty(this.filterValue.value) && this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue);\n return matches;\n }\n };\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n const filter$ = chain(this.filterValue).map(v => this.filterFactory(v), {allowNil: true});\n this.filteredOptions = chain(this.options$)\n .select(option => !this.autoFilter || filter$.value(option), { dependsOn: filter$ });\n }\n\n ngAfterViewInit(): void {\n const { when } = Dsl.disposeWith(this);\n when(this.rawTextContent$).changes(content => {\n this.matInputComponent.value = content;\n }, {\n unless: this.inSearchUpdate$\n });\n }\n\n formatOption(option: T) {\n return this.optionLabelFormat(option);\n }\n\n updateFilter($event: string) {\n this.inSearchUpdate$.whileTrue(() => {\n this.rawTextContent$.value = $event;\n this.filterValue.value = $event;\n })\n }\n\n onSelect($event: MatAutocompleteSelectedEvent) {\n this.inSearchUpdate$.whileTrue(() => {\n this.rawTextContent$.value = undefined;\n this.value$[\"value\"] = $event.option.value;\n })\n }\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.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\"\n [autoActiveFirstOption]=\"autoActiveFirstOption\"\n (optionSelected)=\"onSelect($event)\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{formatOption(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-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\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{formatOption(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n","import {Component, Input} 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> {\n\n // @Input() @Proxify({ 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}\n","<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{ label }}\n</mat-checkbox>\n<ng-container *ngIf=\"!dense\">\n <mat-hint *ngIf=\"showHint\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</ng-container>\n","import {Component, ContentChild, Input, OnInit, TemplateRef} from '@angular/core';\nimport {Binding, Dsl, ListModel, MutableListModel, Proxify, proxify, StoreInListModel} 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() @Proxify()\n accessor options$ = proxify(ListModel<T>);\n\n @Input() @StoreInListModel()\n accessor 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 private readonly ids$ = new MutableListModel<any>();\n\n constructor() {\n super();\n }\n\n selectAll(items: T[]) {\n this.ids$.value = items.map(item => this.options$.identityOf(item));\n }\n\n override ngOnInit() {\n super.ngOnInit();\n // NOTE: this has to be done after our parameter have been bound or we'll clobber the initial selected values with the writeRight\n const {chain} = Dsl.disposeWith(this);\n const lookup = chain(this.options$).indexUsing(this.options$.identityOf);\n const self = this;\n this.registerDisposable(new Binding(this.componentList$, this.ids$, {\n toLeft(selectedItems: any[], currentLeftValue?: T[]): T[] {\n const newValues = selectedItems.map(it => lookup.get(it)).filter(it => !!it);\n // if our lookup didn't find anything then we return the previous values so we don't clobber selections when the options go empty\n return newValues.length < 1 && selectedItems.length > 0 ? currentLeftValue : newValues;\n },\n leftDependsOn: lookup,\n toRight(leftValue: T[], currentRightValue?: any[]): any[] {\n return leftValue ? leftValue.map(it =>self.options$.identityOf(it)) : []\n }\n })).writeRight()\n\n }\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [ngModel]=\"componentList$.value\"\n (ngModelChange)=\"selectAll($event)\"\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 options$.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, Input} from '@angular/core';\nimport {Command, Dsl, Proxify, proxify, StoreInValueModel, ValueModel} from \"@coolon/pectin\";\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> {\n\n @Input() autocomplete: string;\n\n @Input() @Proxify()\n accessor min$: ValueModel<number> = proxify(ValueModel<number>);\n\n @Input() @StoreInValueModel()\n accessor min = Number.MIN_SAFE_INTEGER;\n\n @Input() @Proxify()\n accessor max$: ValueModel<number> = proxify(ValueModel<number>);\n\n @Input() @StoreInValueModel()\n accessor max = Number.MAX_SAFE_INTEGER;\n\n protected readonly incrementCommand: Command<void>;\n protected readonly decrementCommand: Command<void>;\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n\n const normalisedValue$ = chain(this.value$).otherwise(0);\n\n this.incrementCommand = Command.create(() => {\n this.value$.value = normalisedValue$.value + 1;\n }).enableWhile(chain.numericValue(normalisedValue$).isLessThan(this.max$).and(this.enabled$));\n\n this.decrementCommand = Command.create(() => {\n this.value$.value = normalisedValue$.value - 1;\n }).enableWhile(chain.numericValue(normalisedValue$).isGreaterThan(this.min$).and(this.enabled$));\n\n\n }\n\n}\n","<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 [size]=\"4\">\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n","import {Component, Input} from '@angular/core';\nimport {Command, Dsl, MutableValueModel, proxify, Proxify, StoreInValueModel, ValueModel} from \"@coolon/pectin\";\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> {\n\n @Input() autocomplete: string;\n\n @Input() @Proxify()\n accessor enableShowPassword$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor enableShowPassword = false;\n\n\n protected readonly showPassword$ = new MutableValueModel<boolean>(false);\n protected readonly toggleShowPasswordCommand: Command<void>;\n\n constructor() {\n super();\n const {chain, valueOf} = Dsl.disposeWith(this);\n const face$ = chain(this.showPassword$).map(show => {\n return {\n icon: () => show ? \"mat:visibility_off\" : \"mat:visibility\"\n }\n })\n this.toggleShowPasswordCommand = Command.create(() => {\n this.showPassword$.value = !this.showPassword$.value;\n })\n .withFace(face$)\n .enableWhile(chain.stringValue(this.componentValue$).isNotBlank());\n }\n\n get fieldType() {\n return this.showPassword$.value ? \"text\" : \"password\"\n }\n\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input [type]=\"fieldType\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <span matSuffix *ngIf=\"enableShowPassword$.value\">\n <aup-command [command]=\"toggleShowPasswordCommand\" data-cy=\"showPassword\"></aup-command>\n </span>\n</mat-form-field>\n\n","import {Component, Input} from '@angular/core';\nimport {Command, Dsl, Proxify, proxify, StoreInValueModel, ValueModel} from '@coolon/pectin';\nimport {AbstractValueInputComponent} from '../abstract-value-input.component';\n\n@Component({\n selector: 'aup-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss']\n})\nexport class SearchInputComponent extends AbstractValueInputComponent<string> {\n\n @Input() autocomplete: string;\n\n readonly clearCommand: Command<void>;\n\n constructor() {\n super();\n this.dense = true\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.clearCommand = Command.create(() => {\n this.componentValue$.value = \"\";\n });\n this.clearCommand.disableWhile(chain.stringValue(this.componentValue$).isBlank());\n }\n\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <aup-icon matPrefix icon=\"mat:search\"></aup-icon>\n <button mat-icon-button matSuffix [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n","import {Component, ContentChild, Input, OnInit, TemplateRef, TrackByFunction} from '@angular/core';\nimport {\n Binding,\n BooleanValueModelChain,\n Dsl,\n ListModel,\n ListModelChain,\n MutableValueModel,\n Proxify,\n proxify,\n StoreInListModel\n} from '@coolon/pectin';\nimport {isNil} from \"lodash-es\";\nimport {AbstractValueInputComponent} from '../abstract-value-input.component';\n\n/**\n * Using templates:\n * <aup-select-input [value$]=\"myModel\" [options]=\"myOptions\">\n * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>\n * <ng-template #selectedOptionTemplate let-option>{{option.thePropertyYouWant}} note, not used for nils (the placeholder is used)</ng-template>\n * <ng-template #nilOptionTemplate>Uses the placeholder by default but you can customise it</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() @Proxify()\n accessor options$ = proxify(ListModel<T>);\n\n\n @Input() @StoreInListModel()\n accessor options: readonly T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n allowNil: boolean;\n\n @ContentChild('selectedOptionTemplate')\n selectedOptionTemplateRef: TemplateRef<any>;\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 readonly isNil$: BooleanValueModelChain;\n\n private readonly id$ = new MutableValueModel<any>();\n\n readonly cookedOptions$: ListModelChain<T>;\n\n private readonly delegatedIdentityOf = (item: T) => this.options$.identityOf(item);\n\n readonly trackByIdentity: TrackByFunction<T> = (index: number, item: T) => this.delegatedIdentityOf(item) ?? index;\n\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.cookedOptions$ = chain(this.options$)\n .mapAll(options => {\n return options.length < 1 && !isNil(this.componentValue$.value) ? [this.componentValue$.value] : options\n }, {\n dependsOn: this.componentValue$\n })\n .identifiedWith(this.delegatedIdentityOf)\n }\n\n select(item: T) {\n this.id$.value = this.delegatedIdentityOf(item);\n }\n\n override ngOnInit() {\n super.ngOnInit()\n\n // NOTE: this has to be done after our parameter have been bound or we'll clobber the initial selected values with the writeRight\n const {chain, before, when} = Dsl.disposeWith(this);\n const lookup = chain(this.options$).indexUsing(this.delegatedIdentityOf);\n const self = this;\n\n const binding = this.registerDisposable(new Binding(this.componentValue$, this.id$, {\n toLeft(selectedId: any, currentValue?: T): T {\n if (isNil(selectedId)) {\n return undefined;\n }\n const newValue = lookup.get(selectedId); // the list is empty or we're missing form it so don't touch the real value.\n return isNil(newValue) ? currentValue : newValue;\n },\n leftDependsOn: lookup,\n toRight(selectedValue: T, selectedId?: any): any {\n return self.delegatedIdentityOf(selectedValue)\n }\n })).writeRight();\n\n // TODO: we have to do this as the options identity function can change from identity to somethign else after\n // we already have an initial value. In that case the stored id will be wrong.\n // Probably a reasonable solution for it be to track changes in the identity function and handle it\n // at a more fundamental level. This may include checking if the function has changed... but currently\n // the function change things under the hood.\n const snapshotValueAndId = (value: T): any => ({\n value: value,\n id: this.delegatedIdentityOf(value)\n });\n let lastIdSnapshot: { value: T, id: any } = snapshotValueAndId(this.componentValue$.value);\n // console.log(lastIdSnapshot)\n before(this.options$).changes(() => {\n lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);\n // console.log(lastIdSnapshot)\n })\n when(this.options$).changes((is, was) => {\n const newIdSnapshot = snapshotValueAndId(lastIdSnapshot.value);\n // console.log(lastIdSnapshot, newIdSnapshot)\n if (newIdSnapshot !== lastIdSnapshot.id) {\n this.id$.value = this.delegatedIdentityOf(this.componentValue$.value)\n }\n })\n\n }\n\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\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 cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [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 <ng-content select=\"[select-option-footer]\"></ng-content>\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 cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {Command, Dsl, Proxify, proxify, StoreInValueModel, 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> {\n\n @Input() autocomplete: string;\n\n @Input() @Proxify()\n accessor enableClear$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor enableClear = false;\n\n @Input() iconPrefix: string;\n\n @Input() @Proxify()\n accessor suffixCommand: Command = proxify(Command);\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.componentValue$.value = \"\";\n })\n .withFace({icon: () => \"mat:clear\"})\n .enableWhile(chain.stringValue(this.componentValue$).isNotBlank())\n }\n\n get hasSuffixCommand() {\n return Proxify.hasTarget(this.suffixCommand);\n }\n\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n","import {Component, Input} 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> {\n\n // @Input() @Proxify({ 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}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.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, Input} 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 {\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}\n","<label>{{label}}</label>\n<ng-content></ng-content>\n","import {Component, HostBinding, Input} from '@angular/core';\nimport {GarbageCollector, Proxify, proxify, StoreInValueModel, 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 {\n\n @Input() @Proxify()\n accessor loading$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor loading: boolean;\n\n @Input() @Proxify()\n accessor message$ = proxify(ValueModel<string>);\n\n @Input() @StoreInValueModel()\n accessor message: string;\n\n @HostBinding(\"class\")\n get state(): string {\n return this.loading$.value ? \"loaded\" : \"loading\";\n }\n}\n","<ng-content *ngIf=\"!loading$.value\"></ng-content>\n<section *ngIf=\"loading$.value\" class=\"loading-indicator-overlay\">\n <div class=\"loading-message\">\n <p>{{message$.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}\n","","import {Component, HostBinding, Input} 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 {\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}\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 QueryList,\n TemplateRef\n} from '@angular/core';\n\nimport {Dsl, Proxify, proxify, StoreInValueModel, 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 AfterContentInit {\n\n @Input() @Proxify()\n accessor switch$ = proxify(ValueModel<T>);\n\n @Input() @StoreInValueModel()\n accessor switch: T;\n\n @ContentChildren(SwitchCaseOption)\n switchCaseOptions: QueryList<SwitchCaseOption<T>>;\n\n selectedIndex = 0;\n\n constructor() {\n super();\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.switch$).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.switch$.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","import {ComponentType} from '@angular/cdk/overlay';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {TemplateRef, ViewContainerRef} from '@angular/core';\nimport {assert} from '@coolon/typescript-utilities';\nimport {ColumnModel, RowData} from '../column/column-model';\nimport {EditSession} from '../editor/edit-session';\nimport {TableCellComponent} from './table-cell/table-cell.component';\nimport {TableHeaderCellComponent} from './table-header-cell/table-header-cell.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\n abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>): void\n\n abstract onPortalAttached(host: Host, portalComponent: Portal): void\n}\n\nexport class CellHeaderPortalRef<Row, C> extends CellPortalRef<Row, TableHeaderCellComponent, C> {\n constructor(readonly componentType: ComponentType<C>, readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableHeaderCellComponent, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableHeaderCellComponent, portalComponent: C) {\n this.initialiseHeader(portalComponent, host.column);\n }\n\n}\n\nexport abstract class CellRendererPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellComponent<Row>, Portal> {\n abstract pushState(host: TableCellComponent<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: TableCellComponent<Row>, columnModel: ColumnModel<Row>) {\n host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellComponent<Row>, portalComponent: Portal) {\n host[PORTAL_RENDERER_COMPONENT] = portalComponent;\n this.updateComponent(portalComponent, host.getRowData(), true);\n }\n\n // @Trace()\n pushState(host: TableCellComponent<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, TableCellComponent<Row>, Portal> {\n\n constructor(readonly componentType: ComponentType<Portal>, readonly initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableCellComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellComponent<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: TableCellComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellComponent<Row>, portalComponent: undefined) {\n // don't care\n }\n\n // @Trace()\n pushState(host: TableCellComponent<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 {Injector} from \"@angular/core\";\nimport {Constructor} from \"@coolon/typescript-utilities\";\n\nexport abstract class ColumnTextSearchFormatter<T> {\n abstract format(value:T):string;\n}\n\nexport namespace ColumnTextSearchFormatter {\n\n export abstract class Delegate<T> extends ColumnTextSearchFormatter<T> {\n abstract initialise(injector:Injector);\n }\n\n export class Delegating<Row> extends ColumnTextSearchFormatter.Delegate<Row> {\n private _delegate: ColumnTextSearchFormatter<Row>;\n\n constructor(private readonly delegateClass: Constructor<ColumnTextSearchFormatter<Row>>) {\n super();\n }\n\n initialise(injector: Injector) {\n this._delegate = injector.get(this.delegateClass);\n if (this._delegate instanceof Delegating) {\n this._delegate.initialise(injector);\n }\n }\n\n format(row: Row): string {\n return this._delegate ? this._delegate.format(row) : \"\";\n }\n }\n\n export type Format<T> = (item:T) => string;\n\n export function forFormatter<Row>(formatter: (item: Row) => string):ColumnTextSearchFormatter<Row> {\n return new class extends ColumnTextSearchFormatter<Row> {\n format(value: Row): string {\n return formatter(value);\n }\n };\n }\n\n export class Null extends ColumnTextSearchFormatter<any> {\n format(value: any): string {\n return \"\";\n }\n }\n\n export class DefaultValueFormatter extends ColumnTextSearchFormatter<any> {\n format(value: any): string {\n // console.log(\"DefaultValueFormatter\", { value, text: s })\n return value?.toString() ?? \"\";\n }\n }\n\n export class DefaultArrayFormatter extends ColumnTextSearchFormatter<any[]> {\n format(value: any[]): string {\n return value ? value.map(it => it?.toString()).join(\",\") : \"\";\n }\n }\n}\n\n\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","{{headerText}}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {CdkPortalOutletAttachedRef} from \"@angular/cdk/portal\";\nimport {ComponentRef, Injector} from \"@angular/core\";\nimport {Command, DelegatingValueModel, Dsl, Functions, GarbageCollector, ValueModel} from \"@coolon/pectin\";\nimport {assert, lang, Stringy} from \"@coolon/typescript-utilities\";\nimport {Memoize} from \"fast-typescript-memoize\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {CellEditorPortalRef, CellHeaderPortalRef, CellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {\n DefaultHeaderCellRendererComponent\n} from \"../renderer/default-header-cell-renderer/default-header-cell-renderer.component\";\nimport {TableCellComponent} from \"../renderer/table-cell/table-cell.component\";\nimport {TableHeaderCellComponent} from \"../renderer/table-header-cell/table-header-cell.component\";\nimport {ColumnManager} from \"./column-manager\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\nimport {ColumnTextProperties} from \"./column-text-properties\";\n\n\nconst noop = () => {\n // noop\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\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\nclass ColumnTextSearchWrapper<Row> extends ColumnTextSearchFormatter.Delegate<Row>{\n private _delegate: ColumnTextSearchFormatter<any>;\n private _map: (row:Row) => any = Functions.identity;\n\n initialise(injector: Injector) {\n if (this._delegate instanceof ColumnTextSearchFormatter.Delegate) {\n this._delegate.initialise(injector);\n }\n }\n\n format(row: Row): string {\n const value = this._map(row);\n const result = this._delegate ? this._delegate.format(value) : \"\";\n // console.log({format: row, value, text:result})\n return result;\n }\n\n setDelegate<T>(formatter: ColumnTextSearchFormatter<T>, mapper?: (row:Row) => T) {\n this._delegate = formatter;\n this._map = mapper ?? Functions.identity;\n }\n}\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 _masterVisibility$ = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(true));\n private _userVisible$ = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(this._defaultVisibility$));\n readonly dasherisedColumnId: string;\n\n private readonly textSearchDelegate = new ColumnTextSearchWrapper<Row>();\n\n readonly visible$: ValueModel<boolean>;\n\n constructor(readonly columnId: string, private readonly order: ColumnOrderManager, private textPropertiesProvider: ColumnModel.TextPropertiesProvider) {\n super();\n const {valueOf} = Dsl.disposeWith(this);\n this.installHeaderRenderer();\n this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();\n this.visible$ = valueOf.all(\n this._userVisible$,\n this._masterVisibility$\n ).areTruthy()\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 visibleWhile(visible: ValueModel<boolean>): this {\n this._userVisible$.setDelegate(visible);\n return this;\n }\n\n protected setDefaultVisibility(visible: ValueModel<boolean>) {\n this._defaultVisibility$.setDelegate(visible);\n }\n\n protected setMasterVisibility(visible: ValueModel<boolean>) {\n this._masterVisibility$.setDelegate(visible);\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\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 positionAfter(column: ColumnModel<any>):this {\n this.order.position(this, {after: column});\n return this;\n }\n\n positionBefore(column: ColumnModel<any>):this {\n this.order.position(this, {before: column});\n return this;\n }\n\n getSearchTextFor(row: Row): string {\n return this.textSearchDelegate.format(row)\n }\n\n configureColumnTextSearch(formatter: ColumnTextSearchFormatter<Row>):this\n configureColumnTextSearch<T>(formatter: ColumnTextSearchFormatter<T>, mapper: (row:Row) => T):this\n configureColumnTextSearch(formatter: ColumnTextSearchFormatter<any>, mapper?: (row:Row) => any):this {\n assert.notNil(formatter);\n // console.log({col: this.columnId, formatter});\n this.textSearchDelegate.setDelegate(formatter, mapper);\n return this;\n }\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: TableHeaderCellComponent, ref: CdkPortalOutletAttachedRef) {\n const component = this.getComponent(ref);\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellComponent<Row>, ref: CdkPortalOutletAttachedRef) {\n const component = this.getComponentOrEmbeddedView(ref);\n this._cellRendererPortalRef.onPortalAttached(host, component);\n }\n\n // @Trace()\n onEditorAttached(host: TableCellComponent<Row>, ref: CdkPortalOutletAttachedRef) {\n this._cellEditorPortalRef.onPortalAttached(host, this.getComponent(ref));\n }\n\n updatePortalContent(host: TableCellComponent<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 initialise(injector: Injector) {\n this.textSearchDelegate.initialise(injector);\n }\n}\n\nexport namespace ColumnModel {\n export const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');\n export type TextPropertiesProvider = () => ColumnTextProperties\n}\n\n","import {TemplateRef, ViewContainerRef} from \"@angular/core\";\nimport {TemplateCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {ColumnModel} from \"./column-model\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nexport class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {\n private readonly config = new TemplateCellRendererPortalRef<Row>();\n\n constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, order, 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","import {Component, HostBinding, Injector, Input, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\nimport {\n DelegatingListModel,\n DelegatingValueModel,\n Dsl,\n ListModelChain,\n MapModelChain,\n MutableValueModel,\n Proxify,\n proxify,\n StoreInValueModel,\n ValueModel\n} from \"@coolon/pectin\";\nimport {lang} from '@coolon/typescript-utilities';\nimport {DisposableComponent} from \"../disposable-component\";\nimport {AbstractTableModel} from './abstract-table-model';\nimport {ColumnModel} from './column/column-model';\nimport {CustomTemplateColumnModel} from \"./column/custom-template-column-model\";\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = new TableModel(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 = new TableModel(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 DisposableComponent implements OnInit {\n\n @Input() @Proxify()\n accessor showHeader$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor showHeader = true;\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() @Proxify()\n accessor enableScrolling$:ValueModel<boolean> = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor enableScrolling: boolean = false;\n\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 // 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 protected readonly _visibleRows$ = this.registerDisposable(new DelegatingListModel<Row>());\n readonly highlightText$ = this.registerDisposable(new DelegatingValueModel<string>());\n\n protected readonly _dataSource$ = this.registerDisposable(new DelegatingListModel<Row>())\n\n @HostBinding('class')\n baseCssClass = 'aup-table-component';\n\n readonly trackBy = (index: number, item: Row) => {\n return this.identityOf ? this.identityOf(item) : index;\n };\n\n constructor(readonly injector: Injector) {\n super();\n const {chain, when} = Dsl.disposeWith(this);\n\n when(chain(this._dataSource$).first()).becomesTruthy(it => {\n if (it === this.identityOf(it)) {\n console.warn(\"Table model identity function is using reference equality. This can cause lots of table re-rendering\", {\n rowType: it\n });\n }\n }, {once: true});\n }\n\n identityOf(row: Row): any {\n return this._dataSource$.identityOf(row);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n const {chain} = Dsl.disposeWith(this);\n const model = this.getModel();\n if (!model) {\n lang.illegalState(\"aup-table tableModel is nil\")\n }\n this.columnsById = chain(model.columns$).indexBy('columnId');\n this._dataSource$.setDelegate(model.dataSource$);\n model.initialise(this.injector, (row) => this.identityOf(row));\n }\n\n get visibleRows$() {\n return this._visibleRows$.readonly$;\n }\n\n protected getModel(): AbstractTableModel<Row> {\n return lang.abstractMethod(this.constructor);\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}\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 {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\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.form.writeDirtyStateTo(draft);\n });\n });\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {Command, DirtyTrackingForm, Proxify, proxify} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\nimport {EditSession} from '../edit-session';\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 EditRowControlsComponent<Row> extends DisposableComponent {\n\n @Input()\n row: Row\n\n @Input() @Proxify()\n accessor editRowCommand = proxify(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 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';\nimport {Dsl, PageController, proxify, Proxify} 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 {\n\n @Input() @Proxify()\n accessor pageController = proxify(PageController);\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n }\n get totalItems(): number {\n return this.pageController.totalItems$.value;\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>Items {{totalItems}}<span class=\"spacer\"></span>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} 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","<span [innerHTML]=\"value?.toString()| aupHighlight\"></span>\n","import {Component} from '@angular/core';\nimport {MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxDefaultOptions} from \"@angular/material/checkbox\";\nimport {ThemePalette} from \"@angular/material/core\";\n\nimport {CanProxy, Command, MultipleSelectionModel, Proxify, proxify, SelectionModel} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\n\n@Component({\n selector: 'aup-selection-header-cell',\n templateUrl: './selection-header-cell.component.html',\n styleUrls: ['./selection-header-cell.component.scss'],\n providers:[\n {provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions}\n ]\n})\nexport class SelectionHeaderCellComponent<Row> extends DisposableComponent {\n\n readonly selectCommand: Command<void>;\n\n @Proxify()\n accessor selectionModel = proxify(SelectionModel<Row>);\n\n color: ThemePalette;\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.ifMultiSelectionModel(m => m.allSelected$.value, false);\n }\n\n isIntermediate() {\n return this.ifMultiSelectionModel(m => m.someSelected$.value, false);\n }\n\n isVisible() {\n return this.enableHeaderControls && this.isMultiSelectionModel()\n }\n\n isMultiSelectionModel(): boolean {\n return CanProxy.findRoot(this.selectionModel) instanceof MultipleSelectionModel\n }\n\n ifMultiSelectionModel<T>(runnable: (model$: MultipleSelectionModel<Row, any>) => T, otherwise?: T): T {\n if (this.isMultiSelectionModel()) {\n return runnable(this.selectionModel as unknown as MultipleSelectionModel<Row, any>);\n } else {\n return otherwise;\n }\n }\n\n handleClick(event$: Event) {\n this.selectCommand.execute();\n }\n}\n","<mat-checkbox *ngIf=\"isVisible()\"\n (click)=\"handleClick($event)\"\n [checked]=\"isSelected()\"\n [indeterminate]=\"this.isIntermediate()\"\n [color]=\"color\"\n></mat-checkbox>\n","import {Component, Input} from '@angular/core';\nimport {MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxDefaultOptions} from \"@angular/material/checkbox\";\nimport {ThemePalette} from \"@angular/material/core\";\n\nimport {Command, SelectionModel} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\n\n@Component({\n selector: 'aup-selection-cell',\n templateUrl: './selection-cell.component.html',\n styleUrls: ['./selection-cell.component.scss'],\n providers:[\n {provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions}\n ]\n})\nexport class SelectionCellComponent<Row> extends DisposableComponent {\n\n readonly selectCommand: Command<void>;\n\n @Input()\n row: Row\n\n // Note: we're not using track external here as it's incredibly slow to update when the table has a lot of rows.\n selectionModel: SelectionModel<Row>;\n\n color: ThemePalette;\n\n\n select($event: MouseEvent) {\n if (this.selectionModel) {\n this.selectionModel.selectCommand.execute(this.row);\n }\n }\n\n isSelected(): boolean {\n return this.selectionModel.isSelected(this.row);\n }\n\n isDisabled():boolean {\n return !this.selectionModel || !this.selectionModel.isEnabled();\n }\n\n}\n","<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\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, width: number, 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 {Dsl, GarbageCollector, 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 protected readonly elementRef = this.inject(ElementRef);\n protected readonly ngZone = this.inject(NgZone);\n\n protected boundsTracker = new ResizeAwareComponent.ResizeTracker(this.elementRef, this.ngZone);\n\n ngAfterViewInit(): void {\n this.boundsTracker.notifyViewReady();\n }\n\n get bounds$(): ValueModel<Bounds> {\n return this.boundsTracker.bounds$;\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.bounds$.value;\n }\n\n}\n\nexport namespace ResizeAwareComponent {\n\n\n export class ResizeTracker extends GarbageCollector {\n\n private _bounds$ = new MutableValueModel<Bounds>(new Bounds(0, 0, 0, 0));\n readonly width$: ValueModel<number>;\n readonly height$: ValueModel<number>;\n readonly top$: ValueModel<number>;\n readonly left$: ValueModel<number>;\n readonly bottom$: ValueModel<number>;\n readonly right$: ValueModel<number>;\n\n constructor(protected readonly elementRef: ElementRef, protected readonly ngZone: NgZone) {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.width$ = chain(this.bounds$).pluck(\"width\")\n this.height$ = chain(this.bounds$).pluck(\"height\")\n this.top$ = chain(this.bounds$).pluck(\"top\")\n this.left$ = chain(this.bounds$).pluck(\"left\")\n this.bottom$ = chain.numericValue(this.top$).add(this.height$)\n this.right$ = chain.numericValue(this.left$).add(this.width$)\n }\n\n notifyViewReady() {\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 bounds$(): ValueModel<Bounds> {\n return this._bounds$.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._bounds$.value;\n }\n\n private _updateBounds() {\n this._bounds$.value = Bounds.ofElement(this.nativeElement);\n }\n\n }\n}\n","import {ColumnManager} from \"./column-manager\";\nimport {ColumnModel} from \"./column-model\";\n\nexport interface ColumnOrderManager {\n\n position(column: ColumnModel<any>, position: ColumnOrderManager.Position):void;\n\n}\n\nexport namespace ColumnOrderManager {\n interface Before { before: ColumnModel<any> | null } // before:null === first\n interface After { after: ColumnModel<any> | null } // after:null === last\n\n export type Position = Before | After;\n\n export function processPosition(position: Position | undefined, callback: {\n before(col: ColumnModel<any> | null): string,\n after(col: ColumnModel<any> | null): string,\n first(): string\n last(): string\n }): string {\n if (position) {\n const keys = Object.keys(position);\n if (keys.includes(\"before\")) {\n return position[\"before\"] ? callback.before(position[\"before\"]) : callback.first()\n } else {\n return position[\"after\"] ? callback.after(position[\"after\"]) : callback.last()\n }\n } else {\n return callback.last();\n }\n }\n\n\n}\n\n","import {\n Dsl,\n GarbageCollector,\n lang,\n ListModel,\n ListModelChain,\n MapModelChain,\n MutableListModel,\n WatchList\n} from '@coolon/pectin';\nimport {generateKeyBetween} from \"fractional-indexing\";\nimport {ColumnModel} from './column-model';\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nclass ColumnRef<ROW> {\n constructor(readonly column: ColumnModel<ROW>, readonly position: string) {\n }\n}\n\nexport class ColumnManager<Row> extends GarbageCollector implements ColumnOrderManager {\n\n private readonly _columnRefs$ = new MutableListModel<ColumnRef<Row>>();\n private readonly orderedColumnRefs$: ListModelChain<ColumnRef<Row>>;\n private readonly _columnsById$: MapModelChain<string, ColumnModel<Row>>;\n readonly allColumns$: ListModel<ColumnModel<Row>>;\n readonly columnVisibilities$ = new WatchList<boolean>()\n readonly visibleColumns$: ListModel<ColumnModel<Row>>;\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.orderedColumnRefs$ = chain(this._columnRefs$).orderBy(\"position\", \"asc\");\n this.allColumns$ = this.orderedColumnRefs$.pluck(\"column\");\n\n this._columnsById$ = chain(this.allColumns$).indexBy('columnId');\n this.visibleColumns$ = chain(this.allColumns$).select(it => it.visible$.value, {\n dependsOn: this.columnVisibilities$\n })\n }\n\n position(column: ColumnModel<any>, newPosition: ColumnOrderManager.Position) {\n const target = this._columnRefs$.query().findMatching(it => it.column === column)\n const position = this.computePosition(newPosition);\n this._columnRefs$.replace(target, {with: new ColumnRef<Row>(target.column, position)});\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 hasMatchingColumn(row: Row, regex: RegExp): boolean {\n // only search the visible columns\n return !!this.visibleColumns$.value.find(c => regex.test(c.getSearchTextFor(row)));\n }\n\n addColumn<C extends ColumnModel<Row>>(column: C, position?: ColumnOrderManager.Position): C {\n if (this.hasColumn(column.columnId)) {\n lang.illegalState(`Column with id=${column.columnId} already exists`);\n }\n this.registerDisposable(column);\n this._columnRefs$.push(new ColumnRef<Row>(column, this.computePosition(position)));\n this.columnVisibilities$.add(column.visible$);\n return column;\n }\n\n computePosition(position?: ColumnOrderManager.Position): string {\n const q = this.orderedColumnRefs$.query();\n return ColumnOrderManager.processPosition(position, {\n before(col: ColumnModel<any>): string {\n const index = q.findIndex(ref => ref.column === col)\n const beforeCol = q.value[index];\n const afterCol = index - 1 >= 0 ? q.value[index - 1] : undefined;\n return generateKeyBetween(afterCol?.position, beforeCol.position);\n },\n after(col: ColumnModel<any>): string {\n const index = q.findIndex(ref => ref.column === col)\n const afterCol = q.value[index];\n const beforeCol = index + 1 < q.length ? q.value[index + 1] : undefined;\n return generateKeyBetween(afterCol.position, beforeCol?.position)\n },\n first(): string {\n return generateKeyBetween(null, q.first()?.position);\n },\n last() {\n // add it to the end of the list\n return generateKeyBetween(q.last()?.position, null);\n }\n })\n }\n\n\n doComputeValue(): ColumnModel<Row>[] {\n return this.allColumns$.value.filter(c => c.visible$.value);\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {assert, Constructable, Klass} from \"@coolon/typescript-utilities\";\nimport {Enum} from \"typescript-string-enums\";\nimport {CellRenderer} from \"../renderer/cell-renderer\";\nimport {ColumnTextSearchFormatter} from \"./column-text-search-formatter\";\n\nconst TEXT_SEARCH_FORMATTER_KEY = `aup:table:textSearchFormatter`;\nexport const Keys = Enum(\"useFunction\", \"useInstance\", \"useClass\");\nexport type Keys = Enum<typeof Keys>;\n\ninterface UseFunction<Row> {\n [Keys.useFunction]: (row: Row) => string;\n}\n\ninterface UseInstance<Row> {\n [Keys.useInstance]: ColumnTextSearchFormatter<Row>;\n}\n\ninterface UseClass<Row> {\n [Keys.useClass]: Constructable<ColumnTextSearchFormatter<Row>>;\n}\n\nexport function EnableCellTextSearch<Row>(options: UseFunction<Row> | UseInstance<Row> | UseClass<Row>): ClassDecorator {\n assert.notNil(options);\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (constructor: Function) => {\n const klass = Klass.get(constructor);\n assert.isFalsey(klass.hasOwnMetadata(TEXT_SEARCH_FORMATTER_KEY), \"class already decorated with @EnableCellTextSearch\");\n klass.defineMetadata(TEXT_SEARCH_FORMATTER_KEY, options);\n };\n}\n\nexport namespace EnableCellTextSearch {\n export function getFormatter(renderer: ComponentType<CellRenderer<any>>, useDefault: () => ColumnTextSearchFormatter<any>): ColumnTextSearchFormatter<any> {\n const options = Klass.get(renderer).getMetadata(TEXT_SEARCH_FORMATTER_KEY) ?? {};\n if (options[Keys.useFunction]) {\n return ColumnTextSearchFormatter.forFormatter(options[Keys.useFunction]);\n }\n if (options[Keys.useInstance]) {\n return options[Keys.useInstance];\n }\n if (options[Keys.useClass]) {\n return new ColumnTextSearchFormatter.Delegating(options[Keys.useClass]);\n }\n return useDefault();\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\n\nimport {isFunction} from \"lodash-es\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {EnableCellTextSearch} from \"../filter/enable-cell-text-search.decorator\";\nimport {ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {DefaultCellRendererComponent} from \"../renderer/default-cell-renderer/default-cell-renderer.component\";\nimport {CellRendererOptions, ColumnModel, OnComponentInit} from \"./column-model\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nexport class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {\n\n constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider, private getValue: (row: Row) => V) {\n super(columnId, order, 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.configureColumnTextSearch(\n EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()),\n row => this.getValue(row)\n );\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","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Command, DirtyTrackingForm} from \"@coolon/pectin\";\nimport {EditRowControlsComponent} from \"../editor/edit-row-controls/edit-row-controls.component\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {ColumnModel, RowData} from \"./column-model\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nexport class EditorControlColumnModel<Row> extends ColumnModel<Row> {\n\n constructor(columnId: string, order: ColumnOrderManager, saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, order, defaults);\n this.cellRenderer(EditRowControlsComponent);\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 override getDefaultHeaderText(): string {\n return '';\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Functions, Types, Validator} from \"@coolon/pectin\";\nimport {assert} from \"@coolon/typescript-utilities\";\nimport {isFunction} from \"lodash-es\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {EnableCellTextSearch} from \"../filter/enable-cell-text-search.decorator\";\nimport {CellListEditorComponent} from \"../renderer/cell-editors\";\nimport {CellEditorPortalRef, ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {CellRenderer} from \"../renderer/cell-renderer\";\nimport {DefaultCellRendererComponent} from \"../renderer/default-cell-renderer/default-cell-renderer.component\";\nimport {ColumnModel} from \"./column-model\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _userFormat: (value: Types.ArrayElementType<Row, P>[]) => any;\n private _defaultSearchTextFormat = value => {\n const intermediate = (this._userFormat ?? Functions.identity)(value);\n return Array.isArray(intermediate) ?\n intermediate.map(v => v?.toString()).join(\", \") :\n intermediate?.toString()\n };\n\n constructor(id: string, order: ColumnOrderManager, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, order, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<CellRenderer<Types.ArrayElementType<Row, P>[]>>): Omit<this, \"format\"> { // hack: format and cell renderers together break the types.\n this.configureColumnTextSearch(\n EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormat)),\n row => row[this.property]\n );\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n const rowValue = rowData.row[this.property];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...\n component.value = (this._userFormat) ? this._userFormat(rowValue) : rowValue;\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.list$ = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): Omit<this, \"cellRenderer\"> { // hack: format and cell renderers together break the types.\n assert.isFunction(formatter);\n this._userFormat = formatter;\n return this;\n }\n\n public selectRowOnClick(selectRowOnClick: boolean): this {\n return this._selectRowOnClick(selectRowOnClick);\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Functions, Types, Validator} from \"@coolon/pectin\";\nimport {assert} from \"@coolon/typescript-utilities\";\nimport {isFunction} from \"lodash-es\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {EditableCellRenderer} from \"../editor/editable-cell-renderer\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {EnableCellTextSearch} from \"../filter/enable-cell-text-search.decorator\";\nimport {CellEditorComponent} from \"../renderer/cell-editors\";\nimport {CellEditorPortalRef, ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {CellRenderer} from \"../renderer/cell-renderer\";\nimport {DefaultCellRendererComponent} from \"../renderer/default-cell-renderer/default-cell-renderer.component\";\nimport {CellRendererOptions, ColumnModel, MutableCellRendererOptions, OnComponentInit} from \"./column-model\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _userFormat: (value: Row[P]) => any;\n private _defaultSearchTextFormatter = (value: Row[P]) => {\n return (this._userFormat ?? Functions.identity)(value)?.toString()\n }\n\n constructor(id: string, order: ColumnOrderManager, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, order, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, options?: CellRendererOptions<Row, E>): Omit<this, \"format\"> // hack: format and cell renderers together break the types.\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInit?: OnComponentInit<E>): Omit<this, \"format\">\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInitOrOptions?: CellRendererOptions<Row, E> | OnComponentInit<E>): Omit<this, \"format\"> {\n this.configureColumnTextSearch(\n EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormatter)),\n row => row[this.property]\n );\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 const rowValue = rowData.row[this.property];\n component.value = this._userFormat ? this._userFormat(rowValue) : rowValue;\n }));\n return this;\n }\n\n liveEditCellRenderer<E extends EditableCellRenderer<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 EditableCellRenderer<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[ColumnModel.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[ColumnModel.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.value$ = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): Omit<this, \"cellRenderer\"> { // hack: format and cell renderers together break the types.\n assert.isFunction(formatter);\n this._userFormat = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n","import {ThemePalette} from \"@angular/material/core\";\nimport {Dsl, Proxified, SelectionModel} from \"@coolon/pectin\";\nimport {ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {SelectionHeaderCellComponent} from \"../renderer/select-header-cell/selection-header-cell.component\";\nimport {SelectionCellComponent} from \"../renderer/selection-cell/selection-cell.component\";\nimport {ColumnModel, RowData} from \"./column-model\";\nimport {ColumnOrderManager} from \"./column-order-manager\";\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n private _color: ThemePalette = \"accent\";\n\n constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider, readonly selectionModel: Proxified<SelectionModel<Row>>) {\n super(columnId, order, defaults);\n const {chain} = Dsl.disposeWith(this);\n this._selectRowOnClick(false);\n this.cellHeaderRenderer(SelectionHeaderCellComponent, (component) => {\n component.selectionModel = this.selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n component.color = this._color\n });\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectionCellComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = this.selectionModel;\n component.color = this._color\n }));\n this.setMasterVisibility(this.selectionModel.enabled$);\n this.setDefaultVisibility(chain(this.selectionModel.mode$).equals(SelectionModel.Mode.MULTIPLE));\n }\n\n useSelectionModel(selectionModel: SelectionModel<Row>) {\n this.selectionModel.setProxyTarget(selectionModel);\n }\n\n protected override getDefaultHeaderText(): string {\n return '';\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n /**\n * Set the checkbox to use a theme color e.g. \"primary\" | \"accent\" | \"warn\"\n */\n color(color: ThemePalette) {\n this._color = color;\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","import {CdkPortalOutletAttachedRef, ComponentPortal} from \"@angular/cdk/portal\";\nimport {Component, ComponentRef, HostListener, ViewChild} from \"@angular/core\";\nimport {MatMenuTrigger} from \"@angular/material/menu\";\nimport {\n Command,\n DelegatingValueModel,\n Dsl,\n MutableValueModel,\n StoreInValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\nimport {Constructable} from \"@coolon/typescript-utilities\";\nimport {DisposableComponent} from \"../../../disposable-component\";\nimport {CellRenderer} from \"../cell-renderer\";\nimport {TableMoreMenuPopupComponent} from \"./table-more-menu-popup/table-more-menu-popup.component\";\n\n@Component({\n selector: \"aup-table-more-menu\",\n templateUrl: \"./table-more-menu.component.html\",\n styleUrls: [\"./table-more-menu.component.scss\"]\n})\nexport class TableMoreMenuComponent<T> extends DisposableComponent implements CellRenderer<T> {\n\n\n private value$ = new MutableValueModel<T>();\n\n @StoreInValueModel()\n accessor value: T;\n\n @ViewChild(MatMenuTrigger)\n matMenuTrigger: MatMenuTrigger;\n\n private readonly popupType$ = new MutableValueModel<Constructable<TableMoreMenuPopupComponent<T>>>();\n\n popupComponentPortal$: ValueModelChain<ComponentPortal<TableMoreMenuPopupComponent<T>>>;\n\n private readonly _visible$ = this.registerDisposable(new DelegatingValueModel<boolean>());\n private initialiseCallback?: (component: TableMoreMenuPopupComponent<T>) => void;\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.popupComponentPortal$ = chain(this.popupType$).map(type => new ComponentPortal(type));\n }\n\n configurePopupComponentType(popupComponentType: Constructable<TableMoreMenuPopupComponent<T>>, configureCallback?: (component:TableMoreMenuPopupComponent<T>) => void) {\n this.popupType$.value = popupComponentType;\n this.initialiseCallback = configureCallback;\n }\n\n\n // Stops tree selection when clicking the menu button\n @HostListener(\"click\", [\"$event\"])\n preventDefault($event: MouseEvent) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n initialise($event: CdkPortalOutletAttachedRef) {\n const component = ($event as ComponentRef<TableMoreMenuPopupComponent<T>>).instance;\n component.initialise(this.value$, Command.create(() => this.matMenuTrigger.closeMenu()));\n this._visible$.setDelegate(component.visible$);\n if (this.initialiseCallback) {\n this.initialiseCallback(component);\n }\n }\n\n get visible$() {\n return this._visible$.readonly$;\n }\n\n}\n","<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-template matMenuContent [cdkPortalOutlet]=\"popupComponentPortal$.value\"\n (attached)=\"initialise($event)\"></ng-template>\n</mat-menu>\n\n<button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"more-menu-trigger\" *ngIf=\"visible$.value\">\n <aup-icon icon=\"mat:more_vert\"></aup-icon>\n</button>\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Injector} from \"@angular/core\";\nimport {\n assert,\n BooleanValueModelChain,\n Command,\n Constructable,\n DelegatingListModel,\n DirtyTrackingForm,\n Disposable,\n Dsl,\n EventListenerList,\n GarbageCollector,\n ListModel,\n MapModelChain,\n MutableListModel,\n Proxified,\n proxify,\n ProxyRegistry,\n SelectionModel,\n Types,\n ValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\nimport {lang} from \"@coolon/typescript-utilities\";\n\nimport {isFunction, isNil} from \"lodash-es\";\nimport {ColumnManager} from \"./column/column-manager\";\nimport {CellRendererOptions, ColumnModel, OnComponentInit} from \"./column/column-model\";\nimport {ColumnOrderManager} from \"./column/column-order-manager\";\nimport {ColumnTextProperties} from \"./column/column-text-properties\";\nimport {CustomTemplateColumnModel} from \"./column/custom-template-column-model\";\nimport {CustomValueColumnModel} from \"./column/custom-value-column-model\";\nimport {EditorControlColumnModel} from \"./column/editor-controls-column-model\";\nimport {ListPropertyColumnModel} from \"./column/list-propery-column-model\";\nimport {PropertyColumnModel} from \"./column/property-column-model\";\nimport {SelectionColumnModel} from \"./column/selection-column-model\";\nimport {EditSession} from \"./editor/edit-session\";\n\nimport {ColumnTextSearchFormatter} from \"./filter/column-text-search-formatter\";\nimport {TextSearchPredicate} from \"./filter/text-search-predicate\";\nimport {CellRenderer} from \"./renderer/cell-renderer\";\nimport {\n TableMoreMenuPopupComponent\n} from \"./renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component\";\nimport {TableMoreMenuComponent} from \"./renderer/table-more-menu/table-more-menu.component\";\nimport DefaultArrayFormatter = ColumnTextSearchFormatter.DefaultArrayFormatter;\nimport DefaultValueFormatter = ColumnTextSearchFormatter.DefaultValueFormatter;\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\nclass RowAttribute<Row> {\n constructor(readonly attributeName: string,\n readonly getValue: (row: Row) => string) {\n }\n}\n\n\nexport abstract class AbstractTableModel<Row> extends GarbageCollector {\n\n protected readonly _dataSource$ = this.registerDisposable(new DelegatingListModel<Row>());\n protected readonly _filteredRows$ = this.registerDisposable(new DelegatingListModel<Row>());\n protected readonly _visibleRows$ = this.registerDisposable(new DelegatingListModel<Row>());\n\n protected readonly columnManager = this.registerDisposable(new ColumnManager<Row>());\n\n private _editorSessions = new MutableListModel<EditSession<Row>>();\n private readonly _rowsBeingEdited$: MutableListModel<Row>;\n private saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>;\n private _editorSessionByRowId: MapModelChain<any, EditSession<Row>>;\n\n private readonly rowClassNamePredicates: RowClass<Row>[] = [];\n private readonly rowAttributeGenerators: RowAttribute<Row>[] = [];\n\n private _columnTextPropertiesLookup: { [columnName: string]: ColumnTextProperties };\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 readonly textSearchPredicate$: ValueModel<TextSearchPredicate<Row>>;\n protected identityOf: (item: Row) => any;\n readonly dataSourceEmpty$: ValueModel<boolean>;\n private readonly selectionModelProxy = proxify(SelectionModel<Row>) as Proxified<SelectionModel<Row>>;\n\n readonly selectedItems$: ListModel<Row>;\n readonly leadSelection$: ValueModel<Row>;\n readonly hasSelection$: BooleanValueModelChain;\n\n public constructor() {\n super();\n const {chain} = 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\n this.textSearchPredicate$ = chain(this.visibleColumns$).reduceAll(columns => {\n return (row: Row, regex: RegExp) => {\n return (!regex || !!columns.find(c => regex.test(c.getSearchTextFor(row))));\n }\n })\n\n this.firstEditableColumn$ = chain(this.columns$).select(c => c.hasEditorPortal()).first();\n this.firstVisibleColumn$ = chain(this.visibleColumns$).first();\n this.lastVisibleColumn$ = chain(this.visibleColumns$).last();\n\n this.rowSelectionDisabledOnAllColumns$ = chain(this.columnManager.visibleColumns$).select(column => column.isRowSelectionEnabled()).count().equals(0);\n\n this.dataSourceEmpty$ = chain(this.dataSource$).isEmpty();\n\n this.selectedItems$ = this.selectionModelProxy.selectedItems$;\n this.leadSelection$ = this.selectionModelProxy.leadSelection$;\n this.hasSelection$ = chain(this.selectedItems$).isNotEmpty();\n }\n\n protected setDataSource(dataSource$) {\n this._dataSource$.setDelegate(dataSource$);\n }\n\n /**\n * Todo: make this force one table at a time\n * @param injector\n * @param identityOf\n * @param rest\n */\n initialise(injector: Injector, identityOf: (item: Row) => any) {\n // not sure if I should define these at the module level or not...\n const customInjector = Injector.create({\n providers: [\n {provide: DefaultValueFormatter},\n {provide: DefaultArrayFormatter}\n ],\n parent: injector\n });\n this.columns$.value.forEach(c => c.initialise(customInjector));\n this.identityOf = identityOf;\n }\n\n get dataSource$() {\n return this._dataSource$.readonly$;\n }\n\n /**\n * Gets the rows that are visible after any filters are applied. If there are\n * no filters then this will be the same as the root dataset.\n */\n get filteredRows$(): ListModel<Row> {\n return this._filteredRows$.readonly$;\n }\n\n /**\n * Gets the rows are currently visible to the user. I.e. the current page in a paged table or the\n * expanded rows in a tree table.\n */\n get visibleRows$(): ListModel<Row> {\n return this._visibleRows$.readonly$;\n }\n\n get rowsBeingEdited$(): ListModel<Row> {\n return this._rowsBeingEdited$.readonly$;\n }\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, {disposedWith: this});\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\n get columns$(): ListModel<ColumnModel<Row>> {\n return this.columnManager.allColumns$;\n }\n\n get visibleColumns$(): ListModel<ColumnModel<Row>> {\n return this.columnManager.visibleColumns$;\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P, options?: {\n columnId: string\n }): PropertyColumnModel<Row, P> {\n const columnId = options?.columnId || property.toString();\n return this.addColumn(new PropertyColumnModel<Row, P>(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));\n }\n\n pluckList<P extends Types.ArrayPropertiesOf<Row>>(property: P, options?: {\n columnId: string\n }): ListPropertyColumnModel<Row, P> {\n const columnId = options?.columnId || property.toString();\n return this.addColumn(new ListPropertyColumnModel<Row, P>(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));\n }\n\n // TODO: clean this up and assign the selection model on teh table directly.\n // tableModel.useSelectionModel(model) and have the seleciton column automatically\n // added. Need to look at how we're using the visibility controls as well.\n // Should also lazy create the selection column model if someone accesses it.\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.columnManager, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);\n this.selectionColumnModel.useSelectionModel(selectionModel)\n this.addRowClass(\"aup-row-selected\", row => this.selectionColumnModel.isSelected(row));\n const selectionColumnModel = this.addColumn(this.selectionColumnModel, {before: null}); // first column\n if (!isNil(visible)) {\n selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));\n }\n return selectionColumnModel;\n }\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, this.columnManager, 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.columnManager, () => 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.columnManager, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);\n }\n\n addMoreMenu<C extends TableMoreMenuPopupComponent<Row>>(componentClass: Constructable<C>, initialiseCallback?: (component: C) => void) {\n return this.addComponentColumn(\"more-menu\", TableMoreMenuComponent, (component: TableMoreMenuComponent<Row>) => {\n component.configurePopupComponentType(componentClass, initialiseCallback);\n }).columnTextProperties({\n headerText(): string {\n return \"\"\n }\n });\n }\n\n\n addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row> {\n return this.addColumn(new CustomTemplateColumnModel<Row>(columnId, this.columnManager, () => 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 addRowAttribute(attributeName: string, getValue: (row: Row) => string) {\n this.rowAttributeGenerators.push(new RowAttribute<Row>(attributeName, getValue));\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 getRowAttributes(row: Row): Record<string, string> {\n return this.rowAttributeGenerators.reduce((result, generator) => {\n return {...result, [generator.attributeName]: generator.getValue(row)}\n }, {});\n }\n\n\n protected addColumn<C extends ColumnModel<Row>>(column: C, position?: ColumnOrderManager.Position): C {\n return this.columnManager.addColumn(column, position);\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\n isRowSelectionEnabledFor(column: ColumnModel<Row>): boolean {\n return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();\n }\n\n isRowSelectionEnabled() {\n return this.hasUserSelectionModelThatIsEnabled() && !this.rowSelectionDisabledOnAllColumns$.value;\n }\n\n hasUserSelectionModelThatIsEnabled() {\n const userSelectionModel = this.selectionColumnModel?.selectionModel.getProxyTarget();\n return !!userSelectionModel && userSelectionModel.enabled$.value;\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 } else {\n // console.log({\n // hasEnabledUserSelectionModel: this.hasUserSelectionModelThatIsEnabled(),\n // allSelectionDisabled: this.rowSelectionDisabledOnAllColumns$.value,\n // rowSelectionEnabled: this.isRowSelectionEnabled(),\n // rowSelectionEnabledForColumn: columnModel.isRowSelectionEnabled()\n // })\n }\n\n this.rowClickListeners.fire(l => l(row));\n }\n\n}\n\nProxyRegistry.registerOneTimeBinding(AbstractTableModel)\n","import {CdkPortalOutletAttachedRef, Portal} from \"@angular/cdk/portal\";\nimport {Component, ComponentRef, HostBinding, Input, OnChanges, SimpleChanges} from \"@angular/core\";\nimport {BooleanValueModelChain, Command, Dsl, HasFocusContext} from \"@coolon/pectin\";\nimport {DisposableComponent} from \"../../../disposable-component\";\nimport {AbstractTableModel} from \"../../abstract-table-model\";\nimport {ColumnModel, RowData} from \"../../column/column-model\";\nimport {EditSession} from \"../../editor/edit-session\";\nimport {CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL} from \"../cell-portal-ref\";\n\n@Component({\n selector: 'aup-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss']\n})\nexport class TableCellComponent<Row> extends DisposableComponent implements 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 this.onInit(() => {\n const { chain} = 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\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 {CdkPortalOutletAttachedRef, Portal} from \"@angular/cdk/portal\";\nimport {Component, HostBinding, Input, OnInit} from \"@angular/core\";\nimport {ColumnModel} from \"../../column/column-model\";\nimport {HEADER_CELL_RENDERER_PORTAL} from \"../cell-portal-ref\";\n\n@Component({\n selector: 'aup-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss']\n})\nexport class TableHeaderCellComponent 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 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 {CdkVirtualScrollViewport} from \"@angular/cdk/scrolling\";\nimport {\n AfterViewInit,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnInit,\n Optional,\n ViewChild\n} from \"@angular/core\";\nimport {\n Dsl,\n ListModel,\n ListModelChain,\n MapModelChain,\n MutableValueModel,\n Proxify,\n proxify,\n StoreInValueModel,\n TransactionObserver,\n ValueModel\n} from \"@coolon/pectin\";\nimport {TableVirtualScrollDataSource} from \"ng-table-virtual-scroll\";\nimport {ResizeAwareComponent} from \"../../../resize-aware.component\";\nimport {AbstractTableModel} from \"../../abstract-table-model\";\nimport {ColumnModel} from \"../../column/column-model\";\n\nexport const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken<number>(\"AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER\")\n\n\n@Directive({\n selector: \"[aupTableRowAttributes]\",\n})\nexport class TableRowAttributesDirective implements OnInit {\n\n @Input()\n aupTableRowAttributes: Record<string, string>\n\n constructor(protected readonly elementRef: ElementRef<HTMLElement>) {\n }\n\n ngOnInit(): void {\n for (const attr in this.aupTableRowAttributes) {\n this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);\n }\n }\n}\n\n@Component({\n selector: \"aup-table-body\",\n templateUrl: \"./table-body.component.html\",\n styleUrls: [\"./table-body.component.scss\"],\n})\nexport class TableBodyComponent<Row> extends ResizeAwareComponent implements AfterViewInit {\n\n @Input() @Proxify()\n accessor data$ = proxify(ListModel<Row>);\n\n @Input() @Proxify()\n accessor tableModel = proxify(AbstractTableModel<Row>);\n\n @Input() @Proxify()\n accessor showHeader$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor showHeader = true;\n\n @Input()\n trackBy: (index: number, item: Row) => any\n\n @Input() @Proxify()\n accessor scrollMode$: ValueModel<TableBodyComponent.ScrollMode> = proxify(ValueModel<TableBodyComponent.ScrollMode>);\n\n @Input() @StoreInValueModel()\n @HostBinding(\"attr.scrollMode\")\n accessor scrollMode: TableBodyComponent.ScrollMode = \"none\";\n\n @ViewChild(CdkVirtualScrollViewport)\n scrollViewport: CdkVirtualScrollViewport\n\n columns$: ListModelChain<ColumnModel<Row>>;\n columnIds$: ListModelChain<string>;\n\n private columnsById$: MapModelChain<string, ColumnModel<Row>>;\n\n\n // TODO: support user defined header and row heights via css vars.\n protected readonly headerHeight$ = new MutableValueModel<number>(48);\n protected rowHeight$ = new MutableValueModel<number>(44);\n\n @HostBinding(\"class\")\n baseCssClass = \"aup-table-component\";\n\n protected virtualScrollDataSource = new TableVirtualScrollDataSource<Row>();\n private virtualScrollActive$ = new MutableValueModel(false);\n private scrollTimeout: any;\n\n\n constructor(@Inject(AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER) @Optional() protected bufferMultiplier: number = 1) {\n super();\n const {chain, when, observe} = Dsl.disposeWith(this);\n\n const actualHeaderHeight$ = chain(this.showHeader$).map(show => {\n return show ? this.headerHeight$.value : 0;\n }, {dependsOn: this.headerHeight$});\n\n\n // performance is terrible if the data changes while we're scrolling, so we postpone updates until\n // scrolling stops.\n const delayedDatea$ = chain(this.data$).postponeWhile(this.virtualScrollActive$)\n when(delayedDatea$).changes(delatedData => {\n this.virtualScrollDataSource.data = delatedData;\n this.scheduleTableHeightCheck();\n }, {initialValue: \"evaluate\"})\n\n\n this.onInit(() => {\n this.columns$ = chain(this.tableModel.visibleColumns$);\n this.columnIds$ = chain(this.columns$).pluck(\"columnId\");\n this.columnsById$ = chain(this.columns$).indexBy('columnId');\n });\n\n // const txo = new TransactionObserver({verbose: false}).onEvent(e => console.log(e.name, e.payload));\n // txo.observe('this.virtualScrollRowRange$', this.virtualScrollRowRange$);\n // txo.observe('this.virtualScrollSpacerSize$', this.virtualScrollSpacerSize$);\n // txo.observe('this.virtualRows$', this.virtualRows$);\n // txo.observe('this.tableBodyHeight$', this.tableBodyHeight$);\n // txo.observe('this.virtualScrollActive$', this.virtualScrollActive$);\n\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.scrollViewport) {\n const {observe} = Dsl.disposeWith(this);\n this.scrollViewport.elementScrolled().subscribe(() => this.notifyScrolled());\n }\n }\n\n @HostBinding(\"class.hide-header\")\n get hideHeader() {\n return !this.showHeader;\n }\n\n @HostBinding(\"style.--aup-table-header-height\")\n get headerHeightCssVar() {\n return `${this.headerHeight$.value}px`\n }\n\n @HostBinding(\"style.--aup-table-row-height\")\n get rowHeightCssVar() {\n return `${this.rowHeight$.value}px`\n }\n\n isEditing(row: Row): boolean {\n return !!this.tableModel.getEditSessionFor(row);\n }\n\n notifyCellClicked(columnModel: ColumnModel<Row>, row: Row) {\n this.tableModel._notifyCellClicked(columnModel, row);\n }\n\n // @Trace()\n\n isFirstVisibleColumn(columnId: string): boolean {\n return this.tableModel.firstVisibleColumn$.query().value?.columnId === columnId;\n }\n\n // @Trace()\n\n isLastVisibleColumn(columnId: string): boolean {\n return this.tableModel.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 private scheduleTableHeightCheck(waitMillis = 50) {\n setTimeout(() => {\n const tbody = this.elementRef.nativeElement.querySelector(\"tbody\") as HTMLElement;\n const bodyHeight = tbody.offsetHeight;\n if (this.data$.length > 0 && bodyHeight < this.rowHeight$.value) {\n // Hacks to get our virtual scroll to repaint\n // Logger.get(this).log(`rowCount=${this.data$.length}, bodyHeight=${bodyHeight} -> virtual table not rendering, triggering resize to force repaint`)\n window.dispatchEvent(new Event('resize'));\n if (waitMillis < 500) {\n this.scheduleTableHeightCheck(waitMillis + 50);\n }\n }\n }, waitMillis)\n }\n\n private notifyScrolled() {\n this.virtualScrollActive$.value = true;\n this.clearScrollTimeout();\n this.scrollTimeout = setTimeout(() => {\n return this.virtualScrollActive$.value = false;\n }, 200);\n }\n\n private clearScrollTimeout() {\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n }\n }\n}\n\nexport namespace TableBodyComponent {\n export type ScrollMode = \"none\" | \"classic\" | \"virtual\";\n\n}\n","\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\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 [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\"\n [headerHeight]=\"headerHeight$.value\"\n [bufferMultiplier]=\"bufferMultiplier\"\n>\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"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 [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n","import {Component} from \"@angular/core\";\nimport {Command, DelegatingCommand, DelegatingValueModel, ValueModel} from \"@coolon/pectin\";\nimport {DisposableComponent} from \"../../../../disposable-component\";\n\n@Component({\n selector: 'aup-table-more-menu-popup',\n template: '',\n styleUrls: [],\n})\nexport class TableMoreMenuPopupComponent<T> extends DisposableComponent {\n\n private _value$ = this.registerDisposable(new DelegatingValueModel<T>())\n\n private readonly _visible$ = this.registerDisposable(new DelegatingValueModel<boolean>()).withDefault(true);\n private readonly _closeCommand = this.registerDisposable(new DelegatingCommand<void>())\n\n\n initialise(row$: ValueModel<T>, closeCommand: Command<void>) {\n this._value$.setDelegate(row$);\n this._closeCommand.setDelegate(closeCommand);\n }\n\n protected visibleWhile(condition: ValueModel<boolean>) {\n this._visible$.setDelegate(condition);\n return this;\n }\n\n get visible$(): ValueModel<boolean> {\n return this._visible$.readonly$\n }\n\n get closeCommand(): Command<void> {\n return this._closeCommand;\n }\n\n get value$() {\n return this._value$.readonly$;\n }\n\n\n}\n","import {Component, Input, 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 '../renderer/cell-renderer';\n\n\nclass MenuItemData<T extends object> {\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\"\n #comp\n [command]=\"action.factory.create(value, {disposedWith: comp})\"\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\" #comp [command]=\"action.factory.create(value, {disposedWith: comp})\"\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 object> 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, {disposedWith: this});\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 {\n DelegatingListModel,\n DelegatingValueModel,\n Disposable,\n DisposedWith,\n Dsl,\n GarbageCollector,\n Guard,\n ListModel,\n Predicate,\n ProxyRegistry,\n ValueModel\n} from \"@coolon/pectin\";\nimport escapeStringRegexp from \"escape-string-regexp\";\nimport {isEmpty} from \"lodash-es\";\nimport {TextSearchPredicate} from \"./text-search-predicate\";\n\nexport class TableFilterModel<Row> extends GarbageCollector {\n\n\n private readonly _source$ = this.registerDisposable(new DelegatingListModel<Row>());\n private readonly _rowPredicate$ = this.registerDisposable(new DelegatingValueModel<Predicate<Row>>());\n private readonly _searchText$ = this.registerDisposable(new DelegatingValueModel<string>());\n private readonly _textSearchPredicate$ = this.registerDisposable(new DelegatingValueModel<TextSearchPredicate<Row>>());\n private readonly _rowPredicate: ValueModel<(row: Row) => boolean>;\n private readonly inUpdate = new Guard();\n\n readonly filteredRows$: ListModel<Row>;\n\n\n constructor(options: TableFilterModel.Configuration<Row>) {\n super();\n options.disposedWith.registerDisposable(this);\n this.useSearchText(options.searchText$);\n this.useRowPredicate(options.predicate$)\n\n const {chain} = Dsl.disposeWith(this);\n\n const textSearchRegex$ = chain(this._searchText$)\n .debounce(250)\n .map(text => {\n return isEmpty(text) ? undefined : new RegExp(escapeStringRegexp(text), \"i\");\n }, {allowNil: true});\n\n this._rowPredicate = chain(this._rowPredicate$)\n .map(predicate => {\n const regex = textSearchRegex$.value;\n const textSearchPredicate = this._textSearchPredicate$.value;\n return (row: Row) => (!predicate || predicate(row)) && (!regex || !textSearchPredicate || textSearchPredicate(row, regex));\n }, {\n allowNil: true,\n dependsOn: [textSearchRegex$, this._textSearchPredicate$],\n postponeWhile: this.inUpdate\n });\n\n this.filteredRows$ = chain(this._source$).select(row => {\n return this._rowPredicate.value(row);\n }, {dependsOn: this._rowPredicate});\n }\n\n get highlightText$() {\n return this._searchText$.readonly$;\n }\n\n useSearchText(searchText$: ValueModel<string>) {\n this._searchText$.setDelegate(searchText$);\n }\n\n useRowPredicate(rowPredicate$: ValueModel<(row: Row) => boolean>) {\n this._rowPredicate$.setDelegate(rowPredicate$);\n }\n\n bindToTable(source$: ListModel<Row>, textSearchPredicate$: ValueModel<TextSearchPredicate<Row>>): Disposable {\n this.inUpdate.whileTrue(() => {\n this._source$.setDelegate(source$);\n this._textSearchPredicate$.setDelegate(textSearchPredicate$);\n })\n\n const dispose = () => {\n if (!this.isDisposed()) {\n this.inUpdate.whileTrue(() => {\n this._source$.setDelegate(undefined);\n this._textSearchPredicate$.setDelegate(undefined);\n })\n }\n }\n return {dispose}\n }\n\n}\n\nexport namespace TableFilterModel {\n\n export interface Configuration<Row> extends DisposedWith {\n predicate$?: ValueModel<Predicate<Row>>\n searchText$?: ValueModel<string>;\n }\n}\n\nProxyRegistry.registerOneTimeBinding(TableFilterModel)\n","import {ListModel, SelectionModel, ValueModel} from \"@coolon/pectin\";\nimport {AbstractTableModel} from \"../abstract-table-model\";\nimport {SelectionColumnModel} from \"../column/selection-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 if (sourceOfTruth) {\n this.setDataSource(sourceOfTruth);\n }\n }\n\n bindToTable(filteredRows$: ListModel<Row>, visibleRows$: ListModel<Row>) {\n this._filteredRows$.setDelegate(filteredRows$)\n this._visibleRows$.setDelegate(visibleRows$);\n }\n\n addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n return this._addSelectionColumn(selectionModel, showSelectionColumn);\n }\n}\n\n","import {Component, Injector, Input, OnInit, ViewChild} from \"@angular/core\";\nimport {CanProxy, DelegatingListModel, Dsl, Proxify, proxify, ValueModelChain} from \"@coolon/pectin\";\nimport {AbstractTableModel} from '../abstract-table-model';\nimport {AbstractTableComponent} from '../abstract-table.component';\nimport {TableFilterModel} from \"../filter/table-filter-model\";\nimport {TableBodyComponent} from \"../renderer/table-body/table-body.component\";\nimport {TableModel} from \"./table-model\";\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = new TableModel(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 = new TableModel(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> implements OnInit {\n\n @Input() @Proxify()\n accessor tableModel: TableModel<Row> = proxify(TableModel<Row>);\n\n @Input() @Proxify()\n accessor filterModel = proxify(TableFilterModel<Row>)\n\n @ViewChild(TableBodyComponent)\n tableBody: TableBodyComponent<Row>\n\n private _footerContentAdded = false;\n\n private readonly _filteredRows$ = this.registerDisposable(new DelegatingListModel<Row>())\n protected readonly scrollMode$: ValueModelChain<TableBodyComponent.ScrollMode>;\n\n constructor(injector: Injector) {\n super(injector);\n const {chain, when} = Dsl.disposeWith(this);\n this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? \"virtual\" as TableBodyComponent.ScrollMode : \"none\")\n }\n\n override ngOnInit() {\n super.ngOnInit();\n if (CanProxy.hasTarget(this.filterModel)) {\n this.registerDisposable(this.filterModel.bindToTable(this._dataSource$, this.getModel().textSearchPredicate$));\n this.highlightText$.setDelegate(this.filterModel.highlightText$);\n this._filteredRows$.setDelegate(this.filterModel.filteredRows$)\n } else {\n this._filteredRows$.setDelegate(this._dataSource$);\n }\n this._visibleRows$.setDelegate(this._filteredRows$);\n // let users of the model know what the current visible and filtered rows are for selection models and what not\n this.tableModel.bindToTable(this._filteredRows$, this._visibleRows$)\n }\n\n protected override getModel(): AbstractTableModel<Row> {\n return this.tableModel;\n }\n\n footerContentChanged($event: any) {\n // console.log($event);\n this._footerContentAdded = true;\n }\n}\n","<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer], [slot=footer]\"></ng-content></div>\n</section>\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 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 ] as string[];\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 ] as string[];\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 ] as string[];\n\n export const HAS_TAIL = [\n TreeInheritanceIconComponent.Type.ICON_PARENT,\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ] as string[];\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 { MemoizeGet } from '@coolon/typescript-utilities';\nimport {Memoize} from 'fast-typescript-memoize';\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 @MemoizeGet()\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 @MemoizeGet()\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 {ComponentType} from '@angular/cdk/overlay';\nimport {Types} from '@coolon/pectin';\nimport {ColumnModel} from '../column/column-model';\nimport {ColumnOrderManager} from \"../column/column-order-manager\";\nimport {ComponentCellRendererPortalRef} from '../renderer/cell-portal-ref';\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 labelFactory: TreeTableModel.LabelFactory<Row> = () => undefined;\n private iconFactory: TreeTableModel.IconFactory<Row>;\n\n constructor(columnId: string,\n order: ColumnOrderManager,\n textPropertiesProvider: ColumnModel.TextPropertiesProvider,\n readonly expansionModel: TreeTableModel<Row>) {\n super(columnId, order, textPropertiesProvider);\n this.cellRenderer(TreeLabelCellRendererComponent);\n }\n\n pluck<P extends Types.StringValuePropertiesOf<Row>>(property: P) {\n this.useLabel(row => row[property] as unknown as string)\n }\n\n useLabel(factory: (row: Row) => string) {\n this.labelFactory = factory;\n }\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 = this.labelFactory(rowData.row);\n component.iconFactory = this.iconFactory;\n }));\n return this;\n }\n\n}\n","import {DelegatingValueModel, ListModel, MutableValueModel, SelectionModel, ValueModel} from '@coolon/pectin';\n\nimport {isFunction} from 'lodash-es';\nimport {AbstractTableModel} from '../abstract-table-model';\nimport {SelectionColumnModel} from \"../column/selection-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 private treeExpansionModel: TreeExpansionModel<Row>;\n private readonly flattenedDataSource: FlattenedTreeListModel<Row>;\n readonly childExtractor: (row: Row) => Row[];\n\n private _isExpandedPredicate$ = this.registerDisposable(new DelegatingValueModel<(node: Row) => boolean>())\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 this.childExtractor = isFunction(childAccessor) ? childAccessor : row => row[childAccessor] as unknown as Row[];\n this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));\n this.setDataSource(source$)\n }\n\n get isExpandedPredicate$() {\n return this._isExpandedPredicate$.readonly$;\n }\n\n bindToTable(expansionModel: TreeExpansionModel<Row>, filteredRows$: ListModel<Row>, visibleRows$: ListModel<Row>) {\n this.treeExpansionModel = expansionModel;\n // TODO: Move all the expansion model stuff out of here and have things use the expansion model directly\n this._isExpandedPredicate$.setDelegate(this.treeExpansionModel.isExpandedPredicate$)\n this._filteredRows$.setDelegate(filteredRows$)\n this._visibleRows$.setDelegate(visibleRows$);\n }\n\n treeControlColumn(builder: (column: TreeLabelColumnModel<Row>) => void) {\n const columnId = 'tree-label';\n const column = new TreeLabelColumnModel<Row>(columnId, this.columnManager,() => 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 isExpanded(row: Row) {\n return this.treeExpansionModel.isExpanded(row)\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 LabelFactory<Row> = (node: Row) => string;\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, HostBinding, Input, OnInit} from '@angular/core';\nimport {Dsl, ListModelChain, MutableValueModel, StoreInValueModel, ValueModelChain} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\nimport {CellRenderer} from '../../renderer/cell-renderer';\nimport {DecoratedTreeNode} from '../decorated-tree-node';\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 node$ = new MutableValueModel<T>();\n\n @Input() @StoreInValueModel(\"node$\")\n accessor 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.node$).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 override ngOnInit(): void {\n super.ngOnInit();\n const { chain } = Dsl.disposeWith(this);\n this.canExpand = chain(this.node$).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && this.treeTableModel.isCollapsed(node);\n }, { dependsOn: this.treeTableModel.isExpandedPredicate$ });\n\n this.canCollapse = chain(this.node$).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.treeTableModel.isCollapsed(node);\n }, { dependsOn: this.treeTableModel.isExpandedPredicate$ });\n\n this.iconModel = chain(this.node$).map(node => {\n const expanded = this.treeTableModel.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.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.node$.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>, ReadonlyArray<T>> {\n\n constructor(private readonly source: ListModel<T>, private readonly childRef: (node: T) => T[], readonly expansionModel: TreeExpansionModel<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 {\n DelegatingListModel,\n Disposable,\n DisposedWith,\n Dsl,\n GarbageCollector,\n ListModel,\n MutableValueModel,\n ProxyRegistry\n} from '@coolon/pectin';\nimport {DecoratedTreeNode} from './decorated-tree-node';\n\n// TODO: Merge the tree expansion model and flattened tree model together to work like TableFilterModels. I.e.\n// the client model code can use this classes filteredRows$ to limit selection.\nexport class TreeExpansionModel<T> extends GarbageCollector {\n\n private readonly _source$ = this.registerDisposable(new DelegatingListModel<T>());\n private readonly collapsedIds = new Set<any>();\n\n private readonly _isExpandedPredicate$ = new MutableValueModel<(node: T) => boolean>(() => true);\n\n private readonly _visibleRows$ = this.registerDisposable(new DelegatingListModel<T>());\n\n constructor(options: DisposedWith) {\n super()\n options.disposedWith.registerDisposable(this);\n const {chain} = Dsl.disposeWith(this);\n this.updatePredicate();\n }\n\n bindToTable(source$: ListModel<T>, visibleRows$: ListModel<T>): Disposable {\n this._source$.setDelegate(source$);\n this._visibleRows$.setDelegate(visibleRows$)\n return Disposable.disposableThatRuns(() => {\n this._source$.setDelegate(undefined);\n this._visibleRows$.setDelegate(undefined)\n })\n }\n\n get visibleRows$() {\n return this._visibleRows$.readonly$;\n }\n\n protected identityOf(row: T) {\n return this._source$.identityOf(row);\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\nProxyRegistry.registerOneTimeBinding(TreeExpansionModel);\n","import {Component, Injector, Input, OnInit} from \"@angular/core\";\nimport {Dsl, proxify, Proxify, ValueModel} from '@coolon/pectin';\nimport {TreeNode} from '@coolon/typescript-utilities';\nimport {AbstractTableModel} from '../abstract-table-model';\nimport {AbstractTableComponent} from '../abstract-table.component';\nimport {TableBodyComponent} from \"../renderer/table-body/table-body.component\";\nimport {FlattenedTreeListModel} from \"./flattened-tree-list-model\";\nimport {TreeExpansionModel} from \"./tree-expansion-model\";\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: './tree-table.component.html',\n styleUrls: ['./tree-table.component.scss'],\n providers: [\n {provide: AbstractTableComponent, useExisting: TreeTableComponent}\n ]\n})\nexport class TreeTableComponent<T extends TreeNode<T>> extends AbstractTableComponent<T> implements OnInit {\n\n @Input() @Proxify()\n accessor treeTableModel = proxify(TreeTableModel<T>);\n\n @Input() @Proxify()\n accessor expansionModel = proxify(TreeExpansionModel<T>);\n\n protected readonly scrollMode$: ValueModel<TableBodyComponent.ScrollMode>;\n\n constructor(injector: Injector) {\n super(injector);\n const {chain} = Dsl.disposeWith(this);\n this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? \"virtual\" as TableBodyComponent.ScrollMode : \"none\")\n }\n\n override ngOnInit() {\n super.ngOnInit();\n // TODO: clean up all this tightly coupled shit, should the expansion model really be separate from the tree model?\n if (!this.expansionModel) {\n this.expansionModel = new TreeExpansionModel<T>({disposedWith: this});\n }\n // Todo, turn this into a plain chain model\n const visibleRows$ = new FlattenedTreeListModel(this._dataSource$, row => this.treeTableModel.childExtractor(row), this.expansionModel)\n this._visibleRows$.setDelegate(visibleRows$);\n this.expansionModel.bindToTable(this._dataSource$, visibleRows$);\n this.treeTableModel.bindToTable(this.expansionModel, visibleRows$, this._visibleRows$);\n }\n\n override getModel(): AbstractTableModel<T> {\n return this.treeTableModel;\n }\n\n}\n","<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n","import {Component, ElementRef, Inject, Input, OnInit, PLATFORM_ID} from '@angular/core';\nimport {Dsl, Proxify, proxify, StoreInValueModel, ValueModel} from '@coolon/pectin';\n\nimport {isEmpty, isNil} from 'lodash-es';\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() @Proxify()\n accessor content$ = proxify(ValueModel<string>);\n\n @Input() @StoreInValueModel()\n accessor 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, when } = Dsl.disposeWith(this);\n\n this.onInit(() => {\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\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 {Component, HostListener, Input, Self} from '@angular/core';\nimport {Command, FocusManager, proxify, Proxify} 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 {\n\n @Input('command.arrowRight') @Proxify()\n accessor rightArrowCommand = proxify(Command<void>);\n\n @Input('command.arrowLeft') @Proxify()\n accessor leftArrowCommand= proxify(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() focusManager: FocusManager) {\n super(focusManager);\n }\n\n\n}\n","<ng-content></ng-content>\n","import {PortalModule} from '@angular/cdk/portal';\nimport {CdkScrollableModule, ScrollingModule} 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 {TableVirtualScrollModule} from \"ng-table-virtual-scroll\";\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 {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 {\n PopupMenuRendererComponent\n} 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 {SearchInputComponent} from \"./forms/search-input/search-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 {LabelledValueComponent} from './labelled-value/labelled-value.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/column/column-template/column-template.directive';\nimport {EditRowControlsComponent} from './tables/editor/edit-row-controls/edit-row-controls.component';\nimport {PaginatorComponent} from './tables/paginator/paginator.component';\nimport {DefaultCellRendererComponent} from './tables/renderer/default-cell-renderer/default-cell-renderer.component';\nimport {\n DefaultHeaderCellRendererComponent\n} from './tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component';\nimport {SelectionHeaderCellComponent} from './tables/renderer/select-header-cell/selection-header-cell.component';\nimport {SelectionCellComponent} from './tables/renderer/selection-cell/selection-cell.component';\n\n\nimport {TableBodyComponent, TableRowAttributesDirective} from './tables/renderer/table-body/table-body.component';\nimport {TableCellComponent} from './tables/renderer/table-cell/table-cell.component';\nimport {TableHeaderCellComponent} from './tables/renderer/table-header-cell/table-header-cell.component';\nimport {\n TableMoreMenuPopupComponent\n} from \"./tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component\";\nimport {TableMoreMenuComponent} from \"./tables/renderer/table-more-menu/table-more-menu.component\";\nimport {TableRowMenuComponent} from './tables/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 {\n TreeLabelCellRendererComponent\n} from './tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport {TreeTableComponent} from './tables/tree-table/tree-table-component';\nimport {MarkdownComponent} from './text/markdown/markdown.component';\nimport {VerticalFocusContainerComponent} from './vertical-focus-container/vertical-focus-container.component';\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 MatTooltipModule,\n MatAutocompleteModule,\n MatMenuModule,\n MatDividerModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n ScrollingModule,\n TableVirtualScrollModule\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 TableRowAttributesDirective,\n EditRowControlsComponent,\n ColumnTemplateDirective,\n DefaultCellRendererComponent,\n TableCellComponent,\n SelectionCellComponent,\n SelectionHeaderCellComponent,\n DefaultHeaderCellRendererComponent,\n TableHeaderCellComponent,\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 LabelledValueComponent,\n LoadingContainerComponent,\n MarkdownComponent,\n TableBodyComponent,\n TableMoreMenuComponent,\n TableMoreMenuPopupComponent,\n SearchInputComponent\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\n EditRowControlsComponent,\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 LabelledValueComponent,\n LoadingContainerComponent,\n MarkdownComponent,\n TableMoreMenuComponent,\n TableMoreMenuPopupComponent,\n SearchInputComponent\n ],\n providers: [\n FocusBindingFactory,\n MarkdownService\n ]\n\n})\nexport class ComponentsModule {\n\n}\n","import {Directive, inject, ProviderToken} from '@angular/core';\nimport {MutableValueModel} from '@coolon/pectin';\nimport {DisposableComponent} from \"./disposable-component\";\nimport {Loadable} from \"./types/loadable\";\n\n@Directive()\nexport class LoadableComponent extends DisposableComponent {\n\n #_loaded$ = new MutableValueModel<boolean>();\n #asyncLoadables: Loadable[] = [];\n #awaitedLoadables: Loadable[] = [];\n\n get loaded$() {\n return this.#_loaded$.readonly$\n }\n\n override ngOnInit(): void {\n super.ngOnInit()\n this.#asyncLoadables.forEach(it => it.ensureLoaded());\n if (this.#awaitedLoadables.length > 0) {\n Promise.all(this.#awaitedLoadables.map(it => {\n return it.ensureLoaded();//.then(() => console.log(`${it.constructor.name} loaded`));\n })).then(() => {\n this.#_loaded$.value = true;\n });\n } else {\n this.#_loaded$.value = true;\n }\n }\n\n\n protected injectLoadable<T extends Loadable>(token: ProviderToken<T>, options?: { wait: boolean }): T {\n return this.registerLoadable(inject(token), options);\n }\n\n registerLoadable<T extends Loadable>(loadable: T, options?: { wait: boolean }) {\n if (this.loaded$.value) {\n loadable.ensureLoaded();\n } else {\n if (!options || options.wait === true) {\n this.#awaitedLoadables.push(loadable)\n } else {\n this.#asyncLoadables.push(loadable)\n }\n }\n return loadable;\n }\n}\n","import {AbstractConstructable} from \"@coolon/restilence-plugin\";\n\nexport type TextSearchPredicate<Row> = (row: Row, regex: RegExp) => boolean;\n\nexport class TextSearchContext<Row> {\n constructor(readonly row: Row,\n readonly searchText: string,\n readonly searchRegex: RegExp) {\n }\n\n getOrCreate<T>(type: AbstractConstructable<T>, create: () => T) {\n\n }\n\n matchesText(text:string):boolean {\n return this.searchRegex.test(text);\n }\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 \"./loadable-component\";\nexport * from \"./resize-aware.component\";\nexport * from \"./track\";\nexport * from \"./busy-overlay/busy-overlay.component\";\nexport * from \"./cards/abstract-card-container.component\";\nexport * from \"./cards/card-container/card-container.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/form-field\";\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/search-input/search-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/column-manager\";\nexport * from \"./tables/column/column-model\";\nexport * from \"./tables/column/column-order-manager\";\nexport * from \"./tables/column/column-text-properties\";\nexport * from \"./tables/column/custom-template-column-model\";\nexport * from \"./tables/column/custom-value-column-model\";\nexport * from \"./tables/column/editor-controls-column-model\";\nexport * from \"./tables/column/list-propery-column-model\";\nexport * from \"./tables/column/property-column-model\";\nexport * from \"./tables/column/selection-column-model\";\nexport * from \"./tables/column/column-template/column-template.directive\";\nexport * from \"./tables/editor/edit-session\";\nexport * from \"./tables/editor/editable-cell-renderer\";\nexport * from \"./tables/editor/edit-row-controls/edit-row-controls.component\";\nexport * from \"./tables/filter/column-text-search-formatter\";\nexport * from \"./tables/filter/enable-cell-text-search.decorator\";\nexport * from \"./tables/filter/table-filter-model\";\nexport * from \"./tables/filter/text-search-predicate\";\nexport * from \"./tables/paginator/paginator.component\";\nexport * from \"./tables/renderer/cell-editors\";\nexport * from \"./tables/renderer/cell-portal-ref\";\nexport * from \"./tables/renderer/cell-renderer\";\nexport * from \"./tables/renderer/default-cell-renderer/default-cell-renderer.component\";\nexport * from \"./tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component\";\nexport * from \"./tables/renderer/select-header-cell/selection-header-cell.component\";\nexport * from \"./tables/renderer/selection-cell/selection-cell.component\";\nexport * from \"./tables/renderer/table-body/table-body.component\";\nexport * from \"./tables/renderer/table-cell/table-cell.component\";\nexport * from \"./tables/renderer/table-header-cell/table-header-cell.component\";\nexport * from \"./tables/renderer/table-more-menu/table-more-menu.component\";\nexport * from \"./tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component\";\nexport * from \"./tables/table/table-model\";\nexport * from \"./tables/table/table.component\";\nexport * from \"./tables/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/loadable\";\nexport * from \"./types/point.class\";\nexport * from \"./vertical-focus-container/vertical-focus-container.component\";\n","import {ChangeDetectorRef, Component, HostBinding, Input, ViewChild} from \"@angular/core\";\nimport {Command, proxify, Proxify} from '@coolon/pectin';\nimport {Enum} from 'typescript-string-enums';\nimport {CommandFace} from '../../../components/commands/command-face';\nimport {CommandComponent} from \"../../../components/commands/command/command.component\";\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 {\n\n @ViewChild(\"confirmCommandComponent\")\n protected confirmCommandComponent: CommandComponent\n\n @ViewChild(\"cancelCommandComponent\")\n protected cancelCommandComponent: CommandComponent\n\n /**\n * @deprecated activity actions now use the confirm command of the activity automatically\n */\n @Input() @Proxify()\n accessor confirmCommand = proxify(Command<any>);\n\n /**\n * @deprecated activity actions now use the cancel command of the activity automatically\n */\n @Input() @Proxify()\n accessor cancelCommand= proxify(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() {\n super();\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 focusConfirm() {\n this.confirmCommandComponent.requestFocus();\n }\n\n focusCancel() {\n this.cancelCommandComponent.requestFocus();\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=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n","import {AfterViewInit, Component, HostBinding, inject, InjectionToken, ViewChild} from \"@angular/core\";\nimport {\n Command,\n DelegatingValueModel,\n Disposable,\n Dsl,\n EventListenerList,\n MutableValueModel,\n Proxify,\n proxify,\n ValueModel\n} from \"@coolon/pectin\";\nimport {assert} from \"@coolon/typescript-utilities\";\nimport {DisposableComponent} from \"../components/disposable-component\";\nimport {LoadableComponent} from \"../components/loadable-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\ntype OnActivityReadyParams<D, R, E = any> = (activity: Activity<D, R, E>) => void;\n\n@Component({\n template: \"\"\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class Activity<D, R, E = any> extends LoadableComponent implements AfterViewInit {\n\n readonly activityData: D = inject(ACTIVITY_DATA);\n\n private readonly activityReadyListeners = new EventListenerList<OnActivityReadyParams<D, R, E>>();\n private readonly _busy$ = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n private _focused$ = this.registerDisposable(new DelegatingValueModel<boolean>());\n private _activityContext: Activity.Context<R, E>;\n private readonly _ready$ = new MutableValueModel<boolean>(false);\n\n @ViewChild(ActivityActionsComponent)\n protected activityActions: ActivityActionsComponent;\n\n @Proxify()\n accessor confirmCommand = proxify(Command<unknown>);\n\n @Proxify()\n accessor cancelCommand = proxify(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._focused$.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._focused$.setDelegate(activityContext.focused);\n when(this._focused$).becomesTruthy(() => {\n this.notifyActivityReady();\n });\n }\n\n ngAfterViewInit() {\n if (this.activityActions) {\n this.initialiseActivityAction(this.activityActions);\n }\n }\n\n protected initialiseActivityAction(activityActions: ActivityActionsComponent) {\n 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 notifyActivityReady() {\n this.activityReadyListeners.fire(l => l(this));\n this._ready$.value = true;\n }\n\n onActivityReady(callback: OnActivityReadyParams<D, R, E>): Disposable {\n return this.activityReadyListeners.add(callback);\n }\n\n autoFocus(focusable: { requestFocus(): void }) {\n return this.onActivityReady(() => focusable.requestFocus());\n }\n\n /**\n * @deprecated use #autoFocus instead\n * @param focusable\n */\n autoFocusOnActivityReady(focusable: { requestFocus(): void }) {\n return this.autoFocus(focusable);\n }\n\n get ready$(): ValueModel<boolean> {\n return this._ready$.readonly$;\n }\n\n get busy$(): ValueModel<boolean> {\n return this._busy$.readonly$;\n }\n\n get focused$(): ValueModel<boolean> {\n return this._focused$.readonly$;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busy$.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busy$.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","import {isFunction} from 'lodash-es';\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-es\";\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 this.onActivityReady(() => {\n if (this.activityActions) {\n this.isDestructive() ? this.activityActions.focusCancel() : this.activityActions.focusConfirm()\n }\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 return isFunction(this.config['destructive']) && this.config[\"destructive\"]();\n }\n\n}\n","import {Component, HostBinding, Inject} from '@angular/core';\nimport {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 @HostBinding(\"class\") confirmClass = \"aup-confirm-activity\";\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// notifyActivityReady() {\n // super.notifyActivityReady();\n // const focusTarget = this.isDestructive() ? this.cancelCommand : this.confirmCommand;\n // focusTarget.\n // }\n\n}\n","import {Component, HostBinding, Input} from '@angular/core';\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 {\n\n @Input()\n @HostBinding(\"class.full-width\")\n fullWidth = false;\n}\n","<ng-content></ng-content>\n","import {ListModel, 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(): readonly 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,\n ListModel,\n ListModelChain,\n MutableListModel,\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.onInplaceInteractionContextRegistered(`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 this.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 extends GarbageCollector implements Api {\n\n constructor(private readonly placeRouter: PlaceRouter, private readonly contextRegistry: ContextRegistry) {\n super();\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() ?\n Promise.resolve() :\n this.placeRouter.syncInteractionContextIdsWithRouter();\n }\n }\n\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-es';\nimport {PlaceHistory} from '../place-history';\nimport {VisitSegment} from '../visit-segment';\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: VisitSegment, 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: VisitSegment, 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: VisitSegment, placeHistory: PlaceHistory, value: T) {\n if (this.isMissingFrom(visit)) {\n const returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);\n if (returningFromSomewhereElse) {\n const lastKnownVisit = placeHistory.getMostRecentVisitSegmentFor(visit.placeDefinition);\n if (this.remember && lastKnownVisit) {\n value = lastKnownVisit.getParameterValue(this);\n }\n }\n }\n return this.isEmptyValue(value) ? this.defaultValue : 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: VisitSegment) {\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<ReadonlyArray<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, Predicate} from '@coolon/pectin';\nimport {lang, Opts} from '@coolon/typescript-utilities';\nimport {Memoize} from 'fast-typescript-memoize';\n\nimport {isEmpty, isNil, join} from 'lodash-es';\nimport {PlaceComponent} from './place-component';\nimport {ParameterDefinition} from './route/parameter-definition';\nimport {VisitSegment} from './visit-segment';\n\nexport class PlaceDefinition { //implements VisitableTree<PlaceDefinition> {\n\n private _parent: PlaceDefinition;\n\n constructor(readonly component: Constructable<PlaceComponent>,\n readonly path: string,\n readonly authenticate: boolean,\n readonly role: any,\n readonly data: Record<string, any>,\n readonly routeParameters: ParameterDefinition<any>[],\n readonly children: PlaceDefinition[],\n readonly redirectToFirstChild: boolean) {\n this.children.forEach(it => it.setParent(this));\n\n }\n\n @Memoize()\n ancestors(): PlaceDefinition[] {\n return this.parent ? this.parent.ancestors().concat([this.parent]) : [];\n }\n\n @Memoize()\n ancestorsAndSelf(): PlaceDefinition[] {\n return this.ancestors().concat(this);\n }\n\n protected setParent(parent: PlaceDefinition) {\n assert.isNil(this._parent);\n this._parent = parent;\n }\n\n get parent(): PlaceDefinition {\n return this._parent;\n }\n\n isRoot(): boolean {\n return !this._parent\n }\n\n hasParent(): boolean {\n return !this.parent\n }\n\n hasChildren(): boolean {\n return !isEmpty(this.children);\n }\n\n findChild(predicate: Predicate<PlaceDefinition>): PlaceDefinition | undefined {\n return this.children.find(predicate);\n }\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: VisitSegment) {\n const routeIdParameterDef = this.getRouteIdParameterDef();\n return routeIdParameterDef ? visit.getParameterValue(routeIdParameterDef) : null;\n }\n\n getFormattedRouteId(visit: VisitSegment): 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: VisitSegment, 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: VisitSegment): { [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): Record<string, any> {\n const result: Record<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 validateRouteParameters(params: Record<string, any>) {\n const defs = this.getVisitParameterDefs({\n includeRouteId: true,\n includeRouteParameters: true,\n includeNonRouteParameters: true\n }).reduce((result, def) => {\n return {...result, [def.name]: def}\n }, {});\n\n Object.keys(params).forEach(key => {\n const parameterDef = defs[key];\n if (!parameterDef) {\n lang.illegalState(`Parameter ${key} is not valid. Must be one of ${join(Object.keys(defs))}`)\n }\n\n if (!!params[key] && (Array.isArray(params[key]) !== parameterDef.isArray)) {\n lang.illegalState(`Parameter ${key} ${parameterDef.isArray ? \"must be an array\" : \"must not be an array\"}. Got ${params[key]}`)\n }\n })\n }\n\n hasAncestor(placeComponent: Constructable<PlaceComponent>) {\n return this.ancestors().find(a => a.component === placeComponent) != null;\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, inject} 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 ListModel,\n MutableValueModel\n} from '@coolon/pectin';\nimport {Klass, MemoizeGet} from '@coolon/typescript-utilities';\nimport {isNil} from 'lodash-es';\nimport 'reflect-metadata';\nimport {LoadableComponent} from \"../components/loadable-component\";\nimport {InteractionContext} from '../interaction/interaction-context';\nimport {PlaceDefinition} from './place-definition';\nimport {PlaceRouter} from \"./place-router\";\nimport {ParameterDefinition} from './route/parameter-definition';\nimport {UrlSnapshot} from './url-snapshot';\nimport {VisitSegment} from './visit-segment';\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\n// class ParameterChangeInterceptor<T> {\n// constructor(parameterDef: ParameterDefinition<T>, model: ValueModel<T>, callback: PlaceComponent.InterceptCallback<T>, options: PlaceComponent.InterceptOptions) {\n// }\n//\n// async canProceed(nextState: VisitSegment, interactionContext: InteractionContext) {\n// return true;\n// }\n// }\n\n@Directive()\nexport class PlaceComponent extends LoadableComponent {\n\n private readonly _placeReadyCallbacks: (()=>void)[] = [];\n private visitModel = new MutableValueModel<VisitSegment>();\n private _inVisitUpdate = new Guard();\n private _active = new MutableValueModel<boolean>(false);\n\n interactionContext?: InteractionContext;\n readonly childPlaces$: ListModel<Constructable<PlaceComponent>>;\n // private readonly _parameterChangeInterceptors: ParameterChangeInterceptor<any>[] = [];\n\n\n canDeactivate?(interactionContext: InteractionContext): boolean | Promise<boolean>;\n\n\n protected readonly placeRouter = inject(PlaceRouter);\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$ = ListModel.constant(this.placeDefinition.children.map(d => d.component));\n }\n\n public initialiseVisit(visit: VisitSegment, notifyVisitChanged: (current: VisitSegment, previous: VisitSegment) => 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 get childPlaces() {\n return this.childPlaces$.value;\n }\n\n public updateVisit(visit: VisitSegment) {\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: VisitSegment, parameterDef: ParameterDefinition<T, S>) {\n const model = this[parameterDef.propertyName] as IMutableHasValue<T>;\n assert.notNil(model);\n DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);\n const binding = this.registerDisposable(new Binding(this.visitModel, model, {\n toRight(visit: VisitSegment): 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?: VisitSegment): VisitSegment {\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 @MemoizeGet()\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.createVisitSegmentFor(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 {isEqual, isNil, isString} from 'lodash-es';\nimport {PlaceDefinition} from './place-definition';\nimport {ParameterDefinition} from './route/parameter-definition';\n\nexport class VisitSegment {\n readonly visitParameters: Record<string, any>;\n\n constructor(readonly placeDefinition: PlaceDefinition, visitParameters: Record<string, any> = {}) {\n placeDefinition.validateRouteParameters(visitParameters)\n this.visitParameters = Object.freeze(visitParameters);\n }\n\n // @Trace()\n getRouteId(): string | null {\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 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<unknown>): boolean {\n return Object.keys(this.visitParameters).includes(parameterDef.name);\n }\n\n replace<T>(parameter: ParameterDefinition<T, unknown>, value: T): VisitSegment {\n return new VisitSegment(this.placeDefinition, {...this.visitParameters, [parameter.name]: value});\n }\n\n mergeRouteParameters(routeParams: Record<string, unknown>): VisitSegment {\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 VisitSegment(this.placeDefinition, params);\n }\n\n // @Trace()\n hasRoutingChangedFrom(other: VisitSegment): 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: VisitSegment) {\n const sameNonRouteParameters = isEqual(\n this.placeDefinition.getNonRouteParameters(this),\n this.placeDefinition.getNonRouteParameters(other)\n );\n return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);\n }\n\n createRouterCommands(): string[] {\n return this.hasRouteId() ?\n [this.placeDefinition.getFormattedRouteId(this), this.placeDefinition.getFormattedRouteParameters(this)] :\n [this.placeDefinition.getFormattedRouteParameters(this)];\n }\n\n copyMissingFrom(other: VisitSegment): VisitSegment {\n return new VisitSegment(this.placeDefinition, {...other.visitParameters, ...this.visitParameters});\n }\n\n toDebugString() {\n const bits = [this.placeDefinition.path];\n if (this.placeDefinition.authenticate) {\n bits.push(\"🔐\");\n }\n const keys = Object.keys(this.visitParameters);\n if (keys.length > 0) {\n bits.push(`(${keys.map(k => `${k}=${this.visitParameters[k]}`)}})`);\n }\n return bits.join('');\n }\n\n}\n","import {assert, Constructable} from \"@coolon/typescript-utilities\";\nimport {Memoize} from \"fast-typescript-memoize\";\nimport {isEmpty, last} from \"lodash-es\";\nimport {PlaceAccessGuard} from \"./place-access-guard\";\nimport {PlaceComponent} from \"./place-component\";\nimport {PlaceDefinition} from \"./place-definition\";\nimport {VisitSegment} from \"./visit-segment\";\n\nexport class Visit {\n\n protected segmentsByPlaceComponent = new Map<Constructable<PlaceComponent>, VisitSegment>();\n protected readonly destinationSegment: VisitSegment;\n protected readonly destinationPlaceDef: PlaceDefinition;\n\n static goto(placeComponent: Constructable<PlaceComponent>, visitParameters?: Record<string, unknown>): Visit {\n return new Visit([new VisitSegment(PlaceComponent.getDefinition(placeComponent), visitParameters)])\n }\n\n static fromSegments(segments: VisitSegment[]): Visit {\n return new Visit(segments);\n }\n\n protected constructor(segments: VisitSegment[]) {\n assert.isTruthy(segments.length > 0);\n this.destinationSegment = last(segments);\n this.destinationPlaceDef = this.destinationSegment.placeDefinition\n segments.forEach(s => this.segmentsByPlaceComponent.set(s.placeDefinition.component, s))\n }\n\n protected get definedSegments(): Map<Constructable<PlaceComponent>, VisitSegment> {\n return Array.from(this.segmentsByPlaceComponent.values()).reduce((map, s) => {\n map.set(s.placeDefinition.component, s)\n return map;\n }, new Map())\n\n }\n\n withAncestorParameters(placeComponent: Constructable<PlaceComponent>, parameters: Record<string, unknown>): this {\n if (!this.destinationPlaceDef.hasAncestor(placeComponent)) {\n throw new Error(`Place ${placeComponent.name} is not an ancestor of ${this.destinationPlaceDef.component.name}`);\n }\n this.segmentsByPlaceComponent.set(placeComponent, new VisitSegment(PlaceComponent.getDefinition(placeComponent), parameters));\n return this;\n }\n\n get segments(): VisitSegment[] {\n return this.resolveSegments([this.definedSegments]);\n }\n\n private resolveSegments(defaults: Map<Constructable<PlaceComponent>, VisitSegment>[]) {\n return this.destinationPlaceDef.ancestorsAndSelf()\n .map(a => {\n const visit = new VisitSegment(a, {});\n return defaults\n .map(segments => segments.get(a.component))\n .filter(it => !!it)\n .reduce((it, other) => it.copyMissingFrom(other), visit)\n });\n }\n\n copyWithDefaultsFrom(other: Visit|undefined): Visit {\n const defaults = [this.definedSegments];\n if (other) {\n defaults.push(other.definedSegments);\n }\n return new Visit(this.resolveSegments(defaults));\n }\n\n copyAndReplaceSegment(replace: VisitSegment): Visit {\n // console.log(\"copyAndReplaceSegment\", replace.toDebugString());\n const segments = this.segments.map(s => s.placeDefinition === replace.placeDefinition ? replace : s);\n // console.log(\"copyAndReplaceSegment.result\", segments.map(s => s.toDebugString()).join(\"\\n\"));\n return new Visit(segments);\n }\n\n isPlaceActive(placeDefinition: PlaceDefinition): boolean {\n return !!this.getSegmentFor(placeDefinition);\n }\n\n @Memoize()\n getSegmentFor(placeDefinition: PlaceDefinition): VisitSegment {\n return this.segments.find(v => v.placeDefinition === placeDefinition);\n }\n\n getRouterCommands(): string[] {\n return this.segments.reduce((result, v) => {\n const path = v.placeDefinition.path;\n return isEmpty(path) ?\n [...result, path] : // Angular doesn't support route params on empty path segments\n [...result, path, ...v.createRouterCommands()];\n }, []);\n }\n\n isAuthorised(guard: PlaceAccessGuard): boolean {\n return this.segments.find(s => !guard.isAuthorised(s.placeDefinition)) == null;\n }\n\n requiresAuthentication() {\n return !!this.segments.find(s => s.placeDefinition.authenticate);\n }\n\n toDebugString() {\n return this.segments.map(s => s.toDebugString()).join(\"/\")\n }\n}\n\n\n// const visit2 = Visit.goto(AnotherPlace, {id: \"fred\"})\n// .withAncestorParameters(ParentA, {id: \"a\"}) // barf if not a ancestor or missing parameters are required or parameter isn't valid\n// .withAncestorParameters(ParentB, {id: \"c\"}) // barf if not a ancestor or missing parameters are required or parameter isn't valid\n//\n","import {assert} from '@coolon/pectin';\n\nimport {isEqual} from 'lodash-es';\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 {GarbageCollector, lang, Logger} 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 {VisitSegment} from \"../../visit-segment\";\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 _visitSegments = new Map<PlaceDefinition, VisitSegment>();\n\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n abstract readonly isPopState: boolean;\n\n\n private _interactionContext: InteractionContext;\n\n constructor(readonly context: NavigationContext, readonly startingUrl: string) {\n super();\n // console.log(`new ${this.constructor.name}`)\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 isInteractionSync(): boolean {\n return false;\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 initialiseVisitSegments(visit: Visit) {\n visit.segments.forEach(it => this.updateVisitSegment(it))\n }\n\n updateVisitSegment(segment: VisitSegment) {\n // console.log(`updateVisitSegment`, segment.toDebugString());\n this._visitSegments.set(segment.placeDefinition, segment);\n }\n\n\n getVisitSegmentFor(placeDef: PlaceDefinition) {\n const visit = this._visitSegments.get(placeDef);\n // console.log(`Getting visit for ${placeDef.component.name}`, {visit});\n return visit;\n }\n\n createUpdatedVisit(url: string) :Visit {\n // The visit segments can have arbirary places in them after redirects\n // so we have to filter them based on the final url.\n const snapshot = this.urlService.parseUrl(url);\n const filteredSegments = Array.from(this._visitSegments.values())\n .filter(it => snapshot.containsVisitSegment(it));\n return Visit.fromSegments(filteredSegments);\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 getVisitSegments(): VisitSegment[] {\n return Array.from(this._visitSegments.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 override 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 {PlaceComponent} from '../../../place-component';\nimport {UrlSnapshot} from '../../../url-snapshot';\nimport {NavigationContext} from '../navigation-context';\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 override 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 override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.locationChangeTriggerUrl, this.startingUrl);\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.ignore(event);\n }\n\n override 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} 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 override 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 override get isInteractionSync(): boolean {\n return true;\n }\n\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.gotPopState = true;\n }\n\n // @Trace()\n override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterCancelled(event: NavigationCancel): void {\n this.ignore(event);\n }\n\n // @Trace()\n // override onUrlChange(url: string) {\n // }\n\n private finishUp() {\n this.context.finishRoutingSession();\n this.finished.resolve(true);\n }\n\n // @Trace()\n override 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-es';\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 override get isInteractionSync(): boolean {\n return true;\n }\n\n\n override notifyActive() {\n this.syncInteractionIdsWithRouter();\n }\n\n // @Trace()\n override onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override 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: readonly 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: readonly 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';\n\nimport {\n WaitUntilLeavingInteractionTransitionCancelled\n} from '../event-cleanup/wait-until-leaving-interaction-transition-cancelled';\nimport {NavigationSession} from '../navigation-session';\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 override onRouterCancelled(event: NavigationCancel): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n // navigation was aborted.\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override 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.createUpdatedVisit(event.urlAfterRedirects))\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 {NavigationContext} from './navigation-context';\nimport {NavigationSession} from './navigation-session';\n\nexport abstract class AbstractPopStateNavigation extends NavigationSession {\n readonly isPopState = true;\n override debugPropertyKeys = ['startingUrl', 'poppedHistoryUrl'];\n\n constructor(context: NavigationContext, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n override repairBrowserHistoryAndUrlAfterGuardCancellation(): void {\n super.repairBrowserHistoryAndUrlAfterGuardCancellation(this.poppedHistoryUrl, this.startingUrl)\n }\n\n}\n","import {NavigationCancel, NavigationEnd} from '@angular/router';\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 override 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 override 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 {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 override 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 override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override 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 override 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 override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override 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 override 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 override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override 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, NavigationCancellationCode, NavigationEnd, NavigationError} from '@angular/router';\nimport {\n WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined\n} from './event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined';\nimport {NavigationSession} from './navigation-session';\n\n\nexport class Navigating extends NavigationSession {\n readonly isPopState = false;\n\n override debugPropertyKeys = ['startingUrl', 'urlAfterRedirects'];\n private urlAfterRedirects: string;\n\n override onRouterCancelled(event: NavigationCancel): void {\n // redirects come from our guards so we'll be processing parameter updates and need\n // to keep the same session running so we don't loose any accumulated state.\n if (event.code !== NavigationCancellationCode.Redirect) {\n this.context.finishRoutingSession()\n }\n }\n\n override onRouterError(event: NavigationError): void {\n // navigation was aborted.\n this.context.finishRoutingSession();\n }\n\n override onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession(this.createUpdatedVisit(event.urlAfterRedirects));\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(visit?: 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: (visit?: Visit) => void) {\n }\n\n }\n\n}\n","import {NavigationCancel, NavigationEnd, NavigationError, NavigationStart} from '@angular/router';\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 override 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 override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n void this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.popStateHandled = true;\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n override 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 {\n WaitUntilPopStateDuringCanDeactivateInteractionFinishes\n} from './event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes';\n\nexport class PopStateNavigation extends AbstractPopStateNavigation {\n\n override onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation();\n this.context.finishRoutingSession();\n }\n\n override onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession(this.createUpdatedVisit(event.urlAfterRedirects));\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 {ActivatedRouteSnapshot, RouterStateSnapshot} from \"@angular/router\";\nimport {\n AndValueModel,\n ComputedModelMechanics,\n Constructable,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector,\n HasValue,\n MultiMapModelChain,\n MutableListModel,\n ReducingValueModel,\n ValueModel\n} from \"@coolon/pectin\";\nimport {PlaceAccessGuard} from \"./place-access-guard\";\nimport {PlaceComponent} from \"./place-component\";\nimport {PlaceDefinition} from \"./place-definition\";\nimport {Visit} from \"./visit\";\n\n\nfunction toPromise(disposedWith: Disposable.Collector, condition$: ValueModel<boolean>) {\n // TODO: move this functionality to pectin with a waitUnit(model$).isTruthy() DSL.\n const {when} = Dsl.disposeWith(disposedWith);\n return new Promise<void>((resolve) => {\n when(condition$).becomesTruthy(() => resolve(), {once: true, initialValue: \"evaluate\"})\n });\n}\n\nfunction withPostponeUntil<T>(disposable: Disposable.Collector, options: ComputedModelMechanics.PostponeOptions, callback: (value$: ValueModel<boolean>) => T): T | undefined {\n // TODO: move this functionality to powerups\n const {chain} = Dsl.disposeWith(disposable);\n if (options.postponeUntil) {\n return callback(options.postponeUntil);\n } else if (options.postponeWhile) {\n return callback(chain(options.postponeWhile).isFalsey())\n }\n return undefined;\n}\n\n\nclass PlaceAuthGuard extends GarbageCollector {\n private readonly readyPromise: Promise<void>;\n\n constructor(readonly placeDefinition: PlaceDefinition,\n readonly enabled$: ValueModel<boolean>,\n options: ComputedModelMechanics.PostponeOptions) {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.readyPromise = withPostponeUntil(this, options, condition$ => {\n return toPromise(this, condition$)\n }) ?? Promise.resolve()\n }\n\n async waitUntilReady(): Promise<void> {\n await this.readyPromise;\n }\n}\n\n\nclass EnabledPlaceChecker extends ReducingValueModel<PlaceAuthService.AuthorisationCheck, void> {\n\n private readonly placeGuards$ = new MutableListModel<PlaceAuthGuard>();\n private readonly placeGuardsByPlaceDef$: MultiMapModelChain<PlaceDefinition, PlaceAuthGuard>;\n\n constructor() {\n super([]);\n const {chain} = Dsl.disposeWith(this);\n this.placeGuardsByPlaceDef$ = chain(this.placeGuards$).indexManyBy(\"placeDefinition\");\n }\n\n enableWhen(placeDefinition: PlaceDefinition, condition$: ValueModel<boolean>, options: ComputedModelMechanics.PostponeOptions): void {\n const {chain} = Dsl.disposeWith(this);\n this.placeGuards$.push(new PlaceAuthGuard(placeDefinition, condition$, options));\n this.trackSource(condition$);\n }\n\n isAuthorised(placeDef: PlaceDefinition): boolean {\n return this.value(placeDef);\n }\n\n compute(values: void[]): (placeDef: PlaceDefinition) => boolean {\n return (def) => this.checkPredicatesByPlace(def)\n }\n\n private checkPredicatesByPlace(def: PlaceDefinition) {\n const placePredicates = this.placeGuardsByPlaceDef$.get(def);\n if (!placePredicates || placePredicates.length < 1) {\n return true;\n } else {\n return placePredicates.reduce((sum, model) => {\n return sum && model.enabled$.value;\n }, true);\n }\n }\n\n async waitUntilReady(placeDef: PlaceDefinition): Promise<void> {\n const placeAuthGuards = this.placeGuardsByPlaceDef$.get(placeDef);\n if (placeAuthGuards?.length > 0) {\n await Promise.all(placeAuthGuards.map(it => it.waitUntilReady()));\n }\n }\n}\n\nexport class PlaceAuthService extends GarbageCollector {\n\n\n private authZOptions: PlaceAuthService.AuthorisationOptions;\n private authNOptions: PlaceAuthService.AuthenticationOptions;\n\n private readonly _authNReady$ = new AndValueModel().setDefault(true);\n private readonly _authZReady$ = new AndValueModel().setDefault(true);\n private authenticated$ = this.registerDisposable(new DelegatingValueModel<boolean>).withDefault(true);\n private authChecker$ = this.registerDisposable(new DelegatingValueModel<PlaceAuthService.AuthorisationCheck>).withDefault(() => true);\n private enabledPlaceChecker = this.registerDisposable(new EnabledPlaceChecker());\n\n readonly accessGuard$: ValueModel<PlaceAuthService.AccessGuard>;\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.accessGuard$ = chain.reduce(this.authenticated$,\n this.authChecker$,\n this.enabledPlaceChecker,\n (authenticated, authCheck, enabledPlaceCheck) => {\n return new PlaceAuthService.AccessGuard(authenticated, def => authCheck(def) && enabledPlaceCheck(def));\n })\n }\n\n configureAuthentication(options: PlaceAuthService.AuthenticationOptions) {\n this.authNOptions = options;\n this.authenticated$.setDelegate(options.isAuthenticated$)\n withPostponeUntil(this, options, condition$ => this._authNReady$.addSource(condition$))\n }\n\n configureAuthorisation(options: PlaceAuthService.AuthorisationOptions) {\n const {chain} = Dsl.disposeWith(this);\n this.authZOptions = options;\n let authChecker$ = ValueModel.constant(def => options.isAuthorised(def));\n if (options.dependsOn$) {\n // have to return a new funtion or the value model won't fire a change event\n authChecker$ = chain(authChecker$).map(it => def => it(def), {dependsOn: options.dependsOn$})\n }\n this.authChecker$.setDelegate(authChecker$);\n withPostponeUntil(this, options, condition$ => this._authZReady$.addSource(condition$))\n }\n\n enablePlace(placeDefinition: Constructable<PlaceComponent>, options: PlaceAuthService.AuthPlaceOptions) {\n const {chain} = Dsl.disposeWith(this);\n const when$ = options.when$ ? options.when$ : chain(options.unless$).isFalsey()\n this.enabledPlaceChecker.enableWhen(PlaceComponent.getDefinition(placeDefinition), when$, options);\n }\n\n\n async waitUntilAuthenticationReady(): Promise<void> {\n await toPromise(this, this._authNReady$);\n }\n\n async waitUntilAuthorisationReadyFor(placeDef: PlaceDefinition): Promise<void> {\n await toPromise(this, this._authZReady$)\n await this.enabledPlaceChecker.waitUntilReady(placeDef)\n }\n\n getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n const redirect = this.authNOptions.redirectTo(activatedRoute, state);\n return redirect instanceof Visit ? redirect : Visit.goto(redirect);\n }\n\n getAuthorisationFailureRedirectOptions(component: Constructable<PlaceComponent>): Visit[] {\n return this.authZOptions.redirectTo(component).map(it => it instanceof Visit ? it : Visit.goto(it));\n }\n\n isAuthenticated() {\n return this.accessGuard$.value.isAuthenticated()\n }\n\n isAuthorised(c: PlaceDefinition) {\n return this.accessGuard$.value.isAuthorised(c)\n }\n}\n\nexport namespace PlaceAuthService {\n\n export type AuthorisationCheck = (def: PlaceDefinition) => boolean;\n\n export interface AuthenticationOptions extends ComputedModelMechanics.PostponeOptions {\n isAuthenticated$: ValueModel<boolean>;\n\n redirectTo(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit | Constructable<PlaceComponent>;\n }\n\n export interface AuthorisationOptions extends ComputedModelMechanics.PostponeOptions {\n isAuthorised: AuthorisationCheck;\n dependsOn$?: HasValue<any>;\n\n redirectTo(component: Constructable<PlaceComponent>): (Constructable<PlaceComponent> | Visit)[];\n }\n\n export interface AuthPlaceOptions extends ComputedModelMechanics.PostponeOptions {\n when$?: ValueModel<boolean>;\n unless$?: ValueModel<boolean>;\n }\n\n export class AccessGuard implements PlaceAccessGuard {\n constructor(\n private readonly authenticated: boolean,\n private readonly checkAuth: AuthorisationCheck\n ) {\n }\n\n isAuthenticated(): boolean {\n return this.authenticated;\n }\n\n isAuthorised(placeDefinition: PlaceDefinition): boolean {\n return this.checkAuth(placeDefinition);\n }\n\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {assert} from '@coolon/pectin';\n\nimport {first} from 'lodash-es';\nimport {PlaceDefinition} from './place-definition';\nimport {Visit} from \"./visit\";\nimport {VisitSegment} from './visit-segment';\n\n/**\n * TODO: this should be updated to store the last x visists rathern than a map of places to visit segments.\n * This would allow it to return segments that are relevent to a particular parent path. Currently\n * it just returns the last segment so it can return child ids that don't belong to the current parent.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceHistory {\n\n private _activeSegments: PlaceHistory.VisitRecord;\n private _previousVisits: PlaceHistory.VisitRecord;\n\n private _archive = new Map<PlaceDefinition, VisitSegment[]>();\n private readonly placeHistoryDepth: number = 4;\n notifyNavigationStarted() {\n if (this._activeSegments) {\n this.archiveSegments(this._activeSegments.visitSegments);\n this._previousVisits = this._activeSegments;\n }\n }\n\n notifyNavigationFinished(visits: Visit) {\n this._activeSegments = new PlaceHistory.VisitRecord(visits.segments)\n }\n\n updateVisitSegment(visit: VisitSegment) {\n assert.isTruthy(this._activeSegments);\n this._activeSegments.update(visit);\n }\n\n lastVisitIncluded(placeDef: PlaceDefinition): boolean {\n return !!this._previousVisits?.getVisitFor(placeDef);\n }\n\n getMostRecentVisitSegmentFor(placeDef: PlaceDefinition) {\n return first(this.getSegmentHistoryFor(placeDef));\n }\n\n getSegmentHistoryFor(placeDef: PlaceDefinition): VisitSegment[] {\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: VisitSegment[]) {\n this._archive.set(placeDef, history);\n }\n\n protected archiveSegments(visits: VisitSegment[]) {\n visits.forEach(state => {\n const history = this.getSegmentHistoryFor(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 visitSegments: VisitSegment[]) {\n }\n\n update(visit: VisitSegment) {\n this.visitSegments = this.visitSegments\n .filter(v => v.placeDefinition !== visit.placeDefinition) // keep all that are not me\n .concat(visit); // and add me to the end\n }\n\n getVisitFor(placeDef: PlaceDefinition): VisitSegment | undefined {\n return this.visitSegments.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 {ParamMap, UrlSegment} from '@angular/router';\nimport {MemoizeGet} from \"@coolon/typescript-utilities\";\nimport {Memoize} from 'fast-typescript-memoize';\n\nimport {uniq} from 'lodash-es';\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 @MemoizeGet()\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 {Memoize} from 'fast-typescript-memoize';\n\nimport {isEqual, last} from 'lodash-es';\nimport {ConsolidatedParameterMap} from './guards/consolidated-param-map';\nimport {PlaceDefinition} from './place-definition';\nimport {VisitSegment} from './visit-segment';\n\nfunction extractPrimaryUrlSegments(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 updateVisitSegment(visitSegment: VisitSegment): UrlSnapshot {\n const newUrlTree = this.urlSerializer.parse(this.url);\n // Ugly, but it works for now.\n const segments = [...extractPrimaryUrlSegments(newUrlTree)];\n const urlSegments = this.getUrlSegmentsForVisitSegment(visitSegment);\n const replaceAt = segments.findIndex(segment => segment.path === urlSegments[0].path);\n // do not use the return value, it's the items that were removed!\n segments.splice(replaceAt, urlSegments.length, ...urlSegments);\n newUrlTree.root.children.primary.segments = segments;\n return new UrlSnapshot(this.urlSerializer, newUrlTree.toString());\n }\n\n appendSegment(visitSegment: VisitSegment):UrlSnapshot {\n // TODO: make this work properly with visit parameters\n return new UrlSnapshot(this.urlSerializer, this.url + \"/\" + visitSegment.placeDefinition.path)\n }\n\n @Memoize()\n private getPrimaryUrlSegments(): UrlSegment[] {\n return extractPrimaryUrlSegments(this.urlTree);\n }\n\n /**\n * Converts the visit into segments. Please not that these segments are not e\n * @param visitSegment\n */\n protected getUrlSegmentsForVisitSegment(visitSegment: VisitSegment): UrlSegment[] {\n return visitSegment.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(visitSegment.placeDefinition.path, visitSegment.placeDefinition.getFormattedRouteParameters(visitSegment)),\n new UrlSegment(visitSegment.placeDefinition.getFormattedRouteId(visitSegment), {})]\n :\n [\n new UrlSegment(visitSegment.placeDefinition.path, visitSegment.placeDefinition.getFormattedRouteParameters(visitSegment))\n ];\n }\n\n includesPathOf(placeDef: PlaceDefinition) {\n return this.getPrimaryUrlSegments().find(s => s.path === placeDef.path);\n }\n\n isLastPlaceInUrl(placeDef: PlaceDefinition) {\n return last(this.getPrimaryUrlSegments()).path === placeDef.path;\n }\n\n createVisitSegmentFor(placeDef: PlaceDefinition) {\n return new VisitSegment(placeDef, new ConsolidatedParameterMap(this.getPrimaryUrlSegments()));\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: readonly string[]): boolean {\n return isEqual(this.getInteractionIds(), ids);\n }\n // @Trace()\n\n updateInteractionIds(ids: readonly 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 // @Trace()\n\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 containsVisitSegment(segment: VisitSegment) {\n return !!this.getPrimaryUrlSegments().find(s => s.path === segment.placeDefinition.path);\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: readonly 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 {VisitSegment} from './visit-segment';\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: VisitSegment[]): UrlSnapshot {\n const bits = [];\n visits.forEach(v => {\n bits.push(this.parseUrl(`${v.placeDefinition.path}`).updateVisitSegment(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 {Location} from \"@angular/common\";\nimport {Injectable} from \"@angular/core\";\nimport {\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n RouterStateSnapshot\n} from \"@angular/router\";\nimport {\n assert,\n DebugContext,\n Dsl,\n GarbageCollector,\n lang,\n Logger,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\nimport {Constructable} from \"@coolon/typescript-utilities\";\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 {\n PopStateDuringInteractionNavigation\n} from \"./navigation/session/interactions/pop-state-during-interaction-navigation\";\nimport {\n SynchroniseInteractionContextIdsWithRoute\n} 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 {PlaceAuthService} from \"./place-auth-service\";\nimport {PlaceComponent} from \"./place-component\";\nimport {PlaceHistory} from \"./place-history\";\nimport {UrlService} from \"./url-service\";\nimport {UrlSnapshot} from \"./url-snapshot\";\nimport {Visit} from \"./visit\";\nimport {VisitSegment} from \"./visit-segment\";\n\n// function 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 navigationSession$ = new MutableValueModel<NavigationSession>();\n readonly navigationInProgress$: ValueModelChain<boolean>;\n readonly navigationSessionName$: ValueModelChain<string>; // used by tests\n readonly interactionSyncInProgress$: ValueModel<boolean>;\n\n private readonly navigationContext: NavigationContext.Impl;\n\n private readonly _activeVisit$ = new MutableValueModel<Visit>();\n private readonly routerInteractionAdapter: InteractionServiceRoutingAdapter;\n private sessionFinishedJobs: (() => void)[] = [];\n\n readonly authService = new PlaceAuthService();\n\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 segments => {\n this.routingSessionFinished(segments);\n });\n\n const {chain} = Dsl.disposeWith(this);\n this.navigationInProgress$ = chain(this.navigationSession$).isNotNil();\n this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck(\"isInteractionSync\")\n\n const idleStateName = chain(this.interactionService.active).map(active => active ? \"IdleDuringInteraction\" : \"Idle\");\n this.navigationSessionName$ = chain(this.navigationSession$)\n .pluck(\"name\")\n .otherwise(idleStateName);\n\n DebugContext.tag(this._activeVisit$, \"PlaceRouter.activeVisit\");\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 getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n return this.authService.getAuthenticationFailureRedirect(activatedRoute, state)\n }\n\n getAuthorisationFailureRedirectOptions(component: Constructable<PlaceComponent>): Visit[] {\n return this.authService.getAuthorisationFailureRedirectOptions(component);\n }\n\n get navigationSession() {\n return this.navigationSession$.value;\n }\n\n get currentSession() {\n return this.navigationSession$.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 async waitActivitiesSynchronised(): Promise<this> {\n const {when} = Dsl.disposeWith(this);\n return new Promise<this>(resolve => {\n when(this.interactionSyncInProgress$).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\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\n async navigate(visit: Visit)\n async navigate(placeComponent: Constructable<PlaceComponent>, params?: Record<string, unknown>)\n async navigate(visitOrPlaceComponent: Visit | Constructable<PlaceComponent>, params?: Record<string, unknown>) {\n const visit = this.toVisit(visitOrPlaceComponent, params).copyWithDefaultsFrom(this.activeVisit$.value)\n return this.doNavigation(visit, async () => {\n await this.angularRouter.navigate(visit.getRouterCommands());\n });\n }\n\n // @Trace()\n async doNavigation(visit: Visit, runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress$.value) {\n Logger.get().error(\"Navigation already in progress\", {\n visit: visit,\n session: this.navigationSession\n });\n lang.illegalState(\"Navigation already in progress\");\n }\n const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());\n navigation.initialiseVisitSegments(visit)\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, \"\", this.urlService.getCurrentRouterUrl()));\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 activeVisit$(): ValueModel<Visit> {\n return this._activeVisit$.readonly$;\n }\n\n async notifyVisitSegmentChanged(is: VisitSegment, was: VisitSegment): Promise<void> {\n // console.log(\"PlaceRouter.notifyVisitSegmentChanged\", is.toDebugString(), was.toDebugString());\n this.placeHistory.updateVisitSegment(is);\n\n // FIXME: no route id -> route id duplicates route parameters\n const visit = this.activeVisit$.value.copyAndReplaceSegment(is);\n if (is.hasRoutingChangedFrom(was)) {\n // TODO: can I just do a regular navigate using an updated visit?\n // const {when} = Dsl.disposeWith(this);\n await this.doNavigation(visit, () => {\n const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegment(is);\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\n protected transitionTo(next: NavigationSession) {\n const previous = this.navigationSession$.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.navigationSession$.value = next;\n if (previous) {\n previous.dispose();\n }\n next.notifyActive();\n }\n\n // @Trace()\n\n private routingSessionFinished(visit?: Visit) {\n if (visit) {\n assert.isTruthy(this.navigationInProgress$.value);\n this.placeHistory.notifyNavigationFinished(visit);\n // We update the active visits before we finish the session so the\n // place outlets can ignore the incoming changes until things are settled.\n this._activeVisit$.value = visit;\n // console.log(visit.toDebugString())\n }\n const session = this.currentSession;\n session.dispose();\n this.navigationSession$.value = null;\n // console.log(`### Router Session Finished (was ${session.toString()})`);\n this.sessionFinishedJobs.forEach(job => job());\n this.sessionFinishedJobs = [];\n }\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(onSyncComplete: () => void = () => {\n // noop\n }): 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) => {\n this.runAfterRoutingSessionFinishes(() => {\n this.runAfterRoutingSessionFinishes(() => {\n onSyncComplete();\n resolve();\n });\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) => {\n // console.log(`No navigation in progress, starting synchronisation job`);\n this.runAfterRoutingSessionFinishes(() => {\n onSyncComplete();\n resolve();\n });\n const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(session);\n }));\n\n }\n }\n\n private toVisit(visitOrPlaceComponent: Visit | Constructable<PlaceComponent>, params?: Record<string, unknown>) {\n if (visitOrPlaceComponent instanceof Visit) {\n return visitOrPlaceComponent;\n } else {\n return Visit.goto(visitOrPlaceComponent, params);\n }\n }\n}\n\nexport namespace PlaceRouter {\n\n export interface Redirections {\n /**\n * NOTE: for now this only supports top level places. Support for child places will require a more fundamental\n * change to visits to support nesting\n */\n onAuthenticationFailure(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit | Constructable<PlaceComponent>;\n\n /**\n * NOTE: for now this only supports top level places. Support for child places will require a more fundamental\n * change to visits to support nesting\n * @param component\n */\n onAuthorisationFailure(component: Constructable<PlaceComponent>): (Constructable<PlaceComponent> | Visit)[];\n }\n}\n","import {Component, HostBinding, Input} from '@angular/core';\nimport {ThemePalette} from '@angular/material/core';\n\nimport {isNil} from 'lodash-es';\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 {\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}\n","<ng-content></ng-content>\n<span style=\"flex:1\"></span>\n<ng-content select=\"[slot='title-end']\"></ng-content>\n","import {Component, Inject} from '@angular/core';\nimport {Command} from '@coolon/pectin';\nimport {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} from '@angular/core';\nimport {Command, Constructable} from '@coolon/pectin';\nimport {Activity, ACTIVITY_DATA} from '../../activity';\nimport {Confirm} from '../../confirm';\nimport {AbstractConfirmDialogComponent} from '../abstract-confirm-dialog.component';\n\n@Component({\n selector: 'aup-confirmation-then-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 {Command} from '@coolon/pectin';\nimport {ACTIVITY_DATA} from '../../activity';\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} from '@angular/core';\nimport {Command} from '@coolon/pectin';\nimport {ACTIVITY_DATA} from '../../activity';\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 {\n ConfirmThenExecuteDialogComponent\n} 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, DelegatingValueModel, MutableValueModel} 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 if (!this.isComplete()) {\n assert.isFalsey(this.isComplete());\n resolveOrReject(this.deferredResult);\n this._complete = true;\n this.onComplete(this);\n this._activityBusy.dispose();\n } else {\n console.warn(\"finishActivity called when activity has already been finished\")\n }\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> {\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 loadActivity(activityRef: ActivityRef<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: ACTIVITY_DATA,\n useValue: activityRef.activityData\n }\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 {Component, HostBinding, Input, QueryList, ViewChild, ViewChildren} from \"@angular/core\";\nimport {MatTabGroup} from \"@angular/material/tabs\";\nimport {\n assert,\n BooleanValueModelChain,\n Constructable,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector,\n MutableValueModel, Trace\n} from \"@coolon/pectin\";\nimport {lang} from \"@coolon/typescript-utilities\";\n\nimport {findLast} from \"lodash-es\";\nimport {PlaceRouter} from \"../../../place/place-router\";\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 {\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 @Input()\n animationDuration = \"500ms\"\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 _started$ = new MutableValueModel<boolean>(false);\n readonly _ready$ = new MutableValueModel<boolean>(false);\n readonly _animating$ = new MutableValueModel<boolean>(false);\n\n readonly busy = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n\n readonly syncTabsJob: () => void = undefined;\n\n readonly stable$: BooleanValueModelChain;\n private wasActive = false;\n\n constructor(readonly placeRouter: PlaceRouter) {\n super();\n const {chain, valueOf, when} = Dsl.disposeWith(this);\n when(this.ready$).becomesTruthy(() => this.finaliseActivityStates())\n this.stable$ = valueOf.all(\n this.ready$,\n this._started$,\n chain(this.animating$).isFalsey()\n ).areTruthy();\n }\n\n get started$() {\n return this._started$.readonly$;\n }\n\n get ready$() {\n return this._ready$.readonly$;\n }\n\n get animating$() {\n return this._animating$.readonly$;\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 notifyReady(ready: boolean) {\n this._ready$.value = ready;\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 const isActive = this.getActiveActivityCount() > 0;\n // if (this.wasActive !== isActive) {\n // console.log({was: this.wasActive, is: isActive});\n // }\n // this.wasActive = isActive\n return isActive;\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 async 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 isActive = this.getActiveActivityCount() > 0;\n if (isActive) {\n this.triggerTabSynchronisation();\n } else {\n this.finishAndStartCleanup();\n }\n });\n this.launchActivity(activityRef);\n\n try {\n return await activityRef.activityResult;\n } finally {\n // console.log(\"closing activity\", activityType.name, this.activityRefs)\n if (!this.isActive()) {\n // wait until the activity route syncing has finished\n await this.placeRouter.waitActivitiesSynchronised();\n // console.log(\"activity syncing finished\")\n }\n }\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 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 setTimeout(() => {\n this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes\n }, this.getTabAnimationDurationInMillis());\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 // if this is the first activity let the interaction service know.\n const cleanedTabs = this.activityRefs.filter(tab => !tab.isComplete());\n this.activityRefs = cleanedTabs.concat(activityRef);\n const firstTime = this.activityRefs.length === 1;\n if (firstTime) {\n this.interactionServiceApi.notifyActive(this);\n }\n this.synchroniseSelectedTabIndex();\n }\n\n activityIndex(index: number, activityRef: ActivityRef<any, any, any>) {\n return index;\n };\n\n /**\n * Synchronises the selected tab index.\n */\n private synchroniseSelectedTabIndex(): void {\n assert.isTruthy(this.isActive());\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.getActiveActivityCount() - 1;\n const animate = this.activityRefs.length > 1;\n if (previousIndex !== newIndex) {\n this._animating$.value = animate;\n const activityRef = this.activityRefs[newIndex];\n activityRef.setFocused(false);\n this.busy.setDelegate(activityRef.activityBusy);\n this.tabs.selectedIndex = newIndex;\n // if (this.ready$.value) {\n // // Note: We're not using the animation done event as it's firing almost immeadiately.\n // setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDurationInMillis() : 0);\n // }\n }\n }\n\n finaliseActivityStates() {\n this._animating$.value = false;\n this.activityRefs = this.activityRefs.filter(tab => !tab.isComplete());\n this.activityRefs.forEach((ref, index) => {\n ref.setFocused(index === this.tabs.selectedIndex);\n });\n }\n\n private getSelectedOutlet() {\n return this.activityOutlets.toArray()[this.tabs.selectedIndex];\n }\n\n protected getTabAnimationDuration(): string {\n // const s = this._started$.value ? this.animationDuration : \"0\";\n // return s\n return this.animationDuration;\n }\n\n protected getTabAnimationDurationInMillis(): number {\n const match = this.animationDuration.match(/(\\d+)(.*)/);\n const numericValue = parseFloat(match[1]);\n switch (match[2].trim()) {\n case \"ms\":\n return numericValue;\n case \"s\":\n return 1000 * numericValue;\n }\n return lang.illegalState(`unsupported duration string: ${this.tabs.animationDuration}`);\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 if (this.isActive()) {\n this.synchroniseSelectedTabIndex();\n }\n }, 75);\n }\n\n onAnimationDone() {\n this._started$.value = true\n this.finaliseActivityStates()\n }\n}\n","<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"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, Proxify, proxify, StoreInValueModel, 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';\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() @StoreInValueModel()\n accessor activityClass: Constructable<Activity<D, R, E>>;\n\n @Input() @Proxify()\n accessor activityClass$ = proxify(ValueModel<Constructable<Activity<D, R, E>>>);\n\n @Input() @StoreInValueModel()\n accessor activityData: D;\n\n @Input() @Proxify()\n accessor activityData$ = proxify(ValueModel<D>);\n\n @Input() @StoreInValueModel()\n accessor face: CommandFace;\n\n @Input() @Proxify()\n accessor face$ = proxify(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\n @HostBinding('class.active')\n get isActive() {\n return this.interactionContext?.isActive();\n }\n\n}\n","import {AfterViewInit, Component, HostBinding, Inject, Input, Optional, ViewChild} from \"@angular/core\";\nimport {MAT_TABS_CONFIG, MatTabChangeEvent, MatTabsConfig} from \"@angular/material/tabs\";\nimport {Constructable, lang} 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\nconst cssDurationRegex = /(\\d+)(m?s)/;\n\n/**\n * @example\n * <aup-in-place-interaction-context #inPlaceInteractionContext>\n * </aup-in-place-interaction-context>\n *\n * in your component\n * @ViewChild(InPlaceInteractionContextComponent)\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 /**\n * If true the activity will sync with the router to enable back button support. This is a work around for\n * deeply nested activities that can't be linked with the root place interactionContext hook for cancelling\n * active interactions.\n */\n @Input()\n syncWithRoutes = true;\n\n get animationDuration(): string {\n return this.animateFirstActivity ? (this.tabConfig?.animationDuration || \"500ms\") : \"0ms\";\n }\n\n get animationDurationMillis() {\n const result = cssDurationRegex.exec(this.animationDuration)\n if (!result) {\n lang.illegalState(`unsupported css duration: ${this.animationDuration}`);\n }\n const multiplier = result[2] === 's' ? 1000 : 1;\n return multiplier * parseInt(result[1], 10);\n }\n\n @HostBinding(\"class.active\")\n get active() {\n return this.isActive();\n }\n\n readonly interactionService = this.inject(InteractionService);\n\n constructor(@Inject(MAT_TABS_CONFIG) @Optional() private readonly tabConfig: MatTabsConfig) {\n super();\n }\n\n ngAfterViewInit(): void {\n // NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.\n // https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9\n\n if (this.syncWithRoutes) {\n this.interactionService.registerInplaceInteractionContext(this);\n } else {\n this.activityContainerComponent.initialise(\"dont-care\", {\n async notifyActive(interactionContext: InteractionContext): Promise<unknown> {\n return undefined;\n },\n async notifyFinished(interactionContext: InteractionContext): Promise<unknown> {\n return undefined;\n }\n });\n }\n }\n\n // this is a regsitration callback from the interaction service\n // @Trace() // webstorm says no usages... but I'm not sure.\n onInplaceInteractionContextRegistered(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 onTabChanged($event: MatTabChangeEvent) {\n if ($event.index === 1) {\n setTimeout(() => this.activityContainerComponent.notifyReady(true), this.animationDurationMillis)\n } else {\n this.activityContainerComponent.notifyReady(false)\n }\n }\n}\n","<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [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, ViewChild} from '@angular/core';\nimport {InteractionContext} from '../../../interaction-context';\nimport {\n InPlaceInteractionContextComponent\n} from '../../inplace-interaction-context/in-place-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 override 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\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n","import {Component} from '@angular/core';\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 override 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\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n","import {CdkScrollable, ConnectedPosition, Overlay} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {Component, ElementRef, HostBinding, Input, Optional, SkipSelf} from '@angular/core';\nimport {Constructable, Proxify, proxify, StoreInValueModel, ValueModel} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../components/disposable-component';\nimport {Activity} from '../../activity';\nimport {\n InPlaceInteractionContextComponent\n} from '../inplace-interaction-context/in-place-interaction-context.component';\n\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 {\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 @Input() @Proxify()\n accessor cancelOnEscape$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor cancelOnEscape = true;\n\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: true,\n backdropClass: \"popup-interaction-context-backdrop\",\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 cancelEverything = async () => {\n do {\n // noop\n } while (await this.interactionContext.cancelActiveActivity())\n };\n const subs = this.scrollContainers.map(sc => sc.elementScrolled().subscribe(() => {\n overlayRef.updatePosition();\n })).concat(overlayRef.backdropClick().subscribe(cancelEverything))\n .concat(overlayRef.keydownEvents().subscribe(async (event) => {\n if (this.cancelOnEscape$.value && event.code === \"Escape\" && this.interactionContext.isActive()) {\n await this.interactionContext.cancelActiveActivity()\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}\n","<ng-content></ng-content>\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 override 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\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-popup-interaction-context>\n","import {Component, HostBinding, Input, 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 {\n InPlaceInteractionContextComponent\n} 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 {\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.face$).mapToList(face => [face]);\n }\n\n override 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\" [face$]=\"face$\" [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, ViewChild} from '@angular/core';\nimport {Command, Constructable, proxify, Proxify} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../components/disposable-component';\nimport {Activity} from '../../activity';\nimport {\n InPlaceInteractionContextComponent\n} 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 {\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() @Proxify()\n accessor addCommand = proxify(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\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, HostBinding, HostListener, Input} from '@angular/core';\nimport {Command, DirtyTrackingForm, FormValueModel, Validator} from '@coolon/pectin';\n\nimport {isNil} from 'lodash-es';\nimport {Enum} from 'typescript-string-enums';\nimport {CommandFace} from '../../../components/commands/command-face';\nimport {Activity} 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: `` })\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class InputActivity<T, D extends InputActivity.Data<T> = InputActivity.Data<T>> extends Activity<D, T> {\n\n readonly value$: FormValueModel<T>;\n\n @HostBinding('class') override 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.activityData?.layout ?? InputActivity.Layout.BLOCK;\n }\n\n constructor() {\n super();\n\n const form = new DirtyTrackingForm();\n this.value$ = form.valueModel<T>(this.activityData.initialValue);\n this.value$.validateUsing(this.activityData.validators || []);\n\n // TODO: move to global configuration\n this.confirmFace = this.activityData.confirmFace ?? {\n icon: () => 'mat:check'\n };\n this.cancelFace = this.activityData.cancelFace ?? {\n icon: () => 'mat:clear'\n };\n\n this.confirmCommand = Command.create(async () => {\n if (this.value$.validate()) {\n if (this.activityData.save) {\n const self = this;\n try {\n let allGood = true;\n const result = await this.activityData.save(this.value$.value, {\n injectError(error: string) {\n allGood = false;\n self.value$.injectErrors([error]);\n }\n });\n if (allGood) {\n this.done(this.value$.value);\n }\n } catch (e) {\n console.error(e);\n }\n } else {\n this.done(this.value$.value);\n }\n\n }\n });\n this.cancelCommand = Command.create(() => {\n this.cancel();\n });\n\n this.busyWhile(this.confirmCommand.busy$);\n\n this.onActivityReady(() => this.value$.focusContext.requestFocus());\n }\n\n @HostBinding(\"class\")\n get additionalCssClassName():string {\n return this.activityData.cssClassName ?? ''\n }\n\n @HostBinding(\"attr.data-cy\")\n get dataCyAttribute():string {\n return this.activityData.dataCy ?? ''\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.activityData.cancelOnEscape) // we default to true..\n || this.activityData.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>[] | ReadonlyArray<Validator<T>>,\n cancelOnEscape?: boolean,\n cssClassName?: string,\n dataCy?: 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 [value$]=\"value$\"\n [label]=\"activityData.label\"\n [placeholder]=\"activityData.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [dense]=\"true\"\n ></aup-string-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n `\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class StringInputActivity extends InputActivity<string> {\n}\n\nexport namespace StringInputActivity {\n export interface Data extends InputActivity.Data<string> {\n }\n}\n","import {\n assert,\n DelegatingValueModel,\n Dsl,\n GarbageCollector,\n ListModel,\n MutableListModel,\n MutableValueModel,\n ProxyRegistry,\n Validator,\n ValueModel\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\nProxyRegistry.registerOneTimeBinding(InlineEditorModel);\n","import {Component, HostBinding, Input, ViewChild} from '@angular/core';\nimport {\n BooleanValueModelChain,\n Command,\n DelegatingValueModel,\n Dsl,\n Proxify,\n proxify,\n StoreInValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport {lang} from '@coolon/typescript-utilities';\n\nimport {isEmpty} from 'lodash-es';\nimport {CommandFace} from '../../../../components/commands/command-face';\nimport {DisposableComponent} from '../../../../components/disposable-component';\nimport {InteractionService} from '../../../services/interaction.service';\nimport {\n InPlaceInteractionContextComponent\n} 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 {\n\n @Input() @Proxify()\n accessor editorModel = proxify(InlineEditorModel<string>);\n\n @Input() @Proxify()\n accessor facesModel = proxify(ValueModel<InlineStringEditorComponent.Faces>);\n\n @Input() @StoreInValueModel()\n accessor faces: InlineStringEditorComponent.Faces;\n\n @ViewChild(InPlaceInteractionContextComponent)\n interactionContext: InPlaceInteractionContextComponent<any, any, any>;\n\n @Input()\n label: string;\n\n @Input() @StoreInValueModel()\n accessor placeHolder: string;\n\n @Input() @Proxify()\n accessor placeHolder$ = proxify(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.onInit(() => {\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.placeHolder$.value : v;\n }, { dependsOn: this.placeHolder$, allowNil: true });\n\n })\n this.onDispose(() => this.cancelEdit());\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.placeHolder$.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 @HostBinding(\"class.disabled\")\n private get isDisabled() {\n return !this.editingEnabled$.value\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 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\" [face$]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\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 [value$]=\"value$\"\n [label]=\"activityData.label\"\n [placeholder]=\"activityData.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n [allowNil]=\"activityData.allowNil\"\n [dense]=\"true\"\n >\n <ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>\n </aup-select-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n `\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class SelectInputActivity<T> extends InputActivity<T, SelectInputActivity.Data<T>> {\n\n readonly defaultOptionLabelFormat = (option: T) => {\n return option ?\n this.activityData.optionLabel ?\n option[this.activityData.optionLabel]\n : option\n : \"\"\n };\n\n get optionLabelFormat() {\n return this.activityData.optionLabelFormat ?? this.defaultOptionLabelFormat;\n }\n\n get options(): readonly T[] {\n return this.activityData.optionsModel?.value || this.activityData.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 allowNil?: boolean;\n nilLabel?: string;\n }\n}\n","import {animate, group, style, transition, trigger} from '@angular/animations';\n\nconst slideDownOnEnterDef = style({\n opacity: 0,\n 'height': '0',\n 'max-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\n\nexport const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [\n transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition('open => closed', [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\nconst ZERO_WIDTH = {\n opacity: 0,\n width: '0',\n paddingLeft: '0',\n paddingRight: '0',\n};\nconst ZERO_HEIGHT = {\n opacity: 0,\n height: '0',\n paddingTop: '0',\n paddingBottom: '0',\n};\nexport const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [\n transition(':enter', [\n style({ overflow: \"hidden\", whiteSpace: \"nowrap\", ...ZERO_WIDTH, ...ZERO_HEIGHT }),\n animate('{{duration}}')\n ], { params: { duration: '100ms' } }),\n transition(':leave',\n [\n style({ overflow: \"hidden\", whiteSpace: \"nowrap\" }),\n group([\n animate('{{duration}}', style(ZERO_HEIGHT)),\n // Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.\n // Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little\n // bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.\n animate('300ms', style(ZERO_WIDTH)),\n ])\n ], { params: { duration: '100ms' } })\n]);\n","import {AfterViewInit, Component, HostBinding, Inject, Input, Optional, ViewChild} from \"@angular/core\";\nimport {MAT_TABS_CONFIG, MatTabsConfig} from \"@angular/material/tabs\";\nimport {Constructable, Trace} from \"@coolon/pectin\";\nimport {slideDownWhenOpenAnimation} from \"../../../animations/slide-animations\";\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\nconst cssDurationRegex = /(\\d+)(m?s)/;\n\n/**\n * This interaction context remains hidden (height: 0) until it is active.\n * @example\n * <aup-slide-down-interaction-context #inPlaceInteractionContext>\n * </aup-slide-down-interaction-context>\n *\n * in your component\n * @ViewChild(SlideDownInteractionContextComponent)\n * interactionContext: InteractionContext;\n *\n *\n */\n@Component({\n selector: \"aup-slide-down-interaction-context\",\n templateUrl: \"./slide-down-interaction-context.component.html\",\n styleUrls: [\"./slide-down-interaction-context.component.scss\"],\n animations: [\n slideDownWhenOpenAnimation\n ]\n})\nexport class SlideDownInteractionContextComponent<D, R, E> extends DisposableComponent implements InPlaceInteractionContext, AfterViewInit {\n\n @ViewChild(\"activityContainer\", {static: true})\n activityContainerComponent: ActivityContainerComponent<any, any, any>;\n\n // NOTE: disabling this as I'm using the initialise callback to release the hacky height clamp.\n // The whole registration thing is a bit naf so I should really clean that up at some point.\n // /**\n // * If true the activity will sync with the router to enable back button support. This is a work around for\n // * deeply nested activities that can't be linked with the root place interactionContext hook for cancelling\n // * active interactions.\n // */\n // @Input()\n // syncWithRoutes = true;\n\n @Input()\n dynamicHeight = true;\n\n @HostBinding(\"class.active\")\n get active() {\n return this.isActive();\n }\n\n // Horrible hack to stop the div and activity container bouncing back for a bit in after closing. No idea why it's doing that.\n protected clampShut = true;\n\n readonly interactionService = this.inject(InteractionService);\n\n constructor(@Inject(MAT_TABS_CONFIG) @Optional() private readonly tabConfig: MatTabsConfig) {\n super();\n }\n\n ngAfterViewInit(): void {\n // NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.\n // https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9\n\n const self = this;\n this.activityContainerComponent.initialise(\"dont-care\", {\n async notifyActive(interactionContext: InteractionContext): Promise<unknown> {\n self.clampShut = false;\n return undefined;\n },\n async notifyFinished(interactionContext: InteractionContext): Promise<unknown> {\n return undefined;\n }\n });\n\n // if (this.syncWithRoutes) {\n // this.interactionService.registerInplaceInteractionContext(this);\n // }\n }\n\n getAnimationState() {\n return {\n value: this.isActive() ? \"open\" : \"closed\",\n params: {duration: \"200ms\"}\n }\n }\n\n // this is a regsitration callback from the interaction service\n // @Trace() // webstorm says no usages... but I'm not sure.\n onInplaceInteractionContextRegistered(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 onAnimationDone() {\n if (!this.isActive()) {\n this.clampShut = true;\n }\n }\n}\n","<div [@slideDownWhenOpen]=\"getAnimationState()\" (@slideDownWhenOpen.done)=\"onAnimationDone()\" [style.max-height.px]=\"clampShut ? 0 : undefined\">\n <aup-activity-container #activityContainer [dynamicHeight]=\"dynamicHeight\"></aup-activity-container>\n</div>\n\n","import {Directive, EventEmitter, HostListener, Input, Output} from '@angular/core';\nimport {assert, Constructable, GarbageCollector} from '@coolon/pectin';\n\nimport {isFunction} from 'lodash-es';\nimport {Activity} from '../activity';\nimport {InteractionContext} from '../interaction-context';\n\n@Directive({\n selector: '[aupInteractionContextTriggerFor]'\n})\nexport class InteractionContextTriggerForDirective<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 {A11yModule} from '@angular/cdk/a11y';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {RouterModule} from '@angular/router';\nimport {ComponentsModule} from '../components/exports';\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 {ActivityBodyComponent} from './components/activity-body/activity-body.component';\nimport {ActivityContainerComponent} from './components/activity-container/activity-container.component';\nimport {ActivityOutletComponent} from './components/activity-container/activity-outlet/activity-outlet.component';\nimport {ActivityTitleComponent} from './components/activity-title/activity-title.component';\nimport {AbstractActivityTriggerComponent} from './components/activity-triggers/abstract-activity-trigger.component';\nimport {\n InlineActivityTriggerComponent\n} from './components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component';\nimport {\n ModalActivityTriggerComponent\n} from './components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component';\nimport {\n PopupActivityTriggerComponent\n} from './components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component';\nimport {AddCardActivityComponent} from './components/add-card-activity/add-card-activity.component';\nimport {\n AddItemInteractionContextComponent\n} 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 {\n ConfirmThenExecuteDialogComponent\n} from './components/confirm-then-execute-dialog/confirm-then-execute-dialog.component';\nimport {ConfirmationDialogComponent} from './components/confirmation-dialog/confirmation-dialog.component';\nimport {InlineStringEditorComponent} from './components/editors/inline-string-editor/inline-string-editor.component';\nimport {\n InPlaceInteractionContextComponent\n} from './components/inplace-interaction-context/in-place-interaction-context.component';\nimport {InputActivity} from './components/input-activities/input-activity';\nimport {SelectInputActivity} from './components/input-activities/select-input-activity';\nimport {StringInputActivity} from './components/input-activities/string-input-activity';\nimport {\n PopupInteractionContextComponent\n} from './components/popup-interaction-context/popup-interaction-context.component';\nimport {\n SlideDownInteractionContextComponent\n} from \"./components/slide-down-interaction-context/slide-down-interaction-context.component\";\nimport {InteractionContextTriggerForDirective} from './directives/interaction-context-trigger-for.directive';\nimport {InteractionService} from './services/interaction.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule,\n RouterModule,\n MatIconModule,\n DirectivesModule,\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 SlideDownInteractionContextComponent,\n AddItemInteractionContextComponent,\n ActivityActionsComponent,\n PopupInteractionContextComponent,\n StringInputActivity,\n SelectInputActivity,\n InputActivity,\n InteractionContextTriggerForDirective,\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 InteractionContextTriggerForDirective,\n StringInputActivity,\n SelectInputActivity,\n ActivityBodyComponent,\n PopupActivityTriggerComponent,\n InlineActivityTriggerComponent,\n ModalActivityTriggerComponent,\n AddCardActivityComponent,\n InlineStringEditorComponent,\n SlideDownInteractionContextComponent,\n ],\n providers: [\n InteractionService\n // {\n // provide: MAT_TABS_CONFIG, useValue: { animationDuration: \"2s\" }\n // }\n ]\n})\nexport class InteractionModule {\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}\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 {ComponentPortal} from '@angular/cdk/portal';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\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 Proxify,\n proxify,\n StoreInListModel,\n StoreInValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\n\nimport {isNil} from 'lodash-es';\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 {VisitSegment} from '../../visit-segment';\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 {\n\n @Input() @Proxify()\n accessor animate$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor animate = true;\n\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @Proxify()\n accessor customPlaceAnimationOrder$ = proxify(ListModel<Constructable<PlaceComponent>>);\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel()\n accessor customPlaceAnimationOrder: ReadonlyArray<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 currentVisitSegment$: ValueModelChain<VisitSegment>;\n private _isPushingVisitToRouter = 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 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.customPlaceAnimationOrder$)\n .otherwise(defaultPlaceAnimationOrder);\n\n this.activePlaceAnimationPosition = this.placesInAnimationOrder\n .reduceAll((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.animate$,\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.currentVisitSegment$ = chain(placeRouter.activeVisit$).map(visit => visit.getSegmentFor(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.authService.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 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 get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\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.animate$.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.currentVisitSegment$.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: VisitSegment, activePlace: PlaceComponent) {\n const visitModel = new MutableValueModel<VisitSegment>(routerVisit);\n DebugContext.tag(visitModel, `PlaceOutletComponent[${activePlace.constructor.name})].visitModel`);\n activePlace.initialiseVisit(routerVisit, (is, was) => {\n this.notifyComponentVisitSegmentChanged(is, was);\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.currentVisitSegment$)\n .changes(visit => {\n // console.log(\"routerVisitModel.change\", { routerVisitModel: this.routerVisitModel.value })\n this.pushVisitChangeToComponent(activePlace, visit);\n }, {\n unless: valueOf.any(\n this._isPushingVisitToRouter,\n this.currentVisitSegment$.isNil()\n ).areTruthy()\n });\n // chain(this.currentVisitSegment$).subscribe(it => {\n // if (it) {\n // console.log(\"PlaceOutlet segment updated\", it.toDebugString(), {\n // isPushing: this._isPushingVisitToRouter.value,\n // segment: this.currentVisitSegment$.value?.toDebugString()\n // })\n // }\n // })\n }\n\n private pushVisitChangeToComponent(activePlace: PlaceComponent, segment: VisitSegment) {\n // console.log(\"PlaceOutlet.pushVisitChangeToComponent\", segment.toDebugString());\n activePlace.updateVisit(segment);\n }\n\n private async notifyComponentVisitSegmentChanged(is: VisitSegment, was: VisitSegment) {\n try {\n this._isPushingVisitToRouter.value = true;\n await this.placeRouter.notifyVisitSegmentChanged(is, was);\n } finally {\n this._isPushingVisitToRouter.value = false;\n }\n // sanitisers may have adjusted other values in the visit to we check and write it back.\n const andBecame = this.currentVisitSegment$.value; // this is occasionally null... need to investigate if that's a normal state or not.\n // console.log(\"PlaceOutlet.notifyComponentVisitSegmentChanged\", { is, was, andBecame })\n if (andBecame && andBecame.hasChangedFrom(is)) {\n this.pushVisitChangeToComponent(this.activePlaceModel.value, andBecame)\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, TrackByFunction} from '@angular/core';\nimport {\n Command,\n Constructable,\n DelegatingValueModel,\n Dsl,\n ListModel,\n ListModelChain,\n Proxify,\n proxify,\n StoreInListModel,\n StoreInValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport {CommandFace} from '../../components/commands/command-face';\nimport {DisposableComponent} from '../../components/disposable-component';\nimport {NavItem} from '../nav-item';\nimport {PlaceComponent} from '../place-component';\nimport {PlaceDefinition} from '../place-definition';\nimport {PlaceRouter} from '../place-router';\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 {\n\n @Input() @StoreInListModel()\n accessor places: Constructable<PlaceComponent>[];\n\n @Input() @Proxify()\n accessor places$ = proxify(ListModel<Constructable<PlaceComponent>>);\n\n @Input() @StoreInValueModel()\n accessor placeOutlet: PlaceOutletComponent;\n\n @Input() @Proxify()\n accessor placeOutlet$ = proxify(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 private placeFaces = new Map();\n\n readonly trackByPlaceDef:TrackByFunction<MenuItem> = (index: number, data:MenuItem) => data.place;\n private authorisedPlaces$: ListModelChain<Constructable<PlaceComponent>>;\n\n constructor(readonly placeRouter: PlaceRouter) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.authorisedPlaces$ = chain(this.places$)\n .select(placeType => {\n const definition = PlaceComponent.getDefinition(placeType);\n const guard = this.placeRouter.authService.accessGuard$.value;\n return guard.isAuthorised(definition) || this.placeRouter.activeVisit$.value?.isPlaceActive(definition);\n }, {\n postponeWhile: this.placeRouter.navigationInProgress$,\n dependsOn: [this.placeRouter.authService.accessGuard$, this.placeRouter.activeVisit$]\n });\n\n this.placeDefinitions = chain(this.authorisedPlaces$).map(c => PlaceComponent.getDefinition(c))\n\n\n this.commandFactory = Command.createFactory((placeDefinition: PlaceDefinition) => {\n this.placeRouter.navigate(placeDefinition.component);\n });\n\n when(this.placeOutlet$).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 getNavigationFace(placeDef: PlaceDefinition): CommandFace {\n let face = this.placeFaces.get(placeDef);\n if (!face) {\n face = this.createCommandFaceFor(placeDef)\n this.placeFaces.set(placeDef, face);\n }\n\n return face;\n }\n\n private createCommandFaceFor(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}\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 aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\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, Input, TemplateRef} from \"@angular/core\";\nimport {Dsl, MutableValueModel, proxify, Proxify, StoreInValueModel, 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() @Proxify()\n accessor expanded$ = proxify(MutableValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n @HostBinding('class.expanded')\n accessor expanded = false;\n\n @ContentChild('navEndTemplate')\n navEndTemplate: TemplateRef<any>;\n\n readonly homeIcon$: ValueModel<string>;\n\n constructor(router: PlaceRouter) {\n super(router);\n const {chain} = Dsl.disposeWith(this);\n this.homeIcon$ = chain(this.expanded$).map(expanded => {\n return expanded ? \"mat:arrow_back\" : \"mat:menu\"\n });\n }\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()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle 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 [tabPanel]=\"tabPanel\">\n <ng-content select=\"[nav-start]\"></ng-content>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\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<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n","import {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCardModule} from \"@angular/material/card\";\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 {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 ComponentsModule,\n PortalModule,\n MatCardModule\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 {ObserversModule} from '@angular/cdk/observers';\nimport {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 {HighlightPipe} from \"./directives/highlight.pipe\";\nimport {InteractionModule} from './interaction/interaction.module';\nimport {PlaceModule} from './place/place.module';\n\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 ObserversModule\n ],\n exports: [\n InteractionModule,\n PlaceModule,\n DirectivesModule,\n ComponentsModule,\n NoopComponent,\n HighlightPipe\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./slide-animations\";\n","import {AfterViewInit, Directive, ElementRef, EventEmitter, NgZone, Output} from '@angular/core';\nimport {Dsl, GarbageCollector, MutableValueModel, ValueModel} from '@coolon/pectin';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport {DisposableComponent} from '../components/disposable-component';\nimport {Bounds} from '../components/types/bounds.class';\nimport {Point} from '../components/types/point.class';\n\n@Directive({\n selector:\"[aupOnResize]\",\n standalone: true\n})\nexport class ResizeObserverDirective extends DisposableComponent implements AfterViewInit {\n\n @Output() aupOnResize = new EventEmitter<Bounds>();\n\n protected readonly elementRef = this.inject(ElementRef);\n protected readonly ngZone = this.inject(NgZone);\n private _bounds$ = new MutableValueModel<Bounds>();\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 bounds$():ValueModel<Bounds> {\n return this._bounds$.readonly$;\n }\n\n private _updateBounds() {\n this._bounds$.value = Bounds.ofElement(this.elementRef.nativeElement)\n this.aupOnResize.emit(this._bounds$.value)\n }\n\n}\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 \"./garbage-collector.directive\";\nexport * from \"./highlight-text-model.directive\";\nexport * from \"./highlight.pipe\";\nexport * from \"./resize-observer.directive\";\n","import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';\nimport {Constructable, Disposable, GarbageCollector, lang} 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) {\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 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 this.activityContainer.notifyReady(true);\n });\n\n return activityResult;\n }\n}\n","import {Inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {MAT_DIALOG_DEFAULT_OPTIONS, MatDialog, 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 \"./components/slide-down-interaction-context/slide-down-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 {PlaceDefinition} from './place-definition';\n\nexport interface PlaceAccessGuard {\n isAuthenticated(): boolean;\n isAuthorised(placeDefinition: PlaceDefinition): boolean;\n}\n\nexport namespace PlaceAccessGuard {\n\n export class NoAuth implements PlaceAccessGuard {\n // @Trace()\n isAuthenticated(): boolean {\n return true;\n }\n // @Trace()\n isAuthorised(placeDefinition: PlaceDefinition): boolean {\n return true;\n }\n\n }\n}\n","import {Constructable, lang} from '@coolon/pectin';\n\nimport {isNil} from 'lodash-es';\nimport {PlaceComponent} from './place-component';\nimport {PlaceDefinition} from './place-definition';\n\nexport function Place(options: Place.Options) {\n return (target: Constructable<any>) => {\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 options.redirectToFirstChild ?? false\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 /**\n * @deprecated use #redirectToFirstChild instead as it handles child authorisation checks automatically\n */\n defaultChild?: Constructable<PlaceComponent>;\n redirectToFirstChild?: boolean;\n }\n\n}\n\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoopAuthGuard {\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 {NavigationSession} from '../navigation/session/navigation-session';\nimport {PlaceHistory} from '../place-history';\nimport {VisitSegment} from '../visit-segment';\n\nexport class VisitSegmentSanitiser {\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(segment: VisitSegment): Promise<VisitSegment> {\n const placeDef = segment.placeDefinition;\n if (placeDef.hasRouteId()) {\n const routeIdDef = placeDef.getRouteIdParameterDef();\n const routeId = segment.getRouteId();\n const sanitisedValue = await routeIdDef.sanitise(routeId, segment, 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 segment.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 sanitisedSegment: VisitSegment = segment;\n for (let i = 0; i < parameterDefs.length; i++) {\n const def = parameterDefs[i];\n const value = segment.getParameterValue(def);\n const sanitisedValue = await def.sanitise(value, sanitisedSegment, this.placeHistory, this.injector, this.navigationSession.isPopState);\n if (def.hasChanged(value, sanitisedValue)) {\n sanitisedSegment = sanitisedSegment.replace(def, sanitisedValue);\n }\n }\n\n return sanitisedSegment.hasChangedFrom(segment) ? sanitisedSegment : segment;\n }\n\n}\n","import {Injectable, Injector} from '@angular/core';\nimport {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Constructable, lang} from '@coolon/pectin';\nimport {InteractionService} from '../../interaction/services/interaction.service';\nimport {PlaceAuthService} from \"../place-auth-service\";\nimport {PlaceComponent} from '../place-component';\nimport {PlaceDefinition} from '../place-definition';\nimport {PlaceHistory} from '../place-history';\nimport {PlaceRouter} from '../place-router';\nimport {VisitSegmentSanitiser} from '../route/visit-segment-sanitiser';\nimport {UrlService} from '../url-service';\nimport {UrlSnapshot} from '../url-snapshot';\nimport {Visit} from \"../visit\";\nimport {VisitSegment} from '../visit-segment';\nimport {ConsolidatedParameterMap} from './consolidated-param-map';\n\n@Injectable({providedIn: 'root'})\nexport class PlaceGuard {\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 get authService(): PlaceAuthService {\n return this.placeRouter.authService;\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 await this.placeRouter.authService.waitUntilAuthenticationReady();\n\n const authenticated = this.authService.isAuthenticated();\n\n if (!authenticated) {\n const redirect = this.authService.getAuthenticationFailureRedirect(activatedRoute, state);\n // const nextPlaceDef = this.getPlaceDefinition(redirect);\n if (redirect.requiresAuthentication()) {\n lang.illegalState(`onAuthenticationFailure hook returned place ${redirect.toDebugString()} that requires authentication.`);\n }\n return this.createUrlTree(redirect);\n }\n\n await this.authService.waitUntilAuthorisationReadyFor(placeDefinition);\n\n if (!this.authService.isAuthorised(placeDefinition)) {\n const nextRedirect = this.findBestAuthenticatedAlternative(placeDefinition, activatedRoute);\n return this.createUrlTree(nextRedirect);\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.getVisitSegmentFor(placeDefinition) || new VisitSegment(placeDefinition, parsedParams);\n const sanitiser = new VisitSegmentSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);\n const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));\n // Save the visit with any updated parameters. We need to save it so we remember any non route parameters\n navigationSession.updateVisitSegment(sanitisedVisit);\n\n const destUrlSnapshot = this.urlService.parseUrl(state.url);\n if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {\n // Regenerate the url and update our visit segment in the session\n // console.log('##### Place Guard Redirect', destUrlSnapshot.updateVisitSegment(sanitisedVisit));\n return destUrlSnapshot.updateVisitSegment(sanitisedVisit);\n } else {\n\n // Our visit parameters are all sorted, now check if we should redirect to our child.\n if (destUrlSnapshot.isLastPlaceInUrl(placeDefinition) && placeDefinition.redirectToFirstChild) {\n if (placeDefinition.children.length < 1) {\n lang.illegalState(`redirectToFirstChild set to true, but there were no children `);\n }\n for (const child of placeDefinition.children) {\n if (!child.authenticate || this.authService.isAuthorised(child)) {\n return destUrlSnapshot.appendSegment(new VisitSegment(child))\n }\n }\n // hmm, what should I do here, we didn't have an authorised child\n lang.illegalState(`redirectToFirstChild set to true, but there were no authenticated children`);\n }\n\n return true;\n }\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 private findBestAuthenticatedAlternative(placeDefinition: PlaceDefinition, activatedRoute: ActivatedRouteSnapshot):Visit {\n let currentPlace = placeDefinition;\n while (!currentPlace.isRoot()) {\n currentPlace = currentPlace.parent;\n const permittedChild = currentPlace.findChild(c => this.authService.isAuthorised(c));\n if (permittedChild) {\n return Visit.goto(permittedChild.component);\n }\n }\n // Couldn't find an authorised ancestor so we check if there are router level defined alternatives\n const alternativeRoutes = this.placeRouter.getAuthorisationFailureRedirectOptions(activatedRoute.component);\n if (alternativeRoutes.length < 1) {\n return lang.illegalState(`onAuthorisationFailure hook didn't return any alternate places`);\n } else {\n const nextRedirect = alternativeRoutes.find(it => it.isAuthorised(this.authService))\n return nextRedirect ?? lang.illegalState(`onAuthorisationFailure hook didn't return any authorised locations`);\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> | VisitSegment | PlaceDefinition): PlaceDefinition {\n return result instanceof VisitSegment ?\n result.placeDefinition :\n result instanceof PlaceDefinition ?\n result :\n PlaceComponent.getDefinition(result);\n }\n\n private createUrlTree(visit: Visit) {\n return this.urlService.createUrlSnapshot(visit.segments).urlTree;\n }\n\n // @Trace()\n async cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, next: () => Promise<boolean | UrlSnapshot | UrlTree>): Promise<boolean | UrlSnapshot | UrlTree> {\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","import {isNaN as _isNaN, isNumber} from 'lodash-es';\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 {\n Binding, CanProxy,\n Constructable,\n DebugContext, DelegatingValueModel,\n Functions,\n HasValue,\n lang,\n MutableValueModel,\n Proxify, ProxifyMechanics, ValueModel\n} from '@coolon/pectin';\nimport {Klass, Opts} from '@coolon/typescript-utilities';\nimport {isNil} from \"lodash-es\";\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\n// function 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>(formatter: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: object, propertyKey: string | symbol) => {\n const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, formatter);\n // installMechanics(parameterDef, prototype, propertyKey, '@RouteId');\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);\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 Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);\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 Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);\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-auth-service\";\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-segment\";\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-segment-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 {GarbageCollector, MutableValueModel, ValueModel} from '@coolon/pectin';\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 _visible$ = new MutableValueModel<boolean>();\n // private _wakeEvents = new MutableStream<Instant>();\n // private _throttledWakeEvents: Stream<Instant>;\n\n constructor(@Inject(DOCUMENT) document: Document) {\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 app 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 this._visible$.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._visible$.value = this.isVisible();\n // this._wakeEvents.publish(Instant.now());\n }\n\n /**\n * @deprecated use visible$ instead.\n */\n get visibleModel(): ValueModel<boolean> {\n return this._visible$.readonly$;\n }\n get visible$(): ValueModel<boolean> {\n return this._visible$.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":["i1","i2","i1.FocusBindingFactory","i2.HighlightTextModelDirective","i3","i2.IconComponent","lang","i2.CommandDirective","i3.ScrollContainerComponent","i4.IconComponent","i5.CommandFaceComponent","i4","i1.CommandContainer","i6.PopupMenuRendererComponent","i2.FocusBindingFactory","i6.FocusBindingDirective","i5.CommandDirective","i5.FocusBindingDirective","i6.CommandComponent","i4.CommandDirective","i6","i7.IconComponent","i6.IconComponent","i7.CommandComponent","assert","i1.AbstractTableComponent","i1.CommandDirective","i3.IconComponent","i1.HighlightPipe","i5.IconComponent","i5.TableCellComponent","i6.TableHeaderCellComponent","i2.ToolBarComponent","i3.CommandComponent","i4.MoreMenuComponent","i1.HighlightTextModelDirective","i2.TableBodyComponent","i3.TreeInheritanceIconComponent","i1.MarkdownService","i2.CommandComponent","i1.ModalInteractionContextFactory","i3.InteractionService","i4.UrlService","i5.PlaceHistory","i2.MarkdownComponent","i3.ActivityActionsComponent","i4.ActivityTitleComponent","i5.ActivityBodyComponent","i1.PlaceRouter","i4.BusyOverlayComponent","i5","i6.ActivityOutletComponent","cssDurationRegex","i2.ActivityContainerComponent","i1.CommandComponent","i2.InPlaceInteractionContextComponent","i1.InteractionService","i2.PopupInteractionContextComponent","i3.CommandDirective","i4.CommandComponent","i6.InPlaceInteractionContextComponent","i3.InPlaceInteractionContextComponent","i1.StringInputComponent","i2.ActivityActionsComponent","i7.InPlaceInteractionContextComponent","i1.SelectInputComponent","i1.ActivityContainerComponent","i2.PlaceRouter","i6.GarbageCollectorDirective","i7.CommandFaceComponent","i2.UrlService","i3.PlaceRouter","i4.PlaceHistory","i5.InteractionService","_isNaN"],"mappings":"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"}
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/track.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/garbage-collector.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/commands/command-face.ts","../../../../libs/angular-ui-powerups/src/lib/components/cards/abstract-card-container.component.ts","../../../../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/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/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/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/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/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/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/tables/renderer/cell-portal-ref.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/column-text-search-formatter.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/custom-template-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/abstract-table.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/column-template/column-template.directive.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/editor/edit-session.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/paginator/paginator.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/paginator/paginator.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/selection-cell/selection-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/selection-cell/selection-cell.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/column/column-list-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/enable-cell-text-search.decorator.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/custom-value-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/editor-controls-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/list-propery-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/property-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/column/selection-column-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-more-menu/table-more-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-more-menu/table-more-menu.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/abstract-table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-cell/table-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-cell/table-cell.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-header-cell/table-header-cell.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-header-cell/table-header-cell.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-body/table-body.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-body/table-body.component.html","../../../../libs/angular-ui-powerups/src/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table-row-menu/table-row-menu.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/filter/table-filter-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table-model.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/table.component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/table/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-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-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-table-component.ts","../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-table.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/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/components.module.ts","../../../../libs/angular-ui-powerups/src/lib/components/exports.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-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/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/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-segment.ts","../../../../libs/angular-ui-powerups/src/lib/place/visit.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-auth-service.ts","../../../../libs/angular-ui-powerups/src/lib/place/place-history.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-router.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/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/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/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/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/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/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/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/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/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/components/input-activities/select-input-activity.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/directives/interaction-context-trigger-for.directive.ts","../../../../libs/angular-ui-powerups/src/lib/interaction/interaction.module.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/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-access-guard.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-segment-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 // eslint-disable-next-line @angular-eslint/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 {TrackByFunction} from '@angular/core';\nimport {AbstractConstructable, ValuePropertiesOf} from '@coolon/typescript-utilities';\n\nexport namespace Track {\n export const byIndex: TrackByFunction<any> = (index: number, item: any) => index;\n\n export function byId(): TrackByFunction<any> {\n return (index: number, item: any) => item[\"id\"];\n }\n\n export function byProperty<T, P extends keyof T = any>(property: P): TrackByFunction<T> {\n return (index: number, item: T) => item[property];\n }\n\n export function type<T>(type: AbstractConstructable<T>) {\n return {\n by<P extends ValuePropertiesOf<T>>(property: P) {\n return (index: number, item: T) => item[property];\n },\n using(callback: (instance: T) => any) {\n return (index: number, item: T) => callback(item);\n }\n };\n }\n}\n","import {Directive, inject, OnDestroy, OnInit, ProviderToken} from '@angular/core';\nimport {GarbageCollector, MutableValueModel} from '@coolon/pectin';\nimport {Track} from \"./track\";\nimport {Loadable} from \"./types/loadable\";\n\n@Directive()\nexport class DisposableComponent extends GarbageCollector implements OnInit, OnDestroy {\n\n readonly trackById = Track.byId();\n\n #_loaded$ = new MutableValueModel<boolean>();\n #asyncLoadables: Loadable[] = [];\n #awaitedLoadables: Loadable[] = [];\n #initCallbacks: (()=>void)[] = [];\n #initialised = false;\n\n protected onInit(callback: () => void) {\n if (this.#initialised) {\n callback();\n } else {\n this.#initCallbacks.push(callback);\n }\n }\n\n get loaded$() {\n return this.#_loaded$.readonly$\n }\n\n ngOnInit(): void {\n this.#initCallbacks.forEach(it => it());\n this.#asyncLoadables.forEach(it => it.ensureLoaded());\n if (this.#awaitedLoadables.length > 0) {\n Promise.all(this.#awaitedLoadables.map(it => {\n return it.ensureLoaded();//.then(() => console.log(`${it.constructor.name} loaded`));\n })).then(() => {\n this.#_loaded$.value = true;\n });\n } else {\n this.#_loaded$.value = true;\n }\n this.#initialised = true;\n }\n\n protected inject<T>(token: ProviderToken<T>):T {\n return inject(token);\n }\n\n protected injectLoadable<T extends Loadable>(token: ProviderToken<T>, options?: {wait: boolean}):T {\n const loadable = inject(token);\n if (this.loaded$.value) {\n loadable.ensureLoaded();\n } else {\n if (!options || options.wait === true) {\n this.#awaitedLoadables.push(loadable)\n } else {\n this.#asyncLoadables.push(loadable)\n }\n }\n return loadable;\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\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 = 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 {Inject, Injectable, NgZone} from '@angular/core';\nimport {FocusManager} 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} 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 // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements AfterViewInit {\n\n\n @Input() pectinFocusBinding: FocusManager.Context; // TODO: Support @Proxify()\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 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, OnDestroy} from '@angular/core';\nimport {GarbageCollector} from \"@coolon/pectin\";\n\n/**\n * Attaches a garbage collector that will be disposed with the directive. The main use case for it is\n * providing a disposal hook when using command factories.\n *\n * @example\n * <a *ngFor=\"let item of menuItems.value\"\n * aup-gc #gc=\"aup-gc\"\n * [pectinCommand]=\"commandFactory.create(item.place, gc)\"\n * </a>\n *\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[aup-gc]',\n exportAs: \"aup-gc\"\n})\nexport class GarbageCollectorDirective extends GarbageCollector implements OnDestroy {\n\n constructor() {\n super()\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n}\n","import {Directive, Input, OnDestroy} from '@angular/core';\nimport {GarbageCollector, proxify, Proxify, ValueModel} from '@coolon/pectin';\n\n@Directive({\n selector: '[aupHighlightTextModel]'\n})\nexport class HighlightTextModelDirective extends GarbageCollector implements OnDestroy {\n\n @Input() @Proxify()\n accessor aupHighlightTextModel = proxify(ValueModel<string>);\n constructor() {\n super();\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n}\n","import {OnDestroy, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {GarbageCollector, ValueModel} from '@coolon/pectin';\nimport escapeStringRegexp from \"escape-string-regexp\";\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(escapeStringRegexp(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 {GarbageCollectorDirective} from './garbage-collector.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 GarbageCollectorDirective\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 GarbageCollectorDirective\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 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 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, Proxify, proxify, StoreInValueModel, 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 {\n\n @Input() @Proxify()\n accessor busy$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor busy: boolean;\n\n}\n","<ng-content></ng-content>\n<div class=\"busy-overlay-backdrop\" *ngIf=\"busy$.value\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"52\"></mat-progress-spinner>\n</div>\n","import {Memoize} from '@typescript-plus/fast-memoize-decorator';\n\nimport {isFunction} from 'lodash';\nimport {Enum} from 'typescript-string-enums';\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): string {\n return isFunction(face?.color) ? face.color() : undefined;\n }\n\n export function getStyleOf(face: CommandFace): string {\n return isFunction(face?.style) ? face.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(): string {\n return CommandFace.getColorOf(this.face);\n }\n\n @Memoize()\n get style(): string {\n return CommandFace.getStyleOf(this.face);\n }\n\n }\n}\n","import {Component, ContentChild, Input, TemplateRef} from '@angular/core';\nimport {Command, proxify, Proxify} 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 {\n\n @Input() @Proxify()\n accessor addCardCommand = proxify(Command<any>);\n\n @Input()\n addCardFace: CommandFace;\n\n @ContentChild('addCardTemplate')\n addCardTemplate: TemplateRef<any>;\n\n constructor() {\n super();\n }\n\n}\n","import {Component, HostBinding, Input} from \"@angular/core\";\nimport {Proxify, proxify, StoreInValueModel, ValueModel} from \"@coolon/pectin\";\nimport {DisposableComponent} from \"../disposable-component\";\n\n@Component({\n selector: \"aup-scroll-container\",\n templateUrl: \"./scroll-container.component.html\",\n styleUrls: [\"./scroll-container.component.scss\"]\n})\nexport class ScrollContainerComponent extends DisposableComponent {\n\n @Input() @Proxify()\n accessor disableScroll$ = proxify(ValueModel<boolean>) ;\n\n @Input() @StoreInValueModel()\n @HostBinding(\"class.disable-scroll\")\n accessor disableScroll = false;\n\n constructor() {\n super();\n }\n\n}\n","<div class=\"scroll-container\" cdkScrollable>\n <ng-content></ng-content>\n</div>\n","import {Component, HostBinding, Input} from '@angular/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 @HostBinding(\"attr.icon\")\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():string {\n return `fa-${this.suffix}`;\n }\n\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\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\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, ViewEncapsulation} from '@angular/core';\nimport {Dsl, ListModelChain, MutableListModel, StoreInListModel, ValueModelChain} 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 {\n\n private readonly faces$ = new MutableListModel<CommandFace>();\n\n // tslint:disable-next-line:no-input-rename\n @Input('faces') @StoreInListModel(\"faces$\")\n accessor _rawFaces: CommandFace[] | ReadonlyArray<CommandFace>;\n\n @Input()\n set face(face: CommandFace) {\n this.faces$.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.faces$).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 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, ElementRef, HostBinding, Input} 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 {\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 enableScroll = false;\n\n constructor(private readonly elementRef: ElementRef) {\n super();\n this.onInit(() => 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=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\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 {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} from '@angular/core';\nimport {DisposableComponent} from '../../disposable-component';\nimport {CommandFace} from '../command-face';\nimport {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 {Component, ElementRef, HostBinding, Inject, Input, Optional, ViewChild} from \"@angular/core\";\n\nimport {MatButton} from \"@angular/material/button\";\n\nimport {\n BooleanValueModelChain,\n Command,\n Dsl,\n ListModelChain,\n Proxify,\n proxify,\n StoreInValueModel,\n ValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\n\nimport {isEmpty} from 'lodash';\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 {\n\n @Input() @Proxify()\n accessor command = proxify(Command<unknown>);\n\n @Input() @Proxify()\n accessor face$ = proxify(ValueModel<CommandFace>);\n\n @Input() @StoreInValueModel()\n accessor face: CommandFace;\n\n @Input() @Proxify()\n accessor busyFace$ = proxify(ValueModel<CommandFace>);\n\n @Input() @StoreInValueModel()\n accessor busyFace: CommandFace;\n\n CommandFace = CommandFace;\n\n @Input()\n @HostBinding(\"class\")\n alignFace: HorizontalAlignment = HorizontalAlignment.CENTER;\n\n @ViewChild(MatButton)\n protected button: MatButton;\n\n readonly faces$: ListModelChain<CommandFace>;\n readonly buttonStyle$: ValueModelChain<string>;\n readonly color$: ValueModelChain<string>\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.busyFace$.value, this.face$.value] :\n [this.face$.value, this.busyFace$.value];\n }, {allowNil: true, dependsOn: [this.face$, this.busyFace$]})\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\n override getFace(): CommandFace | undefined {\n return this.face;\n }\n\n requestFocus() {\n this.button.focus();\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} 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 {\n\n constructor() {\n super();\n }\n\n}\n","import {AfterContentChecked, Component, ElementRef, Inject, Input, QueryList, ViewChildren} from '@angular/core';\nimport {MatMenuTrigger} from '@angular/material/menu';\n\nimport {\n DelegatingValueModel,\n Disposable,\n Dsl,\n ListModelChain,\n MutableListModel,\n Proxify,\n proxify,\n StoreInValueModel,\n 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 faceAdapter$: 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() @StoreInValueModel()\n accessor enabled: boolean;\n\n @Input() @Proxify()\n accessor enabled$ = proxify(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.faceAdapter$ = chain(this.faceModelDelegate).map(f => new CommandFace.Adapter(f));\n this.faces$ = chain(this.faceAdapter$).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.faceAdapter$) {\n console.error('Somehow faceAdapterModel is nil -- set a break point here and let me know what\\'s going on');\n }\n return this.faceAdapter$?.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 override getFace(): CommandFace | undefined {\n return this.faceAdapter.face;\n }\n\n}\n","import {GarbageCollector} from '@coolon/pectin';\nimport {Enum} from 'typescript-string-enums';\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 { Component, 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 {\n\n\n constructor(parent: CommandContainer) {\n super(parent);\n }\n\n override get orientation(): CommandContainer.Orientation {\n return CommandContainer.Orientation.HORIZONTAL;\n }\n\n}\n","import {Component, ElementRef, HostBinding, Inject, Optional} from '@angular/core';\nimport {CommandContainer} from './group/command-container';\nimport {PopupAwareComponent} from './group/popup-aware.component';\nimport {POPUP_CONTAINER, PopupContainer} from './group/popup-container';\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 {\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}\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 {Track} from \"../../../../track\";\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 = Track;\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(): readonly 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 tooltip$ = new MutableValueModel<string>();\n\n @Input() @StoreInValueModel()\n accessor 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.tooltip$).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 {Component, ElementRef, Inject, Input, Optional, SkipSelf} from '@angular/core';\n\nimport {DelegateToValueModel, Dsl, StoreInValueModel, 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() @DelegateToValueModel('faceModelDelegate')\n accessor face$: ValueModel<CommandFace>;\n\n @Input() @StoreInValueModel()\n accessor 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} 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 {\n\n}\n","import {Component, HostBinding, Self} from '@angular/core';\nimport {Command, FocusManager} 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 {\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 // @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, Inject, InjectionToken, Input, Output} from '@angular/core';\nimport {FormGroupDirective, NgForm, UntypedFormControl} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {FloatLabelType} from \"@angular/material/form-field\";\nimport {\n Command,\n DelegatingValueModel,\n Disposable,\n EventListenerList,\n FocusManager,\n IMutableHasValue,\n ListModel,\n ValueModel\n} from '@coolon/pectin';\nimport {DisposableComponent} from '../disposable-component';\n\ninterface InputModel<T> extends IMutableHasValue<T>, Disposable {\n value: T;\n enabled$: ValueModel<boolean>;\n errors$: ListModel<string>;\n focusContext: FocusManager.Context;\n}\n\nconst INPUT_TOKEN_HACK = new InjectionToken<InputModel<any>>(\"INPUT_TOKEN_HACK\")\n\n@Component({template: ''})\nexport class AbstractInputComponent<T> extends DisposableComponent {\n\n protected onValueEditedListeners = new EventListenerList<(is: T, was: T) => void>();\n\n /**\n * A backing model for all our @Input() valueModel properties which should be defined as follows.\n *\n * @Input() @Proxify({useExisting: \"otherModel$\"})\n * value$: 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 protected readonly formValue$: InputModel<T>\n\n @Input() label: string;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('floatLabel') userFloatLabel: FloatLabelType = '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 private readonly _enabled$ = this.registerDisposable(new DelegatingValueModel<boolean>())\n\n @Input()\n set enabled$(condition$: ValueModel<boolean>) {\n this._enabled$.setDelegate(condition$);\n }\n\n get enabled$(): ValueModel<boolean> {\n return this._enabled$.readonly$;\n }\n\n // Note: I don't need to use delegates here as I never subscribe to the commands models\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.focus') focusCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.blur') blurCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.enter') enterCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.escape') escapeCommand: Command<any>;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('command.click') clickCommand: Command<any>;\n\n // TODO: fix this.\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() focus = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() blur = new EventEmitter();\n @Output() enterKey = new EventEmitter();\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(@Inject(INPUT_TOKEN_HACK) formValue$: InputModel<T>) {\n super();\n const self = this;\n this.formValue$ = this.registerDisposable(formValue$);\n this._enabled$.setDefault(formValue$.enabled$)\n this.errorStateMatcher = {\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n isEnabled(): boolean {\n return this.enabled$.value;\n }\n\n\n hasErrors(): boolean {\n return !this.errorList$.query().isEmpty();\n }\n\n get errorList$(): ListModel<string> {\n return this.formValue$.errors$;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList$.value[0] : null;\n }\n\n get focusContext() {\n return this.formValue$.focusContext;\n }\n\n get floatLabel(): FloatLabelType {\n // return this.dense ? 'never' : this.userFloatLabel;\n return 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 {\n Binding,\n ConvertedFormListModel,\n DebugContext,\n DelegateToListModel,\n DelegatingFormListModel,\n Dsl,\n FormListModel,\n Guard,\n MutableListModel\n} from \"@coolon/pectin\";\nimport {AbstractInputComponent} from \"./abstract-input.component\";\n\n@Component({template: \"\"})\nexport class AbstractListInputComponent<T> extends AbstractInputComponent<readonly T[]> implements OnInit {\n\n @Input() @DelegateToListModel(\"formValue$\")\n accessor list$: FormListModel<T> | ConvertedFormListModel<T, any> | MutableListModel<T>;\n\n readonly componentList$ = 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.list$ = 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(new DelegatingFormListModel<T>());\n const {when, valueOf, chain} = Dsl.disposeWith(this);\n const binding = this.registerDisposable(new Binding.Identity(this.formValue$, this.componentList$).writeRight());\n const inExternalChange = valueOf.any(\n this.setValueIsInProgress$,\n chain(binding.direction).equals(Binding.Direction.RIGHT)\n ).areTruthy();\n\n when(this.componentList$).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.formValue$, `${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 ConvertedFormValueModel,\n DebugContext,\n DelegateToValueModel,\n DelegatingFormValueModel,\n Dsl,\n FormValueModel,\n Guard,\n MutableValueModel\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() @DelegateToValueModel('formValue$')\n accessor value$: FormValueModel<T> | ConvertedFormValueModel<T, any> | MutableValueModel<T>;\n\n\n protected setValueInProgress$ = new Guard();\n readonly componentValue$ = 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.value$ = 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(new DelegatingFormValueModel<T>());\n const { when, chain, valueOf } = Dsl.disposeWith(this);\n const binding = this.registerDisposable(new Binding.Identity(this.formValue$, this.componentValue$).writeRight());\n const inExternalChange = valueOf.any(\n this.setValueInProgress$,\n chain(binding.direction).equals(Binding.Direction.RIGHT)\n ).areTruthy();\n\n when(this.componentValue$).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.formValue$, `${this.constructor.name}.formValueModel`);\n }\n\n}\n","import {AfterViewInit, Component, ContentChild, Input, TemplateRef, ViewChild} from \"@angular/core\";\nimport {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\nimport {MatInput} from \"@angular/material/input\";\nimport {\n Dsl,\n Guard,\n ListModel,\n ListModelChain,\n MutableValueModel,\n Predicate,\n Proxify,\n proxify,\n StoreInListModel\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 AfterViewInit {\n\n @Input() @Proxify()\n accessor rawTextContent$ = proxify(MutableValueModel<string>);\n\n @Input() @Proxify()\n accessor options$ = proxify(ListModel<T>);\n\n @Input() @StoreInListModel()\n accessor options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n allowNil: boolean;\n\n @Input()\n autoActiveFirstOption = true;\n\n @Input()\n autoFilter = true;\n\n @ViewChild(MatInput)\n matInputComponent: MatInput;\n\n @ContentChild('optionTemplate')\n optionTemplateRef: TemplateRef<any>;\n\n @ContentChild('nilOptionTemplate')\n nilOptionTemplateRef: TemplateRef<any>;\n\n private readonly inSearchUpdate$ = new Guard()\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 @Input()\n filterFactory: (filterText:string) => Predicate<T> = (filterText: string) => {\n const lowerCaseFilterValue = isString(filterText) ? filterText.toLowerCase() : '';\n return (option: T) => {\n const matches = !isEmpty(this.filterValue.value) && this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue);\n return matches;\n }\n };\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n const filter$ = chain(this.filterValue).map(v => this.filterFactory(v), {allowNil: true});\n this.filteredOptions = chain(this.options$)\n .select(option => !this.autoFilter || filter$.value(option), { dependsOn: filter$ });\n }\n\n ngAfterViewInit(): void {\n const { when } = Dsl.disposeWith(this);\n when(this.rawTextContent$).changes(content => {\n this.matInputComponent.value = content;\n }, {\n unless: this.inSearchUpdate$\n });\n }\n\n formatOption(option: T) {\n return this.optionLabelFormat(option);\n }\n\n updateFilter($event: string) {\n this.inSearchUpdate$.whileTrue(() => {\n this.rawTextContent$.value = $event;\n this.filterValue.value = $event;\n })\n }\n\n onSelect($event: MatAutocompleteSelectedEvent) {\n this.inSearchUpdate$.whileTrue(() => {\n this.rawTextContent$.value = undefined;\n this.value$[\"value\"] = $event.option.value;\n })\n }\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.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\"\n [autoActiveFirstOption]=\"autoActiveFirstOption\"\n (optionSelected)=\"onSelect($event)\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{formatOption(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-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\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{formatOption(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n","import {Component, Input} 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> {\n\n // @Input() @Proxify({ 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}\n","<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.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 {Binding, Dsl, ListModel, MutableListModel, Proxify, proxify, StoreInListModel} 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() @Proxify()\n accessor options$ = proxify(ListModel<T>);\n\n @Input() @StoreInListModel()\n accessor 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 private readonly ids$ = new MutableListModel<any>();\n\n constructor() {\n super();\n }\n\n selectAll(items: T[]) {\n this.ids$.value = items.map(item => this.options$.identityOf(item));\n }\n\n override ngOnInit() {\n super.ngOnInit();\n // NOTE: this has to be done after our parameter have been bound or we'll clobber the initial selected values with the writeRight\n const {chain} = Dsl.disposeWith(this);\n const lookup = chain(this.options$).indexUsing(this.options$.identityOf);\n const self = this;\n this.registerDisposable(new Binding(this.componentList$, this.ids$, {\n toLeft(selectedItems: any[], currentLeftValue?: T[]): T[] {\n const newValues = selectedItems.map(it => lookup.get(it)).filter(it => !it);\n // if our lookup didn't find anything then we return the previous values so we don't clobber selections when the options go empty\n return newValues.length < 1 && selectedItems.length > 0 ? currentLeftValue : newValues;\n },\n leftDependsOn: lookup,\n toRight(leftValue: T[], currentRightValue?: any[]): any[] {\n return leftValue ? leftValue.map(it =>self.options$.identityOf(it)) : []\n }\n })).writeRight()\n\n }\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [ngModel]=\"componentList$.value\"\n (ngModelChange)=\"selectAll($event)\"\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 options$.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, Input} 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> {\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}\n","<mat-form-field [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)]=\"componentValue$.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} 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> {\n\n @Input() autocomplete: string;\n\n constructor() {\n super();\n }\n\n}\n","<mat-form-field [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)]=\"componentValue$.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, TrackByFunction} from '@angular/core';\nimport {\n Binding,\n BooleanValueModelChain,\n Dsl,\n ListModel,\n ListModelChain,\n MutableValueModel,\n Proxify,\n proxify,\n StoreInListModel\n} from '@coolon/pectin';\nimport {isNil} from \"lodash\";\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() @Proxify()\n accessor options$ = proxify(ListModel<T>);\n\n\n @Input() @StoreInListModel()\n accessor options: readonly T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n allowNil: boolean;\n\n @ContentChild('selectedOptionTemplate')\n selectedOptionTemplateRef: TemplateRef<any>;\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 readonly isNil$: BooleanValueModelChain;\n\n private readonly id$ = new MutableValueModel<any>();\n\n readonly cookedOptions$: ListModelChain<T>;\n\n private readonly delegatedIdentityOf = (item: T) => this.options$.identityOf(item);\n\n readonly trackByIdentity: TrackByFunction<T> = (index: number, item: T) => this.delegatedIdentityOf(item) ?? index;\n\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.cookedOptions$ = chain(this.options$)\n .reduceToList(options => {\n return options.length < 1 && !isNil(this.componentValue$.value) ? [this.componentValue$.value] : options\n }, {\n dependsOn: this.componentValue$\n })\n .identifiedWith(this.delegatedIdentityOf)\n }\n\n select(item: T) {\n this.id$.value = this.delegatedIdentityOf(item);\n }\n\n override ngOnInit() {\n super.ngOnInit()\n\n // NOTE: this has to be done after our parameter have been bound or we'll clobber the initial selected values with the writeRight\n const {chain, before, when} = Dsl.disposeWith(this);\n const lookup = chain(this.options$).indexUsing(this.delegatedIdentityOf);\n const self = this;\n\n const binding = this.registerDisposable(new Binding(this.componentValue$, this.id$, {\n toLeft(selectedId: any, currentValue?: T): T {\n if (isNil(selectedId)) {\n return undefined;\n }\n const newValue = lookup.get(selectedId); // the list is empty or we're missing form it so don't touch the real value.\n return isNil(newValue) ? currentValue : newValue;\n },\n leftDependsOn: lookup,\n toRight(selectedValue: T, selectedId?: any): any {\n return self.delegatedIdentityOf(selectedValue)\n }\n })).writeRight();\n\n // TODO: we have to do this as the options identity function can change from identity to somethign else after\n // we already have an initial value. In that case the stored id will be wrong.\n // Probably a reasonable solution for it be to track changes in the identity function and handle it\n // at a more fundamental level. This may include checking if the function has changed... but currently\n // the function change things under the hood.\n const snapshotValueAndId = (value: T): any => ({\n value: value,\n id: this.delegatedIdentityOf(value)\n });\n let lastIdSnapshot: { value: T, id: any } = snapshotValueAndId(this.componentValue$.value);\n console.log(lastIdSnapshot)\n before(this.options$).changes(() => {\n lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);\n console.log(lastIdSnapshot)\n })\n when(this.options$).changes((is, was) => {\n const newIdSnapshot = snapshotValueAndId(lastIdSnapshot.value);\n console.log(lastIdSnapshot, newIdSnapshot)\n if (newIdSnapshot !== lastIdSnapshot.id) {\n this.id$.value = this.delegatedIdentityOf(this.componentValue$.value)\n }\n })\n\n }\n\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\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 cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [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 cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {Command, Dsl, Proxify, proxify, StoreInValueModel, 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> {\n\n @Input() autocomplete: string;\n\n @Input() @Proxify()\n accessor enableClear$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor enableClear = false;\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.componentValue$.value = \"\";\n });\n this.clearCommand.disableWhile(chain.stringValue(this.componentValue$).isBlank());\n }\n\n}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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-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} 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> {\n\n // @Input() @Proxify({ 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}\n","<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.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, Input} 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 {\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}\n","<label>{{label}}</label>\n<ng-content></ng-content>\n","import {Component, HostBinding, Input} from '@angular/core';\nimport {GarbageCollector, Proxify, proxify, StoreInValueModel, 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 {\n\n @Input() @Proxify()\n accessor loading$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor loading: boolean;\n\n @Input() @Proxify()\n accessor message$ = proxify(ValueModel<string>);\n\n @Input() @StoreInValueModel()\n accessor message: string;\n\n @HostBinding(\"class\")\n get state(): string {\n return this.loading$.value ? \"loaded\" : \"loading\";\n }\n}\n","<ng-content *ngIf=\"!loading$.value\"></ng-content>\n<section *ngIf=\"loading$.value\" class=\"loading-indicator-overlay\">\n <div class=\"loading-message\">\n <p>{{message$.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}\n","","import {Component, HostBinding, Input} 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 {\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}\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 QueryList,\n TemplateRef\n} from '@angular/core';\n\nimport {Dsl, Proxify, proxify, StoreInValueModel, 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 AfterContentInit {\n\n @Input() @Proxify()\n accessor switch$ = proxify(ValueModel<T>);\n\n @Input() @StoreInValueModel()\n accessor 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 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.switch$).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.switch$.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","import {ComponentType} from '@angular/cdk/overlay';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {TemplateRef, ViewContainerRef} from '@angular/core';\nimport {assert} from '@coolon/typescript-utilities';\nimport {ColumnModel, RowData} from '../column/column-model';\nimport {EditSession} from '../editor/edit-session';\nimport {TableCellComponent} from './table-cell/table-cell.component';\nimport {TableHeaderCellComponent} from './table-header-cell/table-header-cell.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\n abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>): void\n\n abstract onPortalAttached(host: Host, portalComponent: Portal): void\n}\n\nexport class CellHeaderPortalRef<Row, C> extends CellPortalRef<Row, TableHeaderCellComponent, C> {\n constructor(readonly componentType: ComponentType<C>, readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableHeaderCellComponent, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableHeaderCellComponent, portalComponent: C) {\n this.initialiseHeader(portalComponent, host.column);\n }\n\n}\n\nexport abstract class CellRendererPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellComponent<Row>, Portal> {\n abstract pushState(host: TableCellComponent<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: TableCellComponent<Row>, columnModel: ColumnModel<Row>) {\n host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellComponent<Row>, portalComponent: Portal) {\n host[PORTAL_RENDERER_COMPONENT] = portalComponent;\n this.updateComponent(portalComponent, host.getRowData(), true);\n }\n\n // @Trace()\n pushState(host: TableCellComponent<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, TableCellComponent<Row>, Portal> {\n\n constructor(readonly componentType: ComponentType<Portal>, readonly initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableCellComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellComponent<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: TableCellComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellComponent<Row>, portalComponent: undefined) {\n // don't care\n }\n\n // @Trace()\n pushState(host: TableCellComponent<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 {Injector} from \"@angular/core\";\nimport {Constructor} from \"@coolon/typescript-utilities\";\n\nexport abstract class ColumnTextSearchFormatter<T> {\n abstract format(value:T):string;\n}\n\nexport namespace ColumnTextSearchFormatter {\n\n export abstract class Delegate<T> extends ColumnTextSearchFormatter<T> {\n abstract initialise(injector:Injector);\n }\n\n export class Delegating<Row> extends ColumnTextSearchFormatter.Delegate<Row> {\n private _delegate: ColumnTextSearchFormatter<Row>;\n\n constructor(private readonly delegateClass: Constructor<ColumnTextSearchFormatter<Row>>) {\n super();\n }\n\n initialise(injector: Injector) {\n this._delegate = injector.get(this.delegateClass);\n if (this._delegate instanceof Delegating) {\n this._delegate.initialise(injector);\n }\n }\n\n format(row: Row): string {\n return this._delegate ? this._delegate.format(row) : \"\";\n }\n }\n\n export type Format<T> = (item:T) => string;\n\n export function forFormatter<Row>(formatter: (item: Row) => string):ColumnTextSearchFormatter<Row> {\n return new class extends ColumnTextSearchFormatter<Row> {\n format(value: Row): string {\n return formatter(value);\n }\n };\n }\n\n export class Null extends ColumnTextSearchFormatter<any> {\n format(value: any): string {\n return \"\";\n }\n }\n\n export class DefaultValueFormatter extends ColumnTextSearchFormatter<any> {\n format(value: any): string {\n // console.log(\"DefaultValueFormatter\", { value, text: s })\n return value?.toString() ?? \"\";\n }\n }\n\n export class DefaultArrayFormatter extends ColumnTextSearchFormatter<any[]> {\n format(value: any[]): string {\n return value ? value.map(it => it?.toString()).join(\",\") : \"\";\n }\n }\n}\n\n\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","{{headerText}}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {CdkPortalOutletAttachedRef} from \"@angular/cdk/portal\";\nimport {ComponentRef, Injector} from \"@angular/core\";\nimport {Command, DelegatingValueModel, Dsl, Functions, GarbageCollector, ValueModel} from \"@coolon/pectin\";\nimport {assert, lang, Stringy} from \"@coolon/typescript-utilities\";\nimport {Memoize} from \"@typescript-plus/fast-memoize-decorator\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {CellEditorPortalRef, CellHeaderPortalRef, CellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {\n DefaultHeaderCellRendererComponent\n} from \"../renderer/default-header-cell-renderer/default-header-cell-renderer.component\";\nimport {TableCellComponent} from \"../renderer/table-cell/table-cell.component\";\nimport {TableHeaderCellComponent} from \"../renderer/table-header-cell/table-header-cell.component\";\nimport {ColumnTextProperties} from \"./column-text-properties\";\n\n\nconst noop = () => {\n // noop\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\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\nclass ColumnTextSearchWrapper<Row> extends ColumnTextSearchFormatter.Delegate<Row>{\n private _delegate: ColumnTextSearchFormatter<any>;\n private _map: (row:Row) => any = Functions.identity;\n\n initialise(injector: Injector) {\n if (this._delegate instanceof ColumnTextSearchFormatter.Delegate) {\n this._delegate.initialise(injector);\n }\n }\n\n format(row: Row): string {\n const value = this._map(row);\n const result = this._delegate ? this._delegate.format(value) : \"\";\n // console.log({format: row, value, text:result})\n return result;\n }\n\n setDelegate<T>(formatter: ColumnTextSearchFormatter<T>, mapper?: (row:Row) => T) {\n this._delegate = formatter;\n this._map = mapper ?? Functions.identity;\n }\n}\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 _masterVisibility$ = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(true));\n private _userVisible$ = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(this._defaultVisibility$));\n readonly dasherisedColumnId: string;\n\n private readonly textSearchDelegate = new ColumnTextSearchWrapper<Row>();\n\n readonly visible$: ValueModel<boolean>;\n\n constructor(readonly columnId: string, private textPropertiesProvider: ColumnModel.TextPropertiesProvider) {\n super();\n const {valueOf} = Dsl.disposeWith(this);\n this.installHeaderRenderer();\n this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();\n this.visible$ = valueOf.all(\n this._userVisible$,\n this._masterVisibility$\n ).areTruthy()\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 visibleWhile(visible: ValueModel<boolean>): this {\n this._userVisible$.setDelegate(visible);\n return this;\n }\n\n protected setDefaultVisibility(visible: ValueModel<boolean>) {\n this._defaultVisibility$.setDelegate(visible);\n }\n\n protected setMasterVisibility(visible: ValueModel<boolean>) {\n this._masterVisibility$.setDelegate(visible);\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\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 getSearchTextFor(row: Row): string {\n return this.textSearchDelegate.format(row)\n }\n\n configureColumnTextSearch(formatter: ColumnTextSearchFormatter<Row>):this\n configureColumnTextSearch<T>(formatter: ColumnTextSearchFormatter<T>, mapper: (row:Row) => T):this\n configureColumnTextSearch(formatter: ColumnTextSearchFormatter<any>, mapper?: (row:Row) => any):this {\n assert.notNil(formatter);\n // console.log({col: this.columnId, formatter});\n this.textSearchDelegate.setDelegate(formatter, mapper);\n return this;\n }\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: TableHeaderCellComponent, ref: CdkPortalOutletAttachedRef) {\n const component = this.getComponent(ref);\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellComponent<Row>, ref: CdkPortalOutletAttachedRef) {\n const component = this.getComponentOrEmbeddedView(ref);\n this._cellRendererPortalRef.onPortalAttached(host, component);\n }\n\n // @Trace()\n onEditorAttached(host: TableCellComponent<Row>, ref: CdkPortalOutletAttachedRef) {\n this._cellEditorPortalRef.onPortalAttached(host, this.getComponent(ref));\n }\n\n updatePortalContent(host: TableCellComponent<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 initialise(injector: Injector) {\n this.textSearchDelegate.initialise(injector);\n }\n}\n\nexport namespace ColumnModel {\n export const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');\n export type TextPropertiesProvider = () => ColumnTextProperties\n}\n\n","import {TemplateRef, ViewContainerRef} from \"@angular/core\";\nimport {TemplateCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {ColumnModel} from \"./column-model\";\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","import {Component, HostBinding, Injector, Input, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\nimport {\n DelegatingListModel,\n DelegatingValueModel,\n Dsl,\n ListModelChain,\n MapModelChain,\n MutableValueModel,\n Proxify,\n proxify,\n StoreInValueModel,\n ValueModel\n} from \"@coolon/pectin\";\nimport {lang} from '@coolon/typescript-utilities';\nimport {DisposableComponent} from \"../disposable-component\";\nimport {AbstractTableModel} from './abstract-table-model';\nimport {ColumnModel} from './column/column-model';\nimport {CustomTemplateColumnModel} from \"./column/custom-template-column-model\";\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = new TableModel(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 = new TableModel(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 DisposableComponent implements OnInit {\n\n @Input() @Proxify()\n accessor showHeader$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor showHeader = true;\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 enableScrolling = false;\n\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 // 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 protected readonly _visibleRows$ = this.registerDisposable(new DelegatingListModel<Row>());\n readonly highlightText$ = this.registerDisposable(new DelegatingValueModel<string>());\n\n protected readonly _dataSource$ = this.registerDisposable(new DelegatingListModel<Row>())\n\n @HostBinding('class')\n baseCssClass = 'aup-table-component';\n\n readonly trackBy = (index: number, item: Row) => {\n return this.identityOf ? this.identityOf(item) : index;\n };\n\n constructor(readonly injector: Injector) {\n super();\n const {chain, when} = Dsl.disposeWith(this);\n\n this._visibleRows$.setDelegate(this._dataSource$);\n\n when(chain(this._dataSource$).first()).becomesTruthy(it => {\n if (it === this.identityOf(it)) {\n console.warn(\"Table model identity function is using reference equality. This can cause lots of table re-rendering\", {\n rowType: it\n });\n }\n }, {once: true});\n }\n\n identityOf(row: Row): any {\n return this._dataSource$.identityOf(row);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n const {chain} = Dsl.disposeWith(this);\n const model = this.getModel();\n if (!model) {\n lang.illegalState(\"aup-table tableModel is nil\")\n }\n this.columnsById = chain(model.columns).indexBy('columnId');\n this._dataSource$.setDelegate(model.dataSource$);\n model.initialise(this.injector, (row) => this.identityOf(row));\n }\n\n get visibleRows$() {\n return this._visibleRows$.readonly$;\n }\n\n protected getModel(): AbstractTableModel<Row> {\n return lang.abstractMethod(this.constructor);\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}\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 {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\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 {Component, Input} from '@angular/core';\nimport {Command, DirtyTrackingForm, Proxify, proxify} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\nimport {EditSession} from '../edit-session';\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 EditRowControlsComponent<Row> extends DisposableComponent {\n\n @Input()\n row: Row\n\n @Input() @Proxify()\n accessor editRowCommand = proxify(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 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';\nimport {Dsl, PageController, proxify, Proxify} 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 {\n\n @Input() @Proxify()\n accessor pageController = proxify(PageController);\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n }\n get totalItems(): number {\n return this.pageController.totalItems$.value;\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>Items {{totalItems}}<span class=\"spacer\"></span>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} 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","<span [innerHTML]=\"value| aupHighlight\"></span>\n","import {Component} from '@angular/core';\nimport {MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxDefaultOptions} from \"@angular/material/checkbox\";\nimport {ThemePalette} from \"@angular/material/core\";\n\nimport {CanProxy, Command, MultipleSelectionModel, Proxify, proxify, SelectionModel} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\n\n@Component({\n selector: 'aup-selection-header-cell',\n templateUrl: './selection-header-cell.component.html',\n styleUrls: ['./selection-header-cell.component.scss'],\n providers:[\n {provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions}\n ]\n})\nexport class SelectionHeaderCellComponent<Row> extends DisposableComponent {\n\n readonly selectCommand: Command<void>;\n\n @Proxify()\n accessor selectionModel = proxify(SelectionModel<Row>);\n\n color: ThemePalette;\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.ifMultiSelectionModel(m => m.allSelected$.value, false);\n }\n\n isIntermediate() {\n return this.ifMultiSelectionModel(m => m.someSelected$.value, false);\n }\n\n isVisible() {\n return this.enableHeaderControls && this.isMultiSelectionModel()\n }\n\n isMultiSelectionModel(): boolean {\n return CanProxy.findRoot(this.selectionModel) instanceof MultipleSelectionModel\n }\n\n ifMultiSelectionModel<T>(runnable: (model$: MultipleSelectionModel<Row, any>) => T, otherwise?: T): T {\n if (this.isMultiSelectionModel()) {\n return runnable(this.selectionModel as unknown as MultipleSelectionModel<Row, any>);\n } else {\n return otherwise;\n }\n }\n\n handleClick(event$: Event) {\n this.selectCommand.execute();\n }\n}\n","<mat-checkbox *ngIf=\"isVisible()\"\n (click)=\"handleClick($event)\"\n [checked]=\"isSelected()\"\n [indeterminate]=\"this.isIntermediate()\"\n [color]=\"color\"\n></mat-checkbox>\n","import {Component, Input} from '@angular/core';\nimport {MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxDefaultOptions} from \"@angular/material/checkbox\";\nimport {ThemePalette} from \"@angular/material/core\";\n\nimport {Command, SelectionModel} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\n\n@Component({\n selector: 'aup-selection-cell',\n templateUrl: './selection-cell.component.html',\n styleUrls: ['./selection-cell.component.scss'],\n providers:[\n {provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions}\n ]\n})\nexport class SelectionCellComponent<Row> extends DisposableComponent {\n\n readonly selectCommand: Command<void>;\n\n @Input()\n row: Row\n\n // Note: we're not using track external here as it's incredibly slow to update when the table has a lot of rows.\n selectionModel: SelectionModel<Row>;\n\n color: ThemePalette;\n\n\n select($event: MouseEvent) {\n if (this.selectionModel) {\n this.selectionModel.selectCommand.execute(this.row);\n }\n }\n\n isSelected(): boolean {\n return this.selectionModel.isSelected(this.row);\n }\n\n isDisabled():boolean {\n return !this.selectionModel || !this.selectionModel.isEnabled();\n }\n\n}\n","<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\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, width: number, 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 _bounds$ = 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 bounds$(): ValueModel<Bounds> {\n return this._bounds$.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._bounds$.value;\n }\n\n private _updateBounds() {\n this._bounds$.value = Bounds.ofElement(this.nativeElement);\n }\n\n}\n\nexport namespace ResizeAwareComponent {\n\n}\n","import {AbstractComputedListModel, Dsl, lang, ListModel, MapModelChain, MutableListModel} from '@coolon/pectin';\n\nimport {isNil} from 'lodash';\nimport {ColumnModel} from './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 hasMatchingColumn(row: Row, regex: RegExp): boolean {\n // only search the visible columns\n return !!this.value.find(c => regex.test(c.getSearchTextFor(row)));\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 {ComponentType} from \"@angular/cdk/overlay\";\nimport {assert, Constructable, Klass} from \"@coolon/typescript-utilities\";\nimport {Enum} from \"typescript-string-enums\";\nimport {CellRenderer} from \"../renderer/cell-renderer\";\nimport {ColumnTextSearchFormatter} from \"./column-text-search-formatter\";\n\nconst TEXT_SEARCH_FORMATTER_KEY = `aup:table:textSearchFormatter`;\nexport const Keys = Enum(\"useFunction\", \"useInstance\", \"useClass\");\nexport type Keys = Enum<typeof Keys>;\n\ninterface UseFunction<Row> {\n [Keys.useFunction]: (row: Row) => string;\n}\n\ninterface UseInstance<Row> {\n [Keys.useInstance]: ColumnTextSearchFormatter<Row>;\n}\n\ninterface UseClass<Row> {\n [Keys.useClass]: Constructable<ColumnTextSearchFormatter<Row>>;\n}\n\nexport function EnableCellTextSearch<Row>(options: UseFunction<Row> | UseInstance<Row> | UseClass<Row>): ClassDecorator {\n assert.notNil(options);\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (constructor: Function) => {\n const klass = Klass.get(constructor);\n assert.isFalsey(klass.hasOwnMetadata(TEXT_SEARCH_FORMATTER_KEY), \"class already decorated with @EnableCellTextSearch\");\n klass.defineMetadata(TEXT_SEARCH_FORMATTER_KEY, options);\n };\n}\n\nexport namespace EnableCellTextSearch {\n export function getFormatter(renderer: ComponentType<CellRenderer<any>>, useDefault: () => ColumnTextSearchFormatter<any>): ColumnTextSearchFormatter<any> {\n const options = Klass.get(renderer).getMetadata(TEXT_SEARCH_FORMATTER_KEY) ?? {};\n if (options[Keys.useFunction]) {\n return ColumnTextSearchFormatter.forFormatter(options[Keys.useFunction]);\n }\n if (options[Keys.useInstance]) {\n return options[Keys.useInstance];\n }\n if (options[Keys.useClass]) {\n return new ColumnTextSearchFormatter.Delegating(options[Keys.useClass]);\n }\n return useDefault();\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\n\nimport {isFunction} from \"lodash-es\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {EnableCellTextSearch} from \"../filter/enable-cell-text-search.decorator\";\nimport {ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {DefaultCellRendererComponent} from \"../renderer/default-cell-renderer/default-cell-renderer.component\";\nimport {CellRendererOptions, ColumnModel, OnComponentInit} from \"./column-model\";\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.configureColumnTextSearch(\n EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()),\n row => this.getValue(row)\n );\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","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Command, DirtyTrackingForm} from \"@coolon/pectin\";\nimport {EditRowControlsComponent} from \"../editor/edit-row-controls/edit-row-controls.component\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {ColumnModel, RowData} from \"./column-model\";\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(EditRowControlsComponent);\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 override getDefaultHeaderText(): string {\n return '';\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Functions, Types, Validator} from \"@coolon/pectin\";\nimport {assert} from \"@coolon/typescript-utilities\";\nimport {isFunction} from \"lodash-es\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {EnableCellTextSearch} from \"../filter/enable-cell-text-search.decorator\";\nimport {CellListEditorComponent} from \"../renderer/cell-editors\";\nimport {CellEditorPortalRef, ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {CellRenderer} from \"../renderer/cell-renderer\";\nimport {DefaultCellRendererComponent} from \"../renderer/default-cell-renderer/default-cell-renderer.component\";\nimport {ColumnModel} from \"./column-model\";\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _userFormat: (value: Types.ArrayElementType<Row, P>[]) => any;\n private _defaultSearchTextFormat = value => {\n const intermediate = (this._userFormat ?? Functions.identity)(value);\n return Array.isArray(intermediate) ?\n intermediate.map(v => v?.toString()).join(\", \") :\n intermediate?.toString()\n };\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<CellRenderer<Types.ArrayElementType<Row, P>[]>>): Omit<this, \"format\"> { // hack: format and cell renderers together break the types.\n this.configureColumnTextSearch(\n EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormat)),\n row => row[this.property]\n );\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n const rowValue = rowData.row[this.property];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...\n component.value = (this._userFormat) ? this._userFormat(rowValue) : rowValue;\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.list$ = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): Omit<this, \"cellRenderer\"> { // hack: format and cell renderers together break the types.\n assert.isFunction(formatter);\n this._userFormat = formatter;\n return this;\n }\n\n public selectRowOnClick(selectRowOnClick: boolean): this {\n return this._selectRowOnClick(selectRowOnClick);\n }\n}\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Functions, Types, Validator} from \"@coolon/pectin\";\nimport {assert} from \"@coolon/typescript-utilities\";\nimport {isFunction} from \"lodash-es\";\nimport {EditSession} from \"../editor/edit-session\";\nimport {EditableCellRenderer} from \"../editor/editable-cell-renderer\";\nimport {ColumnTextSearchFormatter} from \"../filter/column-text-search-formatter\";\nimport {EnableCellTextSearch} from \"../filter/enable-cell-text-search.decorator\";\nimport {CellEditorComponent} from \"../renderer/cell-editors\";\nimport {CellEditorPortalRef, ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {CellRenderer} from \"../renderer/cell-renderer\";\nimport {DefaultCellRendererComponent} from \"../renderer/default-cell-renderer/default-cell-renderer.component\";\nimport {CellRendererOptions, ColumnModel, MutableCellRendererOptions, OnComponentInit} from \"./column-model\";\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _userFormat: (value: Row[P]) => any;\n private _defaultSearchTextFormatter = (value: Row[P]) => {\n return (this._userFormat ?? Functions.identity)(value)?.toString()\n }\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, options?: CellRendererOptions<Row, E>): Omit<this, \"format\"> // hack: format and cell renderers together break the types.\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInit?: OnComponentInit<E>): Omit<this, \"format\">\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInitOrOptions?: CellRendererOptions<Row, E> | OnComponentInit<E>): Omit<this, \"format\"> {\n this.configureColumnTextSearch(\n EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormatter)),\n row => row[this.property]\n );\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 const rowValue = rowData.row[this.property];\n component.value = this._userFormat ? this._userFormat(rowValue) : rowValue;\n }));\n return this;\n }\n\n liveEditCellRenderer<E extends EditableCellRenderer<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 EditableCellRenderer<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[ColumnModel.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[ColumnModel.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.value$ = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): Omit<this, \"cellRenderer\"> { // hack: format and cell renderers together break the types.\n assert.isFunction(formatter);\n this._userFormat = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n","import {ThemePalette} from \"@angular/material/core\";\nimport {Dsl, Proxified, SelectionModel} from \"@coolon/pectin\";\nimport {ComponentCellRendererPortalRef} from \"../renderer/cell-portal-ref\";\nimport {SelectionHeaderCellComponent} from \"../renderer/select-header-cell/selection-header-cell.component\";\nimport {SelectionCellComponent} from \"../renderer/selection-cell/selection-cell.component\";\nimport {ColumnModel, RowData} from \"./column-model\";\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n private _color: ThemePalette = \"accent\";\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, readonly selectionModel: Proxified<SelectionModel<Row>>) {\n super(columnId, defaults);\n const {chain} = Dsl.disposeWith(this);\n this._selectRowOnClick(false);\n this.cellHeaderRenderer(SelectionHeaderCellComponent, (component) => {\n component.selectionModel = this.selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n component.color = this._color\n });\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectionCellComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = this.selectionModel;\n component.color = this._color\n }));\n this.setMasterVisibility(this.selectionModel.enabled$);\n this.setDefaultVisibility(chain(this.selectionModel.mode$).equals(SelectionModel.Mode.MULTIPLE));\n }\n\n useSelectionModel(selectionModel: SelectionModel<Row>) {\n this.selectionModel.setProxyTarget(selectionModel);\n }\n\n protected override getDefaultHeaderText(): string {\n return '';\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n /**\n * Set the checkbox to use a theme color e.g. \"primary\" | \"accent\" | \"warn\"\n */\n color(color: ThemePalette) {\n this._color = color;\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","import {CdkPortalOutletAttachedRef, ComponentPortal} from \"@angular/cdk/portal\";\nimport {Component, ComponentRef, HostListener, ViewChild} from \"@angular/core\";\nimport {MatMenuTrigger} from \"@angular/material/menu\";\nimport {\n Command,\n DelegatingValueModel,\n Dsl,\n MutableValueModel,\n StoreInValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\nimport {Constructable} from \"@coolon/typescript-utilities\";\nimport {DisposableComponent} from \"../../../disposable-component\";\nimport {CellRenderer} from \"../cell-renderer\";\nimport {TableMoreMenuPopupComponent} from \"./table-more-menu-popup/table-more-menu-popup.component\";\n\n@Component({\n selector: \"aup-table-more-menu\",\n templateUrl: \"./table-more-menu.component.html\",\n styleUrls: [\"./table-more-menu.component.scss\"]\n})\nexport class TableMoreMenuComponent<T> extends DisposableComponent implements CellRenderer<T> {\n\n\n private value$ = new MutableValueModel<T>();\n\n @StoreInValueModel()\n accessor value: T;\n\n @ViewChild(MatMenuTrigger)\n matMenuTrigger: MatMenuTrigger;\n\n private readonly popupType$ = new MutableValueModel<Constructable<TableMoreMenuPopupComponent<T>>>();\n\n popupComponentPortal$: ValueModelChain<ComponentPortal<TableMoreMenuPopupComponent<T>>>;\n\n private readonly _visible$ = this.registerDisposable(new DelegatingValueModel<boolean>());\n\n constructor() {\n super();\n const { chain } = Dsl.disposeWith(this);\n this.popupComponentPortal$ = chain(this.popupType$).map(type => new ComponentPortal(type));\n }\n\n configurePopupComponentType(popupComponentType: Constructable<TableMoreMenuPopupComponent<T>>) {\n this.popupType$.value = popupComponentType;\n }\n\n\n // Stops tree selection when clicking the menu button\n @HostListener(\"click\", [\"$event\"])\n preventDefault($event: MouseEvent) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n initialise($event: CdkPortalOutletAttachedRef) {\n const component = ($event as ComponentRef<TableMoreMenuPopupComponent<T>>).instance;\n component.initialise(this.value$, Command.create(() => this.matMenuTrigger.closeMenu()));\n this._visible$.setDelegate(component.visible$);\n }\n\n get visible$() {\n return this._visible$.readonly$;\n }\n\n}\n","<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-template matMenuContent [cdkPortalOutlet]=\"popupComponentPortal$.value\"\n (attached)=\"initialise($event)\"></ng-template>\n</mat-menu>\n\n<button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"more-menu-trigger\" *ngIf=\"visible$.value\">\n <aup-icon icon=\"mat:more_vert\"></aup-icon>\n</button>\n","import {ComponentType} from \"@angular/cdk/overlay\";\nimport {Injector} from \"@angular/core\";\nimport {\n assert,\n BooleanValueModelChain,\n Command,\n Constructable,\n DelegatingListModel,\n DirtyTrackingForm,\n Disposable,\n Dsl,\n EventListenerList,\n GarbageCollector,\n ListModel,\n MapModelChain,\n MutableListModel,\n Proxified,\n proxify,\n ProxyRegistry,\n SelectionModel,\n Types,\n ValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\nimport {lang} from \"@coolon/typescript-utilities\";\n\nimport {isFunction, isNil} from \"lodash-es\";\nimport {ColumnListModel} from \"./column/column-list-model\";\nimport {CellRendererOptions, ColumnModel, OnComponentInit} from \"./column/column-model\";\nimport {ColumnTextProperties} from \"./column/column-text-properties\";\nimport {CustomTemplateColumnModel} from \"./column/custom-template-column-model\";\nimport {CustomValueColumnModel} from \"./column/custom-value-column-model\";\nimport {EditorControlColumnModel} from \"./column/editor-controls-column-model\";\nimport {ListPropertyColumnModel} from \"./column/list-propery-column-model\";\nimport {PropertyColumnModel} from \"./column/property-column-model\";\nimport {SelectionColumnModel} from \"./column/selection-column-model\";\nimport {EditSession} from \"./editor/edit-session\";\n\nimport {ColumnTextSearchFormatter} from \"./filter/column-text-search-formatter\";\nimport {TextSearchPredicate} from \"./filter/text-search-predicate\";\nimport {CellRenderer} from \"./renderer/cell-renderer\";\nimport {\n TableMoreMenuPopupComponent\n} from \"./renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component\";\nimport {TableMoreMenuComponent} from \"./renderer/table-more-menu/table-more-menu.component\";\nimport DefaultArrayFormatter = ColumnTextSearchFormatter.DefaultArrayFormatter;\nimport DefaultValueFormatter = ColumnTextSearchFormatter.DefaultValueFormatter;\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 abstract class AbstractTableModel<Row> extends GarbageCollector {\n\n protected readonly _dataSource$ = this.registerDisposable(new DelegatingListModel<Row>());\n protected readonly _filteredRows$ = this.registerDisposable(new DelegatingListModel<Row>());\n protected readonly _visibleRows$ = this.registerDisposable(new DelegatingListModel<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 saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>;\n private _editorSessionByRowId: MapModelChain<any, EditSession<Row>>;\n\n private readonly rowClassNamePredicates: RowClass<Row>[] = [];\n\n private _columnTextPropertiesLookup: { [columnName: string]: ColumnTextProperties };\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 readonly textSearchPredicate$: ValueModel<TextSearchPredicate<Row>>;\n protected identityOf: (item: Row) => any;\n readonly dataSourceEmpty$: ValueModel<boolean>;\n private readonly selectionModelProxy = proxify(SelectionModel<Row>) as Proxified<SelectionModel<Row>>;\n\n readonly selectedItems$: ListModel<Row>;\n readonly leadSelection$: ValueModel<Row>;\n readonly hasSelection$: BooleanValueModelChain;\n\n public constructor() {\n super();\n const {chain} = 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\n this.textSearchPredicate$ = chain(this.visibleColumns).reduce(columns => {\n return (row: Row, regex: RegExp) => {\n return (!regex || !!columns.find(c => regex.test(c.getSearchTextFor(row))));\n }\n })\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 this.dataSourceEmpty$ = chain(this.dataSource$).isEmpty();\n\n this.selectedItems$ = this.selectionModelProxy.selectedItems$;\n this.leadSelection$ = this.selectionModelProxy.leadSelection$;\n this.hasSelection$ = chain(this.selectedItems$).isNotEmpty();\n }\n\n protected setDataSource(dataSource$) {\n this._dataSource$.setDelegate(dataSource$);\n }\n\n /**\n * Todo: make this force one table at a time\n * @param injector\n * @param identityOf\n * @param rest\n */\n initialise(injector: Injector, identityOf: (item: Row) => any) {\n // not sure if I should define these at the module level or not...\n const customInjector = Injector.create({\n providers: [\n {provide: DefaultValueFormatter},\n {provide: DefaultArrayFormatter}\n ],\n parent: injector\n });\n this.columns.value.forEach(c => c.initialise(customInjector));\n this.identityOf = identityOf;\n }\n\n get dataSource$() {\n return this._dataSource$.readonly$;\n }\n\n /**\n * Gets the rows that are visible after any filters are applied. If there are\n * no filters then this will be the same as the root dataset.\n */\n get filteredRows$(): ListModel<Row> {\n return this._filteredRows$.readonly$;\n }\n\n /**\n * Gets the rows are currently visible to the user. I.e. the current page in a paged table or the\n * expanded rows in a tree table.\n */\n get visibleRows$(): ListModel<Row> {\n return this._visibleRows$.readonly$;\n }\n\n get rowsBeingEdited$(): ListModel<Row> {\n return this._rowsBeingEdited$.readonly$;\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, {disposedWith: this});\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\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 // TODO: clean this up and assign the selection model on teh table directly.\n // tableModel.useSelectionModel(model) and have the seleciton column automatically\n // added. Need to look at how we're using the visibility controls as well.\n // Should also lazy create the selection column model if someone accesses it.\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), this.selectionModelProxy);\n this.selectionColumnModel.useSelectionModel(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\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 addMoreMenu(componentClass: Constructable<TableMoreMenuPopupComponent<Row>>) {\n return this.addComponentColumn(\"more-menu\", TableMoreMenuComponent, (component:TableMoreMenuComponent<Row>) => {\n component.configurePopupComponentType(componentClass);\n }).columnTextProperties({\n headerText(): string {\n return \"\"\n }\n });\n }\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\n protected addColumn<C extends ColumnModel<Row>>(column: C, index?: number): C {\n return this._columnList.addColumn(column, index);\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\n isRowSelectionEnabledFor(column: ColumnModel<Row>): boolean {\n return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();\n }\n\n isRowSelectionEnabled() {\n return this.hasUserSelectionModelThatIsEnabled() && !this.rowSelectionDisabledOnAllColumns$.value;\n }\n\n hasUserSelectionModelThatIsEnabled() {\n const userSelectionModel = this.selectionColumnModel?.selectionModel.getProxyTarget();\n return !!userSelectionModel && userSelectionModel.enabled$.value;\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 } else {\n // console.log({\n // hasEnabledUserSelectionModel: this.hasUserSelectionModelThatIsEnabled(),\n // allSelectionDisabled: this.rowSelectionDisabledOnAllColumns$.value,\n // rowSelectionEnabled: this.isRowSelectionEnabled(),\n // rowSelectionEnabledForColumn: columnModel.isRowSelectionEnabled()\n // })\n }\n\n this.rowClickListeners.fire(l => l(row));\n }\n\n}\nProxyRegistry.registerOneTimeBinding(AbstractTableModel)\n","import {CdkPortalOutletAttachedRef, Portal} from \"@angular/cdk/portal\";\nimport {Component, ComponentRef, HostBinding, Input, OnChanges, SimpleChanges} from \"@angular/core\";\nimport {BooleanValueModelChain, Command, Dsl, HasFocusContext} from \"@coolon/pectin\";\nimport {DisposableComponent} from \"../../../disposable-component\";\nimport {AbstractTableModel} from \"../../abstract-table-model\";\nimport {ColumnModel, RowData} from \"../../column/column-model\";\nimport {EditSession} from \"../../editor/edit-session\";\nimport {CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL} from \"../cell-portal-ref\";\n\n@Component({\n selector: 'aup-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss']\n})\nexport class TableCellComponent<Row> extends DisposableComponent implements 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 this.onInit(() => {\n const { chain} = 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\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 {CdkPortalOutletAttachedRef, Portal} from \"@angular/cdk/portal\";\nimport {Component, HostBinding, Input, OnInit} from \"@angular/core\";\nimport {ColumnModel} from \"../../column/column-model\";\nimport {HEADER_CELL_RENDERER_PORTAL} from \"../cell-portal-ref\";\n\n@Component({\n selector: 'aup-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss']\n})\nexport class TableHeaderCellComponent 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 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, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnInit, Output} from \"@angular/core\";\nimport {\n Dsl,\n ListModel,\n ListModelChain,\n MapModelChain,\n MutableValueModel,\n Proxify,\n proxify,\n StoreInValueModel,\n TransactionObserver,\n ValueModel\n} from \"@coolon/pectin\";\nimport {ResizeAwareComponent} from \"../../../resize-aware.component\";\nimport {AbstractTableModel} from \"../../abstract-table-model\";\nimport {ColumnModel} from \"../../column/column-model\";\n\n@Component({\n selector: \"aup-table-body\",\n templateUrl: \"./table-body.component.html\",\n styleUrls: [\"./table-body.component.scss\"],\n})\nexport class TableBodyComponent<Row> extends ResizeAwareComponent implements OnInit {\n\n @Input() @Proxify()\n accessor data$ = proxify(ListModel<Row>);\n\n @Input() @Proxify()\n accessor tableModel = proxify(AbstractTableModel<Row>);\n\n @Input() @Proxify()\n accessor showHeader$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor showHeader = true;\n\n @Output()\n readonly visibleRowCount = new EventEmitter<number>();\n\n @Input()\n trackBy: (index: number, item: Row) => any\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>(29);\n private readonly rowHeight$ = new MutableValueModel<number>(40);\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.showHeader$).map(show => {\n return show ? this.headerHeight$.value : 0;\n }, {dependsOn: this.headerHeight$});\n\n this._visibleRowCount$ = chain(this.bounds$).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.bounds$).pluckNumeric(\"height\").isLessThan(1)\n });\n\n when(this._visibleRowCount$).changes(visibleRows => {\n this.visibleRowCount.emit(visibleRows);\n }, {initialValue: \"triggerChangeUnlessNil\"});\n\n this.onInit(() => {\n this.columns$ = chain(this.tableModel.columns);\n this.columnIds$ = chain(this.columns$).pluck(\"columnId\");\n this.columnsById$ = chain(this.columns$).indexBy('columnId');\n })\n const txo = new TransactionObserver().onEvent(e => console.log(e.name, e.payload));\n txo.observe('this.boundsModel', this.bounds$);\n txo.observe('this._visibleRowCount$', this._visibleRowCount$);\n }\n\n @HostBinding(\"class.hide-header\")\n get hideHeader() {\n return !this.showHeader;\n }\n\n isEditing(row: Row): boolean {\n return !!this.tableModel.getEditSessionFor(row);\n }\n\n notifyCellClicked(columnModel: ColumnModel<Row>, row: Row) {\n this.tableModel._notifyCellClicked(columnModel, row);\n }\n\n // @Trace()\n isFirstVisibleColumn(columnId: string): boolean {\n return this.tableModel.firstVisibleColumn$.query().value?.columnId === columnId;\n }\n\n // @Trace()\n isLastVisibleColumn(columnId: string): boolean {\n return this.tableModel.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","<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"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 [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n","import {Component} from \"@angular/core\";\nimport {Command, DelegatingCommand, DelegatingValueModel, ValueModel} from \"@coolon/pectin\";\nimport {DisposableComponent} from \"../../../../disposable-component\";\n\n@Component({\n selector: 'aup-table-more-menu-popup',\n template: '',\n styleUrls: [],\n})\nexport class TableMoreMenuPopupComponent<T> extends DisposableComponent {\n\n private _value$ = this.registerDisposable(new DelegatingValueModel<T>())\n\n private readonly _visible$ = this.registerDisposable(new DelegatingValueModel<boolean>()).withDefault(true);\n private readonly _closeCommand = this.registerDisposable(new DelegatingCommand<void>())\n\n\n initialise(row$: ValueModel<T>, closeCommand: Command<void>) {\n this._value$.setDelegate(row$);\n this._closeCommand.setDelegate(closeCommand);\n }\n\n protected visibleWhile(condition: ValueModel<boolean>) {\n this._visible$.setDelegate(condition);\n return this;\n }\n\n get visible$(): ValueModel<boolean> {\n return this._visible$.readonly$\n }\n\n get closeCommand(): Command<void> {\n return this._closeCommand;\n }\n\n get value$() {\n return this._value$.readonly$;\n }\n\n\n}\n","import {Component, Input, 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 '../renderer/cell-renderer';\n\n\nclass MenuItemData<T extends object> {\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\"\n #comp\n [command]=\"action.factory.create(value, {disposedWith: comp})\"\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\" #comp [command]=\"action.factory.create(value, {disposedWith: comp})\"\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 object> 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, {disposedWith: this});\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 {\n DelegatingListModel,\n DelegatingValueModel,\n Disposable,\n DisposedWith,\n Dsl,\n GarbageCollector,\n Guard,\n ListModel,\n Predicate,\n ProxyRegistry,\n ValueModel\n} from \"@coolon/pectin\";\nimport escapeStringRegexp from \"escape-string-regexp\";\nimport {isEmpty} from \"lodash-es\";\nimport {TextSearchPredicate} from \"./text-search-predicate\";\n\nexport class TableFilterModel<Row> extends GarbageCollector {\n\n\n private readonly _source$ = this.registerDisposable(new DelegatingListModel<Row>());\n private readonly _rowPredicate$ = this.registerDisposable(new DelegatingValueModel<Predicate<Row>>());\n private readonly _searchText$ = this.registerDisposable(new DelegatingValueModel<string>());\n private readonly _textSearchPredicate$ = this.registerDisposable(new DelegatingValueModel<TextSearchPredicate<Row>>());\n private readonly _rowPredicate: ValueModel<(row: Row) => boolean>;\n private readonly inUpdate = new Guard();\n\n readonly filteredRows$: ListModel<Row>;\n\n\n constructor(options: TableFilterModel.Configuration<Row>) {\n super();\n options.disposedWith.registerDisposable(this);\n this.useSearchText(options.searchText$);\n this.useRowPredicate(options.predicate$)\n\n const {chain} = Dsl.disposeWith(this);\n\n const textSearchRegex$ = chain(this._searchText$).map(text => {\n return isEmpty(text) ? undefined : new RegExp(escapeStringRegexp(text), \"i\");\n }, {allowNil: true});\n\n this._rowPredicate = chain(this._rowPredicate$)\n .map(predicate => {\n const regex = textSearchRegex$.value;\n const textSearchPredicate = this._textSearchPredicate$.value;\n return (row: Row) => (!predicate || predicate(row)) && (!regex || !textSearchPredicate || textSearchPredicate(row, regex));\n }, {\n allowNil: true,\n dependsOn: [textSearchRegex$, this._textSearchPredicate$],\n postponeWhile: this.inUpdate\n });\n\n this.filteredRows$ = chain(this._source$).select(row => {\n return this._rowPredicate.value(row);\n }, {dependsOn: this._rowPredicate})\n }\n\n get highlightText$() {\n return this._searchText$.readonly$;\n }\n\n useSearchText(searchText$: ValueModel<string>) {\n this._searchText$.setDelegate(searchText$);\n }\n\n useRowPredicate(rowPredicate$: ValueModel<(row: Row) => boolean>) {\n this._rowPredicate$.setDelegate(rowPredicate$);\n }\n\n bindToTable(source$: ListModel<Row>, textSearchPredicate$: ValueModel<TextSearchPredicate<Row>>): Disposable {\n this.inUpdate.whileTrue(() => {\n this._source$.setDelegate(source$);\n this._textSearchPredicate$.setDelegate(textSearchPredicate$);\n })\n\n const dispose = () => {\n if (!this.isDisposed()) {\n this.inUpdate.whileTrue(() => {\n this._source$.setDelegate(undefined);\n this._textSearchPredicate$.setDelegate(undefined);\n })\n }\n }\n return {dispose}\n }\n\n}\n\nexport namespace TableFilterModel {\n\n export interface Configuration<Row> extends DisposedWith {\n predicate$?: ValueModel<Predicate<Row>>\n searchText$?: ValueModel<string>;\n }\n}\n\nProxyRegistry.registerOneTimeBinding(TableFilterModel)\n","import {ListModel, SelectionModel, ValueModel} from \"@coolon/pectin\";\nimport {AbstractTableModel} from \"../abstract-table-model\";\nimport {SelectionColumnModel} from \"../column/selection-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 if (sourceOfTruth) {\n this.setDataSource(sourceOfTruth);\n }\n }\n\n bindToTable(filteredRows$: ListModel<Row>, visibleRows$: ListModel<Row>) {\n this._filteredRows$.setDelegate(filteredRows$)\n this._visibleRows$.setDelegate(visibleRows$);\n }\n\n addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n return this._addSelectionColumn(selectionModel, showSelectionColumn);\n }\n}\n\n","import {Component, Injector, Input, OnInit} from \"@angular/core\";\nimport {\n CanProxy,\n DelegatingListModel,\n Dsl,\n MutableValueModel,\n PagedListModel,\n Proxify,\n proxify,\n StoreInValueModel,\n ValueModel\n} from \"@coolon/pectin\";\nimport {AbstractTableModel} from '../abstract-table-model';\nimport {AbstractTableComponent} from '../abstract-table.component';\nimport {TableFilterModel} from \"../filter/table-filter-model\";\nimport {TableModel} from \"./table-model\";\n\n/**\n * Create your model:\n * @example\n * this.heroTableModel = new TableModel(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 = new TableModel(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> implements OnInit {\n\n @Input() @Proxify()\n accessor tableModel = proxify(TableModel<Row>);\n\n @Input() @Proxify()\n accessor filterModel = proxify(TableFilterModel<Row>)\n\n\n @Input() @Proxify()\n accessor enablePaging$ = proxify(ValueModel<boolean>) ;\n\n @Input() @StoreInValueModel()\n accessor enablePaging = false;\n\n // enablePaging() {\n // if (isNil(this.pageController)) {\n // const pagedListModel = this.registerDisposable(PagedListModel.create(this._visibleRows$.getDelegate(), this._pageSize));\n // this._visibleRows$.setDelegate(pagedListModel);\n // this._pageController = pagedListModel.pageController;\n // }\n // }\n\n private _footerContentAdded = false;\n\n private readonly _filteredRows$ = this.registerDisposable(new DelegatingListModel<Row>())\n private _pageSize = new MutableValueModel<number>();\n private pagedListModel: PagedListModel.Wrapper<Row>;\n\n\n constructor(injector: Injector) {\n super(injector);\n const {when} = Dsl.disposeWith(this);\n this.onDispose(() => this.disposeOfPagedListModel());\n when(this.enablePaging$).changes(enabled => this.configurePaging(enabled));\n }\n\n override ngOnInit() {\n super.ngOnInit();\n if (CanProxy.hasTarget(this.filterModel)) {\n this.registerDisposable(this.filterModel.bindToTable(this._dataSource$, this.getModel().textSearchPredicate$));\n this.highlightText$.setDelegate(this.filterModel.highlightText$);\n this._filteredRows$.setDelegate(this.filterModel.filteredRows$)\n } else {\n this._filteredRows$.setDelegate(this._dataSource$);\n }\n this.configurePaging(this.enablePaging$.value)\n this.tableModel.bindToTable(this._filteredRows$, this._visibleRows$)\n }\n\n protected override getModel(): AbstractTableModel<Row> {\n return this.tableModel;\n }\n\n get pageController() {\n // TODO: need to support external page controllers if the paging occurs to our primary data source.\n return this.pagedListModel.pageController;\n }\n\n private configurePaging(enable: boolean) {\n if (enable) {\n if (!this.pagedListModel) {\n this.pagedListModel = PagedListModel.create(this._filteredRows$, this._pageSize);\n }\n this._visibleRows$.setDelegate(this.pagedListModel);\n } else {\n this.disposeOfPagedListModel();\n this._visibleRows$.setDelegate(this._filteredRows$);\n }\n }\n\n private disposeOfPagedListModel() {\n if (this.pagedListModel) {\n this.pagedListModel.dispose();\n this.pagedListModel = null;\n }\n }\n\n footerContentChanged($event: any) {\n // console.log($event);\n this._footerContentAdded = true;\n }\n //@Trace()\n\n updatePageSize(count: number) {\n this._pageSize.value = count;\n }\n}\n","<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [trackBy]=\"trackBy\"\n (visibleRowCount)=\"updatePageSize($event)\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n <aup-paginator *ngIf=\"enablePaging$.value\" [pageController]=\"pageController\"></aup-paginator>\n</section>\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 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 ] as string[];\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 ] as string[];\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 ] as string[];\n\n export const HAS_TAIL = [\n TreeInheritanceIconComponent.Type.ICON_PARENT,\n TreeInheritanceIconComponent.Type.ICON_THROUGH,\n TreeInheritanceIconComponent.Type.ICON_INHERITED_THROUGH_TERMINAL\n ] as string[];\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 {ComponentType} from '@angular/cdk/overlay';\nimport {Types} from '@coolon/pectin';\nimport {ColumnModel} from '../column/column-model';\nimport {ComponentCellRendererPortalRef} from '../renderer/cell-portal-ref';\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 labelFactory: TreeTableModel.LabelFactory<Row> = () => undefined;\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.StringValuePropertiesOf<Row>>(property: P) {\n this.useLabel(row => row[property] as unknown as string)\n }\n\n useLabel(factory: (row:Row) => string) {\n this.labelFactory = factory;\n }\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 = this.labelFactory(rowData.row);\n component.iconFactory = this.iconFactory;\n }));\n return this;\n }\n\n}\n","import {DelegatingValueModel, ListModel, MutableValueModel, SelectionModel, ValueModel} from '@coolon/pectin';\n\nimport {isFunction} from 'lodash';\nimport {AbstractTableModel} from '../abstract-table-model';\nimport {SelectionColumnModel} from \"../column/selection-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 private treeExpansionModel: TreeExpansionModel<Row>;\n private readonly flattenedDataSource: FlattenedTreeListModel<Row>;\n readonly childExtractor: (row: Row) => Row[];\n\n private _isExpandedPredicate$ = this.registerDisposable(new DelegatingValueModel<(node: Row) => boolean>())\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 this.childExtractor = isFunction(childAccessor) ? childAccessor : row => row[childAccessor] as unknown as Row[];\n this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));\n this.setDataSource(source$)\n }\n\n get isExpandedPredicate$() {\n return this._isExpandedPredicate$.readonly$;\n }\n\n bindToTable(expansionModel: TreeExpansionModel<Row>, filteredRows$: ListModel<Row>, visibleRows$: ListModel<Row>) {\n this.treeExpansionModel = expansionModel;\n // TODO: Move all the expansion model stuff out of here and have things use the expansion model directly\n this._isExpandedPredicate$.setDelegate(this.treeExpansionModel.isExpandedPredicate$)\n this._filteredRows$.setDelegate(filteredRows$)\n this._visibleRows$.setDelegate(visibleRows$);\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 isExpanded(row: Row) {\n return this.treeExpansionModel.isExpanded(row)\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 LabelFactory<Row> = (node: Row) => string;\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, HostBinding, Input, OnInit} from '@angular/core';\nimport {Dsl, ListModelChain, MutableValueModel, StoreInValueModel, ValueModelChain} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../disposable-component';\nimport {CellRenderer} from '../../renderer/cell-renderer';\nimport {DecoratedTreeNode} from '../decorated-tree-node';\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 node$ = new MutableValueModel<T>();\n\n @Input() @StoreInValueModel(\"node$\")\n accessor 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.node$).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 override ngOnInit(): void {\n super.ngOnInit();\n const { chain } = Dsl.disposeWith(this);\n this.canExpand = chain(this.node$).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && this.treeTableModel.isCollapsed(node);\n }, { dependsOn: this.treeTableModel.isExpandedPredicate$ });\n\n this.canCollapse = chain(this.node$).map(node => {\n return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.treeTableModel.isCollapsed(node);\n }, { dependsOn: this.treeTableModel.isExpandedPredicate$ });\n\n this.iconModel = chain(this.node$).map(node => {\n const expanded = this.treeTableModel.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.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.node$.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>, ReadonlyArray<T>> {\n\n constructor(private readonly source: ListModel<T>, private readonly childRef: (node: T) => T[], readonly expansionModel: TreeExpansionModel<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 {\n DelegatingListModel,\n Disposable,\n DisposedWith,\n Dsl,\n GarbageCollector,\n ListModel,\n MutableValueModel,\n ProxyRegistry\n} from '@coolon/pectin';\nimport {DecoratedTreeNode} from './decorated-tree-node';\n\n// TODO: Merge the tree expansion model and flattened tree model together to work like TableFilterModels. I.e.\n// the client model code can use this classes filteredRows$ to limit selection.\nexport class TreeExpansionModel<T> extends GarbageCollector {\n\n private readonly _source$ = this.registerDisposable(new DelegatingListModel<T>());\n private readonly collapsedIds = new Set<any>();\n\n private readonly _isExpandedPredicate$ = new MutableValueModel<(node: T) => boolean>(() => true);\n\n private readonly _visibleRows$ = this.registerDisposable(new DelegatingListModel<T>());\n\n constructor(options: DisposedWith) {\n super()\n options.disposedWith.registerDisposable(this);\n const {chain} = Dsl.disposeWith(this);\n this.updatePredicate();\n }\n\n bindToTable(source$: ListModel<T>, visibleRows$: ListModel<T>): Disposable {\n this._source$.setDelegate(source$);\n this._visibleRows$.setDelegate(visibleRows$)\n return Disposable.disposableThatRuns(() => {\n this._source$.setDelegate(undefined);\n this._visibleRows$.setDelegate(undefined)\n })\n }\n\n get visibleRows$() {\n return this._visibleRows$.readonly$;\n }\n\n protected identityOf(row: T) {\n return this._source$.identityOf(row);\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\nProxyRegistry.registerOneTimeBinding(TreeExpansionModel);\n","import {Component, Injector, Input, OnInit} from \"@angular/core\";\nimport {proxify, Proxify} from '@coolon/pectin';\nimport {TreeNode} from '@coolon/typescript-utilities';\nimport {AbstractTableModel} from '../abstract-table-model';\nimport {AbstractTableComponent} from '../abstract-table.component';\nimport {FlattenedTreeListModel} from \"./flattened-tree-list-model\";\nimport {TreeExpansionModel} from \"./tree-expansion-model\";\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: './tree-table.component.html',\n styleUrls: ['./tree-table.component.scss'],\n providers: [\n {provide: AbstractTableComponent, useExisting: TreeTableComponent}\n ]\n})\nexport class TreeTableComponent<T extends TreeNode<T>> extends AbstractTableComponent<T> implements OnInit {\n\n @Input() @Proxify()\n accessor treeTableModel = proxify(TreeTableModel<T>);\n\n @Input() @Proxify()\n accessor expansionModel = proxify(TreeExpansionModel<T>);\n\n constructor(injector: Injector) {\n super(injector);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n // TODO: clean up all this tightly coupled shit, should the expansion model really be separate from the tree model?\n if (!this.expansionModel) {\n this.expansionModel = new TreeExpansionModel<T>({disposedWith: this});\n }\n // Todo, turn this into a plain chain model\n const visibleRows$ = new FlattenedTreeListModel(this._dataSource$, row => this.treeTableModel.childExtractor(row), this.expansionModel)\n this._visibleRows$.setDelegate(visibleRows$);\n this.expansionModel.bindToTable(this._dataSource$, visibleRows$);\n this.treeTableModel.bindToTable(this.expansionModel, visibleRows$, this._visibleRows$);\n }\n\n override getModel(): AbstractTableModel<T> {\n return this.treeTableModel;\n }\n\n}\n","<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n","import {Component, ElementRef, Inject, Input, OnInit, PLATFORM_ID} from '@angular/core';\nimport {Dsl, Proxify, proxify, StoreInValueModel, 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() @Proxify()\n accessor content$ = proxify(ValueModel<string>);\n\n @Input() @StoreInValueModel()\n accessor 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, when } = Dsl.disposeWith(this);\n\n this.onInit(() => {\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\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 {Component, HostListener, Input, Self} from '@angular/core';\nimport {Command, FocusManager, proxify, Proxify} 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 {\n\n @Input('command.arrowRight') @Proxify()\n accessor rightArrowCommand = proxify(Command<void>);\n\n @Input('command.arrowLeft') @Proxify()\n accessor leftArrowCommand= proxify(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() focusManager: FocusManager) {\n super(focusManager);\n }\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 {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 {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 {\n PopupMenuRendererComponent\n} 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 {LabelledValueComponent} from './labelled-value/labelled-value.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/column/column-template/column-template.directive';\nimport {EditRowControlsComponent} from './tables/editor/edit-row-controls/edit-row-controls.component';\nimport {PaginatorComponent} from './tables/paginator/paginator.component';\nimport {DefaultCellRendererComponent} from './tables/renderer/default-cell-renderer/default-cell-renderer.component';\nimport {\n DefaultHeaderCellRendererComponent\n} from './tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component';\nimport {SelectionHeaderCellComponent} from './tables/renderer/select-header-cell/selection-header-cell.component';\nimport {SelectionCellComponent} from './tables/renderer/selection-cell/selection-cell.component';\n\n\nimport {TableBodyComponent} from './tables/renderer/table-body/table-body.component';\nimport {TableCellComponent} from './tables/renderer/table-cell/table-cell.component';\nimport {TableHeaderCellComponent} from './tables/renderer/table-header-cell/table-header-cell.component';\nimport {\n TableMoreMenuPopupComponent\n} from \"./tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component\";\nimport {TableMoreMenuComponent} from \"./tables/renderer/table-more-menu/table-more-menu.component\";\nimport {TableRowMenuComponent} from './tables/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 {\n TreeLabelCellRendererComponent\n} from './tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport {TreeTableComponent} from './tables/tree-table/tree-table-component';\nimport {MarkdownComponent} from './text/markdown/markdown.component';\nimport {VerticalFocusContainerComponent} from './vertical-focus-container/vertical-focus-container.component';\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 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 EditRowControlsComponent,\n ColumnTemplateDirective,\n DefaultCellRendererComponent,\n TableCellComponent,\n SelectionCellComponent,\n SelectionHeaderCellComponent,\n DefaultHeaderCellRendererComponent,\n TableHeaderCellComponent,\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 LabelledValueComponent,\n LoadingContainerComponent,\n MarkdownComponent,\n TableBodyComponent,\n TableMoreMenuComponent,\n TableMoreMenuPopupComponent,\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 EditRowControlsComponent,\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 LabelledValueComponent,\n LoadingContainerComponent,\n MarkdownComponent,\n TableMoreMenuComponent,\n TableMoreMenuPopupComponent,\n ],\n providers: [\n FocusBindingFactory,\n MarkdownService\n ]\n\n})\nexport class ComponentsModule {\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\";\nexport * from \"./busy-overlay/busy-overlay.component\";\nexport * from \"./cards/abstract-card-container.component\";\nexport * from \"./cards/card-container/card-container.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/column-list-model\";\nexport * from \"./tables/column/column-model\";\nexport * from \"./tables/column/column-text-properties\";\nexport * from \"./tables/column/custom-template-column-model\";\nexport * from \"./tables/column/custom-value-column-model\";\nexport * from \"./tables/column/editor-controls-column-model\";\nexport * from \"./tables/column/list-propery-column-model\";\nexport * from \"./tables/column/property-column-model\";\nexport * from \"./tables/column/selection-column-model\";\nexport * from \"./tables/column/column-template/column-template.directive\";\nexport * from \"./tables/editor/edit-session\";\nexport * from \"./tables/editor/editable-cell-renderer\";\nexport * from \"./tables/editor/edit-row-controls/edit-row-controls.component\";\nexport * from \"./tables/filter/column-text-search-formatter\";\nexport * from \"./tables/filter/enable-cell-text-search.decorator\";\nexport * from \"./tables/filter/table-filter-model\";\nexport * from \"./tables/filter/text-search-predicate\";\nexport * from \"./tables/paginator/paginator.component\";\nexport * from \"./tables/renderer/cell-editors\";\nexport * from \"./tables/renderer/cell-portal-ref\";\nexport * from \"./tables/renderer/cell-renderer\";\nexport * from \"./tables/renderer/default-cell-renderer/default-cell-renderer.component\";\nexport * from \"./tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component\";\nexport * from \"./tables/renderer/select-header-cell/selection-header-cell.component\";\nexport * from \"./tables/renderer/selection-cell/selection-cell.component\";\nexport * from \"./tables/renderer/table-body/table-body.component\";\nexport * from \"./tables/renderer/table-cell/table-cell.component\";\nexport * from \"./tables/renderer/table-header-cell/table-header-cell.component\";\nexport * from \"./tables/renderer/table-more-menu/table-more-menu.component\";\nexport * from \"./tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component\";\nexport * from \"./tables/table/table-model\";\nexport * from \"./tables/table/table.component\";\nexport * from \"./tables/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/loadable\";\nexport * from \"./types/point.class\";\nexport * from \"./vertical-focus-container/vertical-focus-container.component\";\n","import {ChangeDetectorRef, Component, HostBinding, Input, ViewChild} from \"@angular/core\";\nimport {Command, proxify, Proxify} from '@coolon/pectin';\nimport {Enum} from 'typescript-string-enums';\nimport {CommandFace} from '../../../components/commands/command-face';\nimport {CommandComponent} from \"../../../components/commands/command/command.component\";\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 {\n\n @ViewChild(\"confirmCommandComponent\")\n protected confirmCommandComponent: CommandComponent\n\n @ViewChild(\"cancelCommandComponent\")\n protected cancelCommandComponent: CommandComponent\n\n /**\n * @deprecated activity actions now use the confirm command of the activity automatically\n */\n @Input() @Proxify()\n accessor confirmCommand = proxify(Command<any>);\n\n /**\n * @deprecated activity actions now use the cancel command of the activity automatically\n */\n @Input() @Proxify()\n accessor cancelCommand= proxify(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 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 focusConfirm() {\n this.confirmCommandComponent.requestFocus();\n }\n\n focusCancel() {\n this.cancelCommandComponent.requestFocus();\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 #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n","import {AfterViewInit, Component, HostBinding, inject, InjectionToken, ViewChild} from \"@angular/core\";\nimport {\n Command,\n DelegatingValueModel,\n Disposable,\n Dsl,\n EventListenerList,\n MutableValueModel,\n Proxify,\n proxify,\n ValueModel\n} 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\ntype OnActivityReadyParams<D, R, E = any> = (activity: Activity<D, R, E>) => void;\n\n@Component({\n template: \"\"\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class Activity<D, R, E = any> extends DisposableComponent implements AfterViewInit {\n\n readonly activityData: D = inject(ACTIVITY_DATA);\n\n private readonly activityReadyListeners = new EventListenerList<OnActivityReadyParams<D, R, E>>();\n private readonly _busy$ = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n private _focused$ = this.registerDisposable(new DelegatingValueModel<boolean>());\n private _activityContext: Activity.Context<R, E>;\n private readonly _ready$ = new MutableValueModel<boolean>(false);\n\n @ViewChild(ActivityActionsComponent)\n protected activityActions: ActivityActionsComponent;\n\n @Proxify()\n accessor confirmCommand = proxify(Command<unknown>);\n\n @Proxify()\n accessor cancelCommand = proxify(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._focused$.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._focused$.setDelegate(activityContext.focused);\n when(this._focused$).becomesTruthy(() => {\n this.notifyActivityReady();\n });\n }\n\n ngAfterViewInit() {\n if (this.activityActions) {\n this.initialiseActivityAction(this.activityActions);\n }\n }\n\n protected initialiseActivityAction(activityActions: ActivityActionsComponent) {\n 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 notifyActivityReady() {\n this.activityReadyListeners.fire(l => l(this));\n this._ready$.value = true;\n console.log(\"ready\")\n }\n\n onActivityReady(callback: OnActivityReadyParams<D, R, E>): Disposable {\n return this.activityReadyListeners.add(callback);\n }\n\n autoFocus(focusable: { requestFocus(): void }) {\n return this.onActivityReady(() => focusable.requestFocus());\n }\n\n /**\n * @deprecated use #autoFocus instead\n * @param focusable\n */\n autoFocusOnActivityReady(focusable: { requestFocus(): void }) {\n return this.autoFocus(focusable);\n }\n\n get ready$(): ValueModel<boolean> {\n return this._ready$.readonly$;\n }\n\n get busy$(): ValueModel<boolean> {\n return this._busy$.readonly$;\n }\n\n get focused$(): ValueModel<boolean> {\n return this._focused$.readonly$;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busy$.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busy$.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","import {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-es\";\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 this.onActivityReady(() => {\n if (this.activityActions) {\n this.isDestructive() ? this.activityActions.focusCancel() : this.activityActions.focusConfirm()\n }\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 return isFunction(this.config['destructive']) && this.config[\"destructive\"]();\n }\n\n}\n","import {Component, Inject} from '@angular/core';\nimport {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// notifyActivityReady() {\n // super.notifyActivityReady();\n // const focusTarget = this.isDestructive() ? this.cancelCommand : this.confirmCommand;\n // focusTarget.\n // }\n\n}\n","import {Component, HostBinding, Input} from '@angular/core';\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 {\n\n @Input()\n @HostBinding(\"class.full-width\")\n fullWidth = false;\n}\n","<ng-content></ng-content>\n","import {ListModel, 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(): readonly 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,\n ListModel,\n ListModelChain,\n MutableListModel,\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.onInplaceInteractionContextRegistered(`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 this.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 extends GarbageCollector implements Api {\n\n constructor(private readonly placeRouter: PlaceRouter, private readonly contextRegistry: ContextRegistry) {\n super();\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() ?\n Promise.resolve() :\n this.placeRouter.syncInteractionContextIdsWithRouter();\n }\n }\n\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 {VisitSegment} from '../visit-segment';\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: VisitSegment, 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: VisitSegment, 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: VisitSegment, placeHistory: PlaceHistory, value: T) {\n if (this.isMissingFrom(visit)) {\n const returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);\n if (returningFromSomewhereElse) {\n const lastKnownVisit = placeHistory.getMostRecentVisitSegmentFor(visit.placeDefinition);\n if (this.remember && lastKnownVisit) {\n value = lastKnownVisit.getParameterValue(this);\n }\n }\n }\n return this.isEmptyValue(value) ? this.defaultValue : 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: VisitSegment) {\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<ReadonlyArray<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, Predicate} from '@coolon/pectin';\nimport {lang, Opts} from '@coolon/typescript-utilities';\nimport {Memoize} from '@typescript-plus/fast-memoize-decorator';\n\nimport {isEmpty, isNil, join} from 'lodash';\nimport {PlaceComponent} from './place-component';\nimport {ParameterDefinition} from './route/parameter-definition';\nimport {VisitSegment} from './visit-segment';\n\nexport class PlaceDefinition { //implements VisitableTree<PlaceDefinition> {\n\n private _parent: PlaceDefinition;\n\n constructor(readonly component: Constructable<PlaceComponent>,\n readonly path: string,\n readonly authenticate: boolean,\n readonly role: any,\n readonly data: Record<string, any>,\n readonly routeParameters: ParameterDefinition<any>[],\n readonly children: PlaceDefinition[],\n readonly redirectToFirstChild: boolean) {\n this.children.forEach(it => it.setParent(this));\n\n }\n\n @Memoize()\n ancestors(): PlaceDefinition[] {\n return this.parent ? this.parent.ancestors().concat([this.parent]) : [];\n }\n\n @Memoize()\n ancestorsAndSelf(): PlaceDefinition[] {\n return this.ancestors().concat(this);\n }\n\n protected setParent(parent: PlaceDefinition) {\n assert.isNil(this._parent);\n this._parent = parent;\n }\n\n get parent(): PlaceDefinition {\n return this._parent;\n }\n\n isRoot(): boolean {\n return !this._parent\n }\n\n hasParent(): boolean {\n return !this.parent\n }\n\n hasChildren(): boolean {\n return !isEmpty(this.children);\n }\n\n findChild(predicate: Predicate<PlaceDefinition>): PlaceDefinition | undefined {\n return this.children.find(predicate);\n }\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: VisitSegment) {\n const routeIdParameterDef = this.getRouteIdParameterDef();\n return routeIdParameterDef ? visit.getParameterValue(routeIdParameterDef) : null;\n }\n\n getFormattedRouteId(visit: VisitSegment): 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: VisitSegment, 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: VisitSegment): { [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): Record<string, any> {\n const result: Record<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 validateRouteParameters(params: Record<string, any>) {\n const defs = this.getVisitParameterDefs({\n includeRouteId: true,\n includeRouteParameters: true,\n includeNonRouteParameters: true\n }).reduce((result, def) => {\n return {...result, [def.name]: def}\n }, {});\n\n Object.keys(params).forEach(key => {\n const parameterDef = defs[key];\n if (!parameterDef) {\n lang.illegalState(`Parameter ${key} is not valid. Must be one of ${join(Object.keys(defs))}`)\n }\n\n if (!!params[key] && (Array.isArray(params[key]) !== parameterDef.isArray)) {\n lang.illegalState(`Parameter ${key} ${parameterDef.isArray ? \"must be an array\" : \"must not be an array\"}. Got ${params[key]}`)\n }\n })\n }\n\n hasAncestor(placeComponent: Constructable<PlaceComponent>) {\n return this.ancestors().find(a => a.component === placeComponent) != null;\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, inject} 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 ListModel,\n MutableValueModel,\n ValueModel\n} from '@coolon/pectin';\nimport {Klass} from '@coolon/typescript-utilities';\nimport {Memoize} from '@typescript-plus/fast-memoize-decorator';\nimport {isNil} from 'lodash';\nimport 'reflect-metadata';\nimport {DisposableComponent} from '../components/disposable-component';\nimport {InteractionContext} from '../interaction/interaction-context';\nimport {PlaceDefinition} from './place-definition';\nimport {PlaceRouter} from \"./place-router\";\nimport {ParameterDefinition} from './route/parameter-definition';\nimport {UrlSnapshot} from './url-snapshot';\nimport {VisitSegment} from './visit-segment';\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\n// class ParameterChangeInterceptor<T> {\n// constructor(parameterDef: ParameterDefinition<T>, model: ValueModel<T>, callback: PlaceComponent.InterceptCallback<T>, options: PlaceComponent.InterceptOptions) {\n// }\n//\n// async canProceed(nextState: VisitSegment, interactionContext: InteractionContext) {\n// return true;\n// }\n// }\n\n@Directive()\nexport class PlaceComponent extends DisposableComponent {\n\n private readonly _placeReadyCallbacks: (()=>void)[] = [];\n private visitModel = new MutableValueModel<VisitSegment>();\n private _inVisitUpdate = new Guard();\n private _active = new MutableValueModel<boolean>(false);\n\n interactionContext?: InteractionContext;\n readonly childPlaces$: ListModel<Constructable<PlaceComponent>>;\n // private readonly _parameterChangeInterceptors: ParameterChangeInterceptor<any>[] = [];\n\n\n canDeactivate?(interactionContext: InteractionContext): boolean | Promise<boolean>;\n\n\n protected readonly placeRouter = inject(PlaceRouter);\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$ = ListModel.constant(this.placeDefinition.children.map(d => d.component));\n }\n\n public initialiseVisit(visit: VisitSegment, notifyVisitChanged: (current: VisitSegment, previous: VisitSegment) => 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 get childPlaces() {\n return this.childPlaces$.value;\n }\n\n public updateVisit(visit: VisitSegment) {\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: VisitSegment, 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: VisitSegment): 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?: VisitSegment): VisitSegment {\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.createVisitSegmentFor(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 {isEqual, isNil, isString} from 'lodash';\nimport {PlaceDefinition} from './place-definition';\nimport {ParameterDefinition} from './route/parameter-definition';\n\nexport class VisitSegment {\n readonly visitParameters: Record<string, any>;\n\n constructor(readonly placeDefinition: PlaceDefinition, visitParameters: Record<string, any> = {}) {\n placeDefinition.validateRouteParameters(visitParameters)\n this.visitParameters = Object.freeze(visitParameters);\n }\n\n // @Trace()\n getRouteId(): string | null {\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 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<unknown>): boolean {\n return Object.keys(this.visitParameters).includes(parameterDef.name);\n }\n\n replace<T>(parameter: ParameterDefinition<T, unknown>, value: T): VisitSegment {\n return new VisitSegment(this.placeDefinition, {...this.visitParameters, [parameter.name]: value});\n }\n\n mergeRouteParameters(routeParams: Record<string, unknown>): VisitSegment {\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 VisitSegment(this.placeDefinition, params);\n }\n\n // @Trace()\n hasRoutingChangedFrom(other: VisitSegment): 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: VisitSegment) {\n const sameNonRouteParameters = isEqual(\n this.placeDefinition.getNonRouteParameters(this),\n this.placeDefinition.getNonRouteParameters(other)\n );\n return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);\n }\n\n createRouterCommands(): string[] {\n return this.hasRouteId() ?\n [this.placeDefinition.getFormattedRouteId(this), this.placeDefinition.getFormattedRouteParameters(this)] :\n [this.placeDefinition.getFormattedRouteParameters(this)];\n }\n\n copyMissingFrom(other: VisitSegment): VisitSegment {\n return new VisitSegment(this.placeDefinition, {...other.visitParameters, ...this.visitParameters});\n }\n\n toDebugString() {\n const bits = [this.placeDefinition.path];\n if (this.placeDefinition.authenticate) {\n bits.push(\"🔐\");\n }\n const keys = Object.keys(this.visitParameters);\n if (keys.length > 0) {\n bits.push(`(${keys.map(k => `${k}=${this.visitParameters[k]}`)}})`);\n }\n return bits.join('');\n }\n\n}\n","import {assert, Constructable} from \"@coolon/typescript-utilities\";\nimport {isEmpty, last} from \"lodash-es\";\nimport {Memoize} from \"typescript-memoize\";\nimport {PlaceAccessGuard} from \"./place-access-guard\";\nimport {PlaceComponent} from \"./place-component\";\nimport {PlaceDefinition} from \"./place-definition\";\nimport {VisitSegment} from \"./visit-segment\";\n\nexport class Visit {\n\n protected segmentsByPlaceComponent = new Map<Constructable<PlaceComponent>, VisitSegment>();\n protected readonly destinationSegment: VisitSegment;\n protected readonly destinationPlaceDef: PlaceDefinition;\n\n static goto(placeComponent: Constructable<PlaceComponent>, visitParameters?: Record<string, unknown>): Visit {\n return new Visit([new VisitSegment(PlaceComponent.getDefinition(placeComponent), visitParameters)])\n }\n\n static fromSegments(segments: VisitSegment[]): Visit {\n return new Visit(segments);\n }\n\n protected constructor(segments: VisitSegment[]) {\n assert.isTruthy(segments.length > 0);\n this.destinationSegment = last(segments);\n this.destinationPlaceDef = this.destinationSegment.placeDefinition\n segments.forEach(s => this.segmentsByPlaceComponent.set(s.placeDefinition.component, s))\n }\n\n protected get definedSegments(): Map<Constructable<PlaceComponent>, VisitSegment> {\n return Array.from(this.segmentsByPlaceComponent.values()).reduce((map, s) => {\n map.set(s.placeDefinition.component, s)\n return map;\n }, new Map())\n\n }\n\n withAncestorParameters(placeComponent: Constructable<PlaceComponent>, parameters: Record<string, unknown>): this {\n if (!this.destinationPlaceDef.hasAncestor(placeComponent)) {\n throw new Error(`Place ${placeComponent.name} is not an ancestor of ${this.destinationPlaceDef.component.name}`);\n }\n this.segmentsByPlaceComponent.set(placeComponent, new VisitSegment(PlaceComponent.getDefinition(placeComponent), parameters));\n return this;\n }\n\n get segments(): VisitSegment[] {\n return this.resolveSegments([this.definedSegments]);\n }\n\n private resolveSegments(defaults: Map<Constructable<PlaceComponent>, VisitSegment>[]) {\n return this.destinationPlaceDef.ancestorsAndSelf()\n .map(a => {\n const visit = new VisitSegment(a, {});\n return defaults\n .map(segments => segments.get(a.component))\n .filter(it => !!it)\n .reduce((it, other) => it.copyMissingFrom(other), visit)\n });\n }\n\n copyWithDefaultsFrom(other: Visit|undefined): Visit {\n const defaults = [this.definedSegments];\n if (other) {\n defaults.push(other.definedSegments);\n }\n return new Visit(this.resolveSegments(defaults));\n }\n\n copyAndReplaceSegment(replace: VisitSegment): Visit {\n // console.log(\"copyAndReplaceSegment\", replace.toDebugString());\n const segments = this.segments.map(s => s.placeDefinition === replace.placeDefinition ? replace : s);\n // console.log(\"copyAndReplaceSegment.result\", segments.map(s => s.toDebugString()).join(\"\\n\"));\n return new Visit(segments);\n }\n\n isPlaceActive(placeDefinition: PlaceDefinition): boolean {\n return !!this.getSegmentFor(placeDefinition);\n }\n\n @Memoize()\n getSegmentFor(placeDefinition: PlaceDefinition): VisitSegment {\n return this.segments.find(v => v.placeDefinition === placeDefinition);\n }\n\n getRouterCommands(): string[] {\n return this.segments.reduce((result, v) => {\n const path = v.placeDefinition.path;\n return isEmpty(path) ?\n [...result, path] : // Angular doesn't support route params on empty path segments\n [...result, path, ...v.createRouterCommands()];\n }, []);\n }\n\n isAuthorised(guard: PlaceAccessGuard): boolean {\n return this.segments.find(s => !guard.isAuthorised(s.placeDefinition)) == null;\n }\n\n requiresAuthentication() {\n return !!this.segments.find(s => s.placeDefinition.authenticate);\n }\n\n toDebugString() {\n return this.segments.map(s => s.toDebugString()).join(\"/\")\n }\n}\n\n\n// const visit2 = Visit.goto(AnotherPlace, {id: \"fred\"})\n// .withAncestorParameters(ParentA, {id: \"a\"}) // barf if not a ancestor or missing parameters are required or parameter isn't valid\n// .withAncestorParameters(ParentB, {id: \"c\"}) // barf if not a ancestor or missing parameters are required or parameter isn't valid\n//\n","import {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 {GarbageCollector, lang, Logger} 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 {VisitSegment} from \"../../visit-segment\";\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 _visitSegments = new Map<PlaceDefinition, VisitSegment>();\n\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n abstract readonly isPopState: boolean;\n\n\n private _interactionContext: InteractionContext;\n\n constructor(readonly context: NavigationContext, readonly startingUrl: string) {\n super();\n // console.log(`new ${this.constructor.name}`)\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 isInteractionSync(): boolean {\n return false;\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 initialiseVisitSegments(visit: Visit) {\n visit.segments.forEach(it => this.updateVisitSegment(it))\n }\n\n updateVisitSegment(segment: VisitSegment) {\n // console.log(`updateVisitSegment`, segment.toDebugString());\n this._visitSegments.set(segment.placeDefinition, segment);\n }\n\n\n getVisitSegmentFor(placeDef: PlaceDefinition) {\n const visit = this._visitSegments.get(placeDef);\n // console.log(`Getting visit for ${placeDef.component.name}`, {visit});\n return visit;\n }\n\n createUpdatedVisit(url: string) :Visit {\n // The visit segments can have arbirary places in them after redirects\n // so we have to filter them based on the final url.\n const snapshot = this.urlService.parseUrl(url);\n const filteredSegments = Array.from(this._visitSegments.values())\n .filter(it => snapshot.containsVisitSegment(it));\n return Visit.fromSegments(filteredSegments);\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 getVisitSegments(): VisitSegment[] {\n return Array.from(this._visitSegments.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 override 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 {PlaceComponent} from '../../../place-component';\nimport {UrlSnapshot} from '../../../url-snapshot';\nimport {NavigationContext} from '../navigation-context';\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 override 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 override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.locationChangeTriggerUrl, this.startingUrl);\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.ignore(event);\n }\n\n override 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} 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 override 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 override get isInteractionSync(): boolean {\n return true;\n }\n\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.gotPopState = true;\n }\n\n // @Trace()\n override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterCancelled(event: NavigationCancel): void {\n this.ignore(event);\n }\n\n // @Trace()\n // override onUrlChange(url: string) {\n // }\n\n private finishUp() {\n this.context.finishRoutingSession();\n this.finished.resolve(true);\n }\n\n // @Trace()\n override 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 override get isInteractionSync(): boolean {\n return true;\n }\n\n\n override notifyActive() {\n // TODO: Do I still need this??\n setTimeout(() => {\n this.syncInteractionIdsWithRouter();\n });\n }\n\n // @Trace()\n override onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override 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: readonly 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: readonly 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';\n\nimport {\n WaitUntilLeavingInteractionTransitionCancelled\n} from '../event-cleanup/wait-until-leaving-interaction-transition-cancelled';\nimport {NavigationSession} from '../navigation-session';\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 override onRouterCancelled(event: NavigationCancel): void {\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n // navigation was aborted.\n this.context.finishRoutingSession();\n }\n\n // @Trace()\n override 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.createUpdatedVisit(event.urlAfterRedirects))\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 {NavigationContext} from './navigation-context';\nimport {NavigationSession} from './navigation-session';\n\nexport abstract class AbstractPopStateNavigation extends NavigationSession {\n readonly isPopState = true;\n override debugPropertyKeys = ['startingUrl', 'poppedHistoryUrl'];\n\n constructor(context: NavigationContext, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n // @Trace()\n override repairBrowserHistoryAndUrlAfterGuardCancellation(): void {\n super.repairBrowserHistoryAndUrlAfterGuardCancellation(this.poppedHistoryUrl, this.startingUrl)\n }\n\n}\n","import {NavigationCancel, NavigationEnd} from '@angular/router';\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 override 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 override 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 {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 override 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 override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override 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 override 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 override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override 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 override 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 override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override 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, NavigationCancellationCode, NavigationEnd, NavigationError} from '@angular/router';\nimport {\n WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined\n} from './event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined';\nimport {NavigationSession} from './navigation-session';\n\n\nexport class Navigating extends NavigationSession {\n readonly isPopState = false;\n\n override debugPropertyKeys = ['startingUrl', 'urlAfterRedirects'];\n private urlAfterRedirects: string;\n\n override onRouterCancelled(event: NavigationCancel): void {\n // redirects come from our guards so we'll be processing parameter updates and need\n // to keep the same session running so we don't loose any accumulated state.\n if (event.code !== NavigationCancellationCode.Redirect) {\n this.context.finishRoutingSession()\n }\n }\n\n override onRouterError(event: NavigationError): void {\n // navigation was aborted.\n this.context.finishRoutingSession();\n }\n\n override onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession(this.createUpdatedVisit(event.urlAfterRedirects));\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(visit?: 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: (visit?: Visit) => void) {\n }\n\n }\n\n}\n","import {NavigationCancel, NavigationEnd, NavigationError, NavigationStart} from '@angular/router';\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 override 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 override onRouterStarted(event: NavigationStart): void {\n this.ignore(event);\n }\n\n // @Trace()\n override 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 override onRouterEnd(event: NavigationEnd): void {\n this.ignore(event);\n }\n\n // @Trace()\n override onRouterError(event: NavigationError): void {\n void this.ignore(event);\n }\n\n // @Trace()\n override onPopState(event: NavigationStart): void {\n this.popStateHandled = true;\n this.popStateEventUrl = event.url;\n this.ignore(event);\n }\n\n override 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 {\n WaitUntilPopStateDuringCanDeactivateInteractionFinishes\n} from './event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes';\n\nexport class PopStateNavigation extends AbstractPopStateNavigation {\n\n override onRouterCancelled(event: NavigationCancel): void {\n this.repairBrowserHistoryAndUrlAfterGuardCancellation();\n this.context.finishRoutingSession();\n }\n\n override onRouterEnd(event: NavigationEnd): void {\n this.context.finishRoutingSession(this.createUpdatedVisit(event.urlAfterRedirects));\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 {ActivatedRouteSnapshot, RouterStateSnapshot} from \"@angular/router\";\nimport {\n AndValueModel,\n ComputedModelMechanics,\n Constructable,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector,\n HasValue,\n MultiMapModelChain,\n MutableListModel,\n ReducingValueModel,\n ValueModel\n} from \"@coolon/pectin\";\nimport {PlaceAccessGuard} from \"./place-access-guard\";\nimport {PlaceComponent} from \"./place-component\";\nimport {PlaceDefinition} from \"./place-definition\";\nimport {Visit} from \"./visit\";\n\n\nfunction toPromise(disposedWith: Disposable.Collector, condition$: ValueModel<boolean>) {\n // TODO: move this functionality to pectin with a waitUnit(model$).isTruthy() DSL.\n const {when} = Dsl.disposeWith(disposedWith);\n return new Promise<void>((resolve) => {\n when(condition$).becomesTruthy(() => resolve(), {once: true, initialValue: \"evaluate\"})\n });\n}\n\nfunction withPostponeUntil<T>(disposable: Disposable.Collector, options: ComputedModelMechanics.PostponeOptions, callback: (value$: ValueModel<boolean>) => T): T | undefined {\n // TODO: move this functionality to powerups\n const {chain} = Dsl.disposeWith(disposable);\n if (options.postponeUntil) {\n return callback(options.postponeUntil);\n } else if (options.postponeWhile) {\n return callback(chain(options.postponeWhile).isFalsey())\n }\n return undefined;\n}\n\n\nclass PlaceAuthGuard extends GarbageCollector {\n private readonly readyPromise: Promise<void>;\n\n constructor(readonly placeDefinition: PlaceDefinition,\n readonly enabled$: ValueModel<boolean>,\n options: ComputedModelMechanics.PostponeOptions) {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.readyPromise = withPostponeUntil(this, options, condition$ => {\n return toPromise(this, condition$)\n }) ?? Promise.resolve()\n }\n\n async waitUntilReady(): Promise<void> {\n await this.readyPromise;\n }\n}\n\n\nclass EnabledPlaceChecker extends ReducingValueModel<PlaceAuthService.AuthorisationCheck, void> {\n\n private readonly placeGuards$ = new MutableListModel<PlaceAuthGuard>();\n private readonly placeGuardsByPlaceDef$: MultiMapModelChain<PlaceDefinition, PlaceAuthGuard>;\n\n constructor() {\n super([]);\n const {chain} = Dsl.disposeWith(this);\n this.placeGuardsByPlaceDef$ = chain(this.placeGuards$).indexManyBy(\"placeDefinition\");\n }\n\n enableWhen(placeDefinition: PlaceDefinition, condition$: ValueModel<boolean>, options: ComputedModelMechanics.PostponeOptions): void {\n const {chain} = Dsl.disposeWith(this);\n this.placeGuards$.push(new PlaceAuthGuard(placeDefinition, condition$, options));\n this.trackSource(condition$);\n }\n\n isAuthorised(placeDef: PlaceDefinition): boolean {\n return this.value(placeDef);\n }\n\n compute(values: void[]): (placeDef: PlaceDefinition) => boolean {\n return (def) => this.checkPredicatesByPlace(def)\n }\n\n private checkPredicatesByPlace(def: PlaceDefinition) {\n const placePredicates = this.placeGuardsByPlaceDef$.get(def);\n if (!placePredicates || placePredicates.length < 1) {\n return true;\n } else {\n return placePredicates.reduce((sum, model) => {\n return sum && model.enabled$.value;\n }, true);\n }\n }\n\n async waitUntilReady(placeDef: PlaceDefinition): Promise<void> {\n const placeAuthGuards = this.placeGuardsByPlaceDef$.get(placeDef);\n if (placeAuthGuards?.length > 0) {\n await Promise.all(placeAuthGuards.map(it => it.waitUntilReady()));\n }\n }\n}\n\nexport class PlaceAuthService extends GarbageCollector {\n\n\n private authZOptions: PlaceAuthService.AuthorisationOptions;\n private authNOptions: PlaceAuthService.AuthenticationOptions;\n\n private readonly _authNReady$ = new AndValueModel().setDefault(true);\n private readonly _authZReady$ = new AndValueModel().setDefault(true);\n private authenticated$ = this.registerDisposable(new DelegatingValueModel<boolean>).withDefault(true);\n private authChecker$ = this.registerDisposable(new DelegatingValueModel<PlaceAuthService.AuthorisationCheck>).withDefault(() => true);\n private enabledPlaceChecker = this.registerDisposable(new EnabledPlaceChecker());\n\n readonly accessGuard$: ValueModel<PlaceAuthService.AccessGuard>;\n\n constructor() {\n super();\n const {chain} = Dsl.disposeWith(this);\n this.accessGuard$ = chain.reduce(this.authenticated$,\n this.authChecker$,\n this.enabledPlaceChecker,\n (authenticated, authCheck, enabledPlaceCheck) => {\n return new PlaceAuthService.AccessGuard(authenticated, def => authCheck(def) && enabledPlaceCheck(def));\n })\n }\n\n configureAuthentication(options: PlaceAuthService.AuthenticationOptions) {\n this.authNOptions = options;\n this.authenticated$.setDelegate(options.isAuthenticated$)\n withPostponeUntil(this, options, condition$ => this._authNReady$.addSource(condition$))\n }\n\n configureAuthorisation(options: PlaceAuthService.AuthorisationOptions) {\n const {chain} = Dsl.disposeWith(this);\n this.authZOptions = options;\n let authChecker$ = ValueModel.constant(def => options.isAuthorised(def));\n if (options.dependsOn$) {\n // have to return a new funtion or the value model won't fire a change event\n authChecker$ = chain(authChecker$).map(it => def => it(def), {dependsOn: options.dependsOn$})\n }\n this.authChecker$.setDelegate(authChecker$);\n withPostponeUntil(this, options, condition$ => this._authZReady$.addSource(condition$))\n }\n\n enablePlace(placeDefinition: Constructable<PlaceComponent>, options: PlaceAuthService.AuthPlaceOptions) {\n const {chain} = Dsl.disposeWith(this);\n const when$ = options.when$ ? options.when$ : chain(options.unless$).isFalsey()\n this.enabledPlaceChecker.enableWhen(PlaceComponent.getDefinition(placeDefinition), when$, options);\n }\n\n\n async waitUntilAuthenticationReady(): Promise<void> {\n await toPromise(this, this._authNReady$);\n }\n\n async waitUntilAuthorisationReadyFor(placeDef: PlaceDefinition): Promise<void> {\n await toPromise(this, this._authZReady$)\n await this.enabledPlaceChecker.waitUntilReady(placeDef)\n }\n\n getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n const redirect = this.authNOptions.redirectTo(activatedRoute, state);\n return redirect instanceof Visit ? redirect : Visit.goto(redirect);\n }\n\n getAuthorisationFailureRedirectOptions(component: Constructable<PlaceComponent>): Visit[] {\n return this.authZOptions.redirectTo(component).map(it => it instanceof Visit ? it : Visit.goto(it));\n }\n\n isAuthenticated() {\n return this.accessGuard$.value.isAuthenticated()\n }\n\n isAuthorised(c: PlaceDefinition) {\n return this.accessGuard$.value.isAuthorised(c)\n }\n}\n\nexport namespace PlaceAuthService {\n\n export type AuthorisationCheck = (def: PlaceDefinition) => boolean;\n\n export interface AuthenticationOptions extends ComputedModelMechanics.PostponeOptions {\n isAuthenticated$: ValueModel<boolean>;\n\n redirectTo(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit | Constructable<PlaceComponent>;\n }\n\n export interface AuthorisationOptions extends ComputedModelMechanics.PostponeOptions {\n isAuthorised: AuthorisationCheck;\n dependsOn$?: HasValue<any>;\n\n redirectTo(component: Constructable<PlaceComponent>): (Constructable<PlaceComponent> | Visit)[];\n }\n\n export interface AuthPlaceOptions extends ComputedModelMechanics.PostponeOptions {\n when$?: ValueModel<boolean>;\n unless$?: ValueModel<boolean>;\n }\n\n export class AccessGuard implements PlaceAccessGuard {\n constructor(\n private readonly authenticated: boolean,\n private readonly checkAuth: AuthorisationCheck\n ) {\n }\n\n isAuthenticated(): boolean {\n return this.authenticated;\n }\n\n isAuthorised(placeDefinition: PlaceDefinition): boolean {\n return this.checkAuth(placeDefinition);\n }\n\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {assert} from '@coolon/pectin';\n\nimport {first} from 'lodash';\nimport {PlaceDefinition} from './place-definition';\nimport {Visit} from \"./visit\";\nimport {VisitSegment} from './visit-segment';\n\n/**\n * TODO: this should be updated to store the last x visists rathern than a map of places to visit segments.\n * This would allow it to return segments that are relevent to a particular parent path. Currently\n * it just returns the last segment so it can return child ids that don't belong to the current parent.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceHistory {\n\n private _activeSegments: PlaceHistory.VisitRecord;\n private _previousVisits: PlaceHistory.VisitRecord;\n\n private _archive = new Map<PlaceDefinition, VisitSegment[]>();\n private readonly placeHistoryDepth: number = 4;\n notifyNavigationStarted() {\n if (this._activeSegments) {\n this.archiveSegments(this._activeSegments.visitSegments);\n this._previousVisits = this._activeSegments;\n }\n }\n\n notifyNavigationFinished(visits: Visit) {\n this._activeSegments = new PlaceHistory.VisitRecord(visits.segments)\n }\n\n updateVisitSegment(visit: VisitSegment) {\n assert.isTruthy(this._activeSegments);\n this._activeSegments.update(visit);\n }\n\n lastVisitIncluded(placeDef: PlaceDefinition): boolean {\n return !!this._previousVisits?.getVisitFor(placeDef);\n }\n\n getMostRecentVisitSegmentFor(placeDef: PlaceDefinition) {\n return first(this.getSegmentHistoryFor(placeDef));\n }\n\n getSegmentHistoryFor(placeDef: PlaceDefinition): VisitSegment[] {\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: VisitSegment[]) {\n this._archive.set(placeDef, history);\n }\n\n protected archiveSegments(visits: VisitSegment[]) {\n visits.forEach(state => {\n const history = this.getSegmentHistoryFor(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 visitSegments: VisitSegment[]) {\n }\n\n update(visit: VisitSegment) {\n this.visitSegments = this.visitSegments\n .filter(v => v.placeDefinition !== visit.placeDefinition) // keep all that are not me\n .concat(visit); // and add me to the end\n }\n\n getVisitFor(placeDef: PlaceDefinition): VisitSegment | undefined {\n return this.visitSegments.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 {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 {Memoize} from '@typescript-plus/fast-memoize-decorator';\n\nimport {isEqual, last} from 'lodash';\nimport {ConsolidatedParameterMap} from './guards/consolidated-param-map';\nimport {PlaceDefinition} from './place-definition';\nimport {VisitSegment} from './visit-segment';\n\nfunction extractPrimaryUrlSegments(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 updateVisitSegment(visitSegment: VisitSegment): UrlSnapshot {\n const newUrlTree = this.urlSerializer.parse(this.url);\n // Ugly, but it works for now.\n const segments = [...extractPrimaryUrlSegments(newUrlTree)];\n const urlSegments = this.getUrlSegmentsForVisitSegment(visitSegment);\n const replaceAt = segments.findIndex(segment => segment.path === urlSegments[0].path);\n // do not use the return value, it's the items that were removed!\n segments.splice(replaceAt, urlSegments.length, ...urlSegments);\n newUrlTree.root.children.primary.segments = segments;\n return new UrlSnapshot(this.urlSerializer, newUrlTree.toString());\n }\n\n appendSegment(visitSegment: VisitSegment):UrlSnapshot {\n // TODO: make this work properly with visit parameters\n return new UrlSnapshot(this.urlSerializer, this.url + \"/\" + visitSegment.placeDefinition.path)\n }\n\n @Memoize()\n private getPrimaryUrlSegments(): UrlSegment[] {\n return extractPrimaryUrlSegments(this.urlTree);\n }\n\n /**\n * Converts the visit into segments. Please not that these segments are not e\n * @param visitSegment\n */\n protected getUrlSegmentsForVisitSegment(visitSegment: VisitSegment): UrlSegment[] {\n return visitSegment.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(visitSegment.placeDefinition.path, visitSegment.placeDefinition.getFormattedRouteParameters(visitSegment)),\n new UrlSegment(visitSegment.placeDefinition.getFormattedRouteId(visitSegment), {})]\n :\n [\n new UrlSegment(visitSegment.placeDefinition.path, visitSegment.placeDefinition.getFormattedRouteParameters(visitSegment))\n ];\n }\n\n includesPathOf(placeDef: PlaceDefinition) {\n return this.getPrimaryUrlSegments().find(s => s.path === placeDef.path);\n }\n\n isLastPlaceInUrl(placeDef: PlaceDefinition) {\n return last(this.getPrimaryUrlSegments()).path === placeDef.path;\n }\n\n createVisitSegmentFor(placeDef: PlaceDefinition) {\n return new VisitSegment(placeDef, new ConsolidatedParameterMap(this.getPrimaryUrlSegments()));\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: readonly string[]): boolean {\n return isEqual(this.getInteractionIds(), ids);\n }\n // @Trace()\n\n updateInteractionIds(ids: readonly 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 // @Trace()\n\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 containsVisitSegment(segment: VisitSegment) {\n return !!this.getPrimaryUrlSegments().find(s => s.path === segment.placeDefinition.path);\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: readonly 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 {VisitSegment} from './visit-segment';\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: VisitSegment[]): UrlSnapshot {\n const bits = [];\n visits.forEach(v => {\n bits.push(this.parseUrl(`${v.placeDefinition.path}`).updateVisitSegment(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 {Location} from \"@angular/common\";\nimport {Injectable} from \"@angular/core\";\nimport {\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n RouterStateSnapshot\n} from \"@angular/router\";\nimport {\n assert,\n DebugContext,\n Dsl,\n GarbageCollector,\n lang,\n Logger,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from \"@coolon/pectin\";\nimport {Constructable} from \"@coolon/typescript-utilities\";\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 {\n PopStateDuringInteractionNavigation\n} from \"./navigation/session/interactions/pop-state-during-interaction-navigation\";\nimport {\n SynchroniseInteractionContextIdsWithRoute\n} 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 {PlaceAuthService} from \"./place-auth-service\";\nimport {PlaceComponent} from \"./place-component\";\nimport {PlaceHistory} from \"./place-history\";\nimport {UrlService} from \"./url-service\";\nimport {UrlSnapshot} from \"./url-snapshot\";\nimport {Visit} from \"./visit\";\nimport {VisitSegment} from \"./visit-segment\";\n\n// function 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 navigationSession$ = new MutableValueModel<NavigationSession>();\n readonly navigationInProgress$: ValueModelChain<boolean>;\n readonly navigationSessionName$: ValueModelChain<string>; // used by tests\n readonly interactionSyncInProgress$: ValueModel<boolean>;\n\n private readonly navigationContext: NavigationContext.Impl;\n\n private readonly _activeVisit$ = new MutableValueModel<Visit>();\n private readonly routerInteractionAdapter: InteractionServiceRoutingAdapter;\n private sessionFinishedJobs: (() => void)[] = [];\n\n readonly authService = new PlaceAuthService();\n\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 segments => {\n this.routingSessionFinished(segments);\n });\n\n const {chain} = Dsl.disposeWith(this);\n this.navigationInProgress$ = chain(this.navigationSession$).isNotNil();\n this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck(\"isInteractionSync\")\n\n const idleStateName = chain(this.interactionService.active).map(active => active ? \"IdleDuringInteraction\" : \"Idle\");\n this.navigationSessionName$ = chain(this.navigationSession$)\n .pluck(\"name\")\n .otherwise(idleStateName);\n\n DebugContext.tag(this._activeVisit$, \"PlaceRouter.activeVisit\");\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 getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n return this.authService.getAuthenticationFailureRedirect(activatedRoute, state)\n }\n\n getAuthorisationFailureRedirectOptions(component: Constructable<PlaceComponent>): Visit[] {\n return this.authService.getAuthorisationFailureRedirectOptions(component);\n }\n\n get navigationSession() {\n return this.navigationSession$.value;\n }\n\n get currentSession() {\n return this.navigationSession$.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 async waitActivitiesSynchronised(): Promise<this> {\n const {when} = Dsl.disposeWith(this);\n return new Promise<this>(resolve => {\n when(this.interactionSyncInProgress$).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\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\n async navigate(visit: Visit)\n async navigate(placeComponent: Constructable<PlaceComponent>, params?: Record<string, unknown>)\n async navigate(visitOrPlaceComponent: Visit | Constructable<PlaceComponent>, params?: Record<string, unknown>) {\n const visit = this.toVisit(visitOrPlaceComponent, params).copyWithDefaultsFrom(this.activeVisit$.value)\n return this.doNavigation(visit, async () => {\n await this.angularRouter.navigate(visit.getRouterCommands());\n });\n }\n\n // @Trace()\n async doNavigation(visit: Visit, runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress$.value) {\n Logger.get().error(\"Navigation already in progress\", {\n visit: visit,\n session: this.navigationSession\n });\n lang.illegalState(\"Navigation already in progress\");\n }\n const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());\n navigation.initialiseVisitSegments(visit)\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, \"\", this.urlService.getCurrentRouterUrl()));\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 activeVisit$(): ValueModel<Visit> {\n return this._activeVisit$.readonly$;\n }\n\n async notifyVisitSegmentChanged(is: VisitSegment, was: VisitSegment): Promise<void> {\n // console.log(\"PlaceRouter.notifyVisitSegmentChanged\", is.toDebugString(), was.toDebugString());\n this.placeHistory.updateVisitSegment(is);\n\n // FIXME: no route id -> route id duplicates route parameters\n const visit = this.activeVisit$.value.copyAndReplaceSegment(is);\n if (is.hasRoutingChangedFrom(was)) {\n // TODO: can I just do a regular navigate using an updated visit?\n // const {when} = Dsl.disposeWith(this);\n await this.doNavigation(visit, () => {\n const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegment(is);\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\n protected transitionTo(next: NavigationSession) {\n const previous = this.navigationSession$.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.navigationSession$.value = next;\n if (previous) {\n previous.dispose();\n }\n next.notifyActive();\n }\n\n // @Trace()\n\n private routingSessionFinished(visit?: Visit) {\n if (visit) {\n assert.isTruthy(this.navigationInProgress$.value);\n this.placeHistory.notifyNavigationFinished(visit);\n // We update the active visits before we finish the session so the\n // place outlets can ignore the incoming changes until things are settled.\n this._activeVisit$.value = visit;\n // console.log(visit.toDebugString())\n }\n const session = this.currentSession;\n session.dispose();\n this.navigationSession$.value = null;\n // console.log(`### Router Session Finished (was ${session.toString()})`);\n this.sessionFinishedJobs.forEach(job => job());\n this.sessionFinishedJobs = [];\n }\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(onSyncComplete: () => void = () => {\n // noop\n }): 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) => {\n this.runAfterRoutingSessionFinishes(() => {\n this.runAfterRoutingSessionFinishes(() => {\n onSyncComplete();\n resolve();\n });\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) => {\n // console.log(`No navigation in progress, starting synchronisation job`);\n this.runAfterRoutingSessionFinishes(() => {\n onSyncComplete();\n resolve();\n });\n const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(session);\n }));\n\n }\n }\n\n private toVisit(visitOrPlaceComponent: Visit | Constructable<PlaceComponent>, params?: Record<string, unknown>) {\n if (visitOrPlaceComponent instanceof Visit) {\n return visitOrPlaceComponent;\n } else {\n return Visit.goto(visitOrPlaceComponent, params);\n }\n }\n}\n\nexport namespace PlaceRouter {\n\n export interface Redirections {\n /**\n * NOTE: for now this only supports top level places. Support for child places will require a more fundamental\n * change to visits to support nesting\n */\n onAuthenticationFailure(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit | Constructable<PlaceComponent>;\n\n /**\n * NOTE: for now this only supports top level places. Support for child places will require a more fundamental\n * change to visits to support nesting\n * @param component\n */\n onAuthorisationFailure(component: Constructable<PlaceComponent>): (Constructable<PlaceComponent> | Visit)[];\n }\n}\n","import {Component, HostBinding, Input} 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 {\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}\n","<ng-content></ng-content>\n","import {Component, Inject} from '@angular/core';\nimport {Command} from '@coolon/pectin';\nimport {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} from '@angular/core';\nimport {Command, Constructable} from '@coolon/pectin';\nimport {Activity, ACTIVITY_DATA} from '../../activity';\nimport {Confirm} from '../../confirm';\nimport {AbstractConfirmDialogComponent} from '../abstract-confirm-dialog.component';\n\n@Component({\n selector: 'aup-confirmation-then-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 {Command} from '@coolon/pectin';\nimport {ACTIVITY_DATA} from '../../activity';\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} from '@angular/core';\nimport {Command} from '@coolon/pectin';\nimport {ACTIVITY_DATA} from '../../activity';\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 {\n ConfirmThenExecuteDialogComponent\n} 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, DelegatingValueModel, MutableValueModel} 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 if (!this.isComplete()) {\n assert.isFalsey(this.isComplete());\n resolveOrReject(this.deferredResult);\n this._complete = true;\n this.onComplete(this);\n this._activityBusy.dispose();\n } else {\n console.warn(\"finishActivity called when activity has already been finished\")\n }\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> {\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 loadActivity(activityRef: ActivityRef<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: ACTIVITY_DATA,\n useValue: activityRef.activityData\n }\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 {Component, Input, QueryList, ViewChild, ViewChildren} from \"@angular/core\";\nimport {MatTabGroup} from \"@angular/material/tabs\";\nimport {\n assert,\n BooleanValueModelChain,\n Constructable,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector,\n MutableValueModel\n} from \"@coolon/pectin\";\nimport {lang} from \"@coolon/typescript-utilities\";\n\nimport {findLast} from \"lodash-es\";\nimport {PlaceRouter} from \"../../../place/place-router\";\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 {\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 _started$ = new MutableValueModel<boolean>(false);\n readonly _ready$ = new MutableValueModel<boolean>(false);\n readonly _animating$ = new MutableValueModel<boolean>(false);\n\n readonly busy = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(false));\n\n readonly syncTabsJob: () => void = undefined;\n\n readonly stable$: BooleanValueModelChain;\n\n constructor(readonly placeRouter: PlaceRouter) {\n super();\n const {chain, valueOf, when} = Dsl.disposeWith(this);\n when(this.ready$).becomesTruthy(() => this.finaliseActivityStates())\n this.stable$ = valueOf.all(\n this.ready$,\n this._started$,\n chain(this.animating$).isFalsey()\n ).areTruthy();\n }\n\n get started$() {\n return this._started$.readonly$;\n }\n\n get ready$() {\n return this._ready$.readonly$;\n }\n\n get animating$() {\n return this._animating$.readonly$;\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 notifyReady(ready: boolean) {\n this._ready$.value = ready;\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 async 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 isActive = this.getActiveActivityCount() > 0;\n if (isActive) {\n this.triggerTabSynchronisation();\n } else {\n this.finishAndStartCleanup();\n }\n });\n this.launchActivity(activityRef);\n\n try {\n return await activityRef.activityResult;\n } finally {\n // console.log(\"closing activity\", activityType.name, this.activityRefs)\n if (!this.isActive()) {\n // wait until the activity route syncing has finished\n await this.placeRouter.waitActivitiesSynchronised();\n // console.log(\"activity syncing finished\")\n }\n }\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 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 setTimeout(() => {\n this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes\n }, this.getTabAnimationDuration());\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 // if this is the first activity let the interaction service know.\n const cleanedTabs = this.activityRefs.filter(tab => !tab.isComplete());\n this.activityRefs = cleanedTabs.concat(activityRef);\n const firstTime = this.activityRefs.length === 1;\n if (firstTime) {\n this.interactionServiceApi.notifyActive(this);\n }\n this.synchroniseSelectedTabIndex();\n }\n\n activityIndex(index: number, activityRef: ActivityRef<any, any, any>) {\n return index;\n };\n\n /**\n * Synchronises the selected tab index.\n */\n // @Trace()\n private synchroniseSelectedTabIndex(): void {\n assert.isTruthy(this.isActive());\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.getActiveActivityCount() - 1;\n const animate = this.activityRefs.length > 1;\n if (previousIndex !== newIndex) {\n this._animating$.value = animate;\n const activityRef = this.activityRefs[newIndex];\n activityRef.setFocused(false);\n this.busy.setDelegate(activityRef.activityBusy);\n this.tabs.selectedIndex = newIndex;\n if (this.ready$.value) {\n // Note: We're not using the animation done event as it's firing almost immeadiately.\n setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDuration() : 0);\n }\n }\n }\n\n private finaliseActivityStates() {\n this._animating$.value = false;\n this.activityRefs = this.activityRefs.filter(tab => !tab.isComplete());\n this.activityRefs.forEach((ref, index) => {\n ref.setFocused(index === this.tabs.selectedIndex);\n });\n }\n\n private getSelectedOutlet() {\n return this.activityOutlets.toArray()[this.tabs.selectedIndex];\n }\n\n private getTabAnimationDuration(): number {\n const match = this.tabs.animationDuration.match(/(\\d+)(.*)/);\n const numericValue = parseFloat(match[1]);\n switch (match[2].trim()) {\n case \"ms\":\n return numericValue;\n case \"s\":\n return 1000 * numericValue;\n }\n return lang.illegalState(`unsupported duration string: ${this.tabs.animationDuration}`);\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 if (this.isActive()) {\n this.synchroniseSelectedTabIndex();\n }\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 [busy$]=\"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, Proxify, proxify, StoreInValueModel, 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';\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() @StoreInValueModel()\n accessor activityClass: Constructable<Activity<D, R, E>>;\n\n @Input() @Proxify()\n accessor activityClass$ = proxify(ValueModel<Constructable<Activity<D, R, E>>>);\n\n @Input() @StoreInValueModel()\n accessor activityData: D;\n\n @Input() @Proxify()\n accessor activityData$ = proxify(ValueModel<D>);\n\n @Input() @StoreInValueModel()\n accessor face: CommandFace;\n\n @Input() @Proxify()\n accessor face$ = proxify(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\n @HostBinding('class.active')\n get isActive() {\n return this.interactionContext?.isActive();\n }\n\n}\n","import {AfterViewInit, Component, HostBinding, Inject, Input, Optional, ViewChild} from \"@angular/core\";\nimport {MAT_TABS_CONFIG, MatTabChangeEvent, MatTabsConfig} from \"@angular/material/tabs\";\nimport {Constructable, lang} 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\nconst cssDurationRegex = /(\\d+)(m?s)/;\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 /**\n * If true the activity will sync with the router to enable back button support. This is a work around for\n * deeply nested activities that can't be linked with the root place interactionContext hook for cancelling\n * active interactions.\n */\n @Input()\n syncWithRoutes = true;\n\n get animationDuration(): string {\n return this.animateFirstActivity ? (this.tabConfig?.animationDuration || \"500ms\") : \"0ms\";\n }\n\n get animationDurationMillis() {\n const result = cssDurationRegex.exec(this.animationDuration)\n if (!result) {\n lang.illegalState(`unsupported css duration: ${this.animationDuration}`);\n }\n const multiplier = result[2] === 's' ? 1000 : 1;\n return multiplier * parseInt(result[1], 10);\n }\n\n @HostBinding(\"class.active\")\n get active() {\n return this.isActive();\n }\n\n readonly interactionService = this.inject(InteractionService);\n\n constructor(@Inject(MAT_TABS_CONFIG) @Optional() private readonly tabConfig: MatTabsConfig) {\n super();\n }\n\n ngAfterViewInit(): void {\n // NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.\n // https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9\n\n if (this.syncWithRoutes) {\n this.interactionService.registerInplaceInteractionContext(this);\n } else {\n this.activityContainerComponent.initialise(\"dont-care\", {\n async notifyActive(interactionContext: InteractionContext): Promise<unknown> {\n return undefined;\n },\n async notifyFinished(interactionContext: InteractionContext): Promise<unknown> {\n return undefined;\n }\n });\n }\n }\n\n // this is a regsitration callback from the interaction service\n // @Trace() // webstorm says no usages... but I'm not sure.\n onInplaceInteractionContextRegistered(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 onTabChanged($event: MatTabChangeEvent) {\n if ($event.index === 1) {\n setTimeout(() => this.activityContainerComponent.notifyReady(true), this.animationDurationMillis)\n } else {\n this.activityContainerComponent.notifyReady(false)\n }\n }\n}\n","<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [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, ViewChild} from '@angular/core';\nimport {InteractionContext} from '../../../interaction-context';\nimport {\n InPlaceInteractionContextComponent\n} from '../../inplace-interaction-context/in-place-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 override 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\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n","import {Component} from '@angular/core';\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 override 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\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n","import {CdkScrollable, ConnectedPosition, Overlay} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {Component, ElementRef, HostBinding, Input, Optional, SkipSelf} from '@angular/core';\nimport {Constructable, Proxify, proxify, StoreInValueModel, ValueModel} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../components/disposable-component';\nimport {Activity} from '../../activity';\nimport {\n InPlaceInteractionContextComponent\n} from '../inplace-interaction-context/in-place-interaction-context.component';\n\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 {\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 @Input() @Proxify()\n accessor cancelOnEscape$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor cancelOnEscape = true;\n\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: true,\n backdropClass: \"popup-interaction-context-backdrop\",\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 cancelEverything = async () => {\n do {\n // noop\n } while (await this.interactionContext.cancelActiveActivity())\n };\n const subs = this.scrollContainers.map(sc => sc.elementScrolled().subscribe(() => {\n overlayRef.updatePosition();\n })).concat(overlayRef.backdropClick().subscribe(cancelEverything))\n .concat(overlayRef.keydownEvents().subscribe(async (event) => {\n if (this.cancelOnEscape$.value && event.code === \"Escape\" && this.interactionContext.isActive()) {\n await this.interactionContext.cancelActiveActivity()\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}\n","<ng-content></ng-content>\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 override 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\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-popup-interaction-context>\n","import {Component, HostBinding, Input, 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 {\n InPlaceInteractionContextComponent\n} 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 {\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.face$).mapToList(face => [face]);\n }\n\n override 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\" [face$]=\"face$\" [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, ViewChild} from '@angular/core';\nimport {Command, Constructable, proxify, Proxify} from '@coolon/pectin';\nimport {DisposableComponent} from '../../../components/disposable-component';\nimport {Activity} from '../../activity';\nimport {\n InPlaceInteractionContextComponent\n} 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 {\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() @Proxify()\n accessor addCommand = proxify(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\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, HostBinding, HostListener, Input} from '@angular/core';\nimport {Command, DirtyTrackingForm, FormValueModel, Validator} from '@coolon/pectin';\n\nimport {isNil} from 'lodash';\nimport {Enum} from 'typescript-string-enums';\nimport {CommandFace} from '../../../components/commands/command-face';\nimport {Activity} 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: `` })\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class InputActivity<T, D extends InputActivity.Data<T> = InputActivity.Data<T>> extends Activity<D, T> {\n\n readonly value$: FormValueModel<T>;\n\n @HostBinding('class') override 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.activityData?.layout ?? InputActivity.Layout.BLOCK;\n }\n\n constructor() {\n super();\n\n const form = new DirtyTrackingForm();\n this.value$ = form.valueModel<T>(this.activityData.initialValue);\n this.value$.validateUsing(this.activityData.validators || []);\n\n // TODO: move to global configuration\n this.confirmFace = this.activityData.confirmFace ?? {\n icon: () => 'mat:check'\n };\n this.cancelFace = this.activityData.cancelFace ?? {\n icon: () => 'mat:clear'\n };\n\n this.confirmCommand = Command.create(async () => {\n if (this.value$.validate()) {\n if (this.activityData.save) {\n const self = this;\n try {\n let allGood = true;\n const result = await this.activityData.save(this.value$.value, {\n injectError(error: string) {\n allGood = false;\n self.value$.injectErrors([error]);\n }\n });\n if (allGood) {\n this.done(this.value$.value);\n }\n } catch (e) {\n console.error(e);\n }\n } else {\n this.done(this.value$.value);\n }\n\n }\n });\n this.cancelCommand = Command.create(() => {\n this.cancel();\n });\n\n this.busyWhile(this.confirmCommand.busy$);\n\n this.onActivityReady(() => this.value$.focusContext.requestFocus());\n }\n\n @HostBinding(\"class\")\n get additionalCssClassName():string {\n return this.activityData.cssClassName ?? ''\n }\n\n @HostBinding(\"attr.data-cy\")\n get dataCyAttribute():string {\n return this.activityData.dataCy ?? ''\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.activityData.cancelOnEscape) // we default to true..\n || this.activityData.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>[] | ReadonlyArray<Validator<T>>,\n cancelOnEscape?: boolean,\n cssClassName?: string,\n dataCy?: 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 [value$]=\"value$\"\n [label]=\"activityData.label\"\n [placeholder]=\"activityData.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})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class StringInputActivity extends InputActivity<string> {\n}\n\nexport namespace StringInputActivity {\n export interface Data extends InputActivity.Data<string> {\n }\n}\n","import {\n assert,\n DelegatingValueModel,\n Dsl,\n GarbageCollector,\n ListModel,\n MutableListModel,\n MutableValueModel,\n ProxyRegistry,\n Validator,\n ValueModel\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\nProxyRegistry.registerOneTimeBinding(InlineEditorModel);\n","import {Component, HostBinding, Input, ViewChild} from '@angular/core';\nimport {\n BooleanValueModelChain,\n Command,\n DelegatingValueModel,\n Dsl,\n Proxify,\n proxify,\n StoreInValueModel,\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 {\n InPlaceInteractionContextComponent\n} 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 {\n\n @Input() @Proxify()\n accessor editorModel = proxify(InlineEditorModel<string>);\n\n @Input() @Proxify()\n accessor facesModel = proxify(ValueModel<InlineStringEditorComponent.Faces>);\n\n @Input() @StoreInValueModel()\n accessor faces: InlineStringEditorComponent.Faces;\n\n @ViewChild(InPlaceInteractionContextComponent)\n interactionContext: InPlaceInteractionContextComponent<any, any, any>;\n\n @Input()\n label: string;\n\n @Input() @StoreInValueModel()\n accessor placeHolder: string;\n\n @Input() @Proxify()\n accessor placeHolder$ = proxify(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.onInit(() => {\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.placeHolder$.value : v;\n }, { dependsOn: this.placeHolder$, allowNil: true });\n\n })\n this.onDispose(() => this.cancelEdit());\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.placeHolder$.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 @HostBinding(\"class.disabled\")\n private get isDisabled() {\n return !this.editingEnabled$.value\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 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\" [face$]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\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 [value$]=\"value$\"\n [label]=\"activityData.label\"\n [placeholder]=\"activityData.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n [allowNil]=\"activityData.allowNil\"\n >\n <ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>\n </aup-select-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n `\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class SelectInputActivity<T> extends InputActivity<T, SelectInputActivity.Data<T>> {\n\n readonly defaultOptionLabelFormat = (option: T) => {\n return option ?\n this.activityData.optionLabel ?\n option[this.activityData.optionLabel]\n : option\n : \"\"\n };\n\n get optionLabelFormat() {\n return this.activityData.optionLabelFormat ?? this.defaultOptionLabelFormat;\n }\n\n get options(): readonly T[] {\n return this.activityData.optionsModel?.value || this.activityData.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 allowNil?: boolean;\n nilLabel?: string;\n }\n}\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 InteractionContextTriggerForDirective<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 {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 {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {RouterModule} from '@angular/router';\nimport {ComponentsModule} from '../components/exports';\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 {ActivityBodyComponent} from './components/activity-body/activity-body.component';\nimport {ActivityContainerComponent} from './components/activity-container/activity-container.component';\nimport {ActivityOutletComponent} from './components/activity-container/activity-outlet/activity-outlet.component';\nimport {ActivityTitleComponent} from './components/activity-title/activity-title.component';\nimport {AbstractActivityTriggerComponent} from './components/activity-triggers/abstract-activity-trigger.component';\nimport {\n InlineActivityTriggerComponent\n} from './components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component';\nimport {\n ModalActivityTriggerComponent\n} from './components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component';\nimport {\n PopupActivityTriggerComponent\n} from './components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component';\nimport {AddCardActivityComponent} from './components/add-card-activity/add-card-activity.component';\nimport {\n AddItemInteractionContextComponent\n} 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 {\n ConfirmThenExecuteDialogComponent\n} from './components/confirm-then-execute-dialog/confirm-then-execute-dialog.component';\nimport {ConfirmationDialogComponent} from './components/confirmation-dialog/confirmation-dialog.component';\nimport {InlineStringEditorComponent} from './components/editors/inline-string-editor/inline-string-editor.component';\nimport {\n InPlaceInteractionContextComponent\n} from './components/inplace-interaction-context/in-place-interaction-context.component';\nimport {InputActivity} from './components/input-activities/input-activity';\nimport {SelectInputActivity} from './components/input-activities/select-input-activity';\nimport {StringInputActivity} from './components/input-activities/string-input-activity';\nimport {\n PopupInteractionContextComponent\n} from './components/popup-interaction-context/popup-interaction-context.component';\nimport {InteractionContextTriggerForDirective} from './directives/interaction-context-trigger-for.directive';\nimport {InteractionService} from './services/interaction.service';\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 InteractionContextTriggerForDirective,\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 InteractionContextTriggerForDirective,\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 {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}\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 {ComponentPortal} from '@angular/cdk/portal';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\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 Proxify,\n proxify,\n StoreInListModel,\n StoreInValueModel,\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 {VisitSegment} from '../../visit-segment';\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 {\n\n @Input() @Proxify()\n accessor animate$ = proxify(ValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n accessor animate = true;\n\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @Proxify()\n accessor customPlaceAnimationOrder$ = proxify(ListModel<Constructable<PlaceComponent>>);\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel()\n accessor customPlaceAnimationOrder: ReadonlyArray<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 currentVisitSegment$: ValueModelChain<VisitSegment>;\n private _isPushingVisitToRouter = 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.customPlaceAnimationOrder$)\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.animate$,\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.currentVisitSegment$ = chain(placeRouter.activeVisit$).map(visit => visit.getSegmentFor(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.authService.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 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 get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\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.animate$.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.currentVisitSegment$.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: VisitSegment, activePlace: PlaceComponent) {\n const visitModel = new MutableValueModel<VisitSegment>(routerVisit);\n DebugContext.tag(visitModel, `PlaceOutletComponent[${activePlace.constructor.name})].visitModel`);\n activePlace.initialiseVisit(routerVisit, (is, was) => {\n this.notifyComponentVisitSegmentChanged(is, was);\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.currentVisitSegment$)\n .changes(visit => {\n // console.log(\"routerVisitModel.change\", { routerVisitModel: this.routerVisitModel.value })\n this.pushVisitChangeToComponent(activePlace, visit);\n }, {\n unless: valueOf.any(\n this._isPushingVisitToRouter,\n this.currentVisitSegment$.isNil()\n ).areTruthy()\n });\n // chain(this.currentVisitSegment$).subscribe(it => {\n // if (it) {\n // console.log(\"PlaceOutlet segment updated\", it.toDebugString(), {\n // isPushing: this._isPushingVisitToRouter.value,\n // segment: this.currentVisitSegment$.value?.toDebugString()\n // })\n // }\n // })\n }\n\n private pushVisitChangeToComponent(activePlace: PlaceComponent, segment: VisitSegment) {\n // console.log(\"PlaceOutlet.pushVisitChangeToComponent\", segment.toDebugString());\n activePlace.updateVisit(segment);\n }\n\n private async notifyComponentVisitSegmentChanged(is: VisitSegment, was: VisitSegment) {\n try {\n this._isPushingVisitToRouter.value = true;\n await this.placeRouter.notifyVisitSegmentChanged(is, was);\n } finally {\n this._isPushingVisitToRouter.value = false;\n }\n // sanitisers may have adjusted other values in the visit to we check and write it back.\n const andBecame = this.currentVisitSegment$.value; // this is occasionally null... need to investigate if that's a normal state or not.\n // console.log(\"PlaceOutlet.notifyComponentVisitSegmentChanged\", { is, was, andBecame })\n if (andBecame && andBecame.hasChangedFrom(is)) {\n this.pushVisitChangeToComponent(this.activePlaceModel.value, andBecame)\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, TrackByFunction} from '@angular/core';\nimport {\n Command,\n Constructable,\n DelegatingValueModel,\n Dsl,\n ListModel,\n ListModelChain,\n Proxify,\n proxify,\n StoreInListModel,\n StoreInValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport {CommandFace} from '../../components/commands/command-face';\nimport {DisposableComponent} from '../../components/disposable-component';\nimport {NavItem} from '../nav-item';\nimport {PlaceComponent} from '../place-component';\nimport {PlaceDefinition} from '../place-definition';\nimport {PlaceRouter} from '../place-router';\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 {\n\n @Input() @StoreInListModel()\n accessor places: Constructable<PlaceComponent>[];\n\n @Input() @Proxify()\n accessor places$ = proxify(ListModel<Constructable<PlaceComponent>>);\n\n @Input() @StoreInValueModel()\n accessor placeOutlet: PlaceOutletComponent;\n\n @Input() @Proxify()\n accessor placeOutlet$ = proxify(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 private placeFaces = new Map();\n\n readonly trackByPlaceDef:TrackByFunction<MenuItem> = (index: number, data:MenuItem) => data.place;\n private authorisedPlaces$: ListModelChain<Constructable<PlaceComponent>>;\n\n constructor(readonly placeRouter: PlaceRouter) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.authorisedPlaces$ = chain(this.places$)\n .select(placeType => {\n const definition = PlaceComponent.getDefinition(placeType);\n const guard = this.placeRouter.authService.accessGuard$.value;\n return guard.isAuthorised(definition) || this.placeRouter.activeVisit$.value?.isPlaceActive(definition);\n }, {\n postponeWhile: this.placeRouter.navigationInProgress$,\n dependsOn: [this.placeRouter.authService.accessGuard$, this.placeRouter.activeVisit$]\n });\n\n this.placeDefinitions = chain(this.authorisedPlaces$).map(c => PlaceComponent.getDefinition(c))\n\n\n this.commandFactory = Command.createFactory((placeDefinition: PlaceDefinition) => {\n this.placeRouter.navigate(placeDefinition.component);\n });\n\n when(this.placeOutlet$).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 getNavigationFace(placeDef: PlaceDefinition): CommandFace {\n let face = this.placeFaces.get(placeDef);\n if (!face) {\n face = this.createCommandFaceFor(placeDef)\n this.placeFaces.set(placeDef, face);\n }\n\n return face;\n }\n\n private createCommandFaceFor(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}\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 aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\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, Input, TemplateRef} from \"@angular/core\";\nimport {Dsl, MutableValueModel, proxify, Proxify, StoreInValueModel, 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() @Proxify()\n accessor expanded$ = proxify(MutableValueModel<boolean>);\n\n @Input() @StoreInValueModel()\n @HostBinding('class.expanded')\n accessor expanded = false;\n\n @ContentChild('navEndTemplate')\n navEndTemplate: TemplateRef<any>;\n\n readonly homeIcon$: ValueModel<string>;\n\n constructor(router: PlaceRouter) {\n super(router);\n const {chain} = Dsl.disposeWith(this);\n this.homeIcon$ = chain(this.expanded$).map(expanded => {\n return expanded ? \"mat:arrow_back\" : \"mat:menu\"\n });\n }\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()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle 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 [tabPanel]=\"tabPanel\">\n <ng-content select=\"[nav-start]\"></ng-content>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\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<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n","import {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FlexModule} from '@angular/flex-layout';\nimport {MatCardModule} from \"@angular/material/card\";\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 {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 MatCardModule\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 {ObserversModule} from '@angular/cdk/observers';\nimport {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 {HighlightPipe} from \"./directives/highlight.pipe\";\nimport {InteractionModule} from './interaction/interaction.module';\nimport {PlaceModule} from './place/place.module';\n\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 ObserversModule\n ],\n exports: [\n InteractionModule,\n PlaceModule,\n DirectivesModule,\n ComponentsModule,\n NoopComponent,\n HighlightPipe\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","import {animate, group, 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\nconst ZERO_WIDTH = {\n opacity: 0,\n width: '0',\n paddingLeft: '0',\n paddingRight: '0',\n};\nconst ZERO_HEIGHT = {\n opacity: 0,\n height: '0',\n paddingTop: '0',\n paddingBottom: '0',\n};\nexport const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [\n transition(':enter', [\n style({ overflow: \"hidden\", whiteSpace: \"nowrap\", ...ZERO_WIDTH, ...ZERO_HEIGHT }),\n animate('{{duration}}')\n ], { params: { duration: '100ms' } }),\n transition(':leave',\n [\n style({ overflow: \"hidden\", whiteSpace: \"nowrap\" }),\n group([\n animate('{{duration}}', style(ZERO_HEIGHT)),\n // Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.\n // Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little\n // bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.\n animate('300ms', style(ZERO_WIDTH)),\n ])\n ], { 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 \"./garbage-collector.directive\";\nexport * from \"./highlight-text-model.directive\";\nexport * from \"./highlight.pipe\";\n","import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';\nimport {Constructable, Disposable, GarbageCollector, lang} 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) {\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 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 this.activityContainer.notifyReady(true);\n });\n\n return activityResult;\n }\n}\n","import {Inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {MAT_DIALOG_DEFAULT_OPTIONS, MatDialog, 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 {PlaceDefinition} from './place-definition';\n\nexport interface PlaceAccessGuard {\n isAuthenticated(): boolean;\n isAuthorised(placeDefinition: PlaceDefinition): boolean;\n}\n\nexport namespace PlaceAccessGuard {\n\n export class NoAuth implements PlaceAccessGuard {\n // @Trace()\n isAuthenticated(): boolean {\n return true;\n }\n // @Trace()\n isAuthorised(placeDefinition: PlaceDefinition): boolean {\n return true;\n }\n\n }\n}\n","import {Constructable, lang} 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: Constructable<any>) => {\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 options.redirectToFirstChild ?? false\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 /**\n * @deprecated use #redirectToFirstChild instead as it handles child authorisation checks automatically\n */\n defaultChild?: Constructable<PlaceComponent>;\n redirectToFirstChild?: boolean;\n }\n\n}\n\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoopAuthGuard {\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 {NavigationSession} from '../navigation/session/navigation-session';\nimport {PlaceHistory} from '../place-history';\nimport {VisitSegment} from '../visit-segment';\n\nexport class VisitSegmentSanitiser {\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(segment: VisitSegment): Promise<VisitSegment> {\n const placeDef = segment.placeDefinition;\n if (placeDef.hasRouteId()) {\n const routeIdDef = placeDef.getRouteIdParameterDef();\n const routeId = segment.getRouteId();\n const sanitisedValue = await routeIdDef.sanitise(routeId, segment, 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 segment.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 sanitisedSegment: VisitSegment = segment;\n for (let i = 0; i < parameterDefs.length; i++) {\n const def = parameterDefs[i];\n const value = segment.getParameterValue(def);\n const sanitisedValue = await def.sanitise(value, sanitisedSegment, this.placeHistory, this.injector, this.navigationSession.isPopState);\n if (def.hasChanged(value, sanitisedValue)) {\n sanitisedSegment = sanitisedSegment.replace(def, sanitisedValue);\n }\n }\n\n return sanitisedSegment.hasChangedFrom(segment) ? sanitisedSegment : segment;\n }\n\n}\n","import {Injectable, Injector} from '@angular/core';\nimport {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Constructable, lang} from '@coolon/pectin';\nimport {InteractionService} from '../../interaction/services/interaction.service';\nimport {PlaceAuthService} from \"../place-auth-service\";\nimport {PlaceComponent} from '../place-component';\nimport {PlaceDefinition} from '../place-definition';\nimport {PlaceHistory} from '../place-history';\nimport {PlaceRouter} from '../place-router';\nimport {VisitSegmentSanitiser} from '../route/visit-segment-sanitiser';\nimport {UrlService} from '../url-service';\nimport {UrlSnapshot} from '../url-snapshot';\nimport {Visit} from \"../visit\";\nimport {VisitSegment} from '../visit-segment';\nimport {ConsolidatedParameterMap} from './consolidated-param-map';\n\n@Injectable({providedIn: 'root'})\nexport class PlaceGuard {\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 get authService(): PlaceAuthService {\n return this.placeRouter.authService;\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 await this.placeRouter.authService.waitUntilAuthenticationReady();\n\n const authenticated = this.authService.isAuthenticated();\n\n if (!authenticated) {\n const redirect = this.authService.getAuthenticationFailureRedirect(activatedRoute, state);\n // const nextPlaceDef = this.getPlaceDefinition(redirect);\n if (redirect.requiresAuthentication()) {\n lang.illegalState(`onAuthenticationFailure hook returned place ${redirect.toDebugString()} that requires authentication.`);\n }\n return this.createUrlTree(redirect);\n }\n\n await this.authService.waitUntilAuthorisationReadyFor(placeDefinition);\n\n if (!this.authService.isAuthorised(placeDefinition)) {\n const nextRedirect = this.findBestAuthenticatedAlternative(placeDefinition, activatedRoute);\n return this.createUrlTree(nextRedirect);\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.getVisitSegmentFor(placeDefinition) || new VisitSegment(placeDefinition, parsedParams);\n const sanitiser = new VisitSegmentSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);\n const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));\n // Save the visit with any updated parameters. We need to save it so we remember any non route parameters\n navigationSession.updateVisitSegment(sanitisedVisit);\n\n const destUrlSnapshot = this.urlService.parseUrl(state.url);\n if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {\n // Regenerate the url and update our visit segment in the session\n // console.log('##### Place Guard Redirect', destUrlSnapshot.updateVisitSegment(sanitisedVisit));\n return destUrlSnapshot.updateVisitSegment(sanitisedVisit);\n } else {\n\n // Our visit parameters are all sorted, now check if we should redirect to our child.\n if (destUrlSnapshot.isLastPlaceInUrl(placeDefinition) && placeDefinition.redirectToFirstChild) {\n if (placeDefinition.children.length < 1) {\n lang.illegalState(`redirectToFirstChild set to true, but there were no children `);\n }\n for (const child of placeDefinition.children) {\n if (!child.authenticate || this.authService.isAuthorised(child)) {\n return destUrlSnapshot.appendSegment(new VisitSegment(child))\n }\n }\n // hmm, what should I do here, we didn't have an authorised child\n lang.illegalState(`redirectToFirstChild set to true, but there were no authenticated children`);\n }\n\n return true;\n }\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 private findBestAuthenticatedAlternative(placeDefinition: PlaceDefinition, activatedRoute: ActivatedRouteSnapshot):Visit {\n let currentPlace = placeDefinition;\n while (!currentPlace.isRoot()) {\n currentPlace = currentPlace.parent;\n const permittedChild = currentPlace.findChild(c => this.authService.isAuthorised(c));\n if (permittedChild) {\n return Visit.goto(permittedChild.component);\n }\n }\n // Couldn't find an authorised ancestor so we check if there are router level defined alternatives\n const alternativeRoutes = this.placeRouter.getAuthorisationFailureRedirectOptions(activatedRoute.component);\n if (alternativeRoutes.length < 1) {\n return lang.illegalState(`onAuthorisationFailure hook didn't return any alternate places`);\n } else {\n const nextRedirect = alternativeRoutes.find(it => it.isAuthorised(this.authService))\n return nextRedirect ?? lang.illegalState(`onAuthorisationFailure hook didn't return any authorised locations`);\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> | VisitSegment | PlaceDefinition): PlaceDefinition {\n return result instanceof VisitSegment ?\n result.placeDefinition :\n result instanceof PlaceDefinition ?\n result :\n PlaceComponent.getDefinition(result);\n }\n\n private createUrlTree(visit: Visit) {\n return this.urlService.createUrlSnapshot(visit.segments).urlTree;\n }\n\n // @Trace()\n async cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, next: () => Promise<boolean | UrlSnapshot | UrlTree>): Promise<boolean | UrlSnapshot | UrlTree> {\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","import {isNaN as _isNaN, isNumber} 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>(formatter: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: object, propertyKey: string | symbol) => {\n const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, formatter);\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-auth-service\";\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-segment\";\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-segment-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 {GarbageCollector, MutableValueModel, ValueModel} from '@coolon/pectin';\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 _visible$ = new MutableValueModel<boolean>();\n // private _wakeEvents = new MutableStream<Instant>();\n // private _throttledWakeEvents: Stream<Instant>;\n\n constructor(@Inject(DOCUMENT) document: Document) {\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 app 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 this._visible$.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._visible$.value = this.isVisible();\n // this._wakeEvents.publish(Instant.now());\n }\n\n /**\n * @deprecated use visible$ instead.\n */\n get visibleModel(): ValueModel<boolean> {\n return this._visible$.readonly$;\n }\n get visible$(): ValueModel<boolean> {\n return this._visible$.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":["i1","i2","i1.FocusBindingFactory","i2.HighlightTextModelDirective","i3","i2.IconComponent","lang","i2.CommandDirective","i3.ScrollContainerComponent","i4.IconComponent","i5.CommandFaceComponent","i4","i1.CommandContainer","i6.PopupMenuRendererComponent","i2.FocusBindingFactory","i6.FocusBindingDirective","i5.FocusBindingDirective","i6.IconComponent","i5.CommandDirective","i7","i8.IconComponent","assert","i1.AbstractTableComponent","i1.CommandDirective","i3.IconComponent","i1.HighlightPipe","isFunction","i5.IconComponent","isNil","i3.TableCellComponent","i4.TableHeaderCellComponent","i2.ToolBarComponent","i3.CommandComponent","i4.MoreMenuComponent","isEmpty","i3.PaginatorComponent","i4.TableBodyComponent","i3.TreeInheritanceIconComponent","i1.HighlightTextModelDirective","i2.TableBodyComponent","i1.MarkdownService","i2.CommandComponent","i1.ModalInteractionContextFactory","Memoize","last","i3.InteractionService","i4.UrlService","i5.PlaceHistory","i2.MarkdownComponent","i3.ActivityActionsComponent","i4.ActivityTitleComponent","i5.ActivityBodyComponent","i1.PlaceRouter","i4.BusyOverlayComponent","i5","i6.ActivityOutletComponent","i2.ActivityContainerComponent","i1.CommandComponent","i2.InPlaceInteractionContextComponent","i1.InteractionService","i2.PopupInteractionContextComponent","i3.CommandDirective","i4.CommandComponent","i6.InPlaceInteractionContextComponent","i3.InPlaceInteractionContextComponent","i1.StringInputComponent","i2.ActivityActionsComponent","i6","i7.InPlaceInteractionContextComponent","i1.SelectInputComponent","i2.PlaceRouter","i6.GarbageCollectorDirective","i8.CommandFaceComponent","i7.IconComponent","i7.CommandFaceComponent","i2.UrlService","i3.PlaceRouter","i4.PlaceHistory","i5.InteractionService","_isNaN"],"mappings":"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"}