@coolon/angular-ui-powerups 12.4.9 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/activities/activities.scss +1 -1
- package/assets/cards.scss +1 -1
- package/assets/form.scss +1 -1
- package/assets/interaction/editor/inline-string-editor.scss +1 -1
- package/assets/interaction.scss +1 -1
- package/assets/mixins.scss +2 -2
- package/assets/pills.scss +1 -1
- package/assets/styles.scss +1 -1
- package/{esm2015/lib/angular-ui-powerups.module.js → esm2020/lib/angular-ui-powerups.module.mjs} +5 -5
- package/esm2020/lib/components/busy-overlay/busy-overlay.component.mjs +32 -0
- package/{esm2015/lib/components/cards/abstract-card-container.component.js → esm2020/lib/components/cards/abstract-card-container.component.mjs} +4 -4
- package/esm2020/lib/components/cards/card-container/card-container.component.mjs +129 -0
- package/esm2020/lib/components/cards/card-stack/card-stack.component.mjs +81 -0
- package/esm2020/lib/components/commands/command/command.component.mjs +96 -0
- package/{esm2015/lib/components/commands/command-face/command-face.component.js → esm2020/lib/components/commands/command-face/command-face.component.mjs} +5 -10
- package/esm2020/lib/components/commands/command-face.mjs +112 -0
- package/{esm2015/lib/components/commands/flex.component.js → esm2020/lib/components/commands/flex.component.mjs} +4 -4
- package/esm2020/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +84 -0
- package/esm2020/lib/components/commands/group/popup-menu/more-menu.component.mjs +57 -0
- package/esm2020/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +101 -0
- package/esm2020/lib/components/commands/group/popup-menu/popup-menu.component.mjs +53 -0
- package/esm2020/lib/components/commands/group/tool-bar/tool-bar.component.mjs +31 -0
- package/{esm2015/lib/components/commands/separator.component.js → esm2020/lib/components/commands/separator.component.mjs} +5 -5
- package/{esm2015/lib/components/components.module.js → esm2020/lib/components/components.module.mjs} +6 -6
- package/{esm2015/lib/components/disposable-component.js → esm2020/lib/components/disposable-component.mjs} +4 -4
- package/{esm2015/lib/components/empty-state/empty-state.component.js → esm2020/lib/components/empty-state/empty-state.component.mjs} +6 -10
- package/{esm2015/lib/components/focus-container/focus-container.component.js → esm2020/lib/components/focus-container/focus-container.component.mjs} +6 -11
- package/{esm2015/lib/components/focusable.component.js → esm2020/lib/components/focusable.component.mjs} +6 -8
- package/{esm2015/lib/components/forms/abstract-input.component.js → esm2020/lib/components/forms/abstract-input.component.mjs} +4 -4
- package/{esm2015/lib/components/forms/abstract-list-input.component.js → esm2020/lib/components/forms/abstract-list-input.component.mjs} +4 -4
- package/{esm2015/lib/components/forms/abstract-value-input.component.js → esm2020/lib/components/forms/abstract-value-input.component.mjs} +4 -4
- package/esm2020/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +72 -0
- package/esm2020/lib/components/forms/checkbox-input/checkbox-input.component.mjs +29 -0
- package/esm2020/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +52 -0
- package/esm2020/lib/components/forms/number-input/number-input.component.mjs +33 -0
- package/esm2020/lib/components/forms/password-input/password-input.component.mjs +24 -0
- package/esm2020/lib/components/forms/select-input/select-input.component.mjs +57 -0
- package/esm2020/lib/components/forms/string-input/string-input.component.mjs +48 -0
- package/esm2020/lib/components/forms/text-input/text-input.component.mjs +30 -0
- package/esm2020/lib/components/icon/icon.component.mjs +52 -0
- package/esm2020/lib/components/labelled-value/labelled-value.component.mjs +20 -0
- package/esm2020/lib/components/loading-container/loading-container.component.mjs +50 -0
- package/esm2020/lib/components/noop/noop.component.mjs +13 -0
- package/{esm2015/lib/components/resize-aware.component.js → esm2020/lib/components/resize-aware.component.mjs} +4 -4
- package/esm2020/lib/components/scroll-container/scroll-container.component.mjs +15 -0
- package/esm2020/lib/components/section-header/section-header.component.mjs +36 -0
- package/{esm2015/lib/components/switch-case/switch-case.component.js → esm2020/lib/components/switch-case/switch-case.component.mjs} +11 -15
- package/esm2020/lib/components/tables/abstract-table-model.mjs +185 -0
- package/esm2020/lib/components/tables/abstract-table.component.mjs +168 -0
- package/{esm2015/lib/components/tables/table/cell-portal-ref.js → esm2020/lib/components/tables/table/cell-portal-ref.mjs} +2 -2
- package/esm2020/lib/components/tables/table/column-model.mjs +392 -0
- package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +35 -0
- package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +22 -0
- package/esm2020/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.mjs +15 -0
- package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +55 -0
- package/esm2020/lib/components/tables/table/paginator/paginator.component.mjs +40 -0
- package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +26 -0
- package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +31 -0
- package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +93 -0
- package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +32 -0
- 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
- package/esm2020/lib/components/tables/table/table.component.mjs +95 -0
- package/esm2020/lib/components/tables/tree-table/decorated-tree-node.mjs +171 -0
- package/esm2020/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +72 -0
- package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +91 -0
- package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +95 -0
- package/{esm2015/lib/components/text/markdown/markdown.component.js → esm2020/lib/components/text/markdown/markdown.component.mjs} +5 -9
- 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
- package/{esm2015/lib/directives/command.directive.js → esm2020/lib/directives/command.directive.mjs} +4 -4
- package/{esm2015/lib/directives/directives.module.js → esm2020/lib/directives/directives.module.mjs} +5 -5
- package/{esm2015/lib/directives/focus-binding-factory.js → esm2020/lib/directives/focus-binding-factory.mjs} +4 -4
- package/{esm2015/lib/directives/focus-binding.directive.js → esm2020/lib/directives/focus-binding.directive.mjs} +4 -4
- package/{esm2015/lib/directives/highlight-text-model.directive.js → esm2020/lib/directives/highlight-text-model.directive.mjs} +4 -4
- package/{esm2015/lib/directives/highlight.pipe.js → esm2020/lib/directives/highlight.pipe.mjs} +6 -7
- package/esm2020/lib/interaction/activity.mjs +87 -0
- package/{esm2015/lib/interaction/components/abstract-confirm-dialog.component.js → esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs} +4 -4
- package/{esm2015/lib/interaction/components/abstract-dialog.component.js → esm2020/lib/interaction/components/abstract-dialog.component.mjs} +4 -4
- package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +109 -0
- package/esm2020/lib/interaction/components/activity-body/activity-body.component.mjs +23 -0
- package/esm2020/lib/interaction/components/activity-container/activity-container.component.mjs +205 -0
- 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
- package/esm2020/lib/interaction/components/activity-title/activity-title.component.mjs +41 -0
- 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
- package/esm2020/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +24 -0
- package/esm2020/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +22 -0
- package/esm2020/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +30 -0
- package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +91 -0
- package/esm2020/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +73 -0
- package/esm2020/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +30 -0
- package/esm2020/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +30 -0
- package/esm2020/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +34 -0
- package/esm2020/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +29 -0
- package/esm2020/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +173 -0
- package/esm2020/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +91 -0
- package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +103 -0
- package/{esm2015/lib/interaction/components/input-activities/select-input-activity.js → esm2020/lib/interaction/components/input-activities/select-input-activity.mjs} +6 -8
- package/{esm2015/lib/interaction/components/input-activities/string-input-activity.js → esm2020/lib/interaction/components/input-activities/string-input-activity.mjs} +4 -4
- 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
- package/{esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js → esm2020/lib/interaction/directives/interaction-context-trigger-for.directive.mjs} +4 -4
- package/{esm2015/lib/interaction/interaction.module.js → esm2020/lib/interaction/interaction.module.mjs} +5 -11
- package/{esm2015/lib/interaction/services/interaction.service.js → esm2020/lib/interaction/services/interaction.service.mjs} +4 -4
- package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +47 -0
- package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +61 -0
- package/{esm2015/lib/place/components/abstract-place-navigation.component.js → esm2020/lib/place/components/abstract-place-navigation.component.mjs} +4 -4
- package/esm2020/lib/place/components/list-place-nav/list-place-nav.component.mjs +23 -0
- package/esm2020/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +13 -0
- package/esm2020/lib/place/components/place-outlet/place-outlet.component.mjs +256 -0
- package/esm2020/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +93 -0
- package/esm2020/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +22 -0
- package/esm2020/lib/place/guards/noop-auth-guard.service.mjs +18 -0
- package/esm2020/lib/place/guards/place.guard.mjs +109 -0
- package/esm2020/lib/place/navigation/place-component-deactivation-handler.mjs +83 -0
- package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +43 -0
- package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +152 -0
- package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +62 -0
- package/esm2020/lib/place/navigation/session/navigation-session.mjs +157 -0
- package/esm2020/lib/place/place-component.mjs +198 -0
- package/esm2020/lib/place/place-history.mjs +138 -0
- package/esm2020/lib/place/place-router.mjs +331 -0
- package/esm2020/lib/place/place.decorator.mjs +18 -0
- package/{esm2015/lib/place/place.module.js → esm2020/lib/place/place.module.mjs} +5 -6
- package/esm2020/lib/place/route/parameter-definition.mjs +123 -0
- package/esm2020/lib/place/route/visit-sanitiser.mjs +41 -0
- package/{esm2015/lib/place/url-service.js → esm2020/lib/place/url-service.mjs} +4 -4
- package/esm2020/lib/place/visit.mjs +69 -0
- package/{esm2015/lib/services/markdown/markdown.service.js → esm2020/lib/services/markdown/markdown.service.mjs} +5 -5
- package/esm2020/lib/services/markdown/pill-plugin.mjs +37 -0
- package/{esm2015/lib/services/visibility-service.js → esm2020/lib/services/visibility-service.mjs} +4 -4
- package/fesm2015/{coolon-angular-ui-powerups.js → coolon-angular-ui-powerups.mjs} +1201 -1415
- package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -0
- package/fesm2020/coolon-angular-ui-powerups.mjs +9891 -0
- package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -0
- package/package.json +37 -24
- package/schematics/activity/index.js +3 -3
- package/schematics/activity/index.js.map +1 -1
- package/schematics/aup-i18n/index.js +7 -7
- package/schematics/aup-i18n/index.js.map +1 -1
- package/schematics/bootstrap-app/index.js +9 -9
- package/schematics/bootstrap-app/index.js.map +1 -1
- package/schematics/bootstrap-app/templates/src/styles.scss.template +2 -2
- package/schematics/component/index.js +3 -3
- package/schematics/component/index.js.map +1 -1
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/place-add/index.js +3 -3
- package/schematics/place-add/index.js.map +1 -1
- package/schematics/place-bootstrap/index.js +1 -1
- package/schematics/place-bootstrap/index.js.map +1 -1
- package/schematics/place-routes/place-builder.js +6 -6
- package/schematics/place-routes/place-builder.js.map +1 -1
- package/schematics/place-routes/place-class-scanner.js +3 -3
- package/schematics/place-routes/place-class-scanner.js.map +1 -1
- package/schematics/place-routes/place-def.js +4 -4
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/utils/decorators/decorated-class.js +1 -1
- package/schematics/utils/decorators/decorated-class.js.map +1 -1
- package/schematics/utils/import-def.js +3 -3
- package/schematics/utils/import-def.js.map +1 -1
- package/schematics/utils/method-scanner.js +4 -4
- package/schematics/utils/method-scanner.js.map +1 -1
- package/schematics/utils/path-helper.js +3 -3
- package/schematics/utils/path-helper.js.map +1 -1
- package/schematics/utils/source-file-scanner.js +5 -5
- package/schematics/utils/source-file-scanner.js.map +1 -1
- package/schematics/utils/source-file-utilities.js +1 -1
- package/schematics/utils/source-file-utilities.js.map +1 -1
- package/schematics/utils/template-utilities.js +4 -4
- package/schematics/utils/template-utilities.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.js +0 -11847
- package/bundles/coolon-angular-ui-powerups.umd.js.map +0 -1
- package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +0 -36
- package/esm2015/lib/components/cards/card-container/card-container.component.js +0 -133
- package/esm2015/lib/components/cards/card-stack/card-stack.component.js +0 -85
- package/esm2015/lib/components/commands/command/command.component.js +0 -100
- package/esm2015/lib/components/commands/command-face.js +0 -112
- package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +0 -89
- package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js +0 -61
- package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +0 -104
- package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js +0 -58
- package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +0 -36
- package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +0 -76
- package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +0 -33
- package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -56
- package/esm2015/lib/components/forms/number-input/number-input.component.js +0 -37
- package/esm2015/lib/components/forms/password-input/password-input.component.js +0 -28
- package/esm2015/lib/components/forms/select-input/select-input.component.js +0 -61
- package/esm2015/lib/components/forms/string-input/string-input.component.js +0 -52
- package/esm2015/lib/components/forms/text-input/text-input.component.js +0 -34
- package/esm2015/lib/components/icon/icon.component.js +0 -56
- package/esm2015/lib/components/labelled-value/labelled-value.component.js +0 -24
- package/esm2015/lib/components/loading-container/loading-container.component.js +0 -54
- package/esm2015/lib/components/noop/noop.component.js +0 -17
- package/esm2015/lib/components/scroll-container/scroll-container.component.js +0 -19
- package/esm2015/lib/components/section-header/section-header.component.js +0 -40
- package/esm2015/lib/components/tables/abstract-table-model.js +0 -188
- package/esm2015/lib/components/tables/abstract-table.component.js +0 -170
- package/esm2015/lib/components/tables/table/column-model.js +0 -389
- package/esm2015/lib/components/tables/table/column-template/column-template.directive.js +0 -36
- package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js +0 -26
- package/esm2015/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.js +0 -19
- package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +0 -60
- package/esm2015/lib/components/tables/table/paginator/paginator.component.js +0 -44
- package/esm2015/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.js +0 -32
- package/esm2015/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.js +0 -37
- package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +0 -98
- package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +0 -36
- package/esm2015/lib/components/tables/table/table.component.js +0 -100
- package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +0 -171
- package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +0 -76
- package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +0 -96
- package/esm2015/lib/components/tables/tree-table/tree-table-component.js +0 -100
- package/esm2015/lib/interaction/activity.js +0 -88
- package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +0 -113
- package/esm2015/lib/interaction/components/activity-body/activity-body.component.js +0 -27
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +0 -214
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +0 -45
- package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +0 -28
- package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +0 -26
- package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +0 -34
- package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +0 -95
- package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +0 -77
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +0 -34
- package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +0 -34
- package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +0 -39
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +0 -33
- package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +0 -176
- package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +0 -96
- package/esm2015/lib/interaction/components/input-activities/input-activity.js +0 -107
- package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +0 -41
- package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +0 -58
- package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +0 -27
- package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +0 -17
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +0 -263
- package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +0 -97
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +0 -26
- package/esm2015/lib/place/guards/noop-auth-guard.service.js +0 -21
- package/esm2015/lib/place/guards/place.guard.js +0 -116
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +0 -88
- package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +0 -46
- package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.js +0 -159
- package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +0 -65
- package/esm2015/lib/place/navigation/session/navigation-session.js +0 -160
- package/esm2015/lib/place/place-component.js +0 -204
- package/esm2015/lib/place/place-history.js +0 -139
- package/esm2015/lib/place/place-router.js +0 -336
- package/esm2015/lib/place/place.decorator.js +0 -19
- package/esm2015/lib/place/route/parameter-definition.js +0 -128
- package/esm2015/lib/place/route/visit-sanitiser.js +0 -44
- package/esm2015/lib/place/visit.js +0 -69
- package/esm2015/lib/services/markdown/pill-plugin.js +0 -38
- package/fesm2015/coolon-angular-ui-powerups.js.map +0 -1
- /package/{esm2015/coolon-angular-ui-powerups.js → esm2020/coolon-angular-ui-powerups.mjs} +0 -0
- /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- /package/{esm2015/lib/animations/exports.js → esm2020/lib/animations/exports.mjs} +0 -0
- /package/{esm2015/lib/animations/slide-animations.js → esm2020/lib/animations/slide-animations.mjs} +0 -0
- /package/{esm2015/lib/components/alignment.js → esm2020/lib/components/alignment.mjs} +0 -0
- /package/{esm2015/lib/components/commands/group/command-container.js → esm2020/lib/components/commands/group/command-container.mjs} +0 -0
- /package/{esm2015/lib/components/commands/group/popup-aware.component.js → esm2020/lib/components/commands/group/popup-aware.component.mjs} +0 -0
- /package/{esm2015/lib/components/commands/group/popup-container.js → esm2020/lib/components/commands/group/popup-container.mjs} +0 -0
- /package/{esm2015/lib/components/exports.js → esm2020/lib/components/exports.mjs} +0 -0
- /package/{esm2015/lib/components/tables/column-list-model.js → esm2020/lib/components/tables/column-list-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/edit-session.js → esm2020/lib/components/tables/edit-session.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/cell-editors.js → esm2020/lib/components/tables/table/cell-editors.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/cell-renderer.js → esm2020/lib/components/tables/table/cell-renderer.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/column-text-properties.js → esm2020/lib/components/tables/table/column-text-properties.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/mutable-cell-renderer.js → esm2020/lib/components/tables/table/mutable-cell-renderer.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/table-def.js → esm2020/lib/components/tables/table/table-def.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/table-model.js → esm2020/lib/components/tables/table/table-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/text-search-predicate.js → esm2020/lib/components/tables/table/text-search-predicate.mjs} +0 -0
- /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
- /package/{esm2015/lib/components/tables/tree-table/tree-expansion-model.js → esm2020/lib/components/tables/tree-table/tree-expansion-model.mjs} +0 -0
- /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
- /package/{esm2015/lib/components/tables/tree-table/tree-table-model.js → esm2020/lib/components/tables/tree-table/tree-table-model.mjs} +0 -0
- /package/{esm2015/lib/components/track-by.js → esm2020/lib/components/track-by.mjs} +0 -0
- /package/{esm2015/lib/components/types/bounds.class.js → esm2020/lib/components/types/bounds.class.mjs} +0 -0
- /package/{esm2015/lib/components/types/dimension.class.js → esm2020/lib/components/types/dimension.class.mjs} +0 -0
- /package/{esm2015/lib/components/types/point.class.js → esm2020/lib/components/types/point.class.mjs} +0 -0
- /package/{esm2015/lib/directives/exports.js → esm2020/lib/directives/exports.mjs} +0 -0
- /package/{esm2015/lib/directives/focus-binding.js → esm2020/lib/directives/focus-binding.mjs} +0 -0
- /package/{esm2015/lib/interaction/abstract-interaction-context.js → esm2020/lib/interaction/abstract-interaction-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/activity-ref.js → esm2020/lib/interaction/activity-ref.mjs} +0 -0
- /package/{esm2015/lib/interaction/alert.js → esm2020/lib/interaction/alert.mjs} +0 -0
- /package/{esm2015/lib/interaction/components/editors/edit-context.js → esm2020/lib/interaction/components/editors/edit-context.mjs} +0 -0
- /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
- /package/{esm2015/lib/interaction/confirm.js → esm2020/lib/interaction/confirm.mjs} +0 -0
- /package/{esm2015/lib/interaction/exports.js → esm2020/lib/interaction/exports.mjs} +0 -0
- /package/{esm2015/lib/interaction/in-place-interaction-context.js → esm2020/lib/interaction/in-place-interaction-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/interaction-context.js → esm2020/lib/interaction/interaction-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/route-synchronisation-adapter.js → esm2020/lib/interaction/route-synchronisation-adapter.mjs} +0 -0
- /package/{esm2015/lib/interaction/services/interaction-service-routing-adapter.js → esm2020/lib/interaction/services/interaction-service-routing-adapter.mjs} +0 -0
- /package/{esm2015/lib/interaction/services/modal-interaction-context.factory.js → esm2020/lib/interaction/services/modal-interaction-context.factory.mjs} +0 -0
- /package/{esm2015/lib/place/components/place-outlet/route-animations.js → esm2020/lib/place/components/place-outlet/route-animations.mjs} +0 -0
- /package/{esm2015/lib/place/exports.js → esm2020/lib/place/exports.mjs} +0 -0
- /package/{esm2015/lib/place/guards/consolidated-param-map.js → esm2020/lib/place/guards/consolidated-param-map.mjs} +0 -0
- /package/{esm2015/lib/place/nav-item.js → esm2020/lib/place/nav-item.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js → esm2020/lib/place/navigation/session/abstract-pop-state-navigation.mjs} +0 -0
- /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
- /package/{esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js → esm2020/lib/place/navigation/session/interactions/navigating-during-interaction.mjs} +0 -0
- /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
- /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
- /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
- /package/{esm2015/lib/place/navigation/session/navigating.js → esm2020/lib/place/navigation/session/navigating.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/navigation-context.js → esm2020/lib/place/navigation/session/navigation-context.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/pop-state-navigation.js → esm2020/lib/place/navigation/session/pop-state-navigation.mjs} +0 -0
- /package/{esm2015/lib/place/place-access-guard.js → esm2020/lib/place/place-access-guard.mjs} +0 -0
- /package/{esm2015/lib/place/place-config.js → esm2020/lib/place/place-config.mjs} +0 -0
- /package/{esm2015/lib/place/place-definition.js → esm2020/lib/place/place-definition.mjs} +0 -0
- /package/{esm2015/lib/place/route/formatter.js → esm2020/lib/place/route/formatter.mjs} +0 -0
- /package/{esm2015/lib/place/route/json-types.js → esm2020/lib/place/route/json-types.mjs} +0 -0
- /package/{esm2015/lib/place/route/parameter-decorators.js → esm2020/lib/place/route/parameter-decorators.mjs} +0 -0
- /package/{esm2015/lib/place/route/parameter-sanitiser.js → esm2020/lib/place/route/parameter-sanitiser.mjs} +0 -0
- /package/{esm2015/lib/place/route/parameter-snapshot.js → esm2020/lib/place/route/parameter-snapshot.mjs} +0 -0
- /package/{esm2015/lib/place/url-snapshot.js → esm2020/lib/place/url-snapshot.mjs} +0 -0
- /package/{esm2015/lib/services/exports.js → esm2020/lib/services/exports.mjs} +0 -0
- /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
|
|
4
|
+
import { assert, Binding, DebugContext, DelegatingValueModel, Dsl, GarbageCollector, lang, MutableListModel, MutableValueModel } from '@coolon/pectin';
|
|
5
|
+
import { InteractionService } from '../interaction/services/interaction.service';
|
|
6
|
+
import { NavigatingDuringInteraction } from './navigation/session/interactions/navigating-during-interaction';
|
|
7
|
+
import { PopStateDuringInteractionNavigation } from './navigation/session/interactions/pop-state-during-interaction-navigation';
|
|
8
|
+
import { SynchroniseInteractionContextIdsWithRoute } from './navigation/session/interactions/synchronise-interaction-context-ids-with-route';
|
|
9
|
+
import { Navigating } from './navigation/session/navigating';
|
|
10
|
+
import { NavigationContext } from './navigation/session/navigation-context';
|
|
11
|
+
import { PopStateNavigation } from './navigation/session/pop-state-navigation';
|
|
12
|
+
import { PlaceAccessGuard } from './place-access-guard';
|
|
13
|
+
import { PlaceHistory } from './place-history';
|
|
14
|
+
import { UrlService } from './url-service';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@angular/router";
|
|
17
|
+
import * as i2 from "@angular/common";
|
|
18
|
+
import * as i3 from "../interaction/services/interaction.service";
|
|
19
|
+
import * as i4 from "./url-service";
|
|
20
|
+
import * as i5 from "./place-history";
|
|
21
|
+
function asArray(item) {
|
|
22
|
+
return Array.isArray(item) ? item : [item];
|
|
23
|
+
}
|
|
24
|
+
export class PlaceRouter extends GarbageCollector {
|
|
25
|
+
constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
|
|
26
|
+
super();
|
|
27
|
+
this.angularRouter = angularRouter;
|
|
28
|
+
this.angularLocation = angularLocation;
|
|
29
|
+
this.interactionService = interactionService;
|
|
30
|
+
this.urlService = urlService;
|
|
31
|
+
this.placeHistory = placeHistory;
|
|
32
|
+
this.navigationSessionModel = new MutableValueModel();
|
|
33
|
+
this._activeVisits = new MutableListModel();
|
|
34
|
+
this.sessionFinishedJobs = [];
|
|
35
|
+
/**
|
|
36
|
+
* An observable model containing the authoriser function. This allows places to react to changes
|
|
37
|
+
* in permissions when any underlying auth logic changes, e.g. a role being removed from a user.
|
|
38
|
+
*/
|
|
39
|
+
this._accessGuard = this.registerDisposable(new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth()));
|
|
40
|
+
if (window['Cypress']) {
|
|
41
|
+
window['aup.PlaceRouter'] = this;
|
|
42
|
+
}
|
|
43
|
+
this.routerInteractionAdapter = interactionService.registerPlaceRouter(this);
|
|
44
|
+
// TODO: Make this an interface and use 'this' instead.
|
|
45
|
+
this.navigationContext = new NavigationContext.Impl(this.urlService, this.routerInteractionAdapter, (urlSnapshot, options) => {
|
|
46
|
+
return this.navigateByUrl(urlSnapshot, options);
|
|
47
|
+
}, state => {
|
|
48
|
+
this.transitionTo(state);
|
|
49
|
+
}, visits => {
|
|
50
|
+
this.routingSessionFinished(visits);
|
|
51
|
+
});
|
|
52
|
+
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
53
|
+
this.navigationInProgress = chain(this.navigationSessionModel).isNotNil();
|
|
54
|
+
const idleStateName = chain(this.interactionService.active).map(active => active ? 'IdleDuringInteraction' : 'Idle');
|
|
55
|
+
this.navigationSessionName = chain(this.navigationSessionModel)
|
|
56
|
+
.pluck('name')
|
|
57
|
+
.otherwise(idleStateName);
|
|
58
|
+
DebugContext.tag(this._activeVisits, 'PlaceRouter.activeVisits');
|
|
59
|
+
this.state = chain(this._activeVisits).reduce(visits => new PlaceRouter.State(visits));
|
|
60
|
+
// TODO: make setup the callbacks in during module initiation to make this testable.
|
|
61
|
+
angularRouter.events.subscribe(event => {
|
|
62
|
+
// Routing event sequence
|
|
63
|
+
// ======================
|
|
64
|
+
// NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session
|
|
65
|
+
// NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.
|
|
66
|
+
// NavigationStart -> .... -> NavigationError --> navigation aborted, end session.
|
|
67
|
+
// =======================
|
|
68
|
+
if (event instanceof NavigationStart) {
|
|
69
|
+
// console.log(`---> NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);
|
|
70
|
+
if (event.navigationTrigger === 'popstate') {
|
|
71
|
+
this.onPopState(event);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.onRouterStarted(event);
|
|
75
|
+
}
|
|
76
|
+
// console.log(`<--- NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);
|
|
77
|
+
}
|
|
78
|
+
if (event instanceof NavigationEnd) {
|
|
79
|
+
// console.log(`---> NavigationEnd[${event.id}]: ${event.url}`);
|
|
80
|
+
this.onRouterEnd(event);
|
|
81
|
+
// console.log(`<--- NavigationEnd[${event.id}]: ${event.url}`);
|
|
82
|
+
}
|
|
83
|
+
if (event instanceof NavigationError) {
|
|
84
|
+
// console.log(`---> NavigationError[${event.id}]: ${event.url}`);
|
|
85
|
+
this.onRouterError(event);
|
|
86
|
+
// console.log(`<--- NavigationError[${event.id}]: ${event.url}`);
|
|
87
|
+
}
|
|
88
|
+
if (event instanceof NavigationCancel) {
|
|
89
|
+
// console.log(`---> NavigationCancel[${event.id}]: ${event.url}`);
|
|
90
|
+
this.onRouterCancelled(event);
|
|
91
|
+
// console.log(`<--- NavigationCancel[${event.id}]: ${event.url}`);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
// The router needs to know about url changes and in some cases they are the only way the router can know if
|
|
95
|
+
// the back button was clicked.
|
|
96
|
+
angularLocation.onUrlChange(url => this.onUrlChanged(url));
|
|
97
|
+
}
|
|
98
|
+
get accessGuard() {
|
|
99
|
+
return this._accessGuard.readonly;
|
|
100
|
+
}
|
|
101
|
+
// @Trace()
|
|
102
|
+
configureAuth(accessGrant, redirections) {
|
|
103
|
+
// We need a shitty mutable model until setDelegate is clever enough to work with readonly models.
|
|
104
|
+
const hackyMutableModel = new MutableValueModel();
|
|
105
|
+
const binding = new Binding(hackyMutableModel, accessGrant, {
|
|
106
|
+
toRight(leftValue) {
|
|
107
|
+
return lang.illegalState('hackyMutableModel is read only');
|
|
108
|
+
},
|
|
109
|
+
toLeft: (rightValue) => rightValue
|
|
110
|
+
});
|
|
111
|
+
binding.writeLeft();
|
|
112
|
+
this._accessGuard.setDelegate(hackyMutableModel);
|
|
113
|
+
this.redirections = redirections;
|
|
114
|
+
}
|
|
115
|
+
getAuthenticationFailureRedirect(activatedRoute, state) {
|
|
116
|
+
return this.redirections.onAuthenticationFailure(activatedRoute, state);
|
|
117
|
+
}
|
|
118
|
+
get navigationSession() {
|
|
119
|
+
return this.navigationSessionModel.value;
|
|
120
|
+
}
|
|
121
|
+
get currentSession() {
|
|
122
|
+
return this.navigationSessionModel.value;
|
|
123
|
+
}
|
|
124
|
+
isNavigating() {
|
|
125
|
+
return this.navigationInProgress.value;
|
|
126
|
+
}
|
|
127
|
+
waitUntilIdle() {
|
|
128
|
+
const { when } = Dsl.disposeWith(this);
|
|
129
|
+
return new Promise(resolve => {
|
|
130
|
+
when(this.navigationInProgress).becomesFalsey(() => resolve(this), {
|
|
131
|
+
initialValue: 'evaluate',
|
|
132
|
+
once: true
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// @Trace()
|
|
137
|
+
onPopState(event) {
|
|
138
|
+
assert.isTruthy(event.navigationTrigger === 'popstate');
|
|
139
|
+
if (this.currentSession) {
|
|
140
|
+
this.currentSession.onPopState(event);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const poppedHistoryUrl = event.url;
|
|
144
|
+
const currentRouterUrl = this.urlService.getCurrentRouterUrl();
|
|
145
|
+
const session = this.interactionService.isActive() ?
|
|
146
|
+
new PopStateDuringInteractionNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl) :
|
|
147
|
+
new PopStateNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl);
|
|
148
|
+
this.transitionTo(session);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// @Trace()
|
|
152
|
+
onRouterStarted(event) {
|
|
153
|
+
assert.isFalsey(event.navigationTrigger === 'popstate');
|
|
154
|
+
const inInteraction = this.interactionService.isActive();
|
|
155
|
+
if (this.currentSession) {
|
|
156
|
+
this.currentSession.onRouterStarted(event);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
this.transitionTo(this.createNavigationSession(this.urlService.getCurrentRouterUrl()));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// @Trace()
|
|
163
|
+
onUrlChanged(newUrl) {
|
|
164
|
+
// the back button can trigger a url change without a navigation session in progress so we
|
|
165
|
+
// console.log(`---> Url Changed ${newUrl}`);
|
|
166
|
+
if (this.currentSession) {
|
|
167
|
+
this.currentSession.onUrlChange(newUrl);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
console.log('FYI: url changed without a navigation session in progress');
|
|
171
|
+
}
|
|
172
|
+
// console.log(`<--- Url Changed`);
|
|
173
|
+
}
|
|
174
|
+
// @Trace()
|
|
175
|
+
onRouterCancelled(event) {
|
|
176
|
+
this.currentSession.onRouterCancelled(event);
|
|
177
|
+
}
|
|
178
|
+
// @Trace()
|
|
179
|
+
onRouterError(event) {
|
|
180
|
+
this.currentSession.onRouterError(event);
|
|
181
|
+
}
|
|
182
|
+
// @Trace()
|
|
183
|
+
onRouterEnd(event) {
|
|
184
|
+
this.currentSession.onRouterEnd(event);
|
|
185
|
+
}
|
|
186
|
+
navigate(visit, options) {
|
|
187
|
+
const commands = asArray(visit).reduce((result, v) => {
|
|
188
|
+
return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];
|
|
189
|
+
}, []);
|
|
190
|
+
return this.doNavigation(visit, async (router) => {
|
|
191
|
+
await this.angularRouter.navigate(commands, {
|
|
192
|
+
relativeTo: options ? options.relativeTo : null
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// @Trace()
|
|
197
|
+
async doNavigation(visit, runNavigationCommands) {
|
|
198
|
+
if (this.navigationInProgress.value) {
|
|
199
|
+
lang.illegalState('Navigation already in progress');
|
|
200
|
+
}
|
|
201
|
+
const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
|
|
202
|
+
asArray(visit).forEach(v => navigation.storeVisit(v));
|
|
203
|
+
this.transitionTo(navigation);
|
|
204
|
+
try {
|
|
205
|
+
await runNavigationCommands(this.angularRouter);
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
// Check if the router has finished (in the case where no router change required) and we're still in a
|
|
209
|
+
// transient state and finish of the transition.
|
|
210
|
+
if (!this.angularRouter.getCurrentNavigation() && this.currentSession) {
|
|
211
|
+
this.currentSession.onRouterEnd(new NavigationEnd(-1, '', ''));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
navigateByUrl(urlSnapshot, navigationExtras) {
|
|
216
|
+
console.log(`### navigationByUrl -> ${urlSnapshot.urlTree.toString()}`);
|
|
217
|
+
return this.angularRouter.navigateByUrl(urlSnapshot.urlTree, navigationExtras);
|
|
218
|
+
}
|
|
219
|
+
get activeVisits() {
|
|
220
|
+
return this._activeVisits.readonly;
|
|
221
|
+
}
|
|
222
|
+
// @Trace()
|
|
223
|
+
async pushVisitChangesToRoute(previous, next) {
|
|
224
|
+
this.placeHistory.updateVisit(next);
|
|
225
|
+
// FIXME: no route id -> route id duplicates route parameters
|
|
226
|
+
if (next.hasRoutingChangedFrom(previous)) {
|
|
227
|
+
return this.doNavigation(next, router => {
|
|
228
|
+
const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegments(next);
|
|
229
|
+
// console.log('### Push Changes to route Redirect', { commands: urlSnapshot.url });
|
|
230
|
+
return this.navigateByUrl(urlSnapshot);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
createNavigationSession(currentRouterUrl) {
|
|
235
|
+
const inInteraction = this.interactionService.isActive();
|
|
236
|
+
return inInteraction ?
|
|
237
|
+
new NavigatingDuringInteraction(this.navigationContext, currentRouterUrl) :
|
|
238
|
+
new Navigating(this.navigationContext, currentRouterUrl);
|
|
239
|
+
}
|
|
240
|
+
// @Trace()
|
|
241
|
+
transitionTo(next) {
|
|
242
|
+
const previous = this.navigationSessionModel.value;
|
|
243
|
+
if (!previous) {
|
|
244
|
+
this.placeHistory.notifyNavigationStarted();
|
|
245
|
+
}
|
|
246
|
+
assert.isTruthy(next !== previous);
|
|
247
|
+
// Logger.get(this).info(`### Router State Transition: ${previous ? previous.toString() : 'null'} -> ${next.toString()}`);
|
|
248
|
+
this.navigationSessionModel.value = next;
|
|
249
|
+
if (!!previous) {
|
|
250
|
+
previous.dispose();
|
|
251
|
+
}
|
|
252
|
+
next.notifyActive();
|
|
253
|
+
}
|
|
254
|
+
// @Trace()
|
|
255
|
+
routingSessionFinished(visits) {
|
|
256
|
+
if (visits && visits.length > 0) {
|
|
257
|
+
assert.isTruthy(this.navigationInProgress.value);
|
|
258
|
+
this.placeHistory.notifyNavigationFinished(visits);
|
|
259
|
+
// We update the active visits before we finish the session so the
|
|
260
|
+
// place outlets can ignore the incoming changes until things are
|
|
261
|
+
// settled. TODO: can we removed the event'ness here and just do a push?
|
|
262
|
+
this._activeVisits.value = visits;
|
|
263
|
+
}
|
|
264
|
+
const session = this.currentSession;
|
|
265
|
+
session.dispose();
|
|
266
|
+
this.navigationSessionModel.value = null;
|
|
267
|
+
// console.log(`### Router Session Finished (was ${session.toString()})`);
|
|
268
|
+
this.sessionFinishedJobs.forEach(job => job());
|
|
269
|
+
this.sessionFinishedJobs = [];
|
|
270
|
+
}
|
|
271
|
+
runAfterRoutingSessionFinishes(func) {
|
|
272
|
+
assert.isTruthy(this.navigationInProgress);
|
|
273
|
+
this.sessionFinishedJobs.push(func);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Sync's the current interaction state with the URL. We need to push something in the URL in order
|
|
277
|
+
* to be able to capture the back button on the first page. If we don't then the back click will exit
|
|
278
|
+
* the app directly and we don't get to ask.
|
|
279
|
+
*/
|
|
280
|
+
// @Trace()
|
|
281
|
+
syncInteractionContextIdsWithRouter() {
|
|
282
|
+
if (this.navigationSession) {
|
|
283
|
+
// console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);
|
|
284
|
+
const session = this.navigationSession;
|
|
285
|
+
return new Promise((resolve, reject) => {
|
|
286
|
+
this.runAfterRoutingSessionFinishes(() => {
|
|
287
|
+
this.runAfterRoutingSessionFinishes(resolve);
|
|
288
|
+
const syncSession = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);
|
|
289
|
+
this.transitionTo(syncSession);
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
return new Promise(((resolve, reject) => {
|
|
295
|
+
// console.log(`No navigation in progress, starting synchronisation job`);
|
|
296
|
+
this.runAfterRoutingSessionFinishes(resolve);
|
|
297
|
+
const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);
|
|
298
|
+
this.transitionTo(session);
|
|
299
|
+
}));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
createRouteParameters(visit) {
|
|
303
|
+
const def = visit.placeDefinition;
|
|
304
|
+
return visit.hasRouteId() ?
|
|
305
|
+
[def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :
|
|
306
|
+
[def.getFormattedRouteParameters(visit)];
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
PlaceRouter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceRouter, deps: [{ token: i1.Router }, { token: i2.Location }, { token: i3.InteractionService }, { token: i4.UrlService }, { token: i5.PlaceHistory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
310
|
+
PlaceRouter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceRouter, providedIn: 'root' });
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceRouter, decorators: [{
|
|
312
|
+
type: Injectable,
|
|
313
|
+
args: [{
|
|
314
|
+
providedIn: 'root'
|
|
315
|
+
}]
|
|
316
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }, { type: i3.InteractionService }, { type: i4.UrlService }, { type: i5.PlaceHistory }]; } });
|
|
317
|
+
(function (PlaceRouter) {
|
|
318
|
+
class State {
|
|
319
|
+
constructor(activeVisits) {
|
|
320
|
+
this.activeVisits = activeVisits;
|
|
321
|
+
}
|
|
322
|
+
isPlaceActive(placeDefinition) {
|
|
323
|
+
return !!this.getVisitFor(placeDefinition);
|
|
324
|
+
}
|
|
325
|
+
getVisitFor(placeDefinition) {
|
|
326
|
+
return this.activeVisits.find(v => v.placeDefinition === placeDefinition);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
PlaceRouter.State = State;
|
|
330
|
+
})(PlaceRouter || (PlaceRouter = {}));
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUVQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsZ0JBQWdCLEVBQ2hCLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDaEksT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sa0ZBQWtGLENBQUM7QUFDN0ksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0s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dCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICBOYXZpZ2F0aW9uRW5kLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIEJpbmRpbmcsXG4gIERlYnVnQ29udGV4dCxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgbGFuZyxcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24tc2VydmljZS1yb3V0aW5nLWFkYXB0ZXInO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb24gfSBmcm9tICcuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvbmF2aWdhdGluZy1kdXJpbmctaW50ZXJhY3Rpb24nO1xuaW1wb3J0IHsgUG9wU3RhdGVEdXJpbmdJbnRlcmFjdGlvbk5hdmlnYXRpb24gfSBmcm9tICcuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvcG9wLXN0YXRlLWR1cmluZy1pbnRlcmFjdGlvbi1uYXZpZ2F0aW9uJztcbmltcG9ydCB7IFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL3N5bmNocm9uaXNlLWludGVyYWN0aW9uLWNvbnRleHQtaWRzLXdpdGgtcm91dGUnO1xuaW1wb3J0IHsgTmF2aWdhdGluZyB9IGZyb20gJy4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpbmcnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbnRleHQgfSBmcm9tICcuL25hdmlnYXRpb24vc2Vzc2lvbi9uYXZpZ2F0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuL25hdmlnYXRpb24vc2Vzc2lvbi9uYXZpZ2F0aW9uLXNlc3Npb24nO1xuaW1wb3J0IHsgUG9wU3RhdGVOYXZpZ2F0aW9uIH0gZnJvbSAnLi9uYXZpZ2F0aW9uL3Nlc3Npb24vcG9wLXN0YXRlLW5hdmlnYXRpb24nO1xuaW1wb3J0IHsgUGxhY2VBY2Nlc3NHdWFyZCB9IGZyb20gJy4vcGxhY2UtYWNjZXNzLWd1YXJkJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4vdXJsLXNlcnZpY2UnO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4vdmlzaXQnO1xuXG5mdW5jdGlvbiBhc0FycmF5PFQ+KGl0ZW06IFQgfCBUW10pOlRbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPE5hdmlnYXRpb25TZXNzaW9uPigpO1xuICByZWFkb25seSBuYXZpZ2F0aW9uSW5Qcm9ncmVzczogVmFsdWVNb2RlbENoYWluPGJvb2xlYW4+O1xuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbk5hbWU6IFZhbHVlTW9kZWxDaGFpbjxzdHJpbmc+OyAvLyB1c2VkIGJ5IHRlc3RzXG5cbiAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uQ29udGV4dDogTmF2aWdhdGlvbkNvbnRleHQuSW1wbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVWaXNpdHMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxWaXNpdD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXI6IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyO1xuICBwcml2YXRlIHNlc3Npb25GaW5pc2hlZEpvYnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlOiBWYWx1ZU1vZGVsPFBsYWNlUm91dGVyLlN0YXRlPjtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSBtb2RlbCBjb250YWluaW5nIHRoZSBhdXRob3Jpc2VyIGZ1bmN0aW9uLiAgVGhpcyBhbGxvd3MgcGxhY2VzIHRvIHJlYWN0IHRvIGNoYW5nZXNcbiAgICogaW4gcGVybWlzc2lvbnMgd2hlbiBhbnkgdW5kZXJseWluZyBhdXRoIGxvZ2ljIGNoYW5nZXMsIGUuZy4gYSByb2xlIGJlaW5nIHJlbW92ZWQgZnJvbSBhIHVzZXIuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY2Nlc3NHdWFyZCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxQbGFjZUFjY2Vzc0d1YXJkPigpLndpdGhEZWZhdWx0KG5ldyBQbGFjZUFjY2Vzc0d1YXJkLk5vQXV0aCgpKSk7XG4gIHByaXZhdGUgcmVkaXJlY3Rpb25zOiBQbGFjZVJvdXRlci5SZWRpcmVjdGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhbmd1bGFyUm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh3aW5kb3dbJ0N5cHJlc3MnXSkge1xuICAgICAgd2luZG93WydhdXAuUGxhY2VSb3V0ZXInXSA9IHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIgPSBpbnRlcmFjdGlvblNlcnZpY2UucmVnaXN0ZXJQbGFjZVJvdXRlcih0aGlzKTtcblxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBhbiBpbnRlcmZhY2UgYW5kIHVzZSAndGhpcycgaW5zdGVhZC5cbiAgICB0aGlzLm5hdmlnYXRpb25Db250ZXh0ID0gbmV3IE5hdmlnYXRpb25Db250ZXh0LkltcGwoXG4gICAgICB0aGlzLnVybFNlcnZpY2UsXG4gICAgICB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlcixcbiAgICAgICh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG9wdGlvbnM6IHsgcmVwbGFjZVVybDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIHN0YXRlID0+IHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc3RhdGUpO1xuICAgICAgfSxcbiAgICAgIHZpc2l0cyA9PiB7XG4gICAgICAgIHRoaXMucm91dGluZ1Nlc3Npb25GaW5pc2hlZCh2aXNpdHMpO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwpLmlzTm90TmlsKCk7XG5cbiAgICBjb25zdCBpZGxlU3RhdGVOYW1lID0gY2hhaW4odGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlKS5tYXAoYWN0aXZlID0+IGFjdGl2ZSA/ICdJZGxlRHVyaW5nSW50ZXJhY3Rpb24nIDogJ0lkbGUnKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTmFtZSA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbClcbiAgICAgIC5wbHVjaygnbmFtZScpXG4gICAgICAub3RoZXJ3aXNlKGlkbGVTdGF0ZU5hbWUpO1xuXG4gICAgRGVidWdDb250ZXh0LnRhZyh0aGlzLl9hY3RpdmVWaXNpdHMsICdQbGFjZVJvdXRlci5hY3RpdmVWaXNpdHMnKTtcbiAgICB0aGlzLnN0YXRlID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzKS5yZWR1Y2UodmlzaXRzID0+IG5ldyBQbGFjZVJvdXRlci5TdGF0ZSh2aXNpdHMpKTtcblxuICAgIC8vIFRPRE86IG1ha2Ugc2V0dXAgdGhlIGNhbGxiYWNrcyBpbiBkdXJpbmcgbW9kdWxlIGluaXRpYXRpb24gdG8gbWFrZSB0aGlzIHRlc3RhYmxlLlxuICAgIGFuZ3VsYXJSb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGFib3J0ZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uU3RhcnRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH0gKCR7ZXZlbnQubmF2aWdhdGlvblRyaWdnZXJ9KWApO1xuICAgICAgICBpZiAoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZScpIHtcbiAgICAgICAgICB0aGlzLm9uUG9wU3RhdGUoZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub25Sb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uU3RhcnRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH0gKCR7ZXZlbnQubmF2aWdhdGlvblRyaWdnZXJ9KWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uRW5kWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJFbmQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uRW5kWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkVycm9yWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJFcnJvcihldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25FcnJvclske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uQ2FuY2VsWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uQ2FuY2VsWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgcm91dGVyIG5lZWRzIHRvIGtub3cgYWJvdXQgdXJsIGNoYW5nZXMgYW5kIGluIHNvbWUgY2FzZXMgdGhleSBhcmUgdGhlIG9ubHkgd2F5IHRoZSByb3V0ZXIgY2FuIGtub3cgaWZcbiAgICAvLyB0aGUgYmFjayBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAgYW5ndWxhckxvY2F0aW9uLm9uVXJsQ2hhbmdlKHVybCA9PiB0aGlzLm9uVXJsQ2hhbmdlZCh1cmwpKTtcblxuICB9XG5cbiAgZ2V0IGFjY2Vzc0d1YXJkKCk6IFZhbHVlTW9kZWw8UGxhY2VBY2Nlc3NHdWFyZD4ge1xuICAgIHJldHVybiB0aGlzLl9hY2Nlc3NHdWFyZC5yZWFkb25seTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGNvbmZpZ3VyZUF1dGgoYWNjZXNzR3JhbnQ6IFZhbHVlTW9kZWw8UGxhY2VBY2Nlc3NHdWFyZD4sIHJlZGlyZWN0aW9uczogUGxhY2VSb3V0ZXIuUmVkaXJlY3Rpb25zKSB7XG4gICAgLy8gV2UgbmVlZCBhIHNoaXR0eSBtdXRhYmxlIG1vZGVsIHVudGlsIHNldERlbGVnYXRlIGlzIGNsZXZlciBlbm91Z2ggdG8gd29yayB3aXRoIHJlYWRvbmx5IG1vZGVscy5cbiAgICBjb25zdCBoYWNreU11dGFibGVNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUFjY2Vzc0d1YXJkPigpO1xuICAgIGNvbnN0IGJpbmRpbmcgPSBuZXcgQmluZGluZyhoYWNreU11dGFibGVNb2RlbCwgYWNjZXNzR3JhbnQsIHtcbiAgICAgIHRvUmlnaHQobGVmdFZhbHVlOiBQbGFjZUFjY2Vzc0d1YXJkKSB7XG4gICAgICAgIHJldHVybiBsYW5nLmlsbGVnYWxTdGF0ZSgnaGFja3lNdXRhYmxlTW9kZWwgaXMgcmVhZCBvbmx5Jyk7XG4gICAgICB9LFxuICAgICAgdG9MZWZ0OiAocmlnaHRWYWx1ZTogUGxhY2VBY2Nlc3NHdWFyZCkgPT4gcmlnaHRWYWx1ZVxuICAgIH0pO1xuICAgIGJpbmRpbmcud3JpdGVMZWZ0KCk7XG4gICAgdGhpcy5fYWNjZXNzR3VhcmQuc2V0RGVsZWdhdGUoaGFja3lNdXRhYmxlTW9kZWwpO1xuICAgIHRoaXMucmVkaXJlY3Rpb25zID0gcmVkaXJlY3Rpb25zO1xuICB9XG5cbiAgZ2V0QXV0aGVudGljYXRpb25GYWlsdXJlUmVkaXJlY3QoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogVmlzaXQge1xuICAgIHJldHVybiB0aGlzLnJlZGlyZWN0aW9ucy5vbkF1dGhlbnRpY2F0aW9uRmFpbHVyZShhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gIH1cblxuICBnZXQgY3VycmVudFNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZTtcbiAgfVxuXG4gIGlzTmF2aWdhdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcy52YWx1ZTtcbiAgfVxuXG4gIHdhaXRVbnRpbElkbGUoKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgY29uc3QgeyB3aGVuIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHRoaXM+KHJlc29sdmUgPT4ge1xuICAgICAgd2hlbih0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzKS5iZWNvbWVzRmFsc2V5KCgpID0+IHJlc29sdmUodGhpcyksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiAnZXZhbHVhdGUnLFxuICAgICAgICBvbmNlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkge1xuICAgIGFzc2VydC5pc1RydXRoeShldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJyk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Qb3BTdGF0ZShldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBvcHBlZEhpc3RvcnlVcmwgPSBldmVudC51cmw7XG4gICAgICBjb25zdCBjdXJyZW50Um91dGVyVXJsID0gdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpID9cbiAgICAgICAgbmV3IFBvcFN0YXRlRHVyaW5nSW50ZXJhY3Rpb25OYXZpZ2F0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwsIHBvcHBlZEhpc3RvcnlVcmwpIDpcbiAgICAgICAgbmV3IFBvcFN0YXRlTmF2aWdhdGlvbih0aGlzLm5hdmlnYXRpb25Db250ZXh0LCBjdXJyZW50Um91dGVyVXJsLCBwb3BwZWRIaXN0b3J5VXJsKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHNlc3Npb24pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKTtcbiAgICBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLmNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCkpKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblVybENoYW5nZWQobmV3VXJsOiBzdHJpbmcpIHtcbiAgICAvLyB0aGUgYmFjayBidXR0b24gY2FuIHRyaWdnZXIgYSB1cmwgY2hhbmdlIHdpdGhvdXQgYSBuYXZpZ2F0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3Mgc28gd2VcbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBVcmwgQ2hhbmdlZCAke25ld1VybH1gKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblVybENoYW5nZShuZXdVcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnRllJOiB1cmwgY2hhbmdlZCB3aXRob3V0IGEgbmF2aWdhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzJyk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIFVybCBDaGFuZ2VkYCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVuZChldmVudCk7XG4gIH1cblxuICBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQgfCBWaXNpdFtdLCBvcHRpb25zPzogeyByZWxhdGl2ZVRvOiBBY3RpdmF0ZWRSb3V0ZSB9KSB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBhc0FycmF5KHZpc2l0KS5yZWR1Y2UoKHJlc3VsdCwgdikgPT4ge1xuICAgICAgcmV0dXJuIFsuLi5yZXN1bHQsIHYucGxhY2VEZWZpbml0aW9uLnBhdGgsIC4uLnRoaXMuY3JlYXRlUm91dGVQYXJhbWV0ZXJzKHYpXTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIHRoaXMuZG9OYXZpZ2F0aW9uKHZpc2l0LCBhc3luYyByb3V0ZXIgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hbmd1bGFyUm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IG9wdGlvbnMgPyBvcHRpb25zLnJlbGF0aXZlVG8gOiBudWxsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGRvTmF2aWdhdGlvbih2aXNpdDogVmlzaXR8IFZpc2l0W10sIHJ1bk5hdmlnYXRpb25Db21tYW5kczogKHJvdXRlcjogUm91dGVyKSA9PiBhbnkpIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcy52YWx1ZSkge1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoJ05hdmlnYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcycpO1xuICAgIH1cbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKTtcbiAgICBhc0FycmF5KHZpc2l0KS5mb3JFYWNoKHYgPT4gbmF2aWdhdGlvbi5zdG9yZVZpc2l0KHYpKTtcbiAgICB0aGlzLnRyYW5zaXRpb25UbyhuYXZpZ2F0aW9uKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuTmF2aWdhdGlvbkNvbW1hbmRzKHRoaXMuYW5ndWxhclJvdXRlcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSByb3V0ZXIgaGFzIGZpbmlzaGVkIChpbiB0aGUgY2FzZSB3aGVyZSBubyByb3V0ZXIgY2hhbmdlIHJlcXVpcmVkKSBhbmQgd2UncmUgc3RpbGwgaW4gIGFcbiAgICAgIC8vIHRyYW5zaWVudCBzdGF0ZSBhbmQgZmluaXNoIG9mIHRoZSB0cmFuc2l0aW9uLlxuICAgICAgaWYgKCF0aGlzLmFuZ3VsYXJSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSAmJiB0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJFbmQobmV3IE5hdmlnYXRpb25FbmQoLTEsICcnLCAnJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlQnlVcmwodXJsU25hcHNob3Q6IFVybFNuYXBzaG90LCBuYXZpZ2F0aW9uRXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnNvbGUubG9nKGAjIyMgbmF2aWdhdGlvbkJ5VXJsIC0+ICR7dXJsU25hcHNob3QudXJsVHJlZS50b1N0cmluZygpfWApO1xuICAgIHJldHVybiB0aGlzLmFuZ3VsYXJSb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdC51cmxUcmVlLCBuYXZpZ2F0aW9uRXh0cmFzKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVWaXNpdHMoKTogTGlzdE1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0cy5yZWFkb25seTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIHB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKHByZXZpb3VzOiBWaXNpdCwgbmV4dDogVmlzaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnBsYWNlSGlzdG9yeS51cGRhdGVWaXNpdChuZXh0KTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBpZiAobmV4dC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ocHJldmlvdXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24obmV4dCwgcm91dGVyID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwodGhpcy5hbmd1bGFyUm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkudXBkYXRlVmlzaXRTZWdtZW50cyhuZXh0KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJyMjIyBQdXNoIENoYW5nZXMgdG8gcm91dGUgUmVkaXJlY3QnLCB7IGNvbW1hbmRzOiB1cmxTbmFwc2hvdC51cmwgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKGN1cnJlbnRSb3V0ZXJVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICByZXR1cm4gaW5JbnRlcmFjdGlvbiA/XG4gICAgICBuZXcgTmF2aWdhdGluZ0R1cmluZ0ludGVyYWN0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpIDpcbiAgICAgIG5ldyBOYXZpZ2F0aW5nKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJvdGVjdGVkIHRyYW5zaXRpb25UbyhuZXh0OiBOYXZpZ2F0aW9uU2Vzc2lvbikge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlO1xuICAgIGlmICghcHJldmlvdXMpIHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5Lm5vdGlmeU5hdmlnYXRpb25TdGFydGVkKCk7XG4gICAgfVxuICAgIGFzc2VydC5pc1RydXRoeShuZXh0ICE9PSBwcmV2aW91cyk7XG4gICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGAjIyMgUm91dGVyIFN0YXRlIFRyYW5zaXRpb246ICR7cHJldmlvdXMgPyBwcmV2aW91cy50b1N0cmluZygpIDogJ251bGwnfSAtPiAke25leHQudG9TdHJpbmcoKX1gKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSBuZXh0O1xuICAgIGlmICghIXByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cy5kaXNwb3NlKCk7XG4gICAgfVxuICAgIG5leHQubm90aWZ5QWN0aXZlKCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIHJvdXRpbmdTZXNzaW9uRmluaXNoZWQodmlzaXRzOiBWaXNpdFtdKSB7XG4gICAgaWYgKHZpc2l0cyAmJiB2aXNpdHMubGVuZ3RoID4gMCkge1xuICAgICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MudmFsdWUpO1xuICAgICAgdGhpcy5wbGFjZUhpc3Rvcnkubm90aWZ5TmF2aWdhdGlvbkZpbmlzaGVkKHZpc2l0cyk7XG4gICAgICAvLyBXZSB1cGRhdGUgdGhlIGFjdGl2ZSB2aXNpdHMgYmVmb3JlIHdlIGZpbmlzaCB0aGUgc2Vzc2lvbiBzbyB0aGVcbiAgICAgIC8vIHBsYWNlIG91dGxldHMgY2FuIGlnbm9yZSB0aGUgaW5jb21pbmcgY2hhbmdlcyB1bnRpbCB0aGluZ3MgYXJlXG4gICAgICAvLyBzZXR0bGVkLiBUT0RPOiBjYW4gd2UgcmVtb3ZlZCB0aGUgZXZlbnQnbmVzcyBoZXJlIGFuZCBqdXN0IGRvIGEgcHVzaD9cbiAgICAgIHRoaXMuX2FjdGl2ZVZpc2l0cy52YWx1ZSA9IHZpc2l0cztcbiAgICB9XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3VycmVudFNlc3Npb247XG4gICAgc2Vzc2lvbi5kaXNwb3NlKCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gbnVsbDtcbiAgICAvLyBjb25zb2xlLmxvZyhgIyMjIFJvdXRlciBTZXNzaW9uIEZpbmlzaGVkICh3YXMgJHtzZXNzaW9uLnRvU3RyaW5nKCl9KWApO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icy5mb3JFYWNoKGpvYiA9PiBqb2IoKSk7XG4gICAgdGhpcy5zZXNzaW9uRmluaXNoZWRKb2JzID0gW107XG4gIH1cblxuICBwcml2YXRlIHJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcyhmdW5jOiAoKSA9PiB2b2lkKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MpO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icy5wdXNoKGZ1bmMpO1xuICB9XG5cblxuICAvKipcbiAgICogU3luYydzIHRoZSBjdXJyZW50IGludGVyYWN0aW9uIHN0YXRlIHdpdGggdGhlIFVSTC4gIFdlIG5lZWQgdG8gcHVzaCBzb21ldGhpbmcgaW4gdGhlIFVSTCBpbiBvcmRlclxuICAgKiB0byBiZSBhYmxlIHRvIGNhcHR1cmUgdGhlIGJhY2sgYnV0dG9uIG9uIHRoZSBmaXJzdCBwYWdlLiAgSWYgd2UgZG9uJ3QgdGhlbiB0aGUgYmFjayBjbGljayB3aWxsIGV4aXRcbiAgICogdGhlIGFwcCBkaXJlY3RseSBhbmQgd2UgZG9uJ3QgZ2V0IHRvIGFzay5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIHN5bmNJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXNzaW9uKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgTmF2aWdhdGlvbiBhY3RpdmUgLT4gJHt0aGlzLm5hdmlnYXRpb25TZXNzaW9uLnRvU3RyaW5nKCl9LCBzeW5jIGRlbGF5ZWQgdW50aWwgZmluaXNoZWQuYCk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbjtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcyhyZXNvbHZlKTtcbiAgICAgICAgICBjb25zdCBzeW5jU2Vzc2lvbiA9IG5ldyBTeW5jaHJvbmlzZUludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZSh0aGlzLm5hdmlnYXRpb25Db250ZXh0LCB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpLCBmYWxzZSk7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc3luY1Nlc3Npb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYE5vIG5hdmlnYXRpb24gaW4gcHJvZ3Jlc3MsIHN0YXJ0aW5nIHN5bmNocm9uaXNhdGlvbiBqb2JgKTtcbiAgICAgICAgdGhpcy5ydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMocmVzb2x2ZSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzZXNzaW9uKTtcbiAgICAgIH0pKTtcblxuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQ6IFZpc2l0KSB7XG4gICAgY29uc3QgZGVmID0gdmlzaXQucGxhY2VEZWZpbml0aW9uO1xuICAgIHJldHVybiB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZUlkKHZpc2l0KSwgZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldIDpcbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KV07XG4gIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlUm91dGVyIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0aW9ucyB7XG4gICAgb25BdXRoZW50aWNhdGlvbkZhaWx1cmUoYWN0aXZhdGVkUm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBWaXNpdDtcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBTdGF0ZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhY3RpdmVWaXNpdHM6IFZpc2l0W10pIHtcbiAgICB9XG5cbiAgICBpc1BsYWNlQWN0aXZlKHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gISF0aGlzLmdldFZpc2l0Rm9yKHBsYWNlRGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0VmlzaXRGb3IocGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24pOiBWaXNpdCB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaXNpdHMuZmluZCh2ID0+IHYucGxhY2VEZWZpbml0aW9uID09PSBwbGFjZURlZmluaXRpb24pO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { lang } from '@coolon/pectin';
|
|
2
|
+
import { isNil } from 'lodash';
|
|
3
|
+
import { PlaceComponent } from './place-component';
|
|
4
|
+
import { PlaceDefinition } from './place-definition';
|
|
5
|
+
export function Place(options) {
|
|
6
|
+
return (target) => {
|
|
7
|
+
if (PlaceComponent.isPlaceComponentConstructor(target)) {
|
|
8
|
+
PlaceComponent.injectDefinition(target, new PlaceDefinition(target, options.path, isNil(options.authenticate) ? true : options.authenticate, options.role ?? options.roles, options.data, PlaceComponent.getRouteParameters(target), (options.children || []).map(c => PlaceComponent.getDefinition(c))));
|
|
9
|
+
if (options.roles) {
|
|
10
|
+
console.warn(`${target.name} @Place({roles: string[]}) is deprecated. Use @Place({role:any}) instead`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsSUFBSSxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsT0FBTyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtRQUMxQixJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksZUFBZSxDQUN6RCxNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQ3pELE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssRUFDN0IsT0FBTyxDQUFDLElBQUksRUFDWixjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQ3pDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUMsQ0FBQztZQUVILElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLDJFQUEyRSxDQUFDLENBQUE7YUFDeEc7U0FFRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0seURBQXlELENBQUMsQ0FBQztTQUN2RjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nLCBMb2dnZXIgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5cbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIFBsYWNlKG9wdGlvbnM6IFBsYWNlLk9wdGlvbnMpIHtcbiAgcmV0dXJuICh0YXJnZXQ6IEZ1bmN0aW9uKSA9PiB7XG4gICAgaWYgKFBsYWNlQ29tcG9uZW50LmlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3Rvcih0YXJnZXQpKSB7XG4gICAgICBQbGFjZUNvbXBvbmVudC5pbmplY3REZWZpbml0aW9uKHRhcmdldCwgbmV3IFBsYWNlRGVmaW5pdGlvbihcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBvcHRpb25zLnBhdGgsXG4gICAgICAgIGlzTmlsKG9wdGlvbnMuYXV0aGVudGljYXRlKSA/IHRydWUgOiBvcHRpb25zLmF1dGhlbnRpY2F0ZSxcbiAgICAgICAgb3B0aW9ucy5yb2xlID8/IG9wdGlvbnMucm9sZXMsXG4gICAgICAgIG9wdGlvbnMuZGF0YSxcbiAgICAgICAgUGxhY2VDb21wb25lbnQuZ2V0Um91dGVQYXJhbWV0ZXJzKHRhcmdldCksXG4gICAgICAgIChvcHRpb25zLmNoaWxkcmVuIHx8IFtdKS5tYXAoYyA9PiBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKGMpKVxuICAgICAgKSk7XG5cbiAgICAgIGlmIChvcHRpb25zLnJvbGVzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0YXJnZXQubmFtZX0gQFBsYWNlKHtyb2xlczogc3RyaW5nW119KSBpcyBkZXByZWNhdGVkLiAgVXNlIEBQbGFjZSh7cm9sZTphbnl9KSBpbnN0ZWFkYClcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgJHt0YXJnZXR9IG11c3QgZXh0ZW5kIFBsYWNlQ29tcG9uZW50IHRvIHVzZSB0aGUgQFBsYWNlIGRlY29yYXRvcmApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZSB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH07IC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBhdXRoZW50aWNhdGU/OiBib29sZWFuOyAvLyBkZWZhdWx0cyB0byB0cnVlXG4gICAgcm9sZT86IGFueTsgLy8gZGVmYXVsdHMgdG8gZW1wdHkgYXJyYXlcblxuICAgIC8qKlxuICAgICAqICBAZGVwcmVjYXRlZCB1c2UgI3JvbGUgaW5zdGVhZFxuICAgICAqL1xuICAgIHJvbGVzPzogc3RyaW5nW107IC8vIGRlZmF1bHRzIHRvIGVtcHR5IGFycmF5XG5cbiAgICBjaGlsZHJlbj86IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+W107XG4gICAgZGVmYXVsdENoaWxkPzogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD47XG4gIH1cblxufVxuXG4iXX0=
|
|
@@ -20,8 +20,8 @@ import { TabbedPlaceNavigationComponent } from './components/tabbed-place-naviga
|
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
21
|
export class PlaceModule {
|
|
22
22
|
}
|
|
23
|
-
PlaceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
PlaceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
23
|
+
PlaceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
24
|
+
PlaceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceModule, declarations: [PlaceOutletComponent,
|
|
25
25
|
TabbedPlaceNavigationComponent,
|
|
26
26
|
ListPlaceNavComponent,
|
|
27
27
|
SidePlaceNavigationComponent,
|
|
@@ -42,7 +42,7 @@ PlaceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
|
|
|
42
42
|
ListPlaceNavComponent,
|
|
43
43
|
SidePlaceNavigationComponent,
|
|
44
44
|
AbstractPlaceNavigationComponent] });
|
|
45
|
-
PlaceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
45
|
+
PlaceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceModule, providers: [
|
|
46
46
|
// {provide: AUP_PLACE_CONFIG, useValue: {animationDuration: "2000ms"}}
|
|
47
47
|
], imports: [[
|
|
48
48
|
CommonModule,
|
|
@@ -58,7 +58,7 @@ PlaceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
|
|
|
58
58
|
ComponentsModule,
|
|
59
59
|
PortalModule
|
|
60
60
|
]] });
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceModule, decorators: [{
|
|
62
62
|
type: NgModule,
|
|
63
63
|
args: [{
|
|
64
64
|
imports: [
|
|
@@ -83,7 +83,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
83
83
|
AbstractPlaceNavigationComponent,
|
|
84
84
|
NotAuthorisedNoticeComponent
|
|
85
85
|
],
|
|
86
|
-
entryComponents: [],
|
|
87
86
|
exports: [
|
|
88
87
|
PlaceOutletComponent,
|
|
89
88
|
TabbedPlaceNavigationComponent,
|
|
@@ -96,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
96
95
|
]
|
|
97
96
|
}]
|
|
98
97
|
}] });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFrQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNsSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNsSCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7QUFxQ3hILE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBbEJoQixvQkFBb0I7UUFDcEIsOEJBQThCO1FBQzlCLHFCQUFxQjtRQUNyQiw0QkFBNEI7UUFDNUIsZ0NBQWdDO1FBQ2hDLDRCQUE0QixhQW5CNUIsWUFBWTtRQUNaLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsWUFBWTtRQUNaLGFBQWE7UUFDYixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixZQUFZLGFBV1osb0JBQW9CO1FBQ3BCLDhCQUE4QjtRQUM5QixxQkFBcUI7UUFDckIsNEJBQTRCO1FBQzVCLGdDQUFnQzt5R0FNM0IsV0FBVyxhQUpUO0lBQ1gsdUVBQXVFO0tBQ3RFLFlBL0JRO1lBQ0wsWUFBWTtZQUNaLHVCQUF1QjtZQUN2Qix3QkFBd0I7WUFDeEIsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixZQUFZO1NBQ2Y7MkZBb0JRLFdBQVc7a0JBbEN2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsWUFBWTtxQkFDZjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1Ysb0JBQW9CO3dCQUNwQiw4QkFBOEI7d0JBQzlCLHFCQUFxQjt3QkFDckIsNEJBQTRCO3dCQUM1QixnQ0FBZ0M7d0JBQ2hDLDRCQUE0QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLG9CQUFvQjt3QkFDcEIsOEJBQThCO3dCQUM5QixxQkFBcUI7d0JBQ3JCLDRCQUE0Qjt3QkFDNUIsZ0NBQWdDO3FCQUNuQztvQkFDRCxTQUFTLEVBQUU7b0JBQ1gsdUVBQXVFO3FCQUN0RTtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbnN0cnVjdGFibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9leHBvcnRzJztcbmltcG9ydCB7IERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcbmltcG9ydCB7IEFic3RyYWN0UGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fic3RyYWN0LXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RQbGFjZU5hdkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9saXN0LXBsYWNlLW5hdi9saXN0LXBsYWNlLW5hdi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90QXV0aG9yaXNlZE5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ub3QtYXV0aG9yaXNlZC1ub3RpY2Uvbm90LWF1dGhvcmlzZWQtbm90aWNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZU91dGxldENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbGFjZS1vdXRsZXQvcGxhY2Utb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWRlUGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NpZGUtcGxhY2UtbmF2aWdhdGlvbi9zaWRlLXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJiZWQtcGxhY2UtbmF2aWdhdGlvbi90YWJiZWQtcGxhY2UtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuXG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTWF0TGlzdE1vZHVsZSxcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgRGlyZWN0aXZlc01vZHVsZSxcbiAgICAgICAgRmxleE1vZHVsZSxcbiAgICAgICAgQ29tcG9uZW50c01vZHVsZSxcbiAgICAgICAgUG9ydGFsTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgUGxhY2VPdXRsZXRDb21wb25lbnQsXG4gICAgICAgIFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTGlzdFBsYWNlTmF2Q29tcG9uZW50LFxuICAgICAgICBTaWRlUGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgICAgICBBYnN0cmFjdFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTm90QXV0aG9yaXNlZE5vdGljZUNvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBQbGFjZU91dGxldENvbXBvbmVudCxcbiAgICAgICAgVGFiYmVkUGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgICAgICBMaXN0UGxhY2VOYXZDb21wb25lbnQsXG4gICAgICAgIFNpZGVQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgICAgIEFic3RyYWN0UGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAvLyB7cHJvdmlkZTogQVVQX1BMQUNFX0NPTkZJRywgdXNlVmFsdWU6IHthbmltYXRpb25EdXJhdGlvbjogXCIyMDAwbXNcIn19XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZU1vZHVsZSB7XG5cbn1cbiJdfQ==
|