@coolon/angular-ui-powerups 12.4.9 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/assets/activities/activities.scss +1 -1
  2. package/assets/cards.scss +1 -1
  3. package/assets/form.scss +1 -1
  4. package/assets/interaction/editor/inline-string-editor.scss +1 -1
  5. package/assets/interaction.scss +1 -1
  6. package/assets/mixins.scss +2 -2
  7. package/assets/pills.scss +1 -1
  8. package/assets/styles.scss +1 -1
  9. package/{esm2015/lib/angular-ui-powerups.module.js → esm2020/lib/angular-ui-powerups.module.mjs} +5 -5
  10. package/esm2020/lib/components/busy-overlay/busy-overlay.component.mjs +32 -0
  11. package/{esm2015/lib/components/cards/abstract-card-container.component.js → esm2020/lib/components/cards/abstract-card-container.component.mjs} +4 -4
  12. package/esm2020/lib/components/cards/card-container/card-container.component.mjs +129 -0
  13. package/esm2020/lib/components/cards/card-stack/card-stack.component.mjs +81 -0
  14. package/esm2020/lib/components/commands/command/command.component.mjs +96 -0
  15. package/{esm2015/lib/components/commands/command-face/command-face.component.js → esm2020/lib/components/commands/command-face/command-face.component.mjs} +5 -10
  16. package/esm2020/lib/components/commands/command-face.mjs +112 -0
  17. package/{esm2015/lib/components/commands/flex.component.js → esm2020/lib/components/commands/flex.component.mjs} +4 -4
  18. package/esm2020/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +84 -0
  19. package/esm2020/lib/components/commands/group/popup-menu/more-menu.component.mjs +57 -0
  20. package/esm2020/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +101 -0
  21. package/esm2020/lib/components/commands/group/popup-menu/popup-menu.component.mjs +53 -0
  22. package/esm2020/lib/components/commands/group/tool-bar/tool-bar.component.mjs +31 -0
  23. package/{esm2015/lib/components/commands/separator.component.js → esm2020/lib/components/commands/separator.component.mjs} +5 -5
  24. package/{esm2015/lib/components/components.module.js → esm2020/lib/components/components.module.mjs} +6 -6
  25. package/{esm2015/lib/components/disposable-component.js → esm2020/lib/components/disposable-component.mjs} +4 -4
  26. package/{esm2015/lib/components/empty-state/empty-state.component.js → esm2020/lib/components/empty-state/empty-state.component.mjs} +6 -10
  27. package/{esm2015/lib/components/focus-container/focus-container.component.js → esm2020/lib/components/focus-container/focus-container.component.mjs} +6 -11
  28. package/{esm2015/lib/components/focusable.component.js → esm2020/lib/components/focusable.component.mjs} +6 -8
  29. package/{esm2015/lib/components/forms/abstract-input.component.js → esm2020/lib/components/forms/abstract-input.component.mjs} +4 -4
  30. package/{esm2015/lib/components/forms/abstract-list-input.component.js → esm2020/lib/components/forms/abstract-list-input.component.mjs} +4 -4
  31. package/{esm2015/lib/components/forms/abstract-value-input.component.js → esm2020/lib/components/forms/abstract-value-input.component.mjs} +4 -4
  32. package/esm2020/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +72 -0
  33. package/esm2020/lib/components/forms/checkbox-input/checkbox-input.component.mjs +29 -0
  34. package/esm2020/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +52 -0
  35. package/esm2020/lib/components/forms/number-input/number-input.component.mjs +33 -0
  36. package/esm2020/lib/components/forms/password-input/password-input.component.mjs +24 -0
  37. package/esm2020/lib/components/forms/select-input/select-input.component.mjs +57 -0
  38. package/esm2020/lib/components/forms/string-input/string-input.component.mjs +48 -0
  39. package/esm2020/lib/components/forms/text-input/text-input.component.mjs +30 -0
  40. package/esm2020/lib/components/icon/icon.component.mjs +52 -0
  41. package/esm2020/lib/components/labelled-value/labelled-value.component.mjs +20 -0
  42. package/esm2020/lib/components/loading-container/loading-container.component.mjs +50 -0
  43. package/esm2020/lib/components/noop/noop.component.mjs +13 -0
  44. package/{esm2015/lib/components/resize-aware.component.js → esm2020/lib/components/resize-aware.component.mjs} +4 -4
  45. package/esm2020/lib/components/scroll-container/scroll-container.component.mjs +15 -0
  46. package/esm2020/lib/components/section-header/section-header.component.mjs +36 -0
  47. package/{esm2015/lib/components/switch-case/switch-case.component.js → esm2020/lib/components/switch-case/switch-case.component.mjs} +11 -15
  48. package/esm2020/lib/components/tables/abstract-table-model.mjs +185 -0
  49. package/esm2020/lib/components/tables/abstract-table.component.mjs +168 -0
  50. package/{esm2015/lib/components/tables/table/cell-portal-ref.js → esm2020/lib/components/tables/table/cell-portal-ref.mjs} +2 -2
  51. package/esm2020/lib/components/tables/table/column-model.mjs +392 -0
  52. package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +35 -0
  53. package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +22 -0
  54. package/esm2020/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.mjs +15 -0
  55. package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +55 -0
  56. package/esm2020/lib/components/tables/table/paginator/paginator.component.mjs +40 -0
  57. package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +26 -0
  58. package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +31 -0
  59. package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +93 -0
  60. package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +32 -0
  61. package/{esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js → esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs} +5 -5
  62. package/esm2020/lib/components/tables/table/table.component.mjs +95 -0
  63. package/esm2020/lib/components/tables/tree-table/decorated-tree-node.mjs +171 -0
  64. package/esm2020/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +72 -0
  65. package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +91 -0
  66. package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +95 -0
  67. package/{esm2015/lib/components/text/markdown/markdown.component.js → esm2020/lib/components/text/markdown/markdown.component.mjs} +5 -9
  68. package/{esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js → esm2020/lib/components/vertical-focus-container/vertical-focus-container.component.mjs} +6 -11
  69. package/{esm2015/lib/directives/command.directive.js → esm2020/lib/directives/command.directive.mjs} +4 -4
  70. package/{esm2015/lib/directives/directives.module.js → esm2020/lib/directives/directives.module.mjs} +5 -5
  71. package/{esm2015/lib/directives/focus-binding-factory.js → esm2020/lib/directives/focus-binding-factory.mjs} +4 -4
  72. package/{esm2015/lib/directives/focus-binding.directive.js → esm2020/lib/directives/focus-binding.directive.mjs} +4 -4
  73. package/{esm2015/lib/directives/highlight-text-model.directive.js → esm2020/lib/directives/highlight-text-model.directive.mjs} +4 -4
  74. package/{esm2015/lib/directives/highlight.pipe.js → esm2020/lib/directives/highlight.pipe.mjs} +6 -7
  75. package/esm2020/lib/interaction/activity.mjs +87 -0
  76. package/{esm2015/lib/interaction/components/abstract-confirm-dialog.component.js → esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs} +4 -4
  77. package/{esm2015/lib/interaction/components/abstract-dialog.component.js → esm2020/lib/interaction/components/abstract-dialog.component.mjs} +4 -4
  78. package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +109 -0
  79. package/esm2020/lib/interaction/components/activity-body/activity-body.component.mjs +23 -0
  80. package/esm2020/lib/interaction/components/activity-container/activity-container.component.mjs +205 -0
  81. package/{esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js → esm2020/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs} +5 -9
  82. package/esm2020/lib/interaction/components/activity-title/activity-title.component.mjs +41 -0
  83. package/{esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js → esm2020/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.mjs} +5 -6
  84. package/esm2020/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +24 -0
  85. package/esm2020/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +22 -0
  86. package/esm2020/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +30 -0
  87. package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +91 -0
  88. package/esm2020/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +73 -0
  89. package/esm2020/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +30 -0
  90. package/esm2020/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +30 -0
  91. package/esm2020/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +34 -0
  92. package/esm2020/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +29 -0
  93. package/esm2020/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +173 -0
  94. package/esm2020/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +91 -0
  95. package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +103 -0
  96. package/{esm2015/lib/interaction/components/input-activities/select-input-activity.js → esm2020/lib/interaction/components/input-activities/select-input-activity.mjs} +6 -8
  97. package/{esm2015/lib/interaction/components/input-activities/string-input-activity.js → esm2020/lib/interaction/components/input-activities/string-input-activity.mjs} +4 -4
  98. package/{esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js → esm2020/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.mjs} +5 -9
  99. package/{esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js → esm2020/lib/interaction/directives/interaction-context-trigger-for.directive.mjs} +4 -4
  100. package/{esm2015/lib/interaction/interaction.module.js → esm2020/lib/interaction/interaction.module.mjs} +5 -11
  101. package/{esm2015/lib/interaction/services/interaction.service.js → esm2020/lib/interaction/services/interaction.service.mjs} +4 -4
  102. package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +47 -0
  103. package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +61 -0
  104. package/{esm2015/lib/place/components/abstract-place-navigation.component.js → esm2020/lib/place/components/abstract-place-navigation.component.mjs} +4 -4
  105. package/esm2020/lib/place/components/list-place-nav/list-place-nav.component.mjs +23 -0
  106. package/esm2020/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +13 -0
  107. package/esm2020/lib/place/components/place-outlet/place-outlet.component.mjs +256 -0
  108. package/esm2020/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +93 -0
  109. package/esm2020/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +22 -0
  110. package/esm2020/lib/place/guards/noop-auth-guard.service.mjs +18 -0
  111. package/esm2020/lib/place/guards/place.guard.mjs +109 -0
  112. package/esm2020/lib/place/navigation/place-component-deactivation-handler.mjs +83 -0
  113. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +43 -0
  114. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +152 -0
  115. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +62 -0
  116. package/esm2020/lib/place/navigation/session/navigation-session.mjs +157 -0
  117. package/esm2020/lib/place/place-component.mjs +198 -0
  118. package/esm2020/lib/place/place-history.mjs +138 -0
  119. package/esm2020/lib/place/place-router.mjs +331 -0
  120. package/esm2020/lib/place/place.decorator.mjs +18 -0
  121. package/{esm2015/lib/place/place.module.js → esm2020/lib/place/place.module.mjs} +5 -6
  122. package/esm2020/lib/place/route/parameter-definition.mjs +123 -0
  123. package/esm2020/lib/place/route/visit-sanitiser.mjs +41 -0
  124. package/{esm2015/lib/place/url-service.js → esm2020/lib/place/url-service.mjs} +4 -4
  125. package/esm2020/lib/place/visit.mjs +69 -0
  126. package/{esm2015/lib/services/markdown/markdown.service.js → esm2020/lib/services/markdown/markdown.service.mjs} +5 -5
  127. package/esm2020/lib/services/markdown/pill-plugin.mjs +37 -0
  128. package/esm2020/lib/services/visibility-service.mjs +79 -0
  129. package/fesm2015/{coolon-angular-ui-powerups.js → coolon-angular-ui-powerups.mjs} +1220 -1430
  130. package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -0
  131. package/fesm2020/coolon-angular-ui-powerups.mjs +9895 -0
  132. package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -0
  133. package/lib/services/visibility-service.d.ts +5 -1
  134. package/package.json +37 -25
  135. package/schematics/activity/index.js +3 -3
  136. package/schematics/activity/index.js.map +1 -1
  137. package/schematics/aup-i18n/index.js +7 -7
  138. package/schematics/aup-i18n/index.js.map +1 -1
  139. package/schematics/bootstrap-app/index.js +9 -9
  140. package/schematics/bootstrap-app/index.js.map +1 -1
  141. package/schematics/bootstrap-app/templates/src/styles.scss.template +2 -2
  142. package/schematics/component/index.js +3 -3
  143. package/schematics/component/index.js.map +1 -1
  144. package/schematics/ng-add/index.js +2 -2
  145. package/schematics/ng-add/index.js.map +1 -1
  146. package/schematics/place-add/index.js +3 -3
  147. package/schematics/place-add/index.js.map +1 -1
  148. package/schematics/place-bootstrap/index.js +1 -1
  149. package/schematics/place-bootstrap/index.js.map +1 -1
  150. package/schematics/place-routes/place-builder.js +6 -6
  151. package/schematics/place-routes/place-builder.js.map +1 -1
  152. package/schematics/place-routes/place-class-scanner.js +3 -3
  153. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  154. package/schematics/place-routes/place-def.js +4 -4
  155. package/schematics/place-routes/place-def.js.map +1 -1
  156. package/schematics/utils/decorators/decorated-class.js +1 -1
  157. package/schematics/utils/decorators/decorated-class.js.map +1 -1
  158. package/schematics/utils/import-def.js +3 -3
  159. package/schematics/utils/import-def.js.map +1 -1
  160. package/schematics/utils/method-scanner.js +4 -4
  161. package/schematics/utils/method-scanner.js.map +1 -1
  162. package/schematics/utils/path-helper.js +3 -3
  163. package/schematics/utils/path-helper.js.map +1 -1
  164. package/schematics/utils/source-file-scanner.js +5 -5
  165. package/schematics/utils/source-file-scanner.js.map +1 -1
  166. package/schematics/utils/source-file-utilities.js +1 -1
  167. package/schematics/utils/source-file-utilities.js.map +1 -1
  168. package/schematics/utils/template-utilities.js +4 -4
  169. package/schematics/utils/template-utilities.js.map +1 -1
  170. package/bundles/coolon-angular-ui-powerups.umd.js +0 -11847
  171. package/bundles/coolon-angular-ui-powerups.umd.js.map +0 -1
  172. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +0 -36
  173. package/esm2015/lib/components/cards/card-container/card-container.component.js +0 -133
  174. package/esm2015/lib/components/cards/card-stack/card-stack.component.js +0 -85
  175. package/esm2015/lib/components/commands/command/command.component.js +0 -100
  176. package/esm2015/lib/components/commands/command-face.js +0 -112
  177. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +0 -89
  178. package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js +0 -61
  179. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +0 -104
  180. package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js +0 -58
  181. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +0 -36
  182. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +0 -76
  183. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +0 -33
  184. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -56
  185. package/esm2015/lib/components/forms/number-input/number-input.component.js +0 -37
  186. package/esm2015/lib/components/forms/password-input/password-input.component.js +0 -28
  187. package/esm2015/lib/components/forms/select-input/select-input.component.js +0 -61
  188. package/esm2015/lib/components/forms/string-input/string-input.component.js +0 -52
  189. package/esm2015/lib/components/forms/text-input/text-input.component.js +0 -34
  190. package/esm2015/lib/components/icon/icon.component.js +0 -56
  191. package/esm2015/lib/components/labelled-value/labelled-value.component.js +0 -24
  192. package/esm2015/lib/components/loading-container/loading-container.component.js +0 -54
  193. package/esm2015/lib/components/noop/noop.component.js +0 -17
  194. package/esm2015/lib/components/scroll-container/scroll-container.component.js +0 -19
  195. package/esm2015/lib/components/section-header/section-header.component.js +0 -40
  196. package/esm2015/lib/components/tables/abstract-table-model.js +0 -188
  197. package/esm2015/lib/components/tables/abstract-table.component.js +0 -170
  198. package/esm2015/lib/components/tables/table/column-model.js +0 -389
  199. package/esm2015/lib/components/tables/table/column-template/column-template.directive.js +0 -36
  200. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js +0 -26
  201. package/esm2015/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.js +0 -19
  202. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +0 -60
  203. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +0 -44
  204. package/esm2015/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.js +0 -32
  205. package/esm2015/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.js +0 -37
  206. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +0 -98
  207. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +0 -36
  208. package/esm2015/lib/components/tables/table/table.component.js +0 -100
  209. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +0 -171
  210. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +0 -76
  211. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +0 -96
  212. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +0 -100
  213. package/esm2015/lib/interaction/activity.js +0 -88
  214. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +0 -113
  215. package/esm2015/lib/interaction/components/activity-body/activity-body.component.js +0 -27
  216. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +0 -214
  217. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +0 -45
  218. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +0 -28
  219. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +0 -26
  220. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +0 -34
  221. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +0 -95
  222. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +0 -77
  223. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +0 -34
  224. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +0 -34
  225. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +0 -39
  226. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +0 -33
  227. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +0 -176
  228. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +0 -96
  229. package/esm2015/lib/interaction/components/input-activities/input-activity.js +0 -107
  230. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +0 -41
  231. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +0 -58
  232. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +0 -27
  233. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +0 -17
  234. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +0 -263
  235. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +0 -97
  236. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +0 -26
  237. package/esm2015/lib/place/guards/noop-auth-guard.service.js +0 -21
  238. package/esm2015/lib/place/guards/place.guard.js +0 -116
  239. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +0 -88
  240. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +0 -46
  241. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.js +0 -159
  242. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +0 -65
  243. package/esm2015/lib/place/navigation/session/navigation-session.js +0 -160
  244. package/esm2015/lib/place/place-component.js +0 -204
  245. package/esm2015/lib/place/place-history.js +0 -139
  246. package/esm2015/lib/place/place-router.js +0 -336
  247. package/esm2015/lib/place/place.decorator.js +0 -19
  248. package/esm2015/lib/place/route/parameter-definition.js +0 -128
  249. package/esm2015/lib/place/route/visit-sanitiser.js +0 -44
  250. package/esm2015/lib/place/visit.js +0 -69
  251. package/esm2015/lib/services/markdown/pill-plugin.js +0 -38
  252. package/esm2015/lib/services/visibility-service.js +0 -75
  253. package/fesm2015/coolon-angular-ui-powerups.js.map +0 -1
  254. /package/{esm2015/coolon-angular-ui-powerups.js → esm2020/coolon-angular-ui-powerups.mjs} +0 -0
  255. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  256. /package/{esm2015/lib/animations/exports.js → esm2020/lib/animations/exports.mjs} +0 -0
  257. /package/{esm2015/lib/animations/slide-animations.js → esm2020/lib/animations/slide-animations.mjs} +0 -0
  258. /package/{esm2015/lib/components/alignment.js → esm2020/lib/components/alignment.mjs} +0 -0
  259. /package/{esm2015/lib/components/commands/group/command-container.js → esm2020/lib/components/commands/group/command-container.mjs} +0 -0
  260. /package/{esm2015/lib/components/commands/group/popup-aware.component.js → esm2020/lib/components/commands/group/popup-aware.component.mjs} +0 -0
  261. /package/{esm2015/lib/components/commands/group/popup-container.js → esm2020/lib/components/commands/group/popup-container.mjs} +0 -0
  262. /package/{esm2015/lib/components/exports.js → esm2020/lib/components/exports.mjs} +0 -0
  263. /package/{esm2015/lib/components/tables/column-list-model.js → esm2020/lib/components/tables/column-list-model.mjs} +0 -0
  264. /package/{esm2015/lib/components/tables/edit-session.js → esm2020/lib/components/tables/edit-session.mjs} +0 -0
  265. /package/{esm2015/lib/components/tables/table/cell-editors.js → esm2020/lib/components/tables/table/cell-editors.mjs} +0 -0
  266. /package/{esm2015/lib/components/tables/table/cell-renderer.js → esm2020/lib/components/tables/table/cell-renderer.mjs} +0 -0
  267. /package/{esm2015/lib/components/tables/table/column-text-properties.js → esm2020/lib/components/tables/table/column-text-properties.mjs} +0 -0
  268. /package/{esm2015/lib/components/tables/table/mutable-cell-renderer.js → esm2020/lib/components/tables/table/mutable-cell-renderer.mjs} +0 -0
  269. /package/{esm2015/lib/components/tables/table/table-def.js → esm2020/lib/components/tables/table/table-def.mjs} +0 -0
  270. /package/{esm2015/lib/components/tables/table/table-model.js → esm2020/lib/components/tables/table/table-model.mjs} +0 -0
  271. /package/{esm2015/lib/components/tables/table/text-search-predicate.js → esm2020/lib/components/tables/table/text-search-predicate.mjs} +0 -0
  272. /package/{esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js → esm2020/lib/components/tables/tree-table/flattened-tree-list-model.mjs} +0 -0
  273. /package/{esm2015/lib/components/tables/tree-table/tree-expansion-model.js → esm2020/lib/components/tables/tree-table/tree-expansion-model.mjs} +0 -0
  274. /package/{esm2015/lib/components/tables/tree-table/tree-label-column-model.js → esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs} +0 -0
  275. /package/{esm2015/lib/components/tables/tree-table/tree-table-model.js → esm2020/lib/components/tables/tree-table/tree-table-model.mjs} +0 -0
  276. /package/{esm2015/lib/components/track-by.js → esm2020/lib/components/track-by.mjs} +0 -0
  277. /package/{esm2015/lib/components/types/bounds.class.js → esm2020/lib/components/types/bounds.class.mjs} +0 -0
  278. /package/{esm2015/lib/components/types/dimension.class.js → esm2020/lib/components/types/dimension.class.mjs} +0 -0
  279. /package/{esm2015/lib/components/types/point.class.js → esm2020/lib/components/types/point.class.mjs} +0 -0
  280. /package/{esm2015/lib/directives/exports.js → esm2020/lib/directives/exports.mjs} +0 -0
  281. /package/{esm2015/lib/directives/focus-binding.js → esm2020/lib/directives/focus-binding.mjs} +0 -0
  282. /package/{esm2015/lib/interaction/abstract-interaction-context.js → esm2020/lib/interaction/abstract-interaction-context.mjs} +0 -0
  283. /package/{esm2015/lib/interaction/activity-ref.js → esm2020/lib/interaction/activity-ref.mjs} +0 -0
  284. /package/{esm2015/lib/interaction/alert.js → esm2020/lib/interaction/alert.mjs} +0 -0
  285. /package/{esm2015/lib/interaction/components/editors/edit-context.js → esm2020/lib/interaction/components/editors/edit-context.mjs} +0 -0
  286. /package/{esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js → esm2020/lib/interaction/components/editors/inline-string-editor/inline-editor-model.mjs} +0 -0
  287. /package/{esm2015/lib/interaction/confirm.js → esm2020/lib/interaction/confirm.mjs} +0 -0
  288. /package/{esm2015/lib/interaction/exports.js → esm2020/lib/interaction/exports.mjs} +0 -0
  289. /package/{esm2015/lib/interaction/in-place-interaction-context.js → esm2020/lib/interaction/in-place-interaction-context.mjs} +0 -0
  290. /package/{esm2015/lib/interaction/interaction-context.js → esm2020/lib/interaction/interaction-context.mjs} +0 -0
  291. /package/{esm2015/lib/interaction/route-synchronisation-adapter.js → esm2020/lib/interaction/route-synchronisation-adapter.mjs} +0 -0
  292. /package/{esm2015/lib/interaction/services/interaction-service-routing-adapter.js → esm2020/lib/interaction/services/interaction-service-routing-adapter.mjs} +0 -0
  293. /package/{esm2015/lib/interaction/services/modal-interaction-context.factory.js → esm2020/lib/interaction/services/modal-interaction-context.factory.mjs} +0 -0
  294. /package/{esm2015/lib/place/components/place-outlet/route-animations.js → esm2020/lib/place/components/place-outlet/route-animations.mjs} +0 -0
  295. /package/{esm2015/lib/place/exports.js → esm2020/lib/place/exports.mjs} +0 -0
  296. /package/{esm2015/lib/place/guards/consolidated-param-map.js → esm2020/lib/place/guards/consolidated-param-map.mjs} +0 -0
  297. /package/{esm2015/lib/place/nav-item.js → esm2020/lib/place/nav-item.mjs} +0 -0
  298. /package/{esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js → esm2020/lib/place/navigation/session/abstract-pop-state-navigation.mjs} +0 -0
  299. /package/{esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.js → esm2020/lib/place/navigation/session/event-cleanup/event-clean-up-session.mjs} +0 -0
  300. /package/{esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js → esm2020/lib/place/navigation/session/interactions/navigating-during-interaction.mjs} +0 -0
  301. /package/{esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js → esm2020/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.mjs} +0 -0
  302. /package/{esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js → esm2020/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.mjs} +0 -0
  303. /package/{esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js → esm2020/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs} +0 -0
  304. /package/{esm2015/lib/place/navigation/session/navigating.js → esm2020/lib/place/navigation/session/navigating.mjs} +0 -0
  305. /package/{esm2015/lib/place/navigation/session/navigation-context.js → esm2020/lib/place/navigation/session/navigation-context.mjs} +0 -0
  306. /package/{esm2015/lib/place/navigation/session/pop-state-navigation.js → esm2020/lib/place/navigation/session/pop-state-navigation.mjs} +0 -0
  307. /package/{esm2015/lib/place/place-access-guard.js → esm2020/lib/place/place-access-guard.mjs} +0 -0
  308. /package/{esm2015/lib/place/place-config.js → esm2020/lib/place/place-config.mjs} +0 -0
  309. /package/{esm2015/lib/place/place-definition.js → esm2020/lib/place/place-definition.mjs} +0 -0
  310. /package/{esm2015/lib/place/route/formatter.js → esm2020/lib/place/route/formatter.mjs} +0 -0
  311. /package/{esm2015/lib/place/route/json-types.js → esm2020/lib/place/route/json-types.mjs} +0 -0
  312. /package/{esm2015/lib/place/route/parameter-decorators.js → esm2020/lib/place/route/parameter-decorators.mjs} +0 -0
  313. /package/{esm2015/lib/place/route/parameter-sanitiser.js → esm2020/lib/place/route/parameter-sanitiser.mjs} +0 -0
  314. /package/{esm2015/lib/place/route/parameter-snapshot.js → esm2020/lib/place/route/parameter-snapshot.mjs} +0 -0
  315. /package/{esm2015/lib/place/url-snapshot.js → esm2020/lib/place/url-snapshot.mjs} +0 -0
  316. /package/{esm2015/lib/services/exports.js → esm2020/lib/services/exports.mjs} +0 -0
  317. /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
@@ -0,0 +1,123 @@
1
+ import { MutableListModel, MutableValueModel } from '@coolon/pectin';
2
+ import { lang, Opts } from '@coolon/typescript-utilities';
3
+ import { isEqual, isFunction, isNil, isObject } from 'lodash';
4
+ const PARAMETER_DEFINITION_KEY = Symbol('parameterDefinition');
5
+ export class ParameterDefinition {
6
+ constructor(propertyName, options, urlFormat) {
7
+ this.propertyName = propertyName;
8
+ this.urlFormat = urlFormat;
9
+ this.options = Opts.get(options);
10
+ this.remember = this.options.getOptional('remember', false);
11
+ this.defaultValue = this.options.getOptional('defaultValue', null);
12
+ }
13
+ get name() {
14
+ return this.options.getOptional('as', this.propertyName);
15
+ }
16
+ // @Trace()
17
+ get isRouteParameter() {
18
+ return !!this.urlFormat;
19
+ }
20
+ createBackingModel() {
21
+ const model = this.backingModelFactory();
22
+ model[PARAMETER_DEFINITION_KEY] = this;
23
+ return model;
24
+ }
25
+ getOptionValue(key) {
26
+ return this.options.getOptional(key, null);
27
+ }
28
+ // @Trace()
29
+ async sanitise(value, visit, placeHistory, injector, isPopState) {
30
+ // console.log(`sanitise(${this.propertyName})`)
31
+ value = await this.sanitiseMissing(visit, placeHistory, value);
32
+ value = await this.runCustomSanitiser(value, visit, placeHistory, injector, isPopState);
33
+ return value;
34
+ }
35
+ async runCustomSanitiser(value, visit, placeHistory, injector, isPopState) {
36
+ const customSanitiser = this.prepareCustomSanitiser(injector);
37
+ return customSanitiser ? customSanitiser.sanitise(value, visit, injector) : value;
38
+ }
39
+ sanitiseMissing(visit, placeHistory, value) {
40
+ if (this.isMissingFrom(visit)) {
41
+ const returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);
42
+ if (returningFromSomewhereElse) {
43
+ const lastKnownVisit = placeHistory.getMostRecentVisitFor(visit.placeDefinition);
44
+ if (this.remember && lastKnownVisit) {
45
+ value = lastKnownVisit.getParameterValue(this);
46
+ }
47
+ value = this.isEmptyValue(value) ? this.defaultValue : value;
48
+ }
49
+ }
50
+ return value;
51
+ }
52
+ prepareCustomSanitiser(injector) {
53
+ const customSanitiser = this.options.getOptional('sanitiser', null);
54
+ if (isFunction(customSanitiser)) {
55
+ return injector.get(customSanitiser);
56
+ }
57
+ if (isObject(customSanitiser)) {
58
+ return isFunction(customSanitiser['sanitise']) ?
59
+ customSanitiser :
60
+ lang.illegalState(`expected @VisitParameter({sanitiser: ...}) for ${this.propertyName} to be a constructor or instance of ParameterSanitiser, got: ` + customSanitiser);
61
+ }
62
+ return undefined;
63
+ }
64
+ isMissingFrom(visit) {
65
+ return !visit.hasParameter(this);
66
+ }
67
+ }
68
+ (function (ParameterDefinition) {
69
+ class RouteId extends ParameterDefinition {
70
+ constructor() {
71
+ super(...arguments);
72
+ this.isRouteId = true;
73
+ this.isArray = false;
74
+ this.backingModelFactory = () => new MutableValueModel();
75
+ }
76
+ isEmptyValue(value) {
77
+ return isNil(value);
78
+ }
79
+ hasChanged(a, b) {
80
+ return a !== b;
81
+ }
82
+ }
83
+ ParameterDefinition.RouteId = RouteId;
84
+ class ValueParameter extends ParameterDefinition {
85
+ constructor() {
86
+ super(...arguments);
87
+ this.isRouteId = false;
88
+ this.isArray = false;
89
+ this.backingModelFactory = () => new MutableValueModel();
90
+ }
91
+ isEmptyValue(value) {
92
+ return isNil(value);
93
+ }
94
+ hasChanged(a, b) {
95
+ return a !== b;
96
+ }
97
+ }
98
+ ParameterDefinition.ValueParameter = ValueParameter;
99
+ class ArrayParameter extends ParameterDefinition {
100
+ constructor(parameterName, options, urlFormat) {
101
+ super(parameterName, options, urlFormat);
102
+ this.isRouteId = false;
103
+ this.isArray = true;
104
+ this.backingModelFactory = () => new MutableListModel();
105
+ }
106
+ isEmptyValue(value) {
107
+ return isNil(value) || value.length < 1;
108
+ }
109
+ hasChanged(a, b) {
110
+ return !isEqual(a, b);
111
+ }
112
+ }
113
+ ParameterDefinition.ArrayParameter = ArrayParameter;
114
+ function get(model) {
115
+ const parameterDefinition = model[PARAMETER_DEFINITION_KEY];
116
+ if (!parameterDefinition) {
117
+ lang.illegalArgument('model hasn\'t been annotated with @VisitParameter, @VisitParameterList or @RouteId');
118
+ }
119
+ return parameterDefinition;
120
+ }
121
+ ParameterDefinition.get = get;
122
+ })(ParameterDefinition || (ParameterDefinition = {}));
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9wbGFjZS9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXNDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDckgsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBTTlELE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFHL0QsTUFBTSxPQUFnQixtQkFBbUI7SUFVdkMsWUFBcUIsWUFBb0IsRUFBRSxPQUF1QyxFQUFXLFNBQXdCO1FBQWhHLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQW9ELGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDbkgsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFdBQVc7SUFDWCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFNRCxrQkFBa0I7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLGNBQWMsQ0FBaUQsR0FBTTtRQUM3RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztJQUNYLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBUSxFQUFFLEtBQVksRUFBRSxZQUEwQixFQUFFLFFBQWtCLEVBQUUsVUFBbUI7UUFDeEcsZ0RBQWdEO1FBQ2hELEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRCxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFRLEVBQUUsS0FBWSxFQUFFLFlBQTBCLEVBQUUsUUFBa0IsRUFBRSxVQUFtQjtRQUMxSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BGLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBWSxFQUFFLFlBQTBCLEVBQUUsS0FBUTtRQUN4RSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUYsSUFBSSwwQkFBMEIsRUFBRTtnQkFDOUIsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDakYsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGNBQWMsRUFBRTtvQkFDbkMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDaEQ7Z0JBQ0QsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUM5RDtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sc0JBQXNCLENBQUMsUUFBa0I7UUFDL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sVUFBVSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLGVBQTBDLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrREFBa0QsSUFBSSxDQUFDLFlBQVksK0RBQStELEdBQUcsZUFBZSxDQUFDLENBQUM7U0FDM0s7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQVk7UUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBRUQsV0FBaUIsbUJBQW1CO0lBVWxDLE1BQWEsT0FBVyxTQUFRLG1CQUFzQjtRQUF0RDs7WUFDVyxjQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7WUFDZix3QkFBbUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixFQUFLLENBQUM7UUFVbkUsQ0FBQztRQVJDLFlBQVksQ0FBQyxLQUFRO1lBQ25CLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxVQUFVLENBQUMsQ0FBTSxFQUFFLENBQU07WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7S0FFRjtJQWJZLDJCQUFPLFVBYW5CLENBQUE7SUFFRCxNQUFhLGNBQWtCLFNBQVEsbUJBQXNCO1FBQTdEOztZQUNXLGNBQVMsR0FBRyxLQUFLLENBQUM7WUFDbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztZQUNmLHdCQUFtQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksaUJBQWlCLEVBQUssQ0FBQztRQVNuRSxDQUFDO1FBUEMsWUFBWSxDQUFDLEtBQVE7WUFDbkIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELFVBQVUsQ0FBQyxDQUFNLEVBQUUsQ0FBTTtZQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsQ0FBQztLQUNGO0lBWlksa0NBQWMsaUJBWTFCLENBQUE7SUFFRCxNQUFhLGNBQWtCLFNBQVEsbUJBQTJCO1FBS2hFLFlBQVksYUFBcUIsRUFBRSxPQUFxQixFQUFFLFNBQXVCO1lBQy9FLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBTGxDLGNBQVMsR0FBRyxLQUFLLENBQUM7WUFDbEIsWUFBTyxHQUFHLElBQUksQ0FBQztZQUNkLHdCQUFtQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksZ0JBQWdCLEVBQUssQ0FBQztRQUloRSxDQUFDO1FBRUQsWUFBWSxDQUFDLEtBQVU7WUFDckIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELFVBQVUsQ0FBQyxDQUFNLEVBQUUsQ0FBTTtZQUN2QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO0tBRUY7SUFqQlksa0NBQWMsaUJBaUIxQixDQUFBO0lBSUQsU0FBZ0IsR0FBRyxDQUFJLEtBQW1DO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztTQUM1RztRQUNELE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQU5lLHVCQUFHLE1BTWxCLENBQUE7QUFHSCxDQUFDLEVBckVnQixtQkFBbUIsS0FBbkIsbUJBQW1CLFFBcUVuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBIYXNWYWx1ZSwgTGlzdE1vZGVsLCBNdXRhYmxlTGlzdE1vZGVsLCBNdXRhYmxlVmFsdWVNb2RlbCwgVmFsdWVNb2RlbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IGxhbmcsIE9wdHMgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgaXNFcXVhbCwgaXNGdW5jdGlvbiwgaXNOaWwsIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4uL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuLi92aXNpdCc7XG5pbXBvcnQgeyBGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL3BhcmFtZXRlci1zYW5pdGlzZXInO1xuXG5jb25zdCBQQVJBTUVURVJfREVGSU5JVElPTl9LRVkgPSBTeW1ib2woJ3BhcmFtZXRlckRlZmluaXRpb24nKTtcblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBFID0gVD4ge1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzUm91dGVJZDogYm9vbGVhbjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNBcnJheTogYm9vbGVhbjtcblxuICByZWFkb25seSByZW1lbWJlcjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVmYXVsdFZhbHVlOiBUO1xuICBwcml2YXRlIG9wdGlvbnM6IE9wdHM8UGFyYW1ldGVyRGVmaW5pdGlvbi5PcHRpb25zPFQ+PjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJhY2tpbmdNb2RlbEZhY3Rvcnk6ICgpID0+IEhhc1ZhbHVlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHByb3BlcnR5TmFtZTogc3RyaW5nLCBvcHRpb25zOiBQYXJhbWV0ZXJEZWZpbml0aW9uLk9wdGlvbnM8VD4sIHJlYWRvbmx5IHVybEZvcm1hdD86IEZvcm1hdHRlcjxFPikge1xuICAgIHRoaXMub3B0aW9ucyA9IE9wdHMuZ2V0KG9wdGlvbnMpO1xuICAgIHRoaXMucmVtZW1iZXIgPSB0aGlzLm9wdGlvbnMuZ2V0T3B0aW9uYWwoJ3JlbWVtYmVyJywgZmFsc2UpO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5vcHRpb25zLmdldE9wdGlvbmFsKCdkZWZhdWx0VmFsdWUnLCBudWxsKTtcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0T3B0aW9uYWwoJ2FzJywgdGhpcy5wcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0IGlzUm91dGVQYXJhbWV0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy51cmxGb3JtYXQ7XG4gIH1cblxuICBhYnN0cmFjdCBpc0VtcHR5VmFsdWUodmFsdWU6IFQpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGhhc0NoYW5nZWQoYTogYW55LCBiOiBhbnkpOiBib29sZWFuO1xuXG4gIGNyZWF0ZUJhY2tpbmdNb2RlbCgpOiBIYXNWYWx1ZTxUPiB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLmJhY2tpbmdNb2RlbEZhY3RvcnkoKTtcbiAgICBtb2RlbFtQQVJBTUVURVJfREVGSU5JVElPTl9LRVldID0gdGhpcztcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T3B0aW9uVmFsdWU8SyBleHRlbmRzIGtleW9mIFBhcmFtZXRlckRlZmluaXRpb24uT3B0aW9uczxUPj4oa2V5OiBLKTogUGFyYW1ldGVyRGVmaW5pdGlvbi5PcHRpb25zPFQ+W0tdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldE9wdGlvbmFsKGtleSwgbnVsbCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBzYW5pdGlzZSh2YWx1ZTogVCwgdmlzaXQ6IFZpc2l0LCBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSwgaW5qZWN0b3I6IEluamVjdG9yLCBpc1BvcFN0YXRlOiBib29sZWFuKTogUHJvbWlzZTxUPiB7XG4gICAgLy8gY29uc29sZS5sb2coYHNhbml0aXNlKCR7dGhpcy5wcm9wZXJ0eU5hbWV9KWApXG4gICAgdmFsdWUgPSBhd2FpdCB0aGlzLnNhbml0aXNlTWlzc2luZyh2aXNpdCwgcGxhY2VIaXN0b3J5LCB2YWx1ZSk7XG4gICAgdmFsdWUgPSBhd2FpdCB0aGlzLnJ1bkN1c3RvbVNhbml0aXNlcih2YWx1ZSwgdmlzaXQsIHBsYWNlSGlzdG9yeSwgaW5qZWN0b3IsIGlzUG9wU3RhdGUpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuQ3VzdG9tU2FuaXRpc2VyKHZhbHVlOiBULCB2aXNpdDogVmlzaXQsIHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LCBpbmplY3RvcjogSW5qZWN0b3IsIGlzUG9wU3RhdGU6IGJvb2xlYW4pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjdXN0b21TYW5pdGlzZXIgPSB0aGlzLnByZXBhcmVDdXN0b21TYW5pdGlzZXIoaW5qZWN0b3IpO1xuICAgIHJldHVybiBjdXN0b21TYW5pdGlzZXIgPyBjdXN0b21TYW5pdGlzZXIuc2FuaXRpc2UodmFsdWUsIHZpc2l0LCBpbmplY3RvcikgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpc2VNaXNzaW5nKHZpc2l0OiBWaXNpdCwgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnksIHZhbHVlOiBUKSB7XG4gICAgaWYgKHRoaXMuaXNNaXNzaW5nRnJvbSh2aXNpdCkpIHtcbiAgICAgIGNvbnN0IHJldHVybmluZ0Zyb21Tb21ld2hlcmVFbHNlID0gIXBsYWNlSGlzdG9yeS5sYXN0VmlzaXRJbmNsdWRlZCh2aXNpdC5wbGFjZURlZmluaXRpb24pO1xuICAgICAgaWYgKHJldHVybmluZ0Zyb21Tb21ld2hlcmVFbHNlKSB7XG4gICAgICAgIGNvbnN0IGxhc3RLbm93blZpc2l0ID0gcGxhY2VIaXN0b3J5LmdldE1vc3RSZWNlbnRWaXNpdEZvcih2aXNpdC5wbGFjZURlZmluaXRpb24pO1xuICAgICAgICBpZiAodGhpcy5yZW1lbWJlciAmJiBsYXN0S25vd25WaXNpdCkge1xuICAgICAgICAgIHZhbHVlID0gbGFzdEtub3duVmlzaXQuZ2V0UGFyYW1ldGVyVmFsdWUodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB0aGlzLmlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyB0aGlzLmRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVDdXN0b21TYW5pdGlzZXIoaW5qZWN0b3I6IEluamVjdG9yKTogUGFyYW1ldGVyU2FuaXRpc2VyPGFueT4ge1xuICAgIGNvbnN0IGN1c3RvbVNhbml0aXNlciA9IHRoaXMub3B0aW9ucy5nZXRPcHRpb25hbCgnc2FuaXRpc2VyJywgbnVsbCk7XG4gICAgaWYgKGlzRnVuY3Rpb24oY3VzdG9tU2FuaXRpc2VyKSkge1xuICAgICAgcmV0dXJuIGluamVjdG9yLmdldChjdXN0b21TYW5pdGlzZXIpO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QoY3VzdG9tU2FuaXRpc2VyKSkge1xuICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oY3VzdG9tU2FuaXRpc2VyWydzYW5pdGlzZSddKSA/XG4gICAgICAgIGN1c3RvbVNhbml0aXNlciBhcyBQYXJhbWV0ZXJTYW5pdGlzZXI8YW55PiA6XG4gICAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGBleHBlY3RlZCBAVmlzaXRQYXJhbWV0ZXIoe3Nhbml0aXNlcjogLi4ufSkgZm9yICR7dGhpcy5wcm9wZXJ0eU5hbWV9IHRvIGJlIGEgY29uc3RydWN0b3Igb3IgaW5zdGFuY2Ugb2YgUGFyYW1ldGVyU2FuaXRpc2VyLCBnb3Q6IGAgKyBjdXN0b21TYW5pdGlzZXIpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc01pc3NpbmdGcm9tKHZpc2l0OiBWaXNpdCkge1xuICAgIHJldHVybiAhdmlzaXQuaGFzUGFyYW1ldGVyKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGFyYW1ldGVyRGVmaW5pdGlvbiB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zPFQ+IHtcbiAgICBhcz86IHN0cmluZztcbiAgICBvcHRpb25hbD86IGJvb2xlYW47XG4gICAgcmVtZW1iZXI/OiBib29sZWFuO1xuICAgIGRlZmF1bHRWYWx1ZT86IFQ7XG4gICAgc2FuaXRpc2VyPzogQ29uc3RydWN0YWJsZTxQYXJhbWV0ZXJTYW5pdGlzZXI8VD4+IHwgUGFyYW1ldGVyU2FuaXRpc2VyPFQ+O1xuICB9XG5cbiAgZXhwb3J0IGNsYXNzIFJvdXRlSWQ8VD4gZXh0ZW5kcyBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+IHtcbiAgICByZWFkb25seSBpc1JvdXRlSWQgPSB0cnVlO1xuICAgIHJlYWRvbmx5IGlzQXJyYXkgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgYmFja2luZ01vZGVsRmFjdG9yeSA9ICgpID0+IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxUPigpO1xuXG4gICAgaXNFbXB0eVZhbHVlKHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaXNOaWwodmFsdWUpO1xuICAgIH1cblxuICAgIGhhc0NoYW5nZWQoYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhICE9PSBiO1xuICAgIH1cblxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIFZhbHVlUGFyYW1ldGVyPFQ+IGV4dGVuZHMgUGFyYW1ldGVyRGVmaW5pdGlvbjxUPiB7XG4gICAgcmVhZG9ubHkgaXNSb3V0ZUlkID0gZmFsc2U7XG4gICAgcmVhZG9ubHkgaXNBcnJheSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBiYWNraW5nTW9kZWxGYWN0b3J5ID0gKCkgPT4gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFQ+KCk7XG5cbiAgICBpc0VtcHR5VmFsdWUodmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpc05pbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaGFzQ2hhbmdlZChhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGEgIT09IGI7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEFycmF5UGFyYW1ldGVyPFQ+IGV4dGVuZHMgUGFyYW1ldGVyRGVmaW5pdGlvbjxUW10sIFQ+IHtcbiAgICByZWFkb25seSBpc1JvdXRlSWQgPSBmYWxzZTtcbiAgICByZWFkb25seSBpc0FycmF5ID0gdHJ1ZTtcbiAgICBwcm90ZWN0ZWQgYmFja2luZ01vZGVsRmFjdG9yeSA9ICgpID0+IG5ldyBNdXRhYmxlTGlzdE1vZGVsPFQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnM8VFtdPiwgdXJsRm9ybWF0OiBGb3JtYXR0ZXI8VD4pIHtcbiAgICAgIHN1cGVyKHBhcmFtZXRlck5hbWUsIG9wdGlvbnMsIHVybEZvcm1hdCk7XG4gICAgfVxuXG4gICAgaXNFbXB0eVZhbHVlKHZhbHVlOiBUW10pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpc05pbCh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoIDwgMTtcbiAgICB9XG5cbiAgICBoYXNDaGFuZ2VkKGE6IFRbXSwgYjogVFtdKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gIWlzRXF1YWwoYSwgYik7XG4gICAgfVxuXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0PFQ+KG1vZGVsOiBWYWx1ZU1vZGVsPFQ+KTogUGFyYW1ldGVyRGVmaW5pdGlvbi5WYWx1ZVBhcmFtZXRlcjxUPlxuICBleHBvcnQgZnVuY3Rpb24gZ2V0PFQ+KG1vZGVsOiBMaXN0TW9kZWw8VD4pOiBQYXJhbWV0ZXJEZWZpbml0aW9uLkFycmF5UGFyYW1ldGVyPFQ+XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXQ8VD4obW9kZWw6IFZhbHVlTW9kZWw8VD4gfCBMaXN0TW9kZWw8VD4pOiBQYXJhbWV0ZXJEZWZpbml0aW9uLlZhbHVlUGFyYW1ldGVyPFQ+IHwgUGFyYW1ldGVyRGVmaW5pdGlvbi5BcnJheVBhcmFtZXRlcjxUPiB7XG4gICAgY29uc3QgcGFyYW1ldGVyRGVmaW5pdGlvbiA9IG1vZGVsW1BBUkFNRVRFUl9ERUZJTklUSU9OX0tFWV07XG4gICAgaWYgKCFwYXJhbWV0ZXJEZWZpbml0aW9uKSB7XG4gICAgICBsYW5nLmlsbGVnYWxBcmd1bWVudCgnbW9kZWwgaGFzblxcJ3QgYmVlbiBhbm5vdGF0ZWQgd2l0aCBAVmlzaXRQYXJhbWV0ZXIsIEBWaXNpdFBhcmFtZXRlckxpc3Qgb3IgQFJvdXRlSWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtZXRlckRlZmluaXRpb247XG4gIH1cblxuXG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ export class VisitSanitiser {
2
+ constructor(navigationSession, activatedRoute, router, placeHistory, injector) {
3
+ this.navigationSession = navigationSession;
4
+ this.activatedRoute = activatedRoute;
5
+ this.router = router;
6
+ this.placeHistory = placeHistory;
7
+ this.injector = injector;
8
+ }
9
+ // @Trace()
10
+ async sanitise(visit) {
11
+ const placeDef = visit.placeDefinition;
12
+ if (placeDef.hasRouteId()) {
13
+ const routeIdDef = placeDef.getRouteIdParameterDef();
14
+ const routeId = visit.getRouteId();
15
+ const sanitisedValue = await routeIdDef.sanitise(routeId, visit, this.placeHistory, this.injector, this.navigationSession.isPopState);
16
+ // console.log({routeId, sanitisedValue});
17
+ // ###------- EARLY EXIT --------###
18
+ if (routeIdDef.hasChanged(routeId, sanitisedValue)) {
19
+ // if the route id has changed we redirect immediately as other
20
+ // parameter sanitisers might use it.
21
+ return visit.replace(routeIdDef, sanitisedValue);
22
+ }
23
+ }
24
+ // if we didn't replace the routeId we continue the url present parameters.
25
+ const parameterDefs = placeDef.getVisitParameterDefs({
26
+ includeRouteParameters: true,
27
+ includeNonRouteParameters: true
28
+ });
29
+ let sanitisedVisit = visit;
30
+ for (let i = 0; i < parameterDefs.length; i++) {
31
+ const def = parameterDefs[i];
32
+ const value = visit.getParameterValue(def);
33
+ const sanitisedValue = await def.sanitise(value, sanitisedVisit, this.placeHistory, this.injector, this.navigationSession.isPopState);
34
+ if (def.hasChanged(value, sanitisedValue)) {
35
+ sanitisedVisit = sanitisedVisit.replace(def, sanitisedValue);
36
+ }
37
+ }
38
+ return sanitisedVisit.hasChangedFrom(visit) ? sanitisedVisit : visit;
39
+ }
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQtc2FuaXRpc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2Uvcm91dGUvdmlzaXQtc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLGlCQUFvQyxFQUFVLGNBQXNDLEVBQVUsTUFBYyxFQUFVLFlBQTBCLEVBQVUsUUFBa0I7UUFBNUssc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFaE0sQ0FBQztJQUVELFdBQVc7SUFDWCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQVk7UUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUN2QyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN6QixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNyRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkMsTUFBTSxjQUFjLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0SSwwQ0FBMEM7WUFDMUMsb0NBQW9DO1lBQ3BDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ2xELCtEQUErRDtnQkFDL0QscUNBQXFDO2dCQUNyQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7UUFFRCwyRUFBMkU7UUFDM0UsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixDQUFDO1lBQ25ELHNCQUFzQixFQUFFLElBQUk7WUFDNUIseUJBQXlCLEVBQUUsSUFBSTtTQUNoQyxDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsR0FBVSxLQUFLLENBQUM7UUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxNQUFNLGNBQWMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ3pDLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQzthQUM5RDtTQUNGO1FBRUQsT0FBTyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN2RSxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuLi9uYXZpZ2F0aW9uL3Nlc3Npb24vbmF2aWdhdGlvbi1zZXNzaW9uJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4uL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuLi92aXNpdCc7XG5cbmV4cG9ydCBjbGFzcyBWaXNpdFNhbml0aXNlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmF2aWdhdGlvblNlc3Npb246IE5hdmlnYXRpb25TZXNzaW9uLCBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuXG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBzYW5pdGlzZSh2aXNpdDogVmlzaXQpOiBQcm9taXNlPFZpc2l0PiB7XG4gICAgY29uc3QgcGxhY2VEZWYgPSB2aXNpdC5wbGFjZURlZmluaXRpb247XG4gICAgaWYgKHBsYWNlRGVmLmhhc1JvdXRlSWQoKSkge1xuICAgICAgY29uc3Qgcm91dGVJZERlZiA9IHBsYWNlRGVmLmdldFJvdXRlSWRQYXJhbWV0ZXJEZWYoKTtcbiAgICAgIGNvbnN0IHJvdXRlSWQgPSB2aXNpdC5nZXRSb3V0ZUlkKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWREZWYuc2FuaXRpc2Uocm91dGVJZCwgdmlzaXQsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yLCB0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmlzUG9wU3RhdGUpO1xuICAgICAgLy8gY29uc29sZS5sb2coe3JvdXRlSWQsIHNhbml0aXNlZFZhbHVlfSk7XG4gICAgICAvLyAjIyMtLS0tLS0tIEVBUkxZIEVYSVQgLS0tLS0tLS0jIyNcbiAgICAgIGlmIChyb3V0ZUlkRGVmLmhhc0NoYW5nZWQocm91dGVJZCwgc2FuaXRpc2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBoYXMgY2hhbmdlZCB3ZSByZWRpcmVjdCBpbW1lZGlhdGVseSBhcyBvdGhlclxuICAgICAgICAvLyBwYXJhbWV0ZXIgc2FuaXRpc2VycyBtaWdodCB1c2UgaXQuXG4gICAgICAgIHJldHVybiB2aXNpdC5yZXBsYWNlKHJvdXRlSWREZWYsIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBkaWRuJ3QgcmVwbGFjZSB0aGUgcm91dGVJZCB3ZSBjb250aW51ZSB0aGUgdXJsIHByZXNlbnQgcGFyYW1ldGVycy5cbiAgICBjb25zdCBwYXJhbWV0ZXJEZWZzID0gcGxhY2VEZWYuZ2V0VmlzaXRQYXJhbWV0ZXJEZWZzKHtcbiAgICAgIGluY2x1ZGVSb3V0ZVBhcmFtZXRlcnM6IHRydWUsXG4gICAgICBpbmNsdWRlTm9uUm91dGVQYXJhbWV0ZXJzOiB0cnVlXG4gICAgfSk7XG4gICAgbGV0IHNhbml0aXNlZFZpc2l0OiBWaXNpdCA9IHZpc2l0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1ldGVyRGVmcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGVmID0gcGFyYW1ldGVyRGVmc1tpXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmlzaXQuZ2V0UGFyYW1ldGVyVmFsdWUoZGVmKTtcbiAgICAgIGNvbnN0IHNhbml0aXNlZFZhbHVlID0gYXdhaXQgZGVmLnNhbml0aXNlKHZhbHVlLCBzYW5pdGlzZWRWaXNpdCwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IsIHRoaXMubmF2aWdhdGlvblNlc3Npb24uaXNQb3BTdGF0ZSk7XG4gICAgICBpZiAoZGVmLmhhc0NoYW5nZWQodmFsdWUsIHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICBzYW5pdGlzZWRWaXNpdCA9IHNhbml0aXNlZFZpc2l0LnJlcGxhY2UoZGVmLCBzYW5pdGlzZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNhbml0aXNlZFZpc2l0Lmhhc0NoYW5nZWRGcm9tKHZpc2l0KSA/IHNhbml0aXNlZFZpc2l0IDogdmlzaXQ7XG4gIH1cblxufVxuIl19
@@ -54,12 +54,12 @@ export class UrlService {
54
54
  this.angularLocation.back();
55
55
  }
56
56
  }
57
- UrlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: UrlService, deps: [{ token: i1.Router }, { token: i2.Location }, { token: i1.UrlSerializer }], target: i0.ɵɵFactoryTarget.Injectable });
58
- UrlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: UrlService, providedIn: 'root' });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: UrlService, decorators: [{
57
+ UrlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UrlService, deps: [{ token: i1.Router }, { token: i2.Location }, { token: i1.UrlSerializer }], target: i0.ɵɵFactoryTarget.Injectable });
58
+ UrlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UrlService, providedIn: 'root' });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UrlService, decorators: [{
60
60
  type: Injectable,
61
61
  args: [{
62
62
  providedIn: 'root'
63
63
  }]
64
64
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }, { type: i1.UrlSerializer }]; } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9wbGFjZS91cmwtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU03QyxNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUE2QixhQUFxQixFQUFXLGVBQXlCLEVBQVcsYUFBNEI7UUFBaEcsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFBVyxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUFXLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzdILENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUcsTUFBZTtRQUNsQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdGLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCw2QkFBNkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsOEJBQThCLENBQUMsR0FBVztRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVztRQUMvQixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXLEVBQUUsT0FBb0M7UUFDcEUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzt3R0F0RFUsVUFBVTs0R0FBVixVQUFVLGNBRlQsTUFBTTs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgVXJsU2VyaWFsaXplciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVybFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJSb3V0ZXI6IFJvdXRlciwgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbiwgcmVhZG9ubHkgdXJsU2VyaWFsaXplcjogVXJsU2VyaWFsaXplcikge1xuICB9XG5cbiAgcGFyc2VVcmwodXJsOiBzdHJpbmcpOiBVcmxTbmFwc2hvdCB7XG4gICAgcmV0dXJuIG5ldyBVcmxTbmFwc2hvdCh0aGlzLnVybFNlcmlhbGl6ZXIsIHVybCk7XG4gIH1cblxuICBjcmVhdGVVcmxTbmFwc2hvdCguLi52aXNpdHM6IFZpc2l0W10pOiBVcmxTbmFwc2hvdCB7XG4gICAgY29uc3QgYml0cyA9IFtdO1xuICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4ge1xuICAgICAgYml0cy5wdXNoKHRoaXMucGFyc2VVcmwoYCR7di5wbGFjZURlZmluaXRpb24ucGF0aH1gKS51cGRhdGVWaXNpdFNlZ21lbnRzKHYpLnVybCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwoYml0cy5qb2luKCcnKSk7XG4gIH1cblxuICBnZXRDdXJyZW50Um91dGVyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhclJvdXRlci5yb3V0ZXJTdGF0ZSA/IHRoaXMuYW5ndWxhclJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q3VycmVudExvY2F0aW9uVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhckxvY2F0aW9uLnBhdGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGEgVXJsU25hcHNob3QgdXNpbmcgdGhlIGJyb3dzZXJzIGN1cnJlbnQgbG9jYXRpb24uICBOb3RlIHRoaXMgbWF5IG5vdCBiZSB0aGUgc2FtZVxuICAgKiBhcyB0aGUgcm91dGVycyBjdXJyZW50IHVybC5cbiAgICovXG4gIGdldEN1cnJlbnRMb2NhdGlvblVybFNuYXBzaG90KCk6IFVybFNuYXBzaG90IHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVVybCh0aGlzLmdldEN1cnJlbnRMb2NhdGlvblVybCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGEgVXJsU25hcHNob3QgdXNpbmcgdGhlIHJvdXRlcnMgY3VycmVudCBzdGF0ZS4gIFRoaXMgbWF5IG5vdCBiZSB0aGUgc2FtZSBhc1xuICAgKiB0aGUgYnJvd3NlcnMgYWN0dWFsIHVybC5cbiAgICovXG4gIGdldEN1cnJlbnRSb3V0ZXJTbmFwc2hvdCgpOiBVcmxTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodGhpcy5nZXRDdXJyZW50Um91dGVyVXJsKCkpO1xuICB9XG5cbiAgZ2V0QWN0aXZlSW50ZXJhY3Rpb25JZHNGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlVXJsKHVybCkuZ2V0SW50ZXJhY3Rpb25JZHMoKTtcbiAgfVxuXG4gIGhhc0FjdGl2ZUludGVyYWN0aW9ucyh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUludGVyYWN0aW9uSWRzRnJvbVVybCh1cmwpLmxlbmd0aCA+IDA7XG4gIH1cblxuICByZXNldEJyb3dzZXJMb2NhdGlvbih1cmw6IHN0cmluZywgb3B0aW9uczogeyByZXBsYWNlQ3VycmVudDogYm9vbGVhbiB9KSB7XG4gICAgb3B0aW9ucy5yZXBsYWNlQ3VycmVudCA/IHRoaXMuYW5ndWxhckxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpIDogdGhpcy5hbmd1bGFyTG9jYXRpb24uZ28odXJsKTtcbiAgfVxuXG4gIGJhY2soKSB7XG4gICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uYmFjaygpO1xuICB9XG5cblxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9wbGFjZS91cmwtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU03QyxNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUE2QixhQUFxQixFQUFXLGVBQXlCLEVBQVcsYUFBNEI7UUFBaEcsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFBVyxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUFXLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzdILENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUcsTUFBZTtRQUNsQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdGLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCw2QkFBNkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsOEJBQThCLENBQUMsR0FBVztRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVztRQUMvQixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXLEVBQUUsT0FBb0M7UUFDcEUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzt1R0F0RFUsVUFBVTsyR0FBVixVQUFVLGNBRlQsTUFBTTsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgVXJsU2VyaWFsaXplciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVybFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJSb3V0ZXI6IFJvdXRlciwgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbiwgcmVhZG9ubHkgdXJsU2VyaWFsaXplcjogVXJsU2VyaWFsaXplcikge1xuICB9XG5cbiAgcGFyc2VVcmwodXJsOiBzdHJpbmcpOiBVcmxTbmFwc2hvdCB7XG4gICAgcmV0dXJuIG5ldyBVcmxTbmFwc2hvdCh0aGlzLnVybFNlcmlhbGl6ZXIsIHVybCk7XG4gIH1cblxuICBjcmVhdGVVcmxTbmFwc2hvdCguLi52aXNpdHM6IFZpc2l0W10pOiBVcmxTbmFwc2hvdCB7XG4gICAgY29uc3QgYml0cyA9IFtdO1xuICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4ge1xuICAgICAgYml0cy5wdXNoKHRoaXMucGFyc2VVcmwoYCR7di5wbGFjZURlZmluaXRpb24ucGF0aH1gKS51cGRhdGVWaXNpdFNlZ21lbnRzKHYpLnVybCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwoYml0cy5qb2luKCcnKSk7XG4gIH1cblxuICBnZXRDdXJyZW50Um91dGVyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhclJvdXRlci5yb3V0ZXJTdGF0ZSA/IHRoaXMuYW5ndWxhclJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q3VycmVudExvY2F0aW9uVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhckxvY2F0aW9uLnBhdGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGEgVXJsU25hcHNob3QgdXNpbmcgdGhlIGJyb3dzZXJzIGN1cnJlbnQgbG9jYXRpb24uICBOb3RlIHRoaXMgbWF5IG5vdCBiZSB0aGUgc2FtZVxuICAgKiBhcyB0aGUgcm91dGVycyBjdXJyZW50IHVybC5cbiAgICovXG4gIGdldEN1cnJlbnRMb2NhdGlvblVybFNuYXBzaG90KCk6IFVybFNuYXBzaG90IHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVVybCh0aGlzLmdldEN1cnJlbnRMb2NhdGlvblVybCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGEgVXJsU25hcHNob3QgdXNpbmcgdGhlIHJvdXRlcnMgY3VycmVudCBzdGF0ZS4gIFRoaXMgbWF5IG5vdCBiZSB0aGUgc2FtZSBhc1xuICAgKiB0aGUgYnJvd3NlcnMgYWN0dWFsIHVybC5cbiAgICovXG4gIGdldEN1cnJlbnRSb3V0ZXJTbmFwc2hvdCgpOiBVcmxTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodGhpcy5nZXRDdXJyZW50Um91dGVyVXJsKCkpO1xuICB9XG5cbiAgZ2V0QWN0aXZlSW50ZXJhY3Rpb25JZHNGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlVXJsKHVybCkuZ2V0SW50ZXJhY3Rpb25JZHMoKTtcbiAgfVxuXG4gIGhhc0FjdGl2ZUludGVyYWN0aW9ucyh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUludGVyYWN0aW9uSWRzRnJvbVVybCh1cmwpLmxlbmd0aCA+IDA7XG4gIH1cblxuICByZXNldEJyb3dzZXJMb2NhdGlvbih1cmw6IHN0cmluZywgb3B0aW9uczogeyByZXBsYWNlQ3VycmVudDogYm9vbGVhbiB9KSB7XG4gICAgb3B0aW9ucy5yZXBsYWNlQ3VycmVudCA/IHRoaXMuYW5ndWxhckxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpIDogdGhpcy5hbmd1bGFyTG9jYXRpb24uZ28odXJsKTtcbiAgfVxuXG4gIGJhY2soKSB7XG4gICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uYmFjaygpO1xuICB9XG5cblxufVxuIl19
@@ -0,0 +1,69 @@
1
+ import { isEqual, isNil, isString } from 'lodash';
2
+ export class Visit {
3
+ constructor(placeDefinition, visitParameters = {}) {
4
+ this.placeDefinition = placeDefinition;
5
+ this.visitParameters = visitParameters;
6
+ }
7
+ // @Trace()
8
+ getRouteId() {
9
+ return this.placeDefinition.getRouteIdFrom(this);
10
+ }
11
+ // @Trace()
12
+ hasRouteId() {
13
+ return !isNil(this.getRouteId());
14
+ }
15
+ /**
16
+ * Returns the value of the place parameter with the specified name. The parameter
17
+ * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
18
+ * same as the the ValueModel property name.
19
+ * @param parameter the visit parameter definition
20
+ */
21
+ getParameterValue(parameter) {
22
+ return isString(parameter) ? this.visitParameters[parameter] : this.visitParameters[parameter.name];
23
+ }
24
+ // @Trace()
25
+ hasParameter(parameterDef) {
26
+ return Object.keys(this.visitParameters).includes(parameterDef.name);
27
+ }
28
+ replace(parameter, value) {
29
+ return new Visit(this.placeDefinition, { ...this.visitParameters, [parameter.name]: value });
30
+ }
31
+ mergeRouteParameters(routeParams) {
32
+ // todo: whitelist parameters.
33
+ const routeParameterKeys = Object.keys(routeParams);
34
+ const params = {};
35
+ this.placeDefinition.getVisitParameterDefs().forEach(def => {
36
+ if (def.isRouteId || def.isRouteParameter) {
37
+ if (routeParameterKeys.includes(def.name)) {
38
+ params[def.name] = routeParams[def.name];
39
+ }
40
+ }
41
+ else {
42
+ // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
43
+ // defaults and remember sanitisation process.
44
+ const value = this.getParameterValue(def);
45
+ if (this.hasParameter(def)) {
46
+ params[def.name] = value;
47
+ }
48
+ }
49
+ });
50
+ return new Visit(this.placeDefinition, params);
51
+ }
52
+ // @Trace()
53
+ hasRoutingChangedFrom(other) {
54
+ const samePlace = other.placeDefinition === this.placeDefinition;
55
+ const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
56
+ const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
57
+ // console.log({currentParams, otherParams});
58
+ const sameRouteParameters = isEqual(currentParams, otherParams);
59
+ return !samePlace || !sameRouteParameters;
60
+ }
61
+ hasChangedFrom(other) {
62
+ const sameNonRouteParameters = isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
63
+ return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
64
+ }
65
+ toDebugString() {
66
+ return Object.keys(this.visitParameters).map(k => `${k}=${this.visitParameters[k]}`).join(',');
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9wbGFjZS92aXNpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFTbEQsTUFBTSxPQUFPLEtBQUs7SUFFaEIsWUFBcUIsZUFBZ0MsRUFBbUIsa0JBQTBCLEVBQUU7UUFBL0Usb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLG9CQUFlLEdBQWYsZUFBZSxDQUFhO0lBQ3BHLENBQUM7SUFFRCxXQUFXO0lBQ1gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVc7SUFDWCxVQUFVO1FBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBTyxTQUE2QztRQUNuRSxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELFdBQVc7SUFDWCxZQUFZLENBQUMsWUFBc0M7UUFDakQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxPQUFPLENBQUksU0FBc0MsRUFBRSxLQUFRO1FBQ3pELE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxvQkFBb0IsQ0FBSSxXQUFpQztRQUN2RCw4QkFBOEI7UUFDOUIsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pDLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDekMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMxQzthQUNGO2lCQUFNO2dCQUNMLDhHQUE4RztnQkFDOUcsOENBQThDO2dCQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQzFCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsV0FBVztJQUNYLHFCQUFxQixDQUFDLEtBQVk7UUFDaEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ2pFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25GLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xGLDZDQUE2QztRQUM3QyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWTtRQUN6QixNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FDbEQsQ0FBQztRQUNGLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuaW1wb3J0IHsgaXNFcXVhbCwgaXNOaWwsIGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5cbmludGVyZmFjZSBQYXJhbXMge1xuICBbcDogc3RyaW5nXTogYW55O1xufVxuXG5cbmV4cG9ydCBjbGFzcyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24sIHByaXZhdGUgcmVhZG9ubHkgdmlzaXRQYXJhbWV0ZXJzOiBQYXJhbXMgPSB7fSkge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0Um91dGVJZCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXRSb3V0ZUlkRnJvbSh0aGlzKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGhhc1JvdXRlSWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc05pbCh0aGlzLmdldFJvdXRlSWQoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHBsYWNlIHBhcmFtZXRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4gIFRoZSBwYXJhbWV0ZXJcbiAgICogbmFtZSBpcyB0YWtlbiBmcm9tIHRoZSBgYXNgIG9wdGlvbiwgZS5nLiB7YXM6ICdhQ3VzdG9tTmFtZSd9IG90aGVyd2lzZSBpdCBpcyB0aGVcbiAgICogc2FtZSBhcyB0aGUgdGhlIFZhbHVlTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICogQHBhcmFtIHBhcmFtZXRlciB0aGUgdmlzaXQgcGFyYW1ldGVyIGRlZmluaXRpb25cbiAgICovXG4gIGdldFBhcmFtZXRlclZhbHVlPFQsIFM+KHBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPiB8IHN0cmluZyk6IFQge1xuICAgIHJldHVybiBpc1N0cmluZyhwYXJhbWV0ZXIpID8gdGhpcy52aXNpdFBhcmFtZXRlcnNbcGFyYW1ldGVyXSA6IHRoaXMudmlzaXRQYXJhbWV0ZXJzW3BhcmFtZXRlci5uYW1lXTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGhhc1BhcmFtZXRlcihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248YW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnZpc2l0UGFyYW1ldGVycykuaW5jbHVkZXMocGFyYW1ldGVyRGVmLm5hbWUpO1xuICB9XG5cbiAgcmVwbGFjZTxUPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VCwgYW55PiwgdmFsdWU6IFQpOiBWaXNpdCB7XG4gICAgcmV0dXJuIG5ldyBWaXNpdCh0aGlzLnBsYWNlRGVmaW5pdGlvbiwgeyAuLi50aGlzLnZpc2l0UGFyYW1ldGVycywgW3BhcmFtZXRlci5uYW1lXTogdmFsdWUgfSk7XG4gIH1cblxuICBtZXJnZVJvdXRlUGFyYW1ldGVyczxTPihyb3V0ZVBhcmFtczogeyBbcDogc3RyaW5nXTogYW55IH0pOiBWaXNpdCB7XG4gICAgLy8gdG9kbzogd2hpdGVsaXN0IHBhcmFtZXRlcnMuXG4gICAgY29uc3Qgcm91dGVQYXJhbWV0ZXJLZXlzID0gT2JqZWN0LmtleXMocm91dGVQYXJhbXMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIHRoaXMucGxhY2VEZWZpbml0aW9uLmdldFZpc2l0UGFyYW1ldGVyRGVmcygpLmZvckVhY2goZGVmID0+IHtcbiAgICAgIGlmIChkZWYuaXNSb3V0ZUlkIHx8IGRlZi5pc1JvdXRlUGFyYW1ldGVyKSB7XG4gICAgICAgIGlmIChyb3V0ZVBhcmFtZXRlcktleXMuaW5jbHVkZXMoZGVmLm5hbWUpKSB7XG4gICAgICAgICAgcGFyYW1zW2RlZi5uYW1lXSA9IHJvdXRlUGFyYW1zW2RlZi5uYW1lXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29weSBub24gcm91dGUgcGFyYW1zIGFzIGlzLCBidXQgb25seSBpZiB0aGV5IGFscmVhZHkgZXhpc3Qgb3RoZXJ3aXNlIHdlJ2xsIGluamVjdCBuaWwgdmFsdWVzIGFuZCBicmVhayB0aGVcbiAgICAgICAgLy8gZGVmYXVsdHMgYW5kIHJlbWVtYmVyIHNhbml0aXNhdGlvbiBwcm9jZXNzLlxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0UGFyYW1ldGVyVmFsdWUoZGVmKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzUGFyYW1ldGVyKGRlZikpIHtcbiAgICAgICAgICBwYXJhbXNbZGVmLm5hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFZpc2l0KHRoaXMucGxhY2VEZWZpbml0aW9uLCBwYXJhbXMpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgaGFzUm91dGluZ0NoYW5nZWRGcm9tKG90aGVyOiBWaXNpdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNhbWVQbGFjZSA9IG90aGVyLnBsYWNlRGVmaW5pdGlvbiA9PT0gdGhpcy5wbGFjZURlZmluaXRpb247XG4gICAgY29uc3QgY3VycmVudFBhcmFtcyA9IHRoaXMucGxhY2VEZWZpbml0aW9uLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh0aGlzLCB0cnVlKTtcbiAgICBjb25zdCBvdGhlclBhcmFtcyA9IHRoaXMucGxhY2VEZWZpbml0aW9uLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyhvdGhlciwgdHJ1ZSk7XG4gICAgLy8gY29uc29sZS5sb2coe2N1cnJlbnRQYXJhbXMsIG90aGVyUGFyYW1zfSk7XG4gICAgY29uc3Qgc2FtZVJvdXRlUGFyYW1ldGVycyA9IGlzRXF1YWwoY3VycmVudFBhcmFtcywgb3RoZXJQYXJhbXMpO1xuICAgIHJldHVybiAhc2FtZVBsYWNlIHx8ICFzYW1lUm91dGVQYXJhbWV0ZXJzO1xuICB9XG5cbiAgaGFzQ2hhbmdlZEZyb20ob3RoZXI6IFZpc2l0KSB7XG4gICAgY29uc3Qgc2FtZU5vblJvdXRlUGFyYW1ldGVycyA9IGlzRXF1YWwoXG4gICAgICB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXROb25Sb3V0ZVBhcmFtZXRlcnModGhpcyksXG4gICAgICB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXROb25Sb3V0ZVBhcmFtZXRlcnMob3RoZXIpXG4gICAgKTtcbiAgICByZXR1cm4gIXNhbWVOb25Sb3V0ZVBhcmFtZXRlcnMgfHwgdGhpcy5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ob3RoZXIpO1xuICB9XG5cbiAgdG9EZWJ1Z1N0cmluZygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy52aXNpdFBhcmFtZXRlcnMpLm1hcChrID0+IGAke2t9PSR7dGhpcy52aXNpdFBhcmFtZXRlcnNba119YCkuam9pbignLCcpO1xuICB9XG5cbn1cbiJdfQ==
@@ -15,13 +15,13 @@ export class MarkdownService {
15
15
  }
16
16
  usePillExtension(renderer) {
17
17
  marked.use({
18
- extensions: [markdownPillExtension(renderer !== null && renderer !== void 0 ? renderer : (text => `<span class='aup-pill'>${text}<span>`))]
18
+ extensions: [markdownPillExtension(renderer ?? (text => `<span class='aup-pill'>${text}<span>`))]
19
19
  });
20
20
  }
21
21
  }
22
- MarkdownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: MarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23
- MarkdownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: MarkdownService });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: MarkdownService, decorators: [{
22
+ MarkdownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23
+ MarkdownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MarkdownService });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MarkdownService, decorators: [{
25
25
  type: Injectable
26
26
  }], ctorParameters: function () { return []; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3NlcnZpY2VzL21hcmtkb3duL21hcmtkb3duLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHdEQsTUFBTSxPQUFPLGVBQWU7SUFFMUI7SUFDQSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWU7UUFDcEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUMzQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFzQztRQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ1QsVUFBVSxFQUFFLENBQUMscUJBQXFCLENBQUMsUUFBUSxhQUFSLFFBQVEsY0FBUixRQUFRLEdBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDbEcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkdBbkJVLGVBQWU7aUhBQWYsZUFBZTs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tICdtYXJrZWQnO1xuaW1wb3J0IHsgbWFya2Rvd25QaWxsRXh0ZW5zaW9uIH0gZnJvbSAnLi9waWxsLXBsdWdpbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXJrZG93blNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgcmVuZGVyKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiBtYXJrZWQucGFyc2UoY29udGVudCwge1xuICAgICAgc21hcnRMaXN0czogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVySW5saW5lKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiBtYXJrZWQucGFyc2VJbmxpbmUoY29udGVudCk7XG4gIH1cblxuICB1c2VQaWxsRXh0ZW5zaW9uKHJlbmRlcmVyPzogKGNvbnRlbnQ6IHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgbWFya2VkLnVzZSh7XG4gICAgICBleHRlbnNpb25zOiBbbWFya2Rvd25QaWxsRXh0ZW5zaW9uKHJlbmRlcmVyID8/ICh0ZXh0ID0+IGA8c3BhbiBjbGFzcz0nYXVwLXBpbGwnPiR7dGV4dH08c3Bhbj5gKSldXG4gICAgfSk7XG4gIH1cbn1cblxuXG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3NlcnZpY2VzL21hcmtkb3duL21hcmtkb3duLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHdEQsTUFBTSxPQUFPLGVBQWU7SUFFMUI7SUFDQSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWU7UUFDcEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUMzQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFzQztRQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ1QsVUFBVSxFQUFFLENBQUMscUJBQXFCLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ2xHLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQW5CVSxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJztcbmltcG9ydCB7IG1hcmtkb3duUGlsbEV4dGVuc2lvbiB9IGZyb20gJy4vcGlsbC1wbHVnaW4nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWFya2Rvd25TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIHJlbmRlcihjb250ZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbWFya2VkLnBhcnNlKGNvbnRlbnQsIHtcbiAgICAgIHNtYXJ0TGlzdHM6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcklubGluZShjb250ZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbWFya2VkLnBhcnNlSW5saW5lKGNvbnRlbnQpO1xuICB9XG5cbiAgdXNlUGlsbEV4dGVuc2lvbihyZW5kZXJlcj86IChjb250ZW50OiBzdHJpbmcpID0+IHN0cmluZykge1xuICAgIG1hcmtlZC51c2Uoe1xuICAgICAgZXh0ZW5zaW9uczogW21hcmtkb3duUGlsbEV4dGVuc2lvbihyZW5kZXJlciA/PyAodGV4dCA9PiBgPHNwYW4gY2xhc3M9J2F1cC1waWxsJz4ke3RleHR9PHNwYW4+YCkpXVxuICAgIH0pO1xuICB9XG59XG5cblxuIl19
@@ -0,0 +1,37 @@
1
+ export const markdownPillExtension = (renderPill) => {
2
+ return {
3
+ name: 'aup-pill',
4
+ level: 'inline',
5
+ start: (src) => {
6
+ const index = src.match(/\(\([^)]/)?.index;
7
+ // if (index) {
8
+ // console.log({start:src})
9
+ // }
10
+ return index;
11
+ },
12
+ tokenizer: function (src) {
13
+ const rule = /^(\(\((([^)])+)\)\))/; // Regex for the complete token
14
+ const match = rule.exec(src);
15
+ if (match) {
16
+ const token = {
17
+ type: 'aup-pill',
18
+ raw: match[0],
19
+ text: match[2].trim(), // Additional custom properties
20
+ // tokens: [] // Array where child inline tokens will be generated
21
+ };
22
+ // console.log(token)
23
+ // this.lexer.inlineTokens(token.text, token.tokens); // Queue this data to be processed for inline tokens
24
+ return token;
25
+ }
26
+ else {
27
+ return undefined;
28
+ }
29
+ },
30
+ renderer: function (token) {
31
+ // @ts-ignore (until typings are up to date)
32
+ const url = token.text;
33
+ return renderPill(token.text);
34
+ }
35
+ };
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlsbC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9zZXJ2aWNlcy9tYXJrZG93bi9waWxsLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQW9DLEVBQUUsRUFBRTtJQUM1RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFFBQVE7UUFDZixLQUFLLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNyQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUMzQyxlQUFlO1lBQ2YsK0JBQStCO1lBQy9CLElBQUk7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxTQUFTLEVBQUUsVUFBOEIsR0FBVztZQUNsRCxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFFLCtCQUErQjtZQUNyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksS0FBSyxFQUFFO2dCQUNULE1BQU0sS0FBSyxHQUFHO29CQUNaLElBQUksRUFBRSxVQUFVO29CQUNoQixHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLCtCQUErQjtvQkFDdEQsK0VBQStFO2lCQUNoRixDQUFDO2dCQUNGLHFCQUFxQjtnQkFDckIsNkdBQTZHO2dCQUM3RyxPQUFPLEtBQUssQ0FBQzthQUNkO2lCQUFNO2dCQUNMLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQztRQUNELFFBQVEsRUFBRSxVQUE2QixLQUFxQjtZQUMxRCw0Q0FBNEM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN2QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUVGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiBtaWdyYXRlIHRvIG1hcmtkb3duLWl0IGFuZCBjb3B5IHRoaXMgcGx1Z2luOiBodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQtc3ViL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tICdtYXJrZWQnO1xuaW1wb3J0IFJlbmRlcmVyVGhpcyA9IG1hcmtlZC5SZW5kZXJlclRoaXM7XG5pbXBvcnQgVG9rZW5pemVyVGhpcyA9IG1hcmtlZC5Ub2tlbml6ZXJUaGlzO1xuaW1wb3J0IFRva2VucyA9IG1hcmtlZC5Ub2tlbnM7XG5cbmV4cG9ydCBjb25zdCBtYXJrZG93blBpbGxFeHRlbnNpb24gPSAocmVuZGVyUGlsbDogKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nKSA9PiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1cC1waWxsJyxcbiAgICBsZXZlbDogJ2lubGluZScsXG4gICAgc3RhcnQ6IChzcmM6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzcmMubWF0Y2goL1xcKFxcKFteKV0vKT8uaW5kZXg7XG4gICAgICAvLyBpZiAoaW5kZXgpIHtcbiAgICAgIC8vICAgICBjb25zb2xlLmxvZyh7c3RhcnQ6c3JjfSlcbiAgICAgIC8vIH1cbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9LFxuICAgIHRva2VuaXplcjogZnVuY3Rpb24odGhpczogVG9rZW5pemVyVGhpcywgc3JjOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHJ1bGUgPSAvXihcXChcXCgoKFteKV0pKylcXClcXCkpLzsgIC8vIFJlZ2V4IGZvciB0aGUgY29tcGxldGUgdG9rZW5cbiAgICAgIGNvbnN0IG1hdGNoID0gcnVsZS5leGVjKHNyYyk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB7XG4gICAgICAgICAgdHlwZTogJ2F1cC1waWxsJywgICAgICAgICAgLy8gU2hvdWxkIG1hdGNoIFwibmFtZVwiIGFib3ZlXG4gICAgICAgICAgcmF3OiBtYXRjaFswXSwgICAgICAgICAvLyBUZXh0IHRvIGNvbnN1bWUgZnJvbSB0aGUgc291cmNlXG4gICAgICAgICAgdGV4dDogbWF0Y2hbMl0udHJpbSgpLCAvLyBBZGRpdGlvbmFsIGN1c3RvbSBwcm9wZXJ0aWVzXG4gICAgICAgICAgLy8gdG9rZW5zOiBbXSAgICAgICAgICAgICAgLy8gQXJyYXkgd2hlcmUgY2hpbGQgaW5saW5lIHRva2VucyB3aWxsIGJlIGdlbmVyYXRlZFxuICAgICAgICB9O1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0b2tlbilcbiAgICAgICAgLy8gdGhpcy5sZXhlci5pbmxpbmVUb2tlbnModG9rZW4udGV4dCwgdG9rZW4udG9rZW5zKTsgICAgLy8gUXVldWUgdGhpcyBkYXRhIHRvIGJlIHByb2Nlc3NlZCBmb3IgaW5saW5lIHRva2Vuc1xuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyZXI6IGZ1bmN0aW9uKHRoaXM6IFJlbmRlcmVyVGhpcywgdG9rZW46IFRva2Vucy5HZW5lcmljKSB7XG4gICAgICAvLyBAdHMtaWdub3JlICh1bnRpbCB0eXBpbmdzIGFyZSB1cCB0byBkYXRlKVxuICAgICAgY29uc3QgdXJsID0gdG9rZW4udGV4dDtcbiAgICAgIHJldHVybiByZW5kZXJQaWxsKHRva2VuLnRleHQpO1xuICAgIH1cblxuICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,79 @@
1
+ // TODO: Merge various wake detection events into this class. visibility, wake events, websocket connection, online detection.
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { Inject, Injectable } from '@angular/core';
4
+ import { Dsl, GarbageCollector, MutableValueModel } from '@coolon/pectin';
5
+ import * as i0 from "@angular/core";
6
+ // Taken from: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
7
+ export class VisibilityService extends GarbageCollector {
8
+ // private _wakeEvents = new MutableStream<Instant>();
9
+ // private _throttledWakeEvents: Stream<Instant>;
10
+ constructor(document) {
11
+ super();
12
+ this._visible$ = new MutableValueModel();
13
+ this.document = document; // see https://stackoverflow.com/a/53715642
14
+ const { chain } = Dsl.disposeWith(this);
15
+ // Set the name of the hidden property and the change event for visibility
16
+ if (typeof this.document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
17
+ this.attributeName = 'hidden';
18
+ this.eventName = 'visibilitychange';
19
+ }
20
+ else if (typeof this.document['msHidden'] !== 'undefined') {
21
+ this.attributeName = 'msHidden';
22
+ this.eventName = 'msvisibilitychange';
23
+ }
24
+ else if (typeof this.document['webkitHidden'] !== 'undefined') {
25
+ this.attributeName = 'webkitHidden';
26
+ this.eventName = 'webkitvisibilitychange';
27
+ }
28
+ // Warn if the browser doesn't support addEventListener or the Page Visibility API
29
+ if (typeof this.document.addEventListener === 'undefined' || typeof document[this.attributeName] === 'undefined') {
30
+ console.log('This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.');
31
+ }
32
+ else {
33
+ // Handle page visibility change
34
+ const handler = () => this.updateVisibilityState();
35
+ this.document.addEventListener(this.eventName, handler, false);
36
+ this.onDispose(() => {
37
+ this.document.removeEventListener(this.eventName, handler);
38
+ });
39
+ }
40
+ this._visible$.value = this.isVisible();
41
+ // give the network a chance to come back or we end up with a bunch of failed requests.
42
+ // should probably also implement a connection service so that we can go
43
+ // connectionServer.ensureConnectedThen(fireWakeEvent);
44
+ // this._throttledWakeEvents = chain(this._wakeEvents).throttle(300);
45
+ }
46
+ // get wakeEvents(): Stream<Instant> {
47
+ // return this._throttledWakeEvents;
48
+ // }
49
+ // @trace
50
+ updateVisibilityState() {
51
+ this._visible$.value = this.isVisible();
52
+ // this._wakeEvents.publish(Instant.now());
53
+ }
54
+ /**
55
+ * @deprecated use visible$ instead.
56
+ */
57
+ get visibleModel() {
58
+ return this._visible$.readonly;
59
+ }
60
+ get visible$() {
61
+ return this._visible$.readonly;
62
+ }
63
+ isHidden() {
64
+ return !!this.document[this.attributeName];
65
+ }
66
+ isVisible() {
67
+ return !this.isHidden();
68
+ }
69
+ }
70
+ VisibilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: VisibilityService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
71
+ VisibilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: VisibilityService, providedIn: 'root' });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: VisibilityService, decorators: [{
73
+ type: Injectable,
74
+ args: [{ providedIn: 'root' }]
75
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
76
+ type: Inject,
77
+ args: [DOCUMENT]
78
+ }] }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvc2VydmljZXMvdmlzaWJpbGl0eS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtIQUErSDtBQUcvSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGdCQUFnQixDQUFDOztBQUV0RixtRkFBbUY7QUFHbkYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUFnQjtJQU9yRCxzREFBc0Q7SUFDdEQsaURBQWlEO0lBRWpELFlBQThCLFFBQWE7UUFDekMsS0FBSyxFQUFFLENBQUM7UUFMRixjQUFTLEdBQUcsSUFBSSxpQkFBaUIsRUFBVyxDQUFDO1FBTW5ELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsMkNBQTJDO1FBRXJFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLDBFQUEwRTtRQUMxRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLEVBQUUsK0NBQStDO1lBQ2hHLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUM7U0FDckM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztTQUN2QzthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUMvRCxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLHdCQUF3QixDQUFDO1NBQzNDO1FBRUQsa0ZBQWtGO1FBQ2xGLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixLQUFLLFdBQVcsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ2hILE9BQU8sQ0FBQyxHQUFHLENBQUMsd0dBQXdHLENBQUMsQ0FBQztTQUN2SDthQUFNO1lBQ0wsZ0NBQWdDO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztTQUVKO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXhDLHVGQUF1RjtRQUN2Rix3RUFBd0U7UUFDeEUsdURBQXVEO1FBQ3ZELHFFQUFxRTtJQUV2RSxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLHNDQUFzQztJQUN0QyxJQUFJO0lBRUosU0FBUztJQUNDLHFCQUFxQjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEMsMkNBQTJDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7OEdBNUVVLGlCQUFpQixrQkFVUixRQUFRO2tIQVZqQixpQkFBaUIsY0FESixNQUFNOzJGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFXbkIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETzogTWVyZ2UgdmFyaW91cyB3YWtlIGRldGVjdGlvbiBldmVudHMgaW50byB0aGlzIGNsYXNzLiAgdmlzaWJpbGl0eSwgd2FrZSBldmVudHMsIHdlYnNvY2tldCBjb25uZWN0aW9uLCBvbmxpbmUgZGV0ZWN0aW9uLlxuXG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHNsLCBHYXJiYWdlQ29sbGVjdG9yLCBNdXRhYmxlVmFsdWVNb2RlbCwgVmFsdWVNb2RlbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuLy8gVGFrZW4gZnJvbTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BhZ2VfVmlzaWJpbGl0eV9BUElcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBWaXNpYmlsaXR5U2VydmljZSBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudE5hbWU6IHN0cmluZztcblxuICBwcml2YXRlIF92aXNpYmxlJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPigpO1xuICAvLyBwcml2YXRlIF93YWtlRXZlbnRzID0gbmV3IE11dGFibGVTdHJlYW08SW5zdGFudD4oKTtcbiAgLy8gcHJpdmF0ZSBfdGhyb3R0bGVkV2FrZUV2ZW50czogU3RyZWFtPEluc3RhbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDsgLy8gc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81MzcxNTY0MlxuXG4gICAgY29uc3QgeyBjaGFpbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgLy8gU2V0IHRoZSBuYW1lIG9mIHRoZSBoaWRkZW4gcHJvcGVydHkgYW5kIHRoZSBjaGFuZ2UgZXZlbnQgZm9yIHZpc2liaWxpdHlcbiAgICBpZiAodHlwZW9mIHRoaXMuZG9jdW1lbnQuaGlkZGVuICE9PSAndW5kZWZpbmVkJykgeyAvLyBPcGVyYSAxMi4xMCBhbmQgRmlyZWZveCAxOCBhbmQgbGF0ZXIgc3VwcG9ydFxuICAgICAgdGhpcy5hdHRyaWJ1dGVOYW1lID0gJ2hpZGRlbic7XG4gICAgICB0aGlzLmV2ZW50TmFtZSA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmRvY3VtZW50Wydtc0hpZGRlbiddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVOYW1lID0gJ21zSGlkZGVuJztcbiAgICAgIHRoaXMuZXZlbnROYW1lID0gJ21zdmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kb2N1bWVudFsnd2Via2l0SGlkZGVuJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU5hbWUgPSAnd2Via2l0SGlkZGVuJztcbiAgICAgIHRoaXMuZXZlbnROYW1lID0gJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnO1xuICAgIH1cblxuICAgIC8vIFdhcm4gaWYgdGhlIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGFkZEV2ZW50TGlzdGVuZXIgb3IgdGhlIFBhZ2UgVmlzaWJpbGl0eSBBUElcbiAgICBpZiAodHlwZW9mIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIGRvY3VtZW50W3RoaXMuYXR0cmlidXRlTmFtZV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmxvZygnVGhpcyBkZW1vIHJlcXVpcmVzIGEgYnJvd3Nlciwgc3VjaCBhcyBHb29nbGUgQ2hyb21lIG9yIEZpcmVmb3gsIHRoYXQgc3VwcG9ydHMgdGhlIFBhZ2UgVmlzaWJpbGl0eSBBUEkuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBwYWdlIHZpc2liaWxpdHkgY2hhbmdlXG4gICAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gdGhpcy51cGRhdGVWaXNpYmlsaXR5U3RhdGUoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmV2ZW50TmFtZSwgaGFuZGxlciwgZmFsc2UpO1xuICAgICAgdGhpcy5vbkRpc3Bvc2UoKCkgPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5ldmVudE5hbWUsIGhhbmRsZXIpO1xuICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB0aGlzLl92aXNpYmxlJC52YWx1ZSA9IHRoaXMuaXNWaXNpYmxlKCk7XG5cbiAgICAvLyBnaXZlIHRoZSBuZXR3b3JrIGEgY2hhbmNlIHRvIGNvbWUgYmFjayBvciB3ZSBlbmQgdXAgd2l0aCBhIGJ1bmNoIG9mIGZhaWxlZCByZXF1ZXN0cy5cbiAgICAvLyBzaG91bGQgcHJvYmFibHkgYWxzbyBpbXBsZW1lbnQgYSBjb25uZWN0aW9uIHNlcnZpY2Ugc28gdGhhdCB3ZSBjYW4gZ29cbiAgICAvLyBjb25uZWN0aW9uU2VydmVyLmVuc3VyZUNvbm5lY3RlZFRoZW4oZmlyZVdha2VFdmVudCk7XG4gICAgLy8gdGhpcy5fdGhyb3R0bGVkV2FrZUV2ZW50cyA9IGNoYWluKHRoaXMuX3dha2VFdmVudHMpLnRocm90dGxlKDMwMCk7XG5cbiAgfVxuXG4gIC8vIGdldCB3YWtlRXZlbnRzKCk6IFN0cmVhbTxJbnN0YW50PiB7XG4gIC8vICAgcmV0dXJuIHRoaXMuX3Rocm90dGxlZFdha2VFdmVudHM7XG4gIC8vIH1cblxuICAvLyBAdHJhY2VcbiAgcHJvdGVjdGVkIHVwZGF0ZVZpc2liaWxpdHlTdGF0ZSgpIHtcbiAgICB0aGlzLl92aXNpYmxlJC52YWx1ZSA9IHRoaXMuaXNWaXNpYmxlKCk7XG4gICAgLy8gdGhpcy5fd2FrZUV2ZW50cy5wdWJsaXNoKEluc3RhbnQubm93KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB2aXNpYmxlJCBpbnN0ZWFkLlxuICAgKi9cbiAgZ2V0IHZpc2libGVNb2RlbCgpOiBWYWx1ZU1vZGVsPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZSQucmVhZG9ubHk7XG4gIH1cbiAgZ2V0IHZpc2libGUkKCk6IFZhbHVlTW9kZWw8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlJC5yZWFkb25seTtcbiAgfVxuXG4gIGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZG9jdW1lbnRbdGhpcy5hdHRyaWJ1dGVOYW1lXTtcbiAgfVxuXG4gIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNIaWRkZW4oKTtcbiAgfVxuXG59XG4iXX0=