@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,198 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Directive } from '@angular/core';
3
+ import { ActivatedRouteSnapshot } from '@angular/router';
4
+ import { assert, Binding, DebugContext, Dsl, Guard, lang, MutableValueModel } from '@coolon/pectin';
5
+ import { Klass } from '@coolon/typescript-utilities';
6
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator';
7
+ import 'reflect-metadata';
8
+ import { isNil } from 'lodash';
9
+ import { DisposableComponent } from '../components/disposable-component';
10
+ import { PlaceDefinition } from './place-definition';
11
+ import { ParameterDefinition } from './route/parameter-definition';
12
+ import * as i0 from "@angular/core";
13
+ // RAKE: making this Symbol(...) broke things.
14
+ export const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
15
+ // this one seems ok.
16
+ export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
17
+ class ParameterChangeInterceptor {
18
+ constructor(parameterDef, model, callback, options) {
19
+ }
20
+ async canProceed(nextState, interactionContext) {
21
+ return true;
22
+ }
23
+ }
24
+ export class PlaceComponent extends DisposableComponent {
25
+ constructor() {
26
+ super();
27
+ this._placeReadyCallbacks = [];
28
+ this.visitModel = new MutableValueModel();
29
+ this._inVisitUpdate = new Guard();
30
+ this._active = new MutableValueModel(false);
31
+ this._parameterChangeInterceptors = [];
32
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
33
+ when(this._active).becomesTruthy(() => this._notifyPlaceReady());
34
+ this.childPlaces = this.placeDefinition.children.map(d => d.component);
35
+ }
36
+ initialiseVisit(visit, notifyVisitChanged) {
37
+ assert.isNil(this.visitModel.value);
38
+ const { when } = Dsl.disposeWith(this);
39
+ this.visitModel.value = visit;
40
+ DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
41
+ // we track if the any of the bindings updated the route. If so we remember it and update the
42
+ // route in one go at the end.
43
+ this.placeDefinition
44
+ .getVisitParameterDefs()
45
+ .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
46
+ when(this.visitModel).changes((current, previous) => {
47
+ notifyVisitChanged(current, previous);
48
+ }, { unless: this._inVisitUpdate });
49
+ // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
50
+ // now we're not doing it as it's a fair bit of effort and will only affect people if they're
51
+ // cutting and pasting urls to each other.
52
+ // // the binding process can update the visit (e.g. if a selection model has already selected during
53
+ // // component construction) and there was no value specified in the route
54
+ // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
55
+ // notifyVisitChanged(this.visitModel.value, visit)
56
+ // }
57
+ }
58
+ updateVisit(visit) {
59
+ assert.isTruthy(this.isInitialised());
60
+ assert.notNil(visit);
61
+ this._inVisitUpdate.whileTrue(() => {
62
+ this.visitModel.value = visit;
63
+ });
64
+ }
65
+ isInitialised() {
66
+ return !!this.visitModel.value;
67
+ }
68
+ // @Trace()
69
+ /**
70
+ * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
71
+ * initialised during the constructor) and the route has nothing, then the visit will be udpated and this
72
+ * method will return ture to nofiy the the visit has changed.
73
+ */
74
+ installAndInitialiseBinding(initialVisit, parameterDef) {
75
+ const model = this[parameterDef.propertyName];
76
+ DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
77
+ const binding = this.registerDisposable(new Binding(this.visitModel, model, {
78
+ toRight(visit) {
79
+ const value = visit.getParameterValue(parameterDef);
80
+ // console.log('push to component', { name: parameterDef.name, value, visit });
81
+ return value;
82
+ },
83
+ toLeft(value, currentVisit) {
84
+ // console.log('push to route', { name: parameterDef.name, value, currentVisit });
85
+ return currentVisit.replace(parameterDef, value);
86
+ }
87
+ }));
88
+ // Now we need to initialise the binding direction. If we have a value in the Url then we should always push
89
+ // that to the view. If we don't and the view already has a value (e.g. a selection model has already initialised in the
90
+ // component constructor) then we should push that to the route.
91
+ const isInVisit = !isNil(initialVisit.getParameterValue(parameterDef));
92
+ const isInModel = !isNil(model.value);
93
+ if (!isInVisit && isInModel) {
94
+ binding.writeLeft(); // push it to the route
95
+ }
96
+ else {
97
+ binding.writeRight(); // push it to the model
98
+ }
99
+ }
100
+ get placeDefinition() {
101
+ const definition = PlaceComponent.getDefinition(this.constructor);
102
+ if (!definition) {
103
+ lang.illegalState(`${this.constructor.name} extends PlaceComponent but doesn't have @Place({..}) decorator.`);
104
+ }
105
+ return definition;
106
+ }
107
+ get active() {
108
+ return this._active.readonly;
109
+ }
110
+ /**
111
+ * Called by the router to see if this component can deactivate. This isn't called for route parameter changes.
112
+ * @param interactionContext
113
+ */
114
+ async _canLeavePlace(interactionContext) {
115
+ return this.canDeactivate ? this.canDeactivate(interactionContext) : true;
116
+ }
117
+ /**
118
+ * Called by the router to see if this component can deactivate. This isn't called for route parameter changes.
119
+ * @param interactionContext
120
+ * @param nextState
121
+ */
122
+ async _canChangeRouteParameters(interactionContext, nextState) {
123
+ if (this._parameterChangeInterceptors.length > 0) {
124
+ const visit = nextState.createVisitFor(this.placeDefinition);
125
+ for (let i = 0; i < this._parameterChangeInterceptors.length; i++) {
126
+ const interceptor = this._parameterChangeInterceptors[i];
127
+ const keepGoing = await interceptor.canProceed(visit, interactionContext);
128
+ if (!keepGoing) {
129
+ return false;
130
+ }
131
+ }
132
+ }
133
+ return true;
134
+ }
135
+ /**
136
+ * Called by the router when the place is ready to interact after any animations have run.
137
+ */
138
+ _notifyActive(active) {
139
+ this._active.value = active;
140
+ }
141
+ /**
142
+ * Called by the router when the place is ready to interact after any animations have run.
143
+ */
144
+ _notifyPlaceReady() {
145
+ if (this.onPlaceReady.length === 1) {
146
+ this._placeReadyCallbacks.forEach(callback => callback());
147
+ }
148
+ else {
149
+ console.warn('Overriding PlaceComponent.onPlaceReady has been deprecated. Use PlaceComponent.onPlaceReady(() => {... do stuff...}) instead.');
150
+ this.onPlaceReady(undefined);
151
+ }
152
+ }
153
+ onPlaceReady(callback) {
154
+ this._placeReadyCallbacks.push(callback);
155
+ }
156
+ interceptVisitParameterChange(model, callback, options) {
157
+ const parameterDef = ParameterDefinition.get(model);
158
+ this._parameterChangeInterceptors.push(new ParameterChangeInterceptor(parameterDef, model, callback, options));
159
+ }
160
+ }
161
+ PlaceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
162
+ PlaceComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: PlaceComponent, usesInheritance: true, ngImport: i0 });
163
+ __decorate([
164
+ Memoize(),
165
+ __metadata("design:type", PlaceDefinition),
166
+ __metadata("design:paramtypes", [])
167
+ ], PlaceComponent.prototype, "placeDefinition", null);
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceComponent, decorators: [{
169
+ type: Directive
170
+ }], ctorParameters: function () { return []; }, propDecorators: { placeDefinition: [] } });
171
+ (function (PlaceComponent) {
172
+ function isPlaceComponentConstructor(target) {
173
+ return lang.constructorChain(target).includes(PlaceComponent);
174
+ }
175
+ PlaceComponent.isPlaceComponentConstructor = isPlaceComponentConstructor;
176
+ function getRouteParameters(klass) {
177
+ return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY);
178
+ }
179
+ PlaceComponent.getRouteParameters = getRouteParameters;
180
+ function getDefinition(snapshotOrConstructor) {
181
+ if (snapshotOrConstructor instanceof ActivatedRouteSnapshot) {
182
+ const component = snapshotOrConstructor.component;
183
+ if (!isPlaceComponentConstructor(component)) {
184
+ throw new Error(`ActivatedRouteSnapshot component is not a PlaceComponent, got ${component}`);
185
+ }
186
+ return Reflect.getMetadata(DEFINITION_META_DATA_KEY, component);
187
+ }
188
+ else {
189
+ return Reflect.getMetadata(DEFINITION_META_DATA_KEY, snapshotOrConstructor);
190
+ }
191
+ }
192
+ PlaceComponent.getDefinition = getDefinition;
193
+ function injectDefinition(klass, definition) {
194
+ Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);
195
+ }
196
+ PlaceComponent.injectDefinition = injectDefinition;
197
+ })(PlaceComponent || (PlaceComponent = {}));
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUVQLFlBQVksRUFDWixHQUFHLEVBQ0gsS0FBSyxFQUVMLElBQUksRUFDSixpQkFBaUIsRUFFbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xFLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBS25FLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztBQUNuRSxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFHekUsTUFBTSwwQkFBMEI7SUFDOUIsWUFBWSxZQUFvQyxFQUFFLEtBQW9CLEVBQUUsUUFBNkMsRUFBRSxPQUF3QztJQUMvSixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFnQixFQUFFLGtCQUFzQztRQUN2RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBTyxjQUFlLFNBQVEsbUJBQW1CO0lBYXJEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFaTyx5QkFBb0IsR0FBZSxFQUFFLENBQUM7UUFDL0MsZUFBVSxHQUFHLElBQUksaUJBQWlCLEVBQVMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFHLElBQUksaUJBQWlCLENBQVUsS0FBSyxDQUFDLENBQUM7UUFJdkMsaUNBQTRCLEdBQXNDLEVBQUUsQ0FBQztRQU1wRixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWSxFQUFFLGtCQUE2RDtRQUNoRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzlCLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUM7UUFFbkcsOEZBQThGO1FBQzlGLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsZUFBZTthQUNqQixxQkFBcUIsRUFBRTthQUN2QixPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDbEQsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVwQyxtR0FBbUc7UUFDbkcsbUdBQW1HO1FBQ25HLGdEQUFnRDtRQUNoRCxxR0FBcUc7UUFDckcsMkVBQTJFO1FBQzNFLDREQUE0RDtRQUM1RCxxREFBcUQ7UUFDckQsSUFBSTtJQUNOLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWTtRQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVc7SUFDWDs7OztPQUlHO0lBQ0ssMkJBQTJCLENBQU8sWUFBbUIsRUFBRSxZQUF1QztRQUNwRyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBd0IsQ0FBQztRQUNyRSxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUU7WUFDMUUsT0FBTyxDQUFDLEtBQVk7Z0JBQ2xCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDcEQsK0VBQStFO2dCQUMvRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBUSxFQUFFLFlBQW9CO2dCQUNuQyxrRkFBa0Y7Z0JBQ2xGLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQztTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUosNkdBQTZHO1FBQzdHLHlIQUF5SDtRQUN6SCxnRUFBZ0U7UUFDaEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QjtTQUM3QzthQUFNO1lBQ0wsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsdUJBQXVCO1NBQzlDO0lBQ0gsQ0FBQztJQUdELElBQUksZUFBZTtRQUNqQixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFtRCxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksa0VBQWtFLENBQUMsQ0FBQTtTQUM5RztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLGtCQUFzQztRQUN6RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHlCQUF5QixDQUFDLGtCQUFzQyxFQUFFLFNBQXNCO1FBQzVGLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDN0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekQsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNkLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLE1BQWU7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLGdJQUFnSSxDQUFDLENBQUM7WUFDL0ksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsUUFBb0I7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsNkJBQTZCLENBQUksS0FBb0IsRUFBRSxRQUE2QyxFQUFFLE9BQXlDO1FBQzdJLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksMEJBQTBCLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDOzsyR0FoS1UsY0FBYzsrRkFBZCxjQUFjO0FBOEZ6QjtJQURDLE9BQU8sRUFBRTs4QkFDYSxlQUFlOztxREFNckM7MkZBcEdVLGNBQWM7a0JBRDFCLFNBQVM7MEVBK0ZKLGVBQWU7QUFzRXJCLFdBQWlCLGNBQWM7SUFFN0IsU0FBZ0IsMkJBQTJCLENBQUMsTUFBVztRQUNyRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFGZSwwQ0FBMkIsOEJBRTFDLENBQUE7SUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFvQztRQUNyRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUErQixDQUFDO0lBQ2xHLENBQUM7SUFGZSxpQ0FBa0IscUJBRWpDLENBQUE7SUFFRCxTQUFnQixhQUFhLENBQUMscUJBQTZFO1FBQ3pHLElBQUkscUJBQXFCLFlBQVksc0JBQXNCLEVBQUU7WUFDM0QsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUMvRjtZQUNELE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBVmUsNEJBQWEsZ0JBVTVCLENBQUE7SUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFvQyxFQUFFLFVBQTJCO1FBQ2hHLE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFGZSwrQkFBZ0IsbUJBRS9CLENBQUE7QUFTSCxDQUFDLEVBakNnQixjQUFjLEtBQWQsY0FBYyxRQWlDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCaW5kaW5nLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWJ1Z0NvbnRleHQsXG4gIERzbCxcbiAgR3VhcmQsXG4gIElNdXRhYmxlSGFzVmFsdWUsXG4gIGxhbmcsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEtsYXNzIH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yJztcbmltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cblxuLy8gUkFLRTogbWFraW5nIHRoaXMgU3ltYm9sKC4uLikgYnJva2UgdGhpbmdzLlxuZXhwb3J0IGNvbnN0IERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSA9ICdQTEFDRV9ERUZJTklUSU9OX09QVElPTlMnO1xuLy8gdGhpcyBvbmUgc2VlbXMgb2suXG5leHBvcnQgY29uc3QgUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZID0gU3ltYm9sKCdwbGFjZTpyb3V0ZTpwYXJhbWV0ZXJzJyk7XG5cblxuY2xhc3MgUGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3I8VD4ge1xuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VD4sIG1vZGVsOiBWYWx1ZU1vZGVsPFQ+LCBjYWxsYmFjazogUGxhY2VDb21wb25lbnQuSW50ZXJjZXB0Q2FsbGJhY2s8VD4sIG9wdGlvbnM6IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdE9wdGlvbnMpIHtcbiAgfVxuXG4gIGFzeW5jIGNhblByb2NlZWQobmV4dFN0YXRlOiBWaXNpdCwgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQbGFjZUNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlUmVhZHlDYWxsYmFja3M6IEZ1bmN0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSB2aXNpdE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICBwcml2YXRlIF9pblZpc2l0VXBkYXRlID0gbmV3IEd1YXJkKCk7XG4gIHByaXZhdGUgX2FjdGl2ZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgaW50ZXJhY3Rpb25Db250ZXh0PzogSW50ZXJhY3Rpb25Db250ZXh0O1xuICBjaGlsZFBsYWNlczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3JzOiBQYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcjxhbnk+W10gPSBbXTtcblxuICBjYW5EZWFjdGl2YXRlPyhpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuKHRoaXMuX2FjdGl2ZSkuYmVjb21lc1RydXRoeSgoKSA9PiB0aGlzLl9ub3RpZnlQbGFjZVJlYWR5KCkpO1xuICAgIHRoaXMuY2hpbGRQbGFjZXMgPSB0aGlzLnBsYWNlRGVmaW5pdGlvbi5jaGlsZHJlbi5tYXAoZCA9PiBkLmNvbXBvbmVudCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGlzZVZpc2l0KHZpc2l0OiBWaXNpdCwgbm90aWZ5VmlzaXRDaGFuZ2VkOiAoY3VycmVudDogVmlzaXQsIHByZXZpb3VzOiBWaXNpdCkgPT4gdm9pZCkge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLnZpc2l0TW9kZWwudmFsdWUpO1xuXG4gICAgY29uc3QgeyB3aGVuIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnZpc2l0TW9kZWwudmFsdWUgPSB2aXNpdDtcbiAgICBEZWJ1Z0NvbnRleHQuZ2V0T3JDcmVhdGUodGhpcy52aXNpdE1vZGVsKS50YWcoYCR7dGhpcy5wbGFjZURlZmluaXRpb24uY29tcG9uZW50Lm5hbWV9LnZpc2l0TW9kZWxgKTtcblxuICAgIC8vIHdlIHRyYWNrIGlmIHRoZSBhbnkgb2YgdGhlIGJpbmRpbmdzIHVwZGF0ZWQgdGhlIHJvdXRlLiAgSWYgc28gd2UgcmVtZW1iZXIgaXQgYW5kIHVwZGF0ZSB0aGVcbiAgICAvLyByb3V0ZSBpbiBvbmUgZ28gYXQgdGhlIGVuZC5cbiAgICB0aGlzLnBsYWNlRGVmaW5pdGlvblxuICAgICAgLmdldFZpc2l0UGFyYW1ldGVyRGVmcygpXG4gICAgICAuZm9yRWFjaChwYXJhbWV0ZXJEZWYgPT4gdGhpcy5pbnN0YWxsQW5kSW5pdGlhbGlzZUJpbmRpbmcodmlzaXQsIHBhcmFtZXRlckRlZikpO1xuXG4gICAgd2hlbih0aGlzLnZpc2l0TW9kZWwpLmNoYW5nZXMoKGN1cnJlbnQsIHByZXZpb3VzKSA9PiB7XG4gICAgICBub3RpZnlWaXNpdENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpO1xuICAgIH0sIHsgdW5sZXNzOiB0aGlzLl9pblZpc2l0VXBkYXRlIH0pO1xuXG4gICAgLy8gVE9ETzogdGhpcyBuZWVkcyB0byBkbyBhIHJlcGxhY2UgdXJsIG9wdGlvbiBzbyB0aGF0IHRoZSBuZXcgdXJsIGlzbid0IHB1dCBpbiB0aGUgaGlzdG9yeS4uLi4gZm9yXG4gICAgLy8gICAgICAgbm93IHdlJ3JlIG5vdCBkb2luZyBpdCBhcyBpdCdzIGEgZmFpciBiaXQgb2YgZWZmb3J0IGFuZCB3aWxsIG9ubHkgYWZmZWN0IHBlb3BsZSBpZiB0aGV5J3JlXG4gICAgLy8gICAgICAgY3V0dGluZyBhbmQgcGFzdGluZyB1cmxzIHRvIGVhY2ggb3RoZXIuXG4gICAgLy8gLy8gdGhlIGJpbmRpbmcgcHJvY2VzcyBjYW4gdXBkYXRlIHRoZSB2aXNpdCAoZS5nLiBpZiBhIHNlbGVjdGlvbiBtb2RlbCBoYXMgYWxyZWFkeSBzZWxlY3RlZCBkdXJpbmdcbiAgICAvLyAvLyBjb21wb25lbnQgY29uc3RydWN0aW9uKSBhbmQgdGhlcmUgd2FzIG5vIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcm91dGVcbiAgICAvLyBpZiAodmlzaXQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHRoaXMudmlzaXRNb2RlbC52YWx1ZSkpIHtcbiAgICAvLyAgIG5vdGlmeVZpc2l0Q2hhbmdlZCh0aGlzLnZpc2l0TW9kZWwudmFsdWUsIHZpc2l0KVxuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWaXNpdCh2aXNpdDogVmlzaXQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5pc0luaXRpYWxpc2VkKCkpO1xuICAgIGFzc2VydC5ub3ROaWwodmlzaXQpO1xuICAgIHRoaXMuX2luVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRoaXMudmlzaXRNb2RlbC52YWx1ZSA9IHZpc2l0O1xuICAgIH0pO1xuICB9XG5cbiAgaXNJbml0aWFsaXNlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnZpc2l0TW9kZWwudmFsdWU7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICAvKipcbiAgICogSW5pdGlhbGlzZWQgdGhlIGNvbXBvbmVudCBiaW5kaW5ncy4gIElmIGFueSBiaW5kaW5nIGhhcyBhbiBpbml0aWFsIG1vZGVsIHZhbHVlIChlLmcuIGEgc2VsZWN0aW9uIG1vZGVsXG4gICAqIGluaXRpYWxpc2VkIGR1cmluZyB0aGUgY29uc3RydWN0b3IpIGFuZCB0aGUgcm91dGUgaGFzIG5vdGhpbmcsIHRoZW4gdGhlIHZpc2l0IHdpbGwgYmUgdWRwYXRlZCBhbmQgdGhpc1xuICAgKiBtZXRob2Qgd2lsbCByZXR1cm4gdHVyZSB0byBub2ZpeSB0aGUgdGhlIHZpc2l0IGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YWxsQW5kSW5pdGlhbGlzZUJpbmRpbmc8VCwgUz4oaW5pdGlhbFZpc2l0OiBWaXNpdCwgcGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzW3BhcmFtZXRlckRlZi5wcm9wZXJ0eU5hbWVdIGFzIElNdXRhYmxlSGFzVmFsdWU8VD47XG4gICAgRGVidWdDb250ZXh0LnRhZyhtb2RlbCwgYCR7dGhpcy5wbGFjZURlZmluaXRpb24uY29tcG9uZW50Lm5hbWV9LiR7cGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZX1gKTtcbiAgICBjb25zdCBiaW5kaW5nID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEJpbmRpbmcodGhpcy52aXNpdE1vZGVsLCBtb2RlbCwge1xuICAgICAgdG9SaWdodCh2aXNpdDogVmlzaXQpOiBUIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2aXNpdC5nZXRQYXJhbWV0ZXJWYWx1ZShwYXJhbWV0ZXJEZWYpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncHVzaCB0byBjb21wb25lbnQnLCB7IG5hbWU6IHBhcmFtZXRlckRlZi5uYW1lLCB2YWx1ZSwgdmlzaXQgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB0b0xlZnQodmFsdWU6IFQsIGN1cnJlbnRWaXNpdD86IFZpc2l0KTogVmlzaXQge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncHVzaCB0byByb3V0ZScsIHsgbmFtZTogcGFyYW1ldGVyRGVmLm5hbWUsIHZhbHVlLCBjdXJyZW50VmlzaXQgfSk7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmlzaXQucmVwbGFjZShwYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICAvLyBOb3cgd2UgbmVlZCB0byBpbml0aWFsaXNlIHRoZSBiaW5kaW5nIGRpcmVjdGlvbi4gIElmIHdlIGhhdmUgYSB2YWx1ZSBpbiB0aGUgVXJsIHRoZW4gd2Ugc2hvdWxkIGFsd2F5cyBwdXNoXG4gICAgLy8gdGhhdCB0byB0aGUgdmlldy4gIElmIHdlIGRvbid0IGFuZCB0aGUgdmlldyBhbHJlYWR5IGhhcyBhIHZhbHVlIChlLmcuIGEgc2VsZWN0aW9uIG1vZGVsIGhhcyBhbHJlYWR5IGluaXRpYWxpc2VkIGluIHRoZVxuICAgIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvcikgdGhlbiB3ZSBzaG91bGQgcHVzaCB0aGF0IHRvIHRoZSByb3V0ZS5cbiAgICBjb25zdCBpc0luVmlzaXQgPSAhaXNOaWwoaW5pdGlhbFZpc2l0LmdldFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlckRlZikpO1xuICAgIGNvbnN0IGlzSW5Nb2RlbCA9ICFpc05pbChtb2RlbC52YWx1ZSk7XG4gICAgaWYgKCFpc0luVmlzaXQgJiYgaXNJbk1vZGVsKSB7XG4gICAgICBiaW5kaW5nLndyaXRlTGVmdCgpOyAvLyBwdXNoIGl0IHRvIHRoZSByb3V0ZVxuICAgIH0gZWxzZSB7XG4gICAgICBiaW5kaW5nLndyaXRlUmlnaHQoKTsgLy8gcHVzaCBpdCB0byB0aGUgbW9kZWxcbiAgICB9XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldCBwbGFjZURlZmluaXRpb24oKTogUGxhY2VEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbih0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IGV4dGVuZHMgUGxhY2VDb21wb25lbnQgYnV0IGRvZXNuJ3QgaGF2ZSBAUGxhY2Uoey4ufSkgZGVjb3JhdG9yLmApXG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHRvIHNlZSBpZiB0aGlzIGNvbXBvbmVudCBjYW4gZGVhY3RpdmF0ZS4gIFRoaXMgaXNuJ3QgY2FsbGVkIGZvciByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcy5cbiAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgKi9cbiAgYXN5bmMgX2NhbkxlYXZlUGxhY2UoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5EZWFjdGl2YXRlID8gdGhpcy5jYW5EZWFjdGl2YXRlKGludGVyYWN0aW9uQ29udGV4dCkgOiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHRvIHNlZSBpZiB0aGlzIGNvbXBvbmVudCBjYW4gZGVhY3RpdmF0ZS4gIFRoaXMgaXNuJ3QgY2FsbGVkIGZvciByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcy5cbiAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgKiBAcGFyYW0gbmV4dFN0YXRlXG4gICAqL1xuICBhc3luYyBfY2FuQ2hhbmdlUm91dGVQYXJhbWV0ZXJzKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2aXNpdCA9IG5leHRTdGF0ZS5jcmVhdGVWaXNpdEZvcih0aGlzLnBsYWNlRGVmaW5pdGlvbik7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpbnRlcmNlcHRvciA9IHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yc1tpXTtcbiAgICAgICAgY29uc3Qga2VlcEdvaW5nID0gYXdhaXQgaW50ZXJjZXB0b3IuY2FuUHJvY2VlZCh2aXNpdCwgaW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICAgICAgaWYgKCFrZWVwR29pbmcpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIHJvdXRlciB3aGVuIHRoZSBwbGFjZSBpcyByZWFkeSB0byBpbnRlcmFjdCBhZnRlciBhbnkgYW5pbWF0aW9ucyBoYXZlIHJ1bi5cbiAgICovXG4gIF9ub3RpZnlBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYWN0aXZlLnZhbHVlID0gYWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHdoZW4gdGhlIHBsYWNlIGlzIHJlYWR5IHRvIGludGVyYWN0IGFmdGVyIGFueSBhbmltYXRpb25zIGhhdmUgcnVuLlxuICAgKi9cbiAgX25vdGlmeVBsYWNlUmVhZHkoKSB7XG4gICAgaWYgKHRoaXMub25QbGFjZVJlYWR5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fcGxhY2VSZWFkeUNhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ092ZXJyaWRpbmcgUGxhY2VDb21wb25lbnQub25QbGFjZVJlYWR5IGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBVc2UgUGxhY2VDb21wb25lbnQub25QbGFjZVJlYWR5KCgpID0+IHsuLi4gZG8gc3R1ZmYuLi59KSBpbnN0ZWFkLicpO1xuICAgICAgdGhpcy5vblBsYWNlUmVhZHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBvblBsYWNlUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9wbGFjZVJlYWR5Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgaW50ZXJjZXB0VmlzaXRQYXJhbWV0ZXJDaGFuZ2U8VD4obW9kZWw6IFZhbHVlTW9kZWw8VD4sIGNhbGxiYWNrOiBQbGFjZUNvbXBvbmVudC5JbnRlcmNlcHRDYWxsYmFjazxUPiwgb3B0aW9ucz86IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdE9wdGlvbnMpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJEZWYgPSBQYXJhbWV0ZXJEZWZpbml0aW9uLmdldChtb2RlbCk7XG4gICAgdGhpcy5fcGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3JzLnB1c2gobmV3IFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yKHBhcmFtZXRlckRlZiwgbW9kZWwsIGNhbGxiYWNrLCBvcHRpb25zKSk7XG4gIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlQ29tcG9uZW50IHtcblxuICBleHBvcnQgZnVuY3Rpb24gaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldDogYW55KTogdGFyZ2V0IGlzIENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gbGFuZy5jb25zdHJ1Y3RvckNoYWluKHRhcmdldCBhcyBDb25zdHJ1Y3RhYmxlPGFueT4pLmluY2x1ZGVzKFBsYWNlQ29tcG9uZW50KTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVBhcmFtZXRlcnMoa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10ge1xuICAgIHJldHVybiBLbGFzcy5nZXQoa2xhc3MpLmdldE1ldGFkYXRhTGlzdChST1VURV9QQVJBTUVURVJfTElTVF9LRVkpIGFzIFBhcmFtZXRlckRlZmluaXRpb248YW55PltdO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldERlZmluaXRpb24oc25hcHNob3RPckNvbnN0cnVjdG9yOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQbGFjZURlZmluaXRpb24ge1xuICAgIGlmIChzbmFwc2hvdE9yQ29uc3RydWN0b3IgaW5zdGFuY2VvZiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBzbmFwc2hvdE9yQ29uc3RydWN0b3IuY29tcG9uZW50O1xuICAgICAgaWYgKCFpc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IoY29tcG9uZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjdGl2YXRlZFJvdXRlU25hcHNob3QgY29tcG9uZW50IGlzIG5vdCBhIFBsYWNlQ29tcG9uZW50LCBnb3QgJHtjb21wb25lbnR9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIGNvbXBvbmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwgc25hcHNob3RPckNvbnN0cnVjdG9yKTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIGRlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBkZWZpbml0aW9uLCBrbGFzcyk7XG4gIH1cblxuICBleHBvcnQgdHlwZSBJbnRlcmNlcHRDYWxsYmFjazxUPiA9IChpczogVCwgd2FzOiBULCBpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJbnRlcmNlcHRPcHRpb25zIHtcbiAgICBpbml0aWFsVmFsdWU6ICdldmFsdWF0aW9uVW5sZXNzTmlsJyB8ICdldmFsdWF0ZSdcbiAgfVxuXG5cbn1cbiJdfQ==
@@ -0,0 +1,138 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { assert } from '@coolon/pectin';
3
+ import { first } from 'lodash';
4
+ import * as i0 from "@angular/core";
5
+ export class PlaceHistory {
6
+ constructor() {
7
+ this._archive = new Map();
8
+ this.placeHistoryDepth = 4;
9
+ }
10
+ notifyNavigationStarted() {
11
+ if (this._activeVisits) {
12
+ this.archive(this._activeVisits.visits);
13
+ this._previousVisits = this._activeVisits;
14
+ }
15
+ }
16
+ notifyNavigationFinished(visits) {
17
+ this._activeVisits = new PlaceHistory.VisitRecord(visits);
18
+ }
19
+ updateVisit(visit) {
20
+ assert.isTruthy(this._activeVisits);
21
+ this._activeVisits.update(visit);
22
+ }
23
+ lastVisitIncluded(placeDef) {
24
+ return !!this._previousVisits?.getVisitFor(placeDef);
25
+ }
26
+ getMostRecentVisitFor(placeDef) {
27
+ return first(this.getHistory(placeDef));
28
+ }
29
+ getHistory(placeDef) {
30
+ let history = this._archive.get(placeDef);
31
+ if (!history) {
32
+ history = [];
33
+ this.setHistory(placeDef, history);
34
+ }
35
+ return history;
36
+ }
37
+ setHistory(placeDef, history) {
38
+ this._archive.set(placeDef, history);
39
+ }
40
+ archive(visits) {
41
+ visits.forEach(state => {
42
+ const history = this.getHistory(state.placeDefinition);
43
+ const previousState = first(history);
44
+ if (!previousState || state.hasChangedFrom(previousState)) {
45
+ history.unshift(state); // LIFO
46
+ this.setHistory(state.placeDefinition, history.slice(0, this.placeHistoryDepth));
47
+ }
48
+ });
49
+ }
50
+ }
51
+ PlaceHistory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceHistory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ PlaceHistory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceHistory, providedIn: 'root' });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceHistory, decorators: [{
54
+ type: Injectable,
55
+ args: [{
56
+ providedIn: 'root'
57
+ }]
58
+ }], ctorParameters: function () { return []; } });
59
+ (function (PlaceHistory) {
60
+ class VisitRecord {
61
+ constructor(visits) {
62
+ this.visits = visits;
63
+ }
64
+ update(visit) {
65
+ this.visits = this.visits.filter(v => v.placeDefinition !== visit.placeDefinition).concat(visit);
66
+ }
67
+ getVisitFor(placeDef) {
68
+ return this.visits.find(v => v.placeDefinition === placeDef);
69
+ }
70
+ }
71
+ PlaceHistory.VisitRecord = VisitRecord;
72
+ // export class Query {
73
+ // private _history: Visit.State[];
74
+ // private _places: Place[];
75
+ // private _predicate: (visit: any) => boolean;
76
+ // private _limit: number;
77
+ //
78
+ // constructor(history, limit = history.length) {
79
+ // this._history = history;
80
+ // this._places = [];
81
+ // this._predicate = (visit => true);
82
+ // this._limit = limit;
83
+ // }
84
+ //
85
+ // to(...places:Place[]):this {
86
+ // this._places = places;
87
+ // return this;
88
+ // }
89
+ //
90
+ // with(parameters: { [parameter: string]: any }): this {
91
+ // this.matching(state => {
92
+ // return Object.keys(parameters).reduce((acc, key) => {
93
+ // const matchValue = parameters[key];
94
+ // const visitValue = state.get(key);
95
+ // const matched = matchValue === '*' ? !isNil(visitValue) : visitValue == matchValue;
96
+ // // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);
97
+ // return acc && matched;
98
+ // }, true);
99
+ // });
100
+ // return this;
101
+ // }
102
+ //
103
+ // last(): Visit.State {
104
+ // return findLast(this._history, visit => this._matches(visit))
105
+ // }
106
+ //
107
+ // // @trace
108
+ // allThatMatch(): Visit.State[] {
109
+ // return filter(this._history, visit => this._matches(visit)).slice(-this._limit);
110
+ // }
111
+ //
112
+ // // @trace
113
+ // mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {
114
+ // const lastStateWithParam = findLast(this.allThatMatch(), state => !isNil(state.get(param)));
115
+ // return isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);
116
+ // }
117
+ //
118
+ // limit(limit: number): this {
119
+ // this._limit = limit;
120
+ // return this;
121
+ // }
122
+ //
123
+ // matching(predicate: (visit: Visit.State) => boolean): this {
124
+ // this._predicate = predicate;
125
+ // return this;
126
+ // }
127
+ //
128
+ // _matches(visit: Visit.State) {
129
+ // return this._isPlaceMatch(visit) && this._predicate(visit);
130
+ // }
131
+ //
132
+ // _isPlaceMatch(visit: Visit.State) {
133
+ // return this._places.length < 1 || this._places.includes(visit.place)
134
+ // }
135
+ //
136
+ // }
137
+ })(PlaceHistory || (PlaceHistory = {}));
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL3BsYWNlLWhpc3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFPL0IsTUFBTSxPQUFPLFlBQVk7SUFRdkI7UUFIUSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFDdEMsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBRy9DLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBZTtRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQXlCO1FBQ3pDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxxQkFB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b0M7SUFDcEMsdUZBQXVGO0lBQ3ZGLE1BQU07SUFDTixFQUFFO0lBQ0YsY0FBYztJQUNkLHlFQUF5RTtJQUN6RSxtR0FBbUc7SUFDbkcsdUZBQXVGO0lBQ3ZGLE1BQU07SUFDTixFQUFFO0lBQ0YsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQixtQkFBbUI7SUFDbkIsTUFBTTtJQUNOLEVBQUU7SUFDRixpRUFBaUU7SUFDakUsbUNBQW1DO0lBQ25DLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sRUFBRTtJQUNGLG1DQUFtQztJQUNuQyxrRUFBa0U7SUFDbEUsTUFBTTtJQUNOLEVBQUU7SUFDRix3Q0FBd0M7SUFDeEMsMkVBQTJFO0lBQzNFLE1BQU07SUFDTixFQUFFO0lBQ0YsSUFBSTtBQUVOLENBQUMsRUFqRmdCLFlBQVksS0FBWixZQUFZLFFBaUY1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydCwgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4vdmlzaXQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZUhpc3Rvcnkge1xuXG4gIHByaXZhdGUgX2FjdGl2ZVZpc2l0czogUGxhY2VIaXN0b3J5LlZpc2l0UmVjb3JkO1xuICBwcml2YXRlIF9wcmV2aW91c1Zpc2l0czogUGxhY2VIaXN0b3J5LlZpc2l0UmVjb3JkO1xuXG4gIHByaXZhdGUgX2FyY2hpdmUgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXRbXT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3RvcnlEZXB0aDogbnVtYmVyID0gNDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIG5vdGlmeU5hdmlnYXRpb25TdGFydGVkKCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmVWaXNpdHMpIHtcbiAgICAgIHRoaXMuYXJjaGl2ZSh0aGlzLl9hY3RpdmVWaXNpdHMudmlzaXRzKTtcbiAgICAgIHRoaXMuX3ByZXZpb3VzVmlzaXRzID0gdGhpcy5fYWN0aXZlVmlzaXRzO1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmeU5hdmlnYXRpb25GaW5pc2hlZCh2aXNpdHM6IFZpc2l0W10pIHtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMgPSBuZXcgUGxhY2VIaXN0b3J5LlZpc2l0UmVjb3JkKHZpc2l0cyk7XG4gIH1cblxuICB1cGRhdGVWaXNpdCh2aXNpdDogVmlzaXQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5fYWN0aXZlVmlzaXRzKTtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMudXBkYXRlKHZpc2l0KTtcbiAgfVxuXG4gIGxhc3RWaXNpdEluY2x1ZGVkKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9wcmV2aW91c1Zpc2l0cz8uZ2V0VmlzaXRGb3IocGxhY2VEZWYpO1xuICB9XG5cbiAgZ2V0TW9zdFJlY2VudFZpc2l0Rm9yKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICByZXR1cm4gZmlyc3QodGhpcy5nZXRIaXN0b3J5KHBsYWNlRGVmKSk7XG4gIH1cblxuICBnZXRIaXN0b3J5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBWaXNpdFtdIHtcbiAgICBsZXQgaGlzdG9yeSA9IHRoaXMuX2FyY2hpdmUuZ2V0KHBsYWNlRGVmKTtcbiAgICBpZiAoIWhpc3RvcnkpIHtcbiAgICAgIGhpc3RvcnkgPSBbXTtcbiAgICAgIHRoaXMuc2V0SGlzdG9yeShwbGFjZURlZiwgaGlzdG9yeSk7XG4gICAgfVxuICAgIHJldHVybiBoaXN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaXN0b3J5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24sIGhpc3Rvcnk6IFZpc2l0W10pIHtcbiAgICB0aGlzLl9hcmNoaXZlLnNldChwbGFjZURlZiwgaGlzdG9yeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXJjaGl2ZSh2aXNpdHM6IFZpc2l0W10pIHtcbiAgICB2aXNpdHMuZm9yRWFjaChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gdGhpcy5nZXRIaXN0b3J5KHN0YXRlLnBsYWNlRGVmaW5pdGlvbik7XG4gICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gZmlyc3QoaGlzdG9yeSk7XG4gICAgICBpZiAoIXByZXZpb3VzU3RhdGUgfHwgc3RhdGUuaGFzQ2hhbmdlZEZyb20ocHJldmlvdXNTdGF0ZSkpIHtcbiAgICAgICAgaGlzdG9yeS51bnNoaWZ0KHN0YXRlKTsgLy8gTElGT1xuICAgICAgICB0aGlzLnNldEhpc3Rvcnkoc3RhdGUucGxhY2VEZWZpbml0aW9uLCBoaXN0b3J5LnNsaWNlKDAsIHRoaXMucGxhY2VIaXN0b3J5RGVwdGgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZUhpc3Rvcnkge1xuXG4gIGV4cG9ydCBjbGFzcyBWaXNpdFJlY29yZCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHZpc2l0czogVmlzaXRbXSkge1xuICAgIH1cblxuICAgIHVwZGF0ZSh2aXNpdDogVmlzaXQpIHtcbiAgICAgIHRoaXMudmlzaXRzID0gdGhpcy52aXNpdHMuZmlsdGVyKHYgPT4gdi5wbGFjZURlZmluaXRpb24gIT09IHZpc2l0LnBsYWNlRGVmaW5pdGlvbikuY29uY2F0KHZpc2l0KTtcbiAgICB9XG5cbiAgICBnZXRWaXNpdEZvcihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKTogVmlzaXQgfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHRoaXMudmlzaXRzLmZpbmQodiA9PiB2LnBsYWNlRGVmaW5pdGlvbiA9PT0gcGxhY2VEZWYpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cG9ydCBjbGFzcyBRdWVyeSB7XG4gIC8vICAgcHJpdmF0ZSBfaGlzdG9yeTogVmlzaXQuU3RhdGVbXTtcbiAgLy8gICBwcml2YXRlIF9wbGFjZXM6IFBsYWNlW107XG4gIC8vICAgcHJpdmF0ZSBfcHJlZGljYXRlOiAodmlzaXQ6IGFueSkgPT4gYm9vbGVhbjtcbiAgLy8gICBwcml2YXRlIF9saW1pdDogbnVtYmVyO1xuICAvL1xuICAvLyAgIGNvbnN0cnVjdG9yKGhpc3RvcnksIGxpbWl0ID0gaGlzdG9yeS5sZW5ndGgpIHtcbiAgLy8gICAgIHRoaXMuX2hpc3RvcnkgPSBoaXN0b3J5O1xuICAvLyAgICAgdGhpcy5fcGxhY2VzID0gW107XG4gIC8vICAgICB0aGlzLl9wcmVkaWNhdGUgPSAodmlzaXQgPT4gdHJ1ZSk7XG4gIC8vICAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICB0byguLi5wbGFjZXM6UGxhY2VbXSk6dGhpcyB7XG4gIC8vICAgICB0aGlzLl9wbGFjZXMgPSBwbGFjZXM7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgd2l0aChwYXJhbWV0ZXJzOiB7IFtwYXJhbWV0ZXI6IHN0cmluZ106IGFueSB9KTogdGhpcyB7XG4gIC8vICAgICB0aGlzLm1hdGNoaW5nKHN0YXRlID0+IHtcbiAgLy8gICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBtYXRjaFZhbHVlID0gcGFyYW1ldGVyc1trZXldO1xuICAvLyAgICAgICAgIGNvbnN0IHZpc2l0VmFsdWUgPSBzdGF0ZS5nZXQoa2V5KTtcbiAgLy8gICAgICAgICBjb25zdCBtYXRjaGVkID0gbWF0Y2hWYWx1ZSA9PT0gJyonID8gIWlzTmlsKHZpc2l0VmFsdWUpIDogdmlzaXRWYWx1ZSA9PSBtYXRjaFZhbHVlO1xuICAvLyAgICAgICAgIC8vIExvZ2dlci5nZXQodGhpcykuaW5mbyhgbWF0Y2hlZD0ke21hdGNoZWR9YCwgcGFyYW1ldGVycywgdmlzaXRWYWx1ZSk7XG4gIC8vICAgICAgICAgcmV0dXJuIGFjYyAmJiBtYXRjaGVkO1xuICAvLyAgICAgICB9LCB0cnVlKTtcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGxhc3QoKTogVmlzaXQuU3RhdGUge1xuICAvLyAgICAgcmV0dXJuIGZpbmRMYXN0KHRoaXMuX2hpc3RvcnksIHZpc2l0ID0+IHRoaXMuX21hdGNoZXModmlzaXQpKVxuICAvLyAgIH1cbiAgLy9cbiAgLy8gICAvLyBAdHJhY2VcbiAgLy8gICBhbGxUaGF0TWF0Y2goKTogVmlzaXQuU3RhdGVbXSB7XG4gIC8vICAgICByZXR1cm4gZmlsdGVyKHRoaXMuX2hpc3RvcnksIHZpc2l0ID0+IHRoaXMuX21hdGNoZXModmlzaXQpKS5zbGljZSgtdGhpcy5fbGltaXQpO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICAvLyBAdHJhY2VcbiAgLy8gICBtb3N0UmVjZW50VmFsdWVPZjxUPWFueT4ocGFyYW06IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUID0gbnVsbCk6IFQge1xuICAvLyAgICAgY29uc3QgbGFzdFN0YXRlV2l0aFBhcmFtID0gZmluZExhc3QodGhpcy5hbGxUaGF0TWF0Y2goKSwgc3RhdGUgPT4gIWlzTmlsKHN0YXRlLmdldChwYXJhbSkpKTtcbiAgLy8gICAgIHJldHVybiBpc05pbChsYXN0U3RhdGVXaXRoUGFyYW0pID8gZGVmYXVsdFZhbHVlIDogbGFzdFN0YXRlV2l0aFBhcmFtLmdldChwYXJhbSk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGxpbWl0KGxpbWl0OiBudW1iZXIpOiB0aGlzIHtcbiAgLy8gICAgIHRoaXMuX2xpbWl0ID0gbGltaXQ7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbWF0Y2hpbmcocHJlZGljYXRlOiAodmlzaXQ6IFZpc2l0LlN0YXRlKSA9PiBib29sZWFuKTogdGhpcyB7XG4gIC8vICAgICB0aGlzLl9wcmVkaWNhdGUgPSBwcmVkaWNhdGU7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgX21hdGNoZXModmlzaXQ6IFZpc2l0LlN0YXRlKSB7XG4gIC8vICAgICByZXR1cm4gdGhpcy5faXNQbGFjZU1hdGNoKHZpc2l0KSAmJiB0aGlzLl9wcmVkaWNhdGUodmlzaXQpO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBfaXNQbGFjZU1hdGNoKHZpc2l0OiBWaXNpdC5TdGF0ZSkge1xuICAvLyAgICAgcmV0dXJuIHRoaXMuX3BsYWNlcy5sZW5ndGggPCAxIHx8IHRoaXMuX3BsYWNlcy5pbmNsdWRlcyh2aXNpdC5wbGFjZSlcbiAgLy8gICB9XG4gIC8vXG4gIC8vIH1cblxufVxuIl19