@coolon/angular-ui-powerups 12.4.8 → 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/column-list-model.js → esm2020/lib/components/tables/column-list-model.mjs} +2 -2
- 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/{esm2015/lib/components/tables/tree-table/tree-label-column-model.js → esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs} +2 -2
- package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +95 -0
- package/esm2020/lib/components/tables/tree-table/tree-table-model.mjs +94 -0
- package/{esm2015/lib/components/text/markdown/markdown.component.js → esm2020/lib/components/text/markdown/markdown.component.mjs} +6 -10
- 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} +7 -8
- package/esm2020/lib/interaction/activity.mjs +87 -0
- package/{esm2015/lib/interaction/alert.js → esm2020/lib/interaction/alert.mjs} +2 -2
- 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} +5 -5
- 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/{esm2015/lib/place/guards/consolidated-param-map.js → esm2020/lib/place/guards/consolidated-param-map.mjs} +2 -2
- 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/{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} +2 -2
- package/esm2020/lib/place/navigation/session/navigation-session.mjs +157 -0
- package/esm2020/lib/place/place-component.mjs +198 -0
- package/{esm2015/lib/place/place-definition.js → esm2020/lib/place/place-definition.mjs} +2 -2
- 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/{esm2015/lib/place/route/formatter.js → esm2020/lib/place/route/formatter.mjs} +2 -2
- 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/{esm2015/lib/place/url-snapshot.js → esm2020/lib/place/url-snapshot.mjs} +2 -2
- 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} +1202 -1417
- 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 +39 -26
- 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 +4 -4
- 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 +5 -5
- 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 +6 -6
- package/schematics/utils/source-file-scanner.js.map +1 -1
- package/schematics/utils/source-file-utilities.js +2 -2
- 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/components/tables/tree-table/tree-table-model.js +0 -94
- 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/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/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/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/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/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/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/services/exports.js → esm2020/lib/services/exports.mjs} +0 -0
- /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { lang } from '@coolon/pectin';
|
|
4
|
+
import { InteractionService } from '../../interaction/services/interaction.service';
|
|
5
|
+
import { PlaceComponent } from '../place-component';
|
|
6
|
+
import { PlaceHistory } from '../place-history';
|
|
7
|
+
import { PlaceRouter } from '../place-router';
|
|
8
|
+
import { VisitSanitiser } from '../route/visit-sanitiser';
|
|
9
|
+
import { UrlService } from '../url-service';
|
|
10
|
+
import { UrlSnapshot } from '../url-snapshot';
|
|
11
|
+
import { Visit } from '../visit';
|
|
12
|
+
import { ConsolidatedParameterMap } from './consolidated-param-map';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@angular/router";
|
|
15
|
+
import * as i2 from "../url-service";
|
|
16
|
+
import * as i3 from "../place-router";
|
|
17
|
+
import * as i4 from "../place-history";
|
|
18
|
+
import * as i5 from "../../interaction/services/interaction.service";
|
|
19
|
+
export class PlaceGuard {
|
|
20
|
+
constructor(router, urlService, placeRouter, placeHistory, interactionService, injector) {
|
|
21
|
+
this.router = router;
|
|
22
|
+
this.urlService = urlService;
|
|
23
|
+
this.placeRouter = placeRouter;
|
|
24
|
+
this.placeHistory = placeHistory;
|
|
25
|
+
this.interactionService = interactionService;
|
|
26
|
+
this.injector = injector;
|
|
27
|
+
}
|
|
28
|
+
// @Trace()
|
|
29
|
+
async canActivate(activatedRoute, state) {
|
|
30
|
+
if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {
|
|
31
|
+
const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
|
|
32
|
+
if (placeDefinition.authenticate) {
|
|
33
|
+
if (!await this.placeRouter.accessGuard.value.isAuthenticated()) {
|
|
34
|
+
const redirectLocation = this.placeRouter.getAuthenticationFailureRedirect(activatedRoute, state);
|
|
35
|
+
const nextPlaceDef = this.getPlaceDefinition(redirectLocation);
|
|
36
|
+
if (nextPlaceDef.authenticate) {
|
|
37
|
+
lang.illegalState(`handleNotAuthenticated hook returned place ${nextPlaceDef.component.name} that requires authentication.`);
|
|
38
|
+
}
|
|
39
|
+
return this.createUrlTree(redirectLocation);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const result = await this.cleanInteractionState(activatedRoute, state, async () => {
|
|
43
|
+
const navigationSession = this.placeRouter.navigationSession;
|
|
44
|
+
// Parse our route params.
|
|
45
|
+
const params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);
|
|
46
|
+
// console.log("RouteParams", params)
|
|
47
|
+
const parsedParams = placeDefinition.parseRouteParams(params);
|
|
48
|
+
const initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
|
|
49
|
+
const sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
|
|
50
|
+
const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));
|
|
51
|
+
// Save the visit with any updated parameters. We need to save it so we remember any non route parameters
|
|
52
|
+
navigationSession.storeVisit(sanitisedVisit);
|
|
53
|
+
if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
|
|
54
|
+
// Regenerate the url
|
|
55
|
+
const urlSnapshot = this.urlService.parseUrl(state.url).updateVisitSegments(sanitisedVisit);
|
|
56
|
+
// console.log('##### Place Guard Redirect', urlSnapshot);
|
|
57
|
+
return urlSnapshot;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return result instanceof UrlSnapshot ? result.urlTree : result;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// @Trace()
|
|
70
|
+
async canDeactivate(component, currentRoute, currentState, nextState) {
|
|
71
|
+
if (!component) {
|
|
72
|
+
// this happens when the place wasn't authorised and the associated
|
|
73
|
+
// router outlet was removed from the dom.
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
const currentUrl = this.urlService.parseUrl(currentState.url);
|
|
77
|
+
const nextUrl = this.urlService.parseUrl(nextState.url);
|
|
78
|
+
const result = await this.placeRouter.navigationSession.canDeactivatePlace(component, currentUrl, nextUrl);
|
|
79
|
+
return result instanceof UrlSnapshot ? result.urlTree : result;
|
|
80
|
+
}
|
|
81
|
+
getPlaceDefinition(result) {
|
|
82
|
+
return result instanceof Visit ?
|
|
83
|
+
result.placeDefinition :
|
|
84
|
+
PlaceComponent.getDefinition(result);
|
|
85
|
+
}
|
|
86
|
+
createUrlTree(result) {
|
|
87
|
+
const visit = result instanceof Visit ? result : new Visit(PlaceComponent.getDefinition(result), {});
|
|
88
|
+
return this.urlService.createUrlSnapshot(visit).urlTree;
|
|
89
|
+
}
|
|
90
|
+
// @Trace()
|
|
91
|
+
async cleanInteractionState(route, state, next) {
|
|
92
|
+
const url = this.urlService.parseUrl(state.url);
|
|
93
|
+
if (!this.interactionService.isActive() && url.hasInteractions()) {
|
|
94
|
+
// This happens if we reload the page or the url was pasted as the route should only be activated
|
|
95
|
+
// after the interaction context has become active.
|
|
96
|
+
return url.removeInteractionIds();
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
return next();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
PlaceGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceGuard, deps: [{ token: i1.Router }, { token: i2.UrlService }, { token: i3.PlaceRouter }, { token: i4.PlaceHistory }, { token: i5.InteractionService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
104
|
+
PlaceGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceGuard, providedIn: 'root' });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PlaceGuard, decorators: [{
|
|
106
|
+
type: Injectable,
|
|
107
|
+
args: [{ providedIn: 'root' }]
|
|
108
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.UrlService }, { type: i3.PlaceRouter }, { type: i4.PlaceHistory }, { type: i5.InteractionService }, { type: i0.Injector }]; } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9wbGFjZS9ndWFyZHMvcGxhY2UuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUlMLE1BQU0sRUFHUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBaUIsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUdwRSxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUE2QixNQUFjLEVBQ3ZCLFVBQXNCLEVBQ2IsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLFFBQWtCO1FBTGxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFB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QixDQUFDLEtBQTZCLEVBQUUsS0FBMEIsRUFBRSxJQUEwQztRQUMvSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEUsaUdBQWlHO1lBQ2pHLG1EQUFtRDtZQUNuRCxPQUFPLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQ25DO2FBQU07WUFDTCxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOzt1R0E3RlUsVUFBVTsyR0FBVixVQUFVLGNBREcsTUFBTTsyRkFDbkIsVUFBVTtrQkFEdEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkRlYWN0aXZhdGUsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29uc3RydWN0YWJsZSwgbGFuZyB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyYWN0aW9uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IFZpc2l0U2FuaXRpc2VyIH0gZnJvbSAnLi4vcm91dGUvdmlzaXQtc2FuaXRpc2VyJztcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi91cmwtc2VydmljZSc7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4uL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCB9IGZyb20gJy4vY29uc29saWRhdGVkLXBhcmFtLW1hcCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhY2VHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludGVyYWN0aW9uU2VydmljZTogSW50ZXJhY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuXG4gICAgaWYgKFBsYWNlQ29tcG9uZW50LmlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3RvcihhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQpKSB7XG4gICAgICBjb25zdCBwbGFjZURlZmluaXRpb24gPSBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChwbGFjZURlZmluaXRpb24uYXV0aGVudGljYXRlKSB7XG5cbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLnBsYWNlUm91dGVyLmFjY2Vzc0d1YXJkLnZhbHVlLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RMb2NhdGlvbiA9IHRoaXMucGxhY2VSb3V0ZXIuZ2V0QXV0aGVudGljYXRpb25GYWlsdXJlUmVkaXJlY3QoYWN0aXZhdGVkUm91dGUsIHN0YXRlKTtcbiAgICAgICAgICBjb25zdCBuZXh0UGxhY2VEZWYgPSB0aGlzLmdldFBsYWNlRGVmaW5pdGlvbihyZWRpcmVjdExvY2F0aW9uKTtcbiAgICAgICAgICBpZiAobmV4dFBsYWNlRGVmLmF1dGhlbnRpY2F0ZSkge1xuICAgICAgICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYGhhbmRsZU5vdEF1dGhlbnRpY2F0ZWQgaG9vayByZXR1cm5lZCBwbGFjZSAke25leHRQbGFjZURlZi5jb21wb25lbnQubmFtZX0gdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi5gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsVHJlZShyZWRpcmVjdExvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNsZWFuSW50ZXJhY3Rpb25TdGF0ZShhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvblNlc3Npb24gPSB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uO1xuXG4gICAgICAgIC8vIFBhcnNlIG91ciByb3V0ZSBwYXJhbXMuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBDb25zb2xpZGF0ZWRQYXJhbWV0ZXJNYXAoYWN0aXZhdGVkUm91dGUudXJsLCBhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiUm91dGVQYXJhbXNcIiwgcGFyYW1zKVxuICAgICAgICBjb25zdCBwYXJzZWRQYXJhbXMgPSBwbGFjZURlZmluaXRpb24ucGFyc2VSb3V0ZVBhcmFtcyhwYXJhbXMpO1xuICAgICAgICBjb25zdCBpbml0aWFsVmlzaXQgPSBuYXZpZ2F0aW9uU2Vzc2lvbi5nZXRWaXNpdEZvcihwbGFjZURlZmluaXRpb24pIHx8IG5ldyBWaXNpdChwbGFjZURlZmluaXRpb24sIHBhcnNlZFBhcmFtcyk7XG5cbiAgICAgICAgY29uc3Qgc2FuaXRpc2VyID0gbmV3IFZpc2l0U2FuaXRpc2VyKG5hdmlnYXRpb25TZXNzaW9uLCBhY3RpdmF0ZWRSb3V0ZSwgdGhpcy5yb3V0ZXIsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIHZpc2l0IHdpdGggYW55IHVwZGF0ZWQgcGFyYW1ldGVycy4gIFdlIG5lZWQgdG8gc2F2ZSBpdCBzbyB3ZSByZW1lbWJlciBhbnkgbm9uIHJvdXRlIHBhcmFtZXRlcnNcbiAgICAgICAgbmF2aWdhdGlvblNlc3Npb24uc3RvcmVWaXNpdChzYW5pdGlzZWRWaXNpdCk7XG4gICAgICAgIGlmIChpbml0aWFsVmlzaXQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHNhbml0aXNlZFZpc2l0KSkge1xuICAgICAgICAgIC8vIFJlZ2VuZXJhdGUgdGhlIHVybFxuICAgICAgICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy51cmxTZXJ2aWNlLnBhcnNlVXJsKHN0YXRlLnVybCkudXBkYXRlVmlzaXRTZWdtZW50cyhzYW5pdGlzZWRWaXNpdCk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJyMjIyMjIFBsYWNlIEd1YXJkIFJlZGlyZWN0JywgdXJsU25hcHNob3QpO1xuICAgICAgICAgIHJldHVybiB1cmxTbmFwc2hvdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0IGluc3RhbmNlb2YgVXJsU25hcHNob3QgPyByZXN1bHQudXJsVHJlZSA6IHJlc3VsdDtcblxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsIG5leHRTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIC8vIHRoaXMgaGFwcGVucyB3aGVuIHRoZSBwbGFjZSB3YXNuJ3QgYXV0aG9yaXNlZCBhbmQgdGhlIGFzc29jaWF0ZWRcbiAgICAgIC8vIHJvdXRlciBvdXRsZXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgZG9tLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwoY3VycmVudFN0YXRlLnVybCk7XG4gICAgY29uc3QgbmV4dFVybCA9IHRoaXMudXJsU2VydmljZS5wYXJzZVVybChuZXh0U3RhdGUudXJsKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLmNhbkRlYWN0aXZhdGVQbGFjZShjb21wb25lbnQsIGN1cnJlbnRVcmwsIG5leHRVcmwpO1xuICAgIHJldHVybiByZXN1bHQgaW5zdGFuY2VvZiBVcmxTbmFwc2hvdCA/IHJlc3VsdC51cmxUcmVlIDogcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQbGFjZURlZmluaXRpb24ocmVzdWx0OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiB8IFZpc2l0KTogUGxhY2VEZWZpbml0aW9uIHtcbiAgICByZXR1cm4gcmVzdWx0IGluc3RhbmNlb2YgVmlzaXQgP1xuICAgICAgcmVzdWx0LnBsYWNlRGVmaW5pdGlvbiA6XG4gICAgICBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKHJlc3VsdCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVVybFRyZWUocmVzdWx0OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiB8IFZpc2l0KSB7XG4gICAgY29uc3QgdmlzaXQgPSByZXN1bHQgaW5zdGFuY2VvZiBWaXNpdCA/IHJlc3VsdCA6IG5ldyBWaXNpdChQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKHJlc3VsdCksIHt9KTtcbiAgICByZXR1cm4gdGhpcy51cmxTZXJ2aWNlLmNyZWF0ZVVybFNuYXBzaG90KHZpc2l0KS51cmxUcmVlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2xlYW5JbnRlcmFjdGlvblN0YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgbmV4dDogKCkgPT4gUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwoc3RhdGUudXJsKTtcbiAgICBpZiAoIXRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgJiYgdXJsLmhhc0ludGVyYWN0aW9ucygpKSB7XG4gICAgICAvLyBUaGlzIGhhcHBlbnMgaWYgd2UgcmVsb2FkIHRoZSBwYWdlIG9yIHRoZSB1cmwgd2FzIHBhc3RlZCBhcyB0aGUgcm91dGUgc2hvdWxkIG9ubHkgYmUgYWN0aXZhdGVkXG4gICAgICAvLyBhZnRlciB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBoYXMgYmVjb21lIGFjdGl2ZS5cbiAgICAgIHJldHVybiB1cmwucmVtb3ZlSW50ZXJhY3Rpb25JZHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { assert } from '@coolon/pectin';
|
|
2
|
+
import { isEqual } from 'lodash';
|
|
3
|
+
/**
|
|
4
|
+
* This class handles the logic around canDeactivate for a given router state transition. It's core responsibilities are:
|
|
5
|
+
* 1. Ensure we only ask the component to deactivate once on a given navigation cycle (since visit sanitisation can result in multiple round trips to through the router.)
|
|
6
|
+
* 2. Ensure only the primary place component is asked when there are nested places. The primary component is the one at the top
|
|
7
|
+
* of the routing change tree.
|
|
8
|
+
* 3. Automatically handle standard interaction scenarios on the components behalf.
|
|
9
|
+
*/
|
|
10
|
+
export class PlaceComponentDeactivationHandler {
|
|
11
|
+
constructor(component, navigationSession, isPrimaryComponent) {
|
|
12
|
+
this.component = component;
|
|
13
|
+
this.navigationSession = navigationSession;
|
|
14
|
+
this.isPrimaryComponent = isPrimaryComponent;
|
|
15
|
+
assert.notNil(component);
|
|
16
|
+
}
|
|
17
|
+
get routerInteractionAdapter() {
|
|
18
|
+
return this.navigationSession.interactionServiceAdapter;
|
|
19
|
+
}
|
|
20
|
+
get urlService() {
|
|
21
|
+
return this.navigationSession.urlService;
|
|
22
|
+
}
|
|
23
|
+
get placeDefinition() {
|
|
24
|
+
return this.component.placeDefinition;
|
|
25
|
+
}
|
|
26
|
+
// @Trace()
|
|
27
|
+
async canDeactivate(currentUrl, nextState) {
|
|
28
|
+
// We'll get called multiple times if there's any parameter sanitisation so
|
|
29
|
+
// we always return true if we accepted promise from a previous cycle of the current
|
|
30
|
+
// navigation session.
|
|
31
|
+
if (!this.canDeactivatePromise) {
|
|
32
|
+
// console.log(`creating deactivate promise for -> ${this.component.constructor.name}`);
|
|
33
|
+
this.canDeactivatePromise = this.canDeactivateComponent(currentUrl, nextState);
|
|
34
|
+
}
|
|
35
|
+
return this.canDeactivatePromise;
|
|
36
|
+
}
|
|
37
|
+
// @Trace()
|
|
38
|
+
async canDeactivateComponent(currentUrl, nextState) {
|
|
39
|
+
// Automatically cancel any active activities if the navigation session was triggered by the back button.
|
|
40
|
+
// If we handled more than just the pop state then it leads to the UI ignoring clicks and just cancelling things which is deeply disconcerting.
|
|
41
|
+
if (this.navigationSession.isPopState) {
|
|
42
|
+
if (this.isPrimaryComponent && this.routerInteractionAdapter.isModalActive()) {
|
|
43
|
+
const routeIds = this.urlService.getActiveInteractionIdsFromUrl(nextState.url);
|
|
44
|
+
const currentIds = this.routerInteractionAdapter.getActiveInteractionContextIds();
|
|
45
|
+
if (!isEqual(currentIds, routeIds)) { // why am I checking this????
|
|
46
|
+
await this.routerInteractionAdapter.cancelCurrentModalInteraction();
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// check if the component has an in place interaction
|
|
52
|
+
if (this.routerInteractionAdapter.isComponentInteracting(this.component)) {
|
|
53
|
+
await this.routerInteractionAdapter.cancelComponentInteraction(this.component);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// No interaction in progress, so ask the component .
|
|
59
|
+
// This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and
|
|
60
|
+
// the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.
|
|
61
|
+
if (this.isGoingToADifferentPlace(nextState)) {
|
|
62
|
+
const canLeave = await this.component._canLeavePlace(this.navigationSession.canDeactivateInteractionContext);
|
|
63
|
+
// The component has an active interaction but no deactivation hook. Rather than guessing what to do
|
|
64
|
+
// we'll just cancel the navigation and print a warning.
|
|
65
|
+
if (canLeave && this.routerInteractionAdapter.isComponentInteracting(this.component)) {
|
|
66
|
+
console.warn('Route changed while component has active interaction, cancelling navigation');
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return canLeave;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// either an interaction or visit parameter change.
|
|
73
|
+
return await this.component._canChangeRouteParameters(this.navigationSession.canDeactivateInteractionContext, nextState);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
isGoingToADifferentPlace(nextState) {
|
|
77
|
+
// Because places with a route-id cover two route segments we get asked to deactivate
|
|
78
|
+
// if the route id is added or removed. So if our path is still present the url
|
|
79
|
+
// then we shouldn't deactivate the place.
|
|
80
|
+
return !nextState.includesPathOf(this.component.placeDefinition);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvbmF2aWdhdGlvbi9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFNakM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGlDQUFpQztJQUk1QyxZQUFxQixTQUF5QixFQUFXLGlCQUFvQyxFQUFXLGtCQUEyQjtRQUE5RyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFXLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVM7UUFDakksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7SUFDWCxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQXVCLEVBQUUsU0FBc0I7UUFDakUsMkVBQTJFO1FBQzNFLG9GQUFvRjtRQUNwRixzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM5Qix3RkFBd0Y7WUFDeEYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDaEY7UUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBR0QsV0FBVztJQUNELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxVQUF1QixFQUFFLFNBQXNCO1FBQ3BGLHlHQUF5RztRQUN6RywrSUFBK0k7UUFDL0ksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFO1lBRXJDLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDNUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO2dCQUNsRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLDZCQUE2QjtvQkFDakUsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztvQkFDcEUsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtpQkFBTTtnQkFDTCxxREFBcUQ7Z0JBQ3JELElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDeEUsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMvRSxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1NBQ0Y7UUFFRCxxREFBcUQ7UUFDckQsOEhBQThIO1FBQzlILCtHQUErRztRQUMvRyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzdHLHFHQUFxRztZQUNyRyx3REFBd0Q7WUFDeEQsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDcEYsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO2dCQUM1RixPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxRQUFRLENBQUM7U0FDakI7YUFBTTtZQUNMLG1EQUFtRDtZQUNuRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDMUg7SUFDSCxDQUFDO0lBRVMsd0JBQXdCLENBQUMsU0FBc0I7UUFDdkQscUZBQXFGO1FBQ3JGLGdGQUFnRjtRQUNoRiwwQ0FBMEM7UUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFjZSwgYXNzZXJ0IH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuLi91cmwtc25hcHNob3QnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuL3Nlc3Npb24vbmF2aWdhdGlvbi1zZXNzaW9uJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhhbmRsZXMgdGhlIGxvZ2ljIGFyb3VuZCBjYW5EZWFjdGl2YXRlIGZvciBhIGdpdmVuIHJvdXRlciBzdGF0ZSB0cmFuc2l0aW9uLiAgSXQncyBjb3JlIHJlc3BvbnNpYmlsaXRpZXMgYXJlOlxuICogMS4gRW5zdXJlIHdlIG9ubHkgYXNrIHRoZSBjb21wb25lbnQgdG8gZGVhY3RpdmF0ZSBvbmNlIG9uIGEgZ2l2ZW4gbmF2aWdhdGlvbiBjeWNsZSAoc2luY2UgdmlzaXQgc2FuaXRpc2F0aW9uIGNhbiByZXN1bHQgaW4gbXVsdGlwbGUgcm91bmQgdHJpcHMgdG8gdGhyb3VnaCB0aGUgcm91dGVyLilcbiAqIDIuIEVuc3VyZSBvbmx5IHRoZSBwcmltYXJ5IHBsYWNlIGNvbXBvbmVudCBpcyBhc2tlZCB3aGVuIHRoZXJlIGFyZSBuZXN0ZWQgcGxhY2VzLiAgVGhlIHByaW1hcnkgY29tcG9uZW50IGlzIHRoZSBvbmUgYXQgdGhlIHRvcFxuICogICAgb2YgdGhlIHJvdXRpbmcgY2hhbmdlIHRyZWUuXG4gKiAzLiBBdXRvbWF0aWNhbGx5IGhhbmRsZSBzdGFuZGFyZCBpbnRlcmFjdGlvbiBzY2VuYXJpb3Mgb24gdGhlIGNvbXBvbmVudHMgYmVoYWxmLlxuICovXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyIHtcblxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGVQcm9taXNlOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb246IE5hdmlnYXRpb25TZXNzaW9uLCByZWFkb25seSBpc1ByaW1hcnlDb21wb25lbnQ6IGJvb2xlYW4pIHtcbiAgICBhc3NlcnQubm90TmlsKGNvbXBvbmVudCk7XG4gIH1cblxuICBnZXQgcm91dGVySW50ZXJhY3Rpb25BZGFwdGVyKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmludGVyYWN0aW9uU2VydmljZUFkYXB0ZXI7XG4gIH1cblxuICBnZXQgdXJsU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi51cmxTZXJ2aWNlO1xuICB9XG5cbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOlBsYWNlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbjtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRTdGF0ZTogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgIC8vIHdlIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB3ZSBhY2NlcHRlZCBwcm9taXNlIGZyb20gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICBpZiAoIXRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBjcmVhdGluZyBkZWFjdGl2YXRlIHByb21pc2UgZm9yIC0+ICR7dGhpcy5jb21wb25lbnQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UgPSB0aGlzLmNhbkRlYWN0aXZhdGVDb21wb25lbnQoY3VycmVudFVybCwgbmV4dFN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2U7XG4gIH1cblxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBhc3luYyBjYW5EZWFjdGl2YXRlQ29tcG9uZW50KGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxVcmxTbmFwc2hvdCB8IGJvb2xlYW4+IHtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNhbmNlbCBhbnkgYWN0aXZlIGFjdGl2aXRpZXMgaWYgdGhlIG5hdmlnYXRpb24gc2Vzc2lvbiB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAvLyBJZiB3ZSBoYW5kbGVkIG1vcmUgdGhhbiBqdXN0IHRoZSBwb3Agc3RhdGUgdGhlbiBpdCBsZWFkcyB0byB0aGUgVUkgaWdub3JpbmcgY2xpY2tzIGFuZCBqdXN0IGNhbmNlbGxpbmcgdGhpbmdzIHdoaWNoIGlzIGRlZXBseSBkaXNjb25jZXJ0aW5nLlxuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmlzUG9wU3RhdGUpIHtcblxuICAgICAgaWYgKHRoaXMuaXNQcmltYXJ5Q29tcG9uZW50ICYmIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLmlzTW9kYWxBY3RpdmUoKSkge1xuICAgICAgICBjb25zdCByb3V0ZUlkcyA9IHRoaXMudXJsU2VydmljZS5nZXRBY3RpdmVJbnRlcmFjdGlvbklkc0Zyb21VcmwobmV4dFN0YXRlLnVybCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJZHMgPSB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5nZXRBY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMoKTtcbiAgICAgICAgaWYgKCFpc0VxdWFsKGN1cnJlbnRJZHMsIHJvdXRlSWRzKSkgeyAvLyB3aHkgYW0gSSBjaGVja2luZyB0aGlzPz8/P1xuICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLmNhbmNlbEN1cnJlbnRNb2RhbEludGVyYWN0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayBpZiB0aGUgY29tcG9uZW50IGhhcyBhbiBpbiBwbGFjZSBpbnRlcmFjdGlvblxuICAgICAgICBpZiAodGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIuaXNDb21wb25lbnRJbnRlcmFjdGluZyh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5jYW5jZWxDb21wb25lbnRJbnRlcmFjdGlvbih0aGlzLmNvbXBvbmVudCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAvLyBUaGlzIG1heSBzdGFydCBhbiBpbnRlcmFjdGlvbiwgaGVuY2UgY2hlY2tpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHQgYmVmb3JlIG5vdy4gSS5lLiBpZiB0aGUgcGxhY2UgcG9wcyB1cCB0aGUgZGlhbG9nLCBhbmRcbiAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyIGRpYWxvZy5cbiAgICBpZiAodGhpcy5pc0dvaW5nVG9BRGlmZmVyZW50UGxhY2UobmV4dFN0YXRlKSkge1xuICAgICAgY29uc3QgY2FuTGVhdmUgPSBhd2FpdCB0aGlzLmNvbXBvbmVudC5fY2FuTGVhdmVQbGFjZSh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmNhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgLy8gVGhlIGNvbXBvbmVudCBoYXMgYW4gYWN0aXZlIGludGVyYWN0aW9uIGJ1dCBubyBkZWFjdGl2YXRpb24gaG9vay4gIFJhdGhlciB0aGFuIGd1ZXNzaW5nIHdoYXQgdG8gZG9cbiAgICAgIC8vIHdlJ2xsIGp1c3QgY2FuY2VsIHRoZSBuYXZpZ2F0aW9uIGFuZCBwcmludCBhIHdhcm5pbmcuXG4gICAgICBpZiAoY2FuTGVhdmUgJiYgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIuaXNDb21wb25lbnRJbnRlcmFjdGluZyh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdSb3V0ZSBjaGFuZ2VkIHdoaWxlIGNvbXBvbmVudCBoYXMgYWN0aXZlIGludGVyYWN0aW9uLCBjYW5jZWxsaW5nIG5hdmlnYXRpb24nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FuTGVhdmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVpdGhlciBhbiBpbnRlcmFjdGlvbiBvciB2aXNpdCBwYXJhbWV0ZXIgY2hhbmdlLlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29tcG9uZW50Ll9jYW5DaGFuZ2VSb3V0ZVBhcmFtZXRlcnModGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi5jYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0LCBuZXh0U3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpc0dvaW5nVG9BRGlmZmVyZW50UGxhY2UobmV4dFN0YXRlOiBVcmxTbmFwc2hvdCkge1xuICAgIC8vIEJlY2F1c2UgcGxhY2VzIHdpdGggYSByb3V0ZS1pZCBjb3ZlciB0d28gcm91dGUgc2VnbWVudHMgd2UgZ2V0IGFza2VkIHRvIGRlYWN0aXZhdGVcbiAgICAvLyBpZiB0aGUgcm91dGUgaWQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gIFNvIGlmIG91ciBwYXRoIGlzIHN0aWxsIHByZXNlbnQgdGhlIHVybFxuICAgIC8vIHRoZW4gd2Ugc2hvdWxkbid0IGRlYWN0aXZhdGUgdGhlIHBsYWNlLlxuICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { EventCleanUpSession } from './event-clean-up-session';
|
|
2
|
+
/**
|
|
3
|
+
* The sequence of router events are:
|
|
4
|
+
* NavigationError -> url = url of navigation link
|
|
5
|
+
* NavigationEnd
|
|
6
|
+
* onPopState url = Our currentUrl sans and interaction query params
|
|
7
|
+
* NavigationCancel url == same as above.
|
|
8
|
+
*/
|
|
9
|
+
export class WaitUntilLeavingInteractionTransitionCancelled extends EventCleanUpSession {
|
|
10
|
+
constructor(context, startingUrl, locationChangeTriggerUrl) {
|
|
11
|
+
super(context, startingUrl);
|
|
12
|
+
this.locationChangeTriggerUrl = locationChangeTriggerUrl;
|
|
13
|
+
this.isPopState = false;
|
|
14
|
+
this.firstCancelHandled = false;
|
|
15
|
+
this.popStateHandled = false;
|
|
16
|
+
this.debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];
|
|
17
|
+
}
|
|
18
|
+
// @Trace()
|
|
19
|
+
onRouterStarted(event) {
|
|
20
|
+
this.ignore(event);
|
|
21
|
+
}
|
|
22
|
+
// @Trace()
|
|
23
|
+
onRouterCancelled(event) {
|
|
24
|
+
this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.locationChangeTriggerUrl, this.startingUrl);
|
|
25
|
+
this.context.finishRoutingSession();
|
|
26
|
+
}
|
|
27
|
+
// @Trace()
|
|
28
|
+
onRouterEnd(event) {
|
|
29
|
+
this.ignore(event);
|
|
30
|
+
}
|
|
31
|
+
// @Trace()
|
|
32
|
+
onRouterError(event) {
|
|
33
|
+
this.ignore(event);
|
|
34
|
+
}
|
|
35
|
+
// @Trace()
|
|
36
|
+
onPopState(event) {
|
|
37
|
+
this.ignore(event);
|
|
38
|
+
}
|
|
39
|
+
async canDeactivatePlace(component, currentUrl, nextUrl) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC11bnRpbC1sZWF2aW5nLWludGVyYWN0aW9uLXRyYW5zaXRpb24tY2FuY2VsbGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvbmF2aWdhdGlvbi9zZXNzaW9uL2V2ZW50LWNsZWFudXAvd2FpdC11bnRpbC1sZWF2aW5nLWludGVyYWN0aW9uLXRyYW5zaXRpb24tY2FuY2VsbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9EOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyw4Q0FBK0MsU0FBUSxtQkFBbUI7SUFRckYsWUFBWSxPQUEwQixFQUMxQixXQUFtQixFQUNWLHdCQUFnQztRQUNuRCxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRFQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFRO1FBUjVDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDNUIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBTXpKLENBQUM7SUFFRCxXQUFXO0lBQ1gsZUFBZSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7SUFDWCxpQkFBaUIsQ0FBQyxLQUF1QjtRQUN2QyxJQUFJLENBQUMsZ0RBQWdELENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7SUFDWCxXQUFXLENBQUMsS0FBb0I7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztJQUNYLGFBQWEsQ0FBQyxLQUFzQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO0lBQ1gsVUFBVSxDQUFDLEtBQXNCO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUF5QixFQUFFLFVBQXVCLEVBQUUsT0FBb0I7UUFDL0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2dnZXIsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuLi8uLi8uLi91cmwtc25hcHNob3QnO1xuaW1wb3J0IHsgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUgfSBmcm9tICcuLi9pbnRlcmFjdGlvbnMvc3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL25hdmlnYXRpb24tY29udGV4dCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2Vzc2lvbiB9IGZyb20gJy4uL25hdmlnYXRpb24tc2Vzc2lvbic7XG5pbXBvcnQgeyBsYW5nIH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBFdmVudENsZWFuVXBTZXNzaW9uIH0gZnJvbSAnLi9ldmVudC1jbGVhbi11cC1zZXNzaW9uJztcblxuLyoqXG4gKiBUaGUgc2VxdWVuY2Ugb2Ygcm91dGVyIGV2ZW50cyBhcmU6XG4gKiBOYXZpZ2F0aW9uRXJyb3IgLT4gdXJsID0gdXJsIG9mIG5hdmlnYXRpb24gbGlua1xuICogTmF2aWdhdGlvbkVuZFxuICogb25Qb3BTdGF0ZSB1cmwgPSBPdXIgY3VycmVudFVybCBzYW5zIGFuZCBpbnRlcmFjdGlvbiBxdWVyeSBwYXJhbXNcbiAqIE5hdmlnYXRpb25DYW5jZWwgdXJsID09IHNhbWUgYXMgYWJvdmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBXYWl0VW50aWxMZWF2aW5nSW50ZXJhY3Rpb25UcmFuc2l0aW9uQ2FuY2VsbGVkIGV4dGVuZHMgRXZlbnRDbGVhblVwU2Vzc2lvbiB7XG5cbiAgcmVhZG9ubHkgaXNQb3BTdGF0ZSA9IGZhbHNlO1xuICBmaXJzdENhbmNlbEhhbmRsZWQgPSBmYWxzZTtcbiAgcG9wU3RhdGVIYW5kbGVkID0gZmFsc2U7XG4gIHBvcFN0YXRlRXZlbnRVcmw6IHN0cmluZztcbiAgZGVidWdQcm9wZXJ0eUtleXMgPSBbJ2lkbGUnLCAnc3RhcnRpbmdVcmwnLCAncG9wcGVkSGlzdG9yeVVybCcsICdsb2NhdGlvbkNoYW5nZVRyaWdnZXJVcmwnLCAncG9wU3RhdGVFdmVudFVybCcsICdmaXJzdENhbmNlbEhhbmRsZWQnLCAncG9wU3RhdGVIYW5kbGVkJ107XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogTmF2aWdhdGlvbkNvbnRleHQsXG4gICAgICAgICAgICAgIHN0YXJ0aW5nVXJsOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGxvY2F0aW9uQ2hhbmdlVHJpZ2dlclVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RhcnRpbmdVcmwpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZShldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IHZvaWQge1xuICAgIHRoaXMucmVwYWlyQnJvd3Nlckhpc3RvcnlBbmRVcmxBZnRlckd1YXJkQ2FuY2VsbGF0aW9uKHRoaXMubG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsLCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICB0aGlzLmNvbnRleHQuZmluaXNoUm91dGluZ1Nlc3Npb24oKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0VXJsOiBVcmxTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFNuYXBzaG90PiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { EventCleanUpSession } from './event-clean-up-session';
|
|
2
|
+
/**
|
|
3
|
+
* This state handles the scenario where a link navigation triggered an interaction and the user clicked back a to cancel it.
|
|
4
|
+
* The routing event sequence is different depending on the link that was clicked.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: In angular prior to 10 the sequence of routing events was different depending on the initial link that was clicked.
|
|
7
|
+
* This class used have ugle if/else code to handle it and a not that it should be split into sub states.
|
|
8
|
+
* During the update to angular 10 I did this (as the tests for this scenario were failings). After doing so
|
|
9
|
+
* it appears that angular now behaves the same in both cases. But rather that revert the changes I've left the
|
|
10
|
+
* sub-state handling in in case it ever comes back.
|
|
11
|
+
*/
|
|
12
|
+
export class WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined extends EventCleanUpSession {
|
|
13
|
+
constructor(context, startingUrl, clickedLinkUrl) {
|
|
14
|
+
super(context, startingUrl);
|
|
15
|
+
this.clickedLinkUrl = clickedLinkUrl;
|
|
16
|
+
this.isPopState = false;
|
|
17
|
+
this.clickedLinkMatchedBackButtonUrl = false;
|
|
18
|
+
this.debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'firstCancelEventUrl', 'clickedLinkMatchedBackButtonUrl', 'popStateEventUrl'];
|
|
19
|
+
}
|
|
20
|
+
// @Trace()
|
|
21
|
+
onRouterStarted(event) {
|
|
22
|
+
this.ignore(event);
|
|
23
|
+
}
|
|
24
|
+
// @Trace()
|
|
25
|
+
onRouterCancelled(event) {
|
|
26
|
+
if (event.url === this.clickedLinkUrl) {
|
|
27
|
+
this.context.transitionTo(new WaitForLinkSameAsBackToPlayOut(this.context, this.startingUrl, this.clickedLinkUrl));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.context.transitionTo(new WaitForLinkDifferentFromBackToPlayOut(this.context, this.startingUrl, this.clickedLinkUrl));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async canDeactivatePlace(component, currentUrl, nextUrl) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
class WaitForLinkSameAsBackToPlayOut extends EventCleanUpSession {
|
|
38
|
+
constructor(context, startingUrl, clickedLinkUrl) {
|
|
39
|
+
super(context, startingUrl);
|
|
40
|
+
this.clickedLinkUrl = clickedLinkUrl;
|
|
41
|
+
this.isPopState = false;
|
|
42
|
+
this.debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'popStateEventUrl'];
|
|
43
|
+
}
|
|
44
|
+
// @Trace()
|
|
45
|
+
onRouterEnd(event) {
|
|
46
|
+
this.ignore(event);
|
|
47
|
+
}
|
|
48
|
+
// @Trace()
|
|
49
|
+
onRouterError(event) {
|
|
50
|
+
this.ignore(event);
|
|
51
|
+
}
|
|
52
|
+
// @Trace()
|
|
53
|
+
onPopState(event) {
|
|
54
|
+
this.popStateEventUrl = event.url;
|
|
55
|
+
this.ignore(event);
|
|
56
|
+
}
|
|
57
|
+
// @Trace()
|
|
58
|
+
onRouterCancelled(event) {
|
|
59
|
+
if (this.popStateEventUrl) {
|
|
60
|
+
this.finaliseRouting();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// @Trace()
|
|
64
|
+
finaliseRouting() {
|
|
65
|
+
this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.clickedLinkUrl, this.startingUrl);
|
|
66
|
+
return this.context.finishRoutingSession();
|
|
67
|
+
}
|
|
68
|
+
async canDeactivatePlace(component, currentUrl, nextUrl) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// See the note above. This class is identical to the previous but I've left it here in case angular decides to
|
|
73
|
+
// route differently in this scenario going forward.
|
|
74
|
+
class WaitForLinkDifferentFromBackToPlayOut extends EventCleanUpSession {
|
|
75
|
+
constructor(context, startingUrl, clickedLinkUrl) {
|
|
76
|
+
super(context, startingUrl);
|
|
77
|
+
this.clickedLinkUrl = clickedLinkUrl;
|
|
78
|
+
this.isPopState = false;
|
|
79
|
+
this.debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'popStateEventUrl'];
|
|
80
|
+
}
|
|
81
|
+
// @Trace()
|
|
82
|
+
onRouterEnd(event) {
|
|
83
|
+
this.ignore(event);
|
|
84
|
+
}
|
|
85
|
+
// @Trace()
|
|
86
|
+
onRouterError(event) {
|
|
87
|
+
this.ignore(event);
|
|
88
|
+
}
|
|
89
|
+
// @Trace()
|
|
90
|
+
onPopState(event) {
|
|
91
|
+
this.popStateEventUrl = event.url;
|
|
92
|
+
this.ignore(event);
|
|
93
|
+
}
|
|
94
|
+
// @Trace()
|
|
95
|
+
onRouterCancelled(event) {
|
|
96
|
+
if (this.popStateEventUrl) {
|
|
97
|
+
this.finaliseRouting();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// @Trace()
|
|
101
|
+
finaliseRouting() {
|
|
102
|
+
this.repairBrowserHistoryAndUrlAfterGuardCancellation(this.clickedLinkUrl, this.startingUrl);
|
|
103
|
+
return this.context.finishRoutingSession();
|
|
104
|
+
}
|
|
105
|
+
async canDeactivatePlace(component, currentUrl, nextUrl) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//
|
|
110
|
+
// ### Router State Transition: null -> Navigating(startingUrl: /activities/dialogs;l=en, urlAfterRedirects: undefined)
|
|
111
|
+
// ### ###### Router Event: NavigationStart
|
|
112
|
+
// NavigationStart(id: 6, url: '/home')
|
|
113
|
+
// NavigationStart {id: 6, url: "/home", navigationTrigger: "imperative", restoredState: null}
|
|
114
|
+
// logger.js:39 Ignoring router event: NavigationStart -> /home :: Navigating(startingUrl: /activities/dialogs;l=en, urlAfterRedirects: undefined)
|
|
115
|
+
// ### ###### Router Event: RoutesRecognized
|
|
116
|
+
// RoutesRecognized(id: 6, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )
|
|
117
|
+
// RoutesRecognized {id: 6, url: "/home", urlAfterRedirects: "/home", state: RouterStateSnapshot}
|
|
118
|
+
// ###### Router Event: GuardsCheckStart
|
|
119
|
+
// GuardsCheckStart(id: 6, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )
|
|
120
|
+
// GuardsCheckStart {id: 6, url: "/home", urlAfterRedirects: "/home", state: RouterStateSnapshot}
|
|
121
|
+
// logger.js:39 back button pressed during navigation session interaction promise
|
|
122
|
+
// logger.js:39 cancelling current navigation activity..
|
|
123
|
+
// logger.js:39 ### Router State Transition: Navigating(startingUrl: /activities/dialogs;l=en, urlAfterRedirects: undefined) -> WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish(idle: undefined, startingUrl: /activities/dialogs;l=en, clickedLinkUrl: /home, firstCancelEventUrl: undefined, clickedLinkMatchedBackButtonUrl: false, popStateEventUrl: undefined)
|
|
124
|
+
// ###### Router Event: GuardsCheckEnd
|
|
125
|
+
// GuardsCheckEnd(id: 6, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } , shouldActivate: false)
|
|
126
|
+
// GuardsCheckEnd {id: 6, url: "/home", urlAfterRedirects: "/home", state: RouterStateSnapshot, shouldActivate: false}
|
|
127
|
+
// ###### Router Event: NavigationCancel
|
|
128
|
+
// NavigationCancel(id: 6, url: '/home')
|
|
129
|
+
// NavigationCancel {id: 6, url: "/home", reason: ""}
|
|
130
|
+
// logger.js:54 WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterCancelled
|
|
131
|
+
// logger.js:19 args NavigationCancel {id: 6, url: "/home", reason: ""}
|
|
132
|
+
// logger.js:39 Ignoring router event: NavigationCancel -> /home :: WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish(idle: undefined, startingUrl: /activities/dialogs;l=en, clickedLinkUrl: /home, firstCancelEventUrl: /home, clickedLinkMatchedBackButtonUrl: true, popStateEventUrl: undefined)
|
|
133
|
+
// logger.js:28 <-- WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterCancelled undefined
|
|
134
|
+
// logger.js:54 WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterEnd
|
|
135
|
+
// logger.js:19 args NavigationEnd {id: -1, url: "", urlAfterRedirects: ""}
|
|
136
|
+
// logger.js:54 WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.finaliseRouting
|
|
137
|
+
// logger.js:39 WORK-AROUND: Updating browser location after pop state - see angular issue #13586
|
|
138
|
+
// navigation-session.ts:129 replacing /activities/dialogs;l=en with /home
|
|
139
|
+
// navigation-session.ts:131 pushing /activities/dialogs;l=en back onto the history.
|
|
140
|
+
// ????? place-router.ts:281 ### Router Session Finished (was WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish(idle: undefined, startingUrl: /activities/dialogs;l=en, clickedLinkUrl: /home, firstCancelEventUrl: /home, clickedLinkMatchedBackButtonUrl: true, popStateEventUrl: undefined))
|
|
141
|
+
// logger.js:28 <-- WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.finaliseRouting undefined
|
|
142
|
+
// logger.js:28 <-- WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish.onRouterEnd undefined
|
|
143
|
+
// ###### Router Event: NavigationStart
|
|
144
|
+
// NavigationStart(id: 7, url: '/home')
|
|
145
|
+
// NavigationStart {id: 7, url: "/home", navigationTrigger: "popstate", restoredState: {…}}
|
|
146
|
+
// logger.js:39 ### Router State Transition: null -> PopStateNavigation(startingUrl: /activities/dialogs;l=en, poppedHistoryUrl: /home)
|
|
147
|
+
// ###### Router Event: RoutesRecognized
|
|
148
|
+
// RoutesRecognized(id: 7, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )
|
|
149
|
+
// RoutesRecognized {id: 7, url: "/home", urlAfterRedirects: "/home", state: RouterStateSnapshot}
|
|
150
|
+
// ###### Router Event: GuardsCheckStart
|
|
151
|
+
// GuardsCheckStart(id: 7, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC11bnRpbC1saW5rLXRyaWdnZXJlZC1uYXZpZ2F0aW9uLWludGVyYWN0aW9uLWNhbmNlbGF0aW9uLXR5cGUtZGV0ZXJtaW5lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL25hdmlnYXRpb24vc2Vzc2lvbi9ldmVudC1jbGVhbnVwL3dhaXQtdW50aWwtbGluay10cmlnZ2VyZWQtbmF2aWdhdGlvbi1pbnRlcmFjdGlvbi1jYW5jZWxhdGlvbi10eXBlLWRldGVybWluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLHFFQUFzRSxTQUFRLG1CQUFtQjtJQVE1RyxZQUFZLE9BQTBCLEVBQzFCLFdBQW1CLEVBQ1YsY0FBc0I7UUFDekMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQURULG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBUmxDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHNUIsb0NBQStCLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLHNCQUFpQixHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxpQ0FBaUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBTTVJLENBQUM7SUFFRCxXQUFXO0lBQ1gsZUFBZSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7SUFDWCxpQkFBaUIsQ0FBQyxLQUF1QjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FB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QXdJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU3RhcnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4uLy4uLy4uL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL25hdmlnYXRpb24tY29udGV4dCc7XG5pbXBvcnQgeyBFdmVudENsZWFuVXBTZXNzaW9uIH0gZnJvbSAnLi9ldmVudC1jbGVhbi11cC1zZXNzaW9uJztcblxuLyoqXG4gKiBUaGlzIHN0YXRlIGhhbmRsZXMgdGhlIHNjZW5hcmlvIHdoZXJlIGEgbGluayBuYXZpZ2F0aW9uIHRyaWdnZXJlZCBhbiBpbnRlcmFjdGlvbiBhbmQgdGhlIHVzZXIgY2xpY2tlZCBiYWNrIGEgdG8gY2FuY2VsIGl0LlxuICogVGhlIHJvdXRpbmcgZXZlbnQgc2VxdWVuY2UgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgbGluayB0aGF0IHdhcyBjbGlja2VkLlxuICpcbiAqIE5PVEU6IEluIGFuZ3VsYXIgcHJpb3IgdG8gMTAgdGhlIHNlcXVlbmNlIG9mIHJvdXRpbmcgZXZlbnRzIHdhcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSBpbml0aWFsIGxpbmsgdGhhdCB3YXMgY2xpY2tlZC5cbiAqICAgICAgIFRoaXMgY2xhc3MgdXNlZCBoYXZlIHVnbGUgaWYvZWxzZSBjb2RlIHRvIGhhbmRsZSBpdCBhbmQgYSBub3QgdGhhdCBpdCBzaG91bGQgYmUgc3BsaXQgaW50byBzdWIgc3RhdGVzLlxuICogICAgICAgRHVyaW5nIHRoZSB1cGRhdGUgdG8gYW5ndWxhciAxMCBJIGRpZCB0aGlzIChhcyB0aGUgdGVzdHMgZm9yIHRoaXMgc2NlbmFyaW8gd2VyZSBmYWlsaW5ncykuIEFmdGVyIGRvaW5nIHNvXG4gKiAgICAgICBpdCBhcHBlYXJzIHRoYXQgYW5ndWxhciBub3cgYmVoYXZlcyB0aGUgc2FtZSBpbiBib3RoIGNhc2VzLiBCdXQgcmF0aGVyIHRoYXQgcmV2ZXJ0IHRoZSBjaGFuZ2VzIEkndmUgbGVmdCB0aGVcbiAqICAgICAgIHN1Yi1zdGF0ZSBoYW5kbGluZyBpbiBpbiBjYXNlIGl0IGV2ZXIgY29tZXMgYmFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaXRVbnRpbExpbmtUcmlnZ2VyZWROYXZpZ2F0aW9uSW50ZXJhY3Rpb25DYW5jZWxsYXRpb25UeXBlRGV0ZXJtaW5lZCBleHRlbmRzIEV2ZW50Q2xlYW5VcFNlc3Npb24ge1xuXG4gIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcbiAgZmlyc3RDYW5jZWxFdmVudFVybDogc3RyaW5nO1xuICBwb3BTdGF0ZUV2ZW50VXJsOiBzdHJpbmc7XG4gIGNsaWNrZWRMaW5rTWF0Y2hlZEJhY2tCdXR0b25VcmwgPSBmYWxzZTtcbiAgZGVidWdQcm9wZXJ0eUtleXMgPSBbJ2lkbGUnLCAnc3RhcnRpbmdVcmwnLCAnY2xpY2tlZExpbmtVcmwnLCAnZmlyc3RDYW5jZWxFdmVudFVybCcsICdjbGlja2VkTGlua01hdGNoZWRCYWNrQnV0dG9uVXJsJywgJ3BvcFN0YXRlRXZlbnRVcmwnXTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgc3RhcnRpbmdVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgY2xpY2tlZExpbmtVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0YXJ0aW5nVXJsKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudXJsID09PSB0aGlzLmNsaWNrZWRMaW5rVXJsKSB7XG4gICAgICB0aGlzLmNvbnRleHQudHJhbnNpdGlvblRvKG5ldyBXYWl0Rm9yTGlua1NhbWVBc0JhY2tUb1BsYXlPdXQodGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsLCB0aGlzLmNsaWNrZWRMaW5rVXJsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGV4dC50cmFuc2l0aW9uVG8obmV3IFdhaXRGb3JMaW5rRGlmZmVyZW50RnJvbUJhY2tUb1BsYXlPdXQodGhpcy5jb250ZXh0LCB0aGlzLnN0YXJ0aW5nVXJsLCB0aGlzLmNsaWNrZWRMaW5rVXJsKSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0VXJsOiBVcmxTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFNuYXBzaG90PiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmNsYXNzIFdhaXRGb3JMaW5rU2FtZUFzQmFja1RvUGxheU91dCBleHRlbmRzIEV2ZW50Q2xlYW5VcFNlc3Npb24ge1xuICByZWFkb25seSBpc1BvcFN0YXRlID0gZmFsc2U7XG4gIHBvcFN0YXRlRXZlbnRVcmw6IHN0cmluZztcbiAgZGVidWdQcm9wZXJ0eUtleXMgPSBbJ2lkbGUnLCAnc3RhcnRpbmdVcmwnLCAnY2xpY2tlZExpbmtVcmwnLCAncG9wU3RhdGVFdmVudFVybCddO1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IE5hdmlnYXRpb25Db250ZXh0LFxuICAgICAgICAgICAgICBzdGFydGluZ1VybDogc3RyaW5nLFxuICAgICAgICAgICAgICByZWFkb25seSBjbGlja2VkTGlua1VybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RhcnRpbmdVcmwpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZShldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZShldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiB2b2lkIHtcbiAgICB0aGlzLnBvcFN0YXRlRXZlbnRVcmwgPSBldmVudC51cmw7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpIHtcbiAgICBpZiAodGhpcy5wb3BTdGF0ZUV2ZW50VXJsKSB7XG4gICAgICB0aGlzLmZpbmFsaXNlUm91dGluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGZpbmFsaXNlUm91dGluZygpIHtcbiAgICB0aGlzLnJlcGFpckJyb3dzZXJIaXN0b3J5QW5kVXJsQWZ0ZXJHdWFyZENhbmNlbGxhdGlvbih0aGlzLmNsaWNrZWRMaW5rVXJsLCB0aGlzLnN0YXJ0aW5nVXJsKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmlzaFJvdXRpbmdTZXNzaW9uKCk7XG4gIH1cblxuXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGVQbGFjZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50VXJsOiBVcmxTbmFwc2hvdCwgbmV4dFVybDogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG59XG5cbi8vIFNlZSB0aGUgbm90ZSBhYm92ZS4gIFRoaXMgY2xhc3MgaXMgaWRlbnRpY2FsIHRvIHRoZSBwcmV2aW91cyBidXQgSSd2ZSBsZWZ0IGl0IGhlcmUgaW4gY2FzZSBhbmd1bGFyIGRlY2lkZXMgdG9cbi8vIHJvdXRlIGRpZmZlcmVudGx5IGluIHRoaXMgc2NlbmFyaW8gZ29pbmcgZm9yd2FyZC5cbmNsYXNzIFdhaXRGb3JMaW5rRGlmZmVyZW50RnJvbUJhY2tUb1BsYXlPdXQgZXh0ZW5kcyBFdmVudENsZWFuVXBTZXNzaW9uIHtcbiAgcmVhZG9ubHkgaXNQb3BTdGF0ZSA9IGZhbHNlO1xuICBwb3BTdGF0ZUV2ZW50VXJsOiBzdHJpbmc7XG4gIGRlYnVnUHJvcGVydHlLZXlzID0gWydpZGxlJywgJ3N0YXJ0aW5nVXJsJywgJ2NsaWNrZWRMaW5rVXJsJywgJ3BvcFN0YXRlRXZlbnRVcmwnXTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgc3RhcnRpbmdVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgY2xpY2tlZExpbmtVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0YXJ0aW5nVXJsKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgdGhpcy5wb3BTdGF0ZUV2ZW50VXJsID0gZXZlbnQudXJsO1xuICAgIHRoaXMuaWdub3JlKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgaWYgKHRoaXMucG9wU3RhdGVFdmVudFVybCkge1xuICAgICAgdGhpcy5maW5hbGlzZVJvdXRpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBmaW5hbGlzZVJvdXRpbmcoKSB7XG4gICAgdGhpcy5yZXBhaXJCcm93c2VySGlzdG9yeUFuZFVybEFmdGVyR3VhcmRDYW5jZWxsYXRpb24odGhpcy5jbGlja2VkTGlua1VybCwgdGhpcy5zdGFydGluZ1VybCk7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5maW5pc2hSb3V0aW5nU2Vzc2lvbigpO1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0VXJsOiBVcmxTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFNuYXBzaG90PiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cblxuLy9cbi8vICMjIyBSb3V0ZXIgU3RhdGUgVHJhbnNpdGlvbjogbnVsbCAtPiBOYXZpZ2F0aW5nKHN0YXJ0aW5nVXJsOiAvYWN0aXZpdGllcy9kaWFsb2dzO2w9ZW4sIHVybEFmdGVyUmVkaXJlY3RzOiB1bmRlZmluZWQpXG4vLyAgIyMjICMjIyMjIyBSb3V0ZXIgRXZlbnQ6IE5hdmlnYXRpb25TdGFydFxuLy8gIE5hdmlnYXRpb25TdGFydChpZDogNiwgdXJsOiAnL2hvbWUnKVxuLy8gIE5hdmlnYXRpb25TdGFydCB7aWQ6IDYsIHVybDogXCIvaG9tZVwiLCBuYXZpZ2F0aW9uVHJpZ2dlcjogXCJpbXBlcmF0aXZlXCIsIHJlc3RvcmVkU3RhdGU6IG51bGx9XG4vLyBsb2dnZXIuanM6MzkgSWdub3Jpbmcgcm91dGVyIGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQgLT4gL2hvbWUgOjogTmF2aWdhdGluZyhzdGFydGluZ1VybDogL2FjdGl2aXRpZXMvZGlhbG9ncztsPWVuLCB1cmxBZnRlclJlZGlyZWN0czogdW5kZWZpbmVkKVxuLy8gICMjIyAjIyMjIyMgUm91dGVyIEV2ZW50OiBSb3V0ZXNSZWNvZ25pemVkXG4vLyAgUm91dGVzUmVjb2duaXplZChpZDogNiwgdXJsOiAnL2hvbWUnLCB1cmxBZnRlclJlZGlyZWN0czogJy9ob21lJywgc3RhdGU6IFJvdXRlKHVybDonJywgcGF0aDonJykgeyBSb3V0ZSh1cmw6J2hvbWUnLCBwYXRoOidob21lJykgfSApXG4vLyAgUm91dGVzUmVjb2duaXplZCB7aWQ6IDYsIHVybDogXCIvaG9tZVwiLCB1cmxBZnRlclJlZGlyZWN0czogXCIvaG9tZVwiLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdH1cbi8vICAjIyMjIyMgUm91dGVyIEV2ZW50OiBHdWFyZHNDaGVja1N0YXJ0XG4vLyAgR3VhcmRzQ2hlY2tTdGFydChpZDogNiwgdXJsOiAnL2hvbWUnLCB1cmxBZnRlclJlZGlyZWN0czogJy9ob21lJywgc3RhdGU6IFJvdXRlKHVybDonJywgcGF0aDonJykgeyBSb3V0ZSh1cmw6J2hvbWUnLCBwYXRoOidob21lJykgfSApXG4vLyAgR3VhcmRzQ2hlY2tTdGFydCB7aWQ6IDYsIHVybDogXCIvaG9tZVwiLCB1cmxBZnRlclJlZGlyZWN0czogXCIvaG9tZVwiLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdH1cbi8vIGxvZ2dlci5qczozOSBiYWNrIGJ1dHRvbiBwcmVzc2VkIGR1cmluZyBuYXZpZ2F0aW9uIHNlc3Npb24gaW50ZXJhY3Rpb24gcHJvbWlzZVxuLy8gbG9nZ2VyLmpzOjM5IGNhbmNlbGxpbmcgY3VycmVudCBuYXZpZ2F0aW9uIGFjdGl2aXR5Li5cbi8vICAgbG9nZ2VyLmpzOjM5ICMjIyBSb3V0ZXIgU3RhdGUgVHJhbnNpdGlvbjogTmF2aWdhdGluZyhzdGFydGluZ1VybDogL2FjdGl2aXRpZXMvZGlhbG9ncztsPWVuLCB1cmxBZnRlclJlZGlyZWN0czogdW5kZWZpbmVkKSAtPiBXYWl0VW50aWxMaW5rVHJpZ2dlcmVkTmF2aWdhdGlvbkludGVyYWN0aW9uQ2FuY2VsbGF0aW9uRXZlbnRzRmluaXNoKGlkbGU6IHVuZGVmaW5lZCwgc3RhcnRpbmdVcmw6IC9hY3Rpdml0aWVzL2RpYWxvZ3M7bD1lbiwgY2xpY2tlZExpbmtVcmw6IC9ob21lLCBmaXJzdENhbmNlbEV2ZW50VXJsOiB1bmRlZmluZWQsIGNsaWNrZWRMaW5rTWF0Y2hlZEJhY2tCdXR0b25Vcmw6IGZhbHNlLCBwb3BTdGF0ZUV2ZW50VXJsOiB1bmRlZmluZWQpXG4vLyAgIyMjIyMjIFJvdXRlciBFdmVudDogR3VhcmRzQ2hlY2tFbmRcbi8vICBHdWFyZHNDaGVja0VuZChpZDogNiwgdXJsOiAnL2hvbWUnLCB1cmxBZnRlclJlZGlyZWN0czogJy9ob21lJywgc3RhdGU6IFJvdXRlKHVybDonJywgcGF0aDonJykgeyBSb3V0ZSh1cmw6J2hvbWUnLCBwYXRoOidob21lJykgfSAsIHNob3VsZEFjdGl2YXRlOiBmYWxzZSlcbi8vICBHdWFyZHNDaGVja0VuZCB7aWQ6IDYsIHVybDogXCIvaG9tZVwiLCB1cmxBZnRlclJlZGlyZWN0czogXCIvaG9tZVwiLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgc2hvdWxkQWN0aXZhdGU6IGZhbHNlfVxuLy8gICMjIyMjIyBSb3V0ZXIgRXZlbnQ6IE5hdmlnYXRpb25DYW5jZWxcbi8vICBOYXZpZ2F0aW9uQ2FuY2VsKGlkOiA2LCB1cmw6ICcvaG9tZScpXG4vLyAgTmF2aWdhdGlvbkNhbmNlbCB7aWQ6IDYsIHVybDogXCIvaG9tZVwiLCByZWFzb246IFwiXCJ9XG4vLyBsb2dnZXIuanM6NTQgV2FpdFVudGlsTGlua1RyaWdnZXJlZE5hdmlnYXRpb25JbnRlcmFjdGlvbkNhbmNlbGxhdGlvbkV2ZW50c0ZpbmlzaC5vblJvdXRlckNhbmNlbGxlZFxuLy8gbG9nZ2VyLmpzOjE5IGFyZ3MgTmF2aWdhdGlvbkNhbmNlbCB7aWQ6IDYsIHVybDogXCIvaG9tZVwiLCByZWFzb246IFwiXCJ9XG4vLyBsb2dnZXIuanM6MzkgSWdub3Jpbmcgcm91dGVyIGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsIC0+IC9ob21lIDo6IFdhaXRVbnRpbExpbmtUcmlnZ2VyZWROYXZpZ2F0aW9uSW50ZXJhY3Rpb25DYW5jZWxsYXRpb25FdmVudHNGaW5pc2goaWRsZTogdW5kZWZpbmVkLCBzdGFydGluZ1VybDogL2FjdGl2aXRpZXMvZGlhbG9ncztsPWVuLCBjbGlja2VkTGlua1VybDogL2hvbWUsIGZpcnN0Q2FuY2VsRXZlbnRVcmw6IC9ob21lLCBjbGlja2VkTGlua01hdGNoZWRCYWNrQnV0dG9uVXJsOiB0cnVlLCBwb3BTdGF0ZUV2ZW50VXJsOiB1bmRlZmluZWQpXG4vLyBsb2dnZXIuanM6MjggPC0tIFdhaXRVbnRpbExpbmtUcmlnZ2VyZWROYXZpZ2F0aW9uSW50ZXJhY3Rpb25DYW5jZWxsYXRpb25FdmVudHNGaW5pc2gub25Sb3V0ZXJDYW5jZWxsZWQgdW5kZWZpbmVkXG4vLyBsb2dnZXIuanM6NTQgV2FpdFVudGlsTGlua1RyaWdnZXJlZE5hdmlnYXRpb25JbnRlcmFjdGlvbkNhbmNlbGxhdGlvbkV2ZW50c0ZpbmlzaC5vblJvdXRlckVuZFxuLy8gbG9nZ2VyLmpzOjE5IGFyZ3MgTmF2aWdhdGlvbkVuZCB7aWQ6IC0xLCB1cmw6IFwiXCIsIHVybEFmdGVyUmVkaXJlY3RzOiBcIlwifVxuLy8gbG9nZ2VyLmpzOjU0IFdhaXRVbnRpbExpbmtUcmlnZ2VyZWROYXZpZ2F0aW9uSW50ZXJhY3Rpb25DYW5jZWxsYXRpb25FdmVudHNGaW5pc2guZmluYWxpc2VSb3V0aW5nXG4vLyBsb2dnZXIuanM6MzkgV09SSy1BUk9VTkQ6IFVwZGF0aW5nIGJyb3dzZXIgbG9jYXRpb24gYWZ0ZXIgcG9wIHN0YXRlIC0gc2VlIGFuZ3VsYXIgaXNzdWUgIzEzNTg2XG4vLyBuYXZpZ2F0aW9uLXNlc3Npb24udHM6MTI5IHJlcGxhY2luZyAvYWN0aXZpdGllcy9kaWFsb2dzO2w9ZW4gd2l0aCAvaG9tZVxuLy8gICBuYXZpZ2F0aW9uLXNlc3Npb24udHM6MTMxIHB1c2hpbmcgL2FjdGl2aXRpZXMvZGlhbG9ncztsPWVuIGJhY2sgb250byB0aGUgaGlzdG9yeS5cbi8vICA/Pz8/PyBwbGFjZS1yb3V0ZXIudHM6MjgxICMjIyBSb3V0ZXIgU2Vzc2lvbiBGaW5pc2hlZCAod2FzIFdhaXRVbnRpbExpbmtUcmlnZ2VyZWROYXZpZ2F0aW9uSW50ZXJhY3Rpb25DYW5jZWxsYXRpb25FdmVudHNGaW5pc2goaWRsZTogdW5kZWZpbmVkLCBzdGFydGluZ1VybDogL2FjdGl2aXRpZXMvZGlhbG9ncztsPWVuLCBjbGlja2VkTGlua1VybDogL2hvbWUsIGZpcnN0Q2FuY2VsRXZlbnRVcmw6IC9ob21lLCBjbGlja2VkTGlua01hdGNoZWRCYWNrQnV0dG9uVXJsOiB0cnVlLCBwb3BTdGF0ZUV2ZW50VXJsOiB1bmRlZmluZWQpKVxuLy8gbG9nZ2VyLmpzOjI4IDwtLSBXYWl0VW50aWxMaW5rVHJpZ2dlcmVkTmF2aWdhdGlvbkludGVyYWN0aW9uQ2FuY2VsbGF0aW9uRXZlbnRzRmluaXNoLmZpbmFsaXNlUm91dGluZyB1bmRlZmluZWRcbi8vIGxvZ2dlci5qczoyOCA8LS0gV2FpdFVudGlsTGlua1RyaWdnZXJlZE5hdmlnYXRpb25JbnRlcmFjdGlvbkNhbmNlbGxhdGlvbkV2ZW50c0ZpbmlzaC5vblJvdXRlckVuZCB1bmRlZmluZWRcbi8vICAjIyMjIyMgUm91dGVyIEV2ZW50OiBOYXZpZ2F0aW9uU3RhcnRcbi8vICBOYXZpZ2F0aW9uU3RhcnQoaWQ6IDcsIHVybDogJy9ob21lJylcbi8vICBOYXZpZ2F0aW9uU3RhcnQge2lkOiA3LCB1cmw6IFwiL2hvbWVcIiwgbmF2aWdhdGlvblRyaWdnZXI6IFwicG9wc3RhdGVcIiwgcmVzdG9yZWRTdGF0ZToge+KApn19XG4vLyBsb2dnZXIuanM6MzkgIyMjIFJvdXRlciBTdGF0ZSBUcmFuc2l0aW9uOiBudWxsIC0+IFBvcFN0YXRlTmF2aWdhdGlvbihzdGFydGluZ1VybDogL2FjdGl2aXRpZXMvZGlhbG9ncztsPWVuLCBwb3BwZWRIaXN0b3J5VXJsOiAvaG9tZSlcbi8vICAjIyMjIyMgUm91dGVyIEV2ZW50OiBSb3V0ZXNSZWNvZ25pemVkXG4vLyAgUm91dGVzUmVjb2duaXplZChpZDogNywgdXJsOiAnL2hvbWUnLCB1cmxBZnRlclJlZGlyZWN0czogJy9ob21lJywgc3RhdGU6IFJvdXRlKHVybDonJywgcGF0aDonJykgeyBSb3V0ZSh1cmw6J2hvbWUnLCBwYXRoOidob21lJykgfSApXG4vLyAgUm91dGVzUmVjb2duaXplZCB7aWQ6IDcsIHVybDogXCIvaG9tZVwiLCB1cmxBZnRlclJlZGlyZWN0czogXCIvaG9tZVwiLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdH1cbi8vICAjIyMjIyMgUm91dGVyIEV2ZW50OiBHdWFyZHNDaGVja1N0YXJ0XG4vLyAgR3VhcmRzQ2hlY2tTdGFydChpZDogNywgdXJsOiAnL2hvbWUnLCB1cmxBZnRlclJlZGlyZWN0czogJy9ob21lJywgc3RhdGU6IFJvdXRlKHVybDonJywgcGF0aDonJykgeyBSb3V0ZSh1cmw6J2hvbWUnLCBwYXRoOidob21lJykgfSApXG4iXX0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { EventCleanUpSession } from './event-clean-up-session';
|
|
2
|
+
/**
|
|
3
|
+
* This state handles the scenario where a pop state triggered and interaction and the user clickeb back a second time to cancel it.
|
|
4
|
+
* The sequence of routing events/state transitions is as follows.
|
|
5
|
+
* -> Idle -> PopStateTransition (poppedHistoryUrl == page to go to, startingUrl = page to stay on )
|
|
6
|
+
* -> confirm dialog shown.
|
|
7
|
+
* -> click back
|
|
8
|
+
* -> PopStateTransition -> CancelledDuringBackButtonNavigationInteraction(trigger url is the page before the popped history url)
|
|
9
|
+
* -> NavigationCancel (for the previous back)
|
|
10
|
+
* -> PopState
|
|
11
|
+
* -> NavigationCancel
|
|
12
|
+
*/
|
|
13
|
+
export class WaitUntilPopStateDuringCanDeactivateInteractionFinishes extends EventCleanUpSession {
|
|
14
|
+
constructor(context, startingUrl, locationChangeTriggerUrl, poppedHistoryUrl) {
|
|
15
|
+
super(context, startingUrl);
|
|
16
|
+
this.locationChangeTriggerUrl = locationChangeTriggerUrl;
|
|
17
|
+
this.poppedHistoryUrl = poppedHistoryUrl;
|
|
18
|
+
this.isPopState = false;
|
|
19
|
+
this.firstCancelHandled = false;
|
|
20
|
+
this.popStateHandled = false;
|
|
21
|
+
this.debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];
|
|
22
|
+
}
|
|
23
|
+
// @Trace()
|
|
24
|
+
onRouterStarted(event) {
|
|
25
|
+
this.ignore(event);
|
|
26
|
+
}
|
|
27
|
+
// @Trace()
|
|
28
|
+
onRouterCancelled(event) {
|
|
29
|
+
if (!this.firstCancelHandled) {
|
|
30
|
+
this.firstCancelHandled = true;
|
|
31
|
+
this.parentPageUrl = event.url;
|
|
32
|
+
this.ignore(event);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
if (this.popStateHandled) {
|
|
36
|
+
const grandParentPageUrl = event.url;
|
|
37
|
+
this.repairBrowserHistoryAndUrlAfterGuardCancellation(grandParentPageUrl, this.parentPageUrl);
|
|
38
|
+
// we've had one more back click than normal so we need to add our initial url back in as well.
|
|
39
|
+
this.resetBrowserLocation(this.startingUrl, { replaceCurrent: false });
|
|
40
|
+
return this.context.finishRoutingSession();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// @Trace()
|
|
45
|
+
onRouterEnd(event) {
|
|
46
|
+
this.ignore(event);
|
|
47
|
+
}
|
|
48
|
+
// @Trace()
|
|
49
|
+
onRouterError(event) {
|
|
50
|
+
void this.ignore(event);
|
|
51
|
+
}
|
|
52
|
+
// @Trace()
|
|
53
|
+
onPopState(event) {
|
|
54
|
+
this.popStateHandled = true;
|
|
55
|
+
this.popStateEventUrl = event.url;
|
|
56
|
+
this.ignore(event);
|
|
57
|
+
}
|
|
58
|
+
async canDeactivatePlace(component, currentUrl, nextUrl) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC11bnRpbC1wb3BzdGF0ZS1kdXJpbmctY2FuLWRlYWN0aXZhdGUtdHJhbnNpdGlvbi1maW5pc2hlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL25hdmlnYXRpb24vc2Vzc2lvbi9ldmVudC1jbGVhbnVwL3dhaXQtdW50aWwtcG9wc3RhdGUtZHVyaW5nLWNhbi1kZWFjdGl2YXRlLXRyYW5zaXRpb24tZmluaXNoZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyx1REFBd0QsU0FBUSxtQkFBbUI7SUFTOUYsWUFBWSxPQUEwQixFQUMxQixXQUFtQixFQUNWLHdCQUFnQyxFQUNoQyxnQkFBd0I7UUFDM0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUZULDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBUTtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFWcEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsc0JBQWlCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFRekosQ0FBQztJQUVELFdBQVc7SUFDWCxlQUFlLENBQUMsS0FBc0I7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztJQUNYLGlCQUFpQixDQUFDLEtBQXVCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzlGLCtGQUErRjtnQkFDL0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxjQUFjLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztnQkFDckUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUM7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO0lBQ1gsV0FBVyxDQUFDLEtBQW9CO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7SUFDWCxhQUFhLENBQUMsS0FBc0I7UUFDbEMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO0lBQ1gsVUFBVSxDQUFDLEtBQXNCO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUF5QixFQUFFLFVBQXVCLEVBQUUsT0FBb0I7UUFDL0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2dnZXIsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuLi8uLi8uLi91cmwtc25hcHNob3QnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbnRleHQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgRXZlbnRDbGVhblVwU2Vzc2lvbiB9IGZyb20gJy4vZXZlbnQtY2xlYW4tdXAtc2Vzc2lvbic7XG5cbi8qKlxuICogVGhpcyBzdGF0ZSBoYW5kbGVzIHRoZSBzY2VuYXJpbyB3aGVyZSBhIHBvcCBzdGF0ZSB0cmlnZ2VyZWQgYW5kIGludGVyYWN0aW9uIGFuZCB0aGUgdXNlciBjbGlja2ViIGJhY2sgYSBzZWNvbmQgdGltZSB0byBjYW5jZWwgaXQuXG4gKiBUaGUgc2VxdWVuY2Ugb2Ygcm91dGluZyBldmVudHMvc3RhdGUgdHJhbnNpdGlvbnMgaXMgYXMgZm9sbG93cy5cbiAqIC0+IElkbGUgLT4gUG9wU3RhdGVUcmFuc2l0aW9uIChwb3BwZWRIaXN0b3J5VXJsID09IHBhZ2UgdG8gZ28gdG8sIHN0YXJ0aW5nVXJsID0gcGFnZSB0byBzdGF5IG9uIClcbiAqIC0+IGNvbmZpcm0gZGlhbG9nIHNob3duLlxuICogLT4gY2xpY2sgYmFja1xuICogLT4gUG9wU3RhdGVUcmFuc2l0aW9uIC0+IENhbmNlbGxlZER1cmluZ0JhY2tCdXR0b25OYXZpZ2F0aW9uSW50ZXJhY3Rpb24odHJpZ2dlciB1cmwgaXMgdGhlIHBhZ2UgYmVmb3JlIHRoZSBwb3BwZWQgaGlzdG9yeSB1cmwpXG4gKiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIChmb3IgdGhlIHByZXZpb3VzIGJhY2spXG4gKiAtPiBQb3BTdGF0ZVxuICogLT4gTmF2aWdhdGlvbkNhbmNlbFxuICovXG5leHBvcnQgY2xhc3MgV2FpdFVudGlsUG9wU3RhdGVEdXJpbmdDYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25GaW5pc2hlcyBleHRlbmRzIEV2ZW50Q2xlYW5VcFNlc3Npb24ge1xuXG4gIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcbiAgZmlyc3RDYW5jZWxIYW5kbGVkID0gZmFsc2U7XG4gIHBvcFN0YXRlSGFuZGxlZCA9IGZhbHNlO1xuICBwb3BTdGF0ZUV2ZW50VXJsOiBzdHJpbmc7XG4gIGRlYnVnUHJvcGVydHlLZXlzID0gWydpZGxlJywgJ3N0YXJ0aW5nVXJsJywgJ3BvcHBlZEhpc3RvcnlVcmwnLCAnbG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsJywgJ3BvcFN0YXRlRXZlbnRVcmwnLCAnZmlyc3RDYW5jZWxIYW5kbGVkJywgJ3BvcFN0YXRlSGFuZGxlZCddO1xuICBwcml2YXRlIHBhcmVudFBhZ2VVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgc3RhcnRpbmdVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgbG9jYXRpb25DaGFuZ2VUcmlnZ2VyVXJsOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IHBvcHBlZEhpc3RvcnlVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0YXJ0aW5nVXJsKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmlyc3RDYW5jZWxIYW5kbGVkKSB7XG4gICAgICB0aGlzLmZpcnN0Q2FuY2VsSGFuZGxlZCA9IHRydWU7XG4gICAgICB0aGlzLnBhcmVudFBhZ2VVcmwgPSBldmVudC51cmw7XG4gICAgICB0aGlzLmlnbm9yZShldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnBvcFN0YXRlSGFuZGxlZCkge1xuICAgICAgICBjb25zdCBncmFuZFBhcmVudFBhZ2VVcmwgPSBldmVudC51cmw7XG4gICAgICAgIHRoaXMucmVwYWlyQnJvd3Nlckhpc3RvcnlBbmRVcmxBZnRlckd1YXJkQ2FuY2VsbGF0aW9uKGdyYW5kUGFyZW50UGFnZVVybCwgdGhpcy5wYXJlbnRQYWdlVXJsKTtcbiAgICAgICAgLy8gd2UndmUgaGFkIG9uZSBtb3JlIGJhY2sgY2xpY2sgdGhhbiBub3JtYWwgc28gd2UgbmVlZCB0byBhZGQgb3VyIGluaXRpYWwgdXJsIGJhY2sgaW4gYXMgd2VsbC5cbiAgICAgICAgdGhpcy5yZXNldEJyb3dzZXJMb2NhdGlvbih0aGlzLnN0YXJ0aW5nVXJsLCB7cmVwbGFjZUN1cnJlbnQ6IGZhbHNlfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuZmluaXNoUm91dGluZ1Nlc3Npb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcik6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5pZ25vcmUoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgdGhpcy5wb3BTdGF0ZUhhbmRsZWQgPSB0cnVlO1xuICAgIHRoaXMucG9wU3RhdGVFdmVudFVybCA9IGV2ZW50LnVybDtcbiAgICB0aGlzLmlnbm9yZShldmVudCk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlUGxhY2UoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRVcmw6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { lang } from '@coolon/typescript-utilities';
|
|
2
|
-
import { isEqual } from 'lodash
|
|
2
|
+
import { isEqual } from 'lodash';
|
|
3
3
|
import { NavigationSession } from '../navigation-session';
|
|
4
4
|
import { RemoveLastInteractionFromUrlNavigationSession } from './remove-last-interaction-from-url-navigation-session';
|
|
5
5
|
export class SynchroniseInteractionContextIdsWithRoute extends NavigationSession {
|
|
@@ -82,4 +82,4 @@ export class SynchroniseInteractionContextIdsWithRoute extends NavigationSession
|
|
|
82
82
|
lang.methodNotSupported();
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvc3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkNBQTZDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUV0SCxNQUFNLE9BQU8seUNBQTBDLFNBQVEsaUJBQWlCO0lBSTlFLFlBQVksT0FBMEIsRUFBRSxXQUFtQixFQUFXLHNCQUErQjtRQUNuRyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRHdDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztRQUY1RixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBSTVCLENBQUM7SUFFRCxZQUFZO1FBQ1YsK0JBQStCO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO0lBQ1gsV0FBVyxDQUFDLEtBQW9CO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztJQUNYLGlCQUFpQixDQUFDLEtBQXVCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FB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Q29udGVudCI6WyJpbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGxhbmcgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL25hdmlnYXRpb24tY29udGV4dCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2Vzc2lvbiB9IGZyb20gJy4uL25hdmlnYXRpb24tc2Vzc2lvbic7XG5pbXBvcnQgeyBSZW1vdmVMYXN0SW50ZXJhY3Rpb25Gcm9tVXJsTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuL3JlbW92ZS1sYXN0LWludGVyYWN0aW9uLWZyb20tdXJsLW5hdmlnYXRpb24tc2Vzc2lvbic7XG5cbmV4cG9ydCBjbGFzcyBTeW5jaHJvbmlzZUludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZSBleHRlbmRzIE5hdmlnYXRpb25TZXNzaW9uIHtcblxuICByZWFkb25seSBpc1BvcFN0YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogTmF2aWdhdGlvbkNvbnRleHQsIHN0YXJ0aW5nVXJsOiBzdHJpbmcsIHJlYWRvbmx5IHdhc1RyaWdnZXJlZEJ5UG9wU3RhdGU6IGJvb2xlYW4pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdGFydGluZ1VybCk7XG4gIH1cblxuICBub3RpZnlBY3RpdmUoKSB7XG4gICAgLy8gVE9ETzogRG8gSSBzdGlsbCBuZWVkIHRoaXM/P1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jSW50ZXJhY3Rpb25JZHNXaXRoUm91dGVyKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5maW5pc2hSb3V0aW5nU2Vzc2lvbigpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQuZmluaXNoUm91dGluZ1Nlc3Npb24oKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHN5bmNJbnRlcmFjdGlvbklkc1dpdGhSb3V0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudElkcyA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlQWRhcHRlci5nZXRBY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMoKTtcbiAgICBjb25zdCBwcmV2aW91c0lkcyA9IHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb25VcmxTbmFwc2hvdCgpLmdldEludGVyYWN0aW9uSWRzKCk7XG4gICAgLy8gY29uc29sZS5sb2coYC0tLT4gc3luY2hyb25pc2VJbnRlcmFjdGlvbklkc2AsIHsgaXM6IGN1cnJlbnRJZHMuam9pbignLCcpLCB3YXM6IHByZXZpb3VzSWRzLmpvaW4oJywnKSB9KTtcbiAgICBpZiAoaXNFcXVhbChjdXJyZW50SWRzLCBwcmV2aW91c0lkcykpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCcjIyMgQWN0aXZpdHkgY29udGV4dCBpZHMgd2VyZSB0aGUgc2FtZSwgc2tpcHBpbmcnKTtcbiAgICAgIHRoaXMuY29udGV4dC5maW5pc2hSb3V0aW5nU2Vzc2lvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudElkcy5sZW5ndGggPiBwcmV2aW91c0lkcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgaXNGaXJzdEFjdGl2aXR5ID0gY3VycmVudElkcy5sZW5ndGggPiBwcmV2aW91c0lkcy5sZW5ndGggJiYgcHJldmlvdXNJZHMubGVuZ3RoIDwgMTtcbiAgICAgICAgdGhpcy5hZGRBY3Rpdml0eUNvbnRleHRUb1JvdXRlKGN1cnJlbnRJZHMsIGlzRmlyc3RBY3Rpdml0eSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUFjdGl2aXR5Q29udGV4dEZyb21Sb3V0ZShjdXJyZW50SWRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhZGRBY3Rpdml0eUNvbnRleHRUb1JvdXRlKGFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkczogc3RyaW5nW10sIGlzRmlyc3Q6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCB1cmxTbmFwc2hvdCA9IHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyU25hcHNob3QoKS51cGRhdGVJbnRlcmFjdGlvbklkcyhhY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMpO1xuICAgIHRoaXMuY29udGV4dC5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LCB7XG4gICAgICByZXBsYWNlVXJsOiAhaXNGaXJzdFxuICAgIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGlmICghdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRMb2NhdGlvblVybFNuYXBzaG90KCkuaGFzSW50ZXJhY3Rpb25JZHMoYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzKSkge1xuICAgICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgRXhwZWN0ZWQgdXJsIHRvIGJlICR7dXJsU25hcHNob3QudXJsfSBidXQgd2FzICR7dGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRMb2NhdGlvblVybCgpfWApO1xuICAgICAgICAvLyB0aGlzLnVybFNlcnZpY2UucmVzZXRCcm93c2VyTG9jYXRpb24odXJsU25hcHNob3QudXJsLCB7cmVwbGFjZUN1cnJlbnQ6ICFpc0ZpcnN0fSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgLy8gQFRyYWNlKClcbiAgcmVtb3ZlQWN0aXZpdHlDb250ZXh0RnJvbVJvdXRlKGFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJTbmFwc2hvdCgpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkKTtcbiAgICBjb25zdCBpc1JlbW92aW5nTGFzdEFjdGl2aXR5ID0gYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWQubGVuZ3RoIDwgMTtcbiAgICBpZiAoaXNSZW1vdmluZ0xhc3RBY3Rpdml0eSkge1xuICAgICAgaWYgKHRoaXMud2FzVHJpZ2dlcmVkQnlQb3BTdGF0ZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncmVtb3ZhbCB3YXMgdHJpZ2dlcmVkIGJ5IHBvcCBzdGF0ZSwgbm90aGluZyB0byBkby4nKTtcbiAgICAgICAgLy8gICBub29wLiAgT3VyIHVybCB3aWxsIGJlIGJhY2sgdG8gdGhlIG5vbiBpbnRlcmFjdGlvbiB2ZXJzaW9uIG5vdyBzbyB3ZSBkb250JyBuZWVkIHRvIGRvIGFueXRoaW5nLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm93IHdlIGp1c3QgcG9wIG91ciBpbnRlcmFjdGlvbiBpZCdzIGZyb20gdGhlIGJyb3dzZXIgaGlzdG9yeS5cbiAgICAgICAgLy8gY29uc29sZS5sb2coYFJlbW92YWwgb2YgdGhlIGxhc3QgYWN0aXZpdHkgd2Fzbid0IHRyaWdnZXJlZCBieSBwb3Agc3RhdGUgc28gd2UgaGF2ZSB0byB0cmlnZ2VyIG9uZSB0byBjbGVhbiB0aGUgaGlzdG9yeWApO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IFJlbW92ZUxhc3RJbnRlcmFjdGlvbkZyb21VcmxOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLmNvbnRleHQsIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCkpO1xuICAgICAgICB0aGlzLmNvbnRleHQudHJhbnNpdGlvblRvKHNlc3Npb24pO1xuICAgICAgICB0aGlzLnVybFNlcnZpY2UuYmFjaygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3ZSd2ZSByZW1vdmVkIGFuIGludGVyYWN0aW9uLCBidXQgd2Ugc3RpbGwgaGF2ZSByZW1haW5pbmcgYWN0aXZpdGllcyBzbyB3ZVxuICAgICAgLy8gdXBkYXRlIHRoZSB1cmwgaW4gcGxhY2UgaWYgaXQgd2Fzbid0IGEgcG9wIHN0YXRlLiBJZiBpdCB3YXMgYSBwb3Agc3RhdGUgd2UgbmVlZFxuICAgICAgLy8gdG8gIHB1c2ggaXQgYmFjayB1cC5cbiAgICAgIC8vIHRoaXMudXJsU2VydmljZS5yZXNldEJyb3dzZXJMb2NhdGlvbih1cmxTbmFwc2hvdC51cmwsIHsgcmVwbGFjZUN1cnJlbnQ6ICF0aGlzLndhc1RyaWdnZXJlZEJ5UG9wU3RhdGUgfSk7XG4gICAgICB0aGlzLmNvbnRleHQubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCwgeyByZXBsYWNlVXJsOiAhdGhpcy53YXNUcmlnZ2VyZWRCeVBvcFN0YXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNhbkRlYWN0aXZhdGVDYW5jZWxsZWRFdmVudFNjZW5hcmlvKG5ld1VybDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGFuZy5tZXRob2ROb3RTdXBwb3J0ZWQoKTtcbiAgfVxuXG59XG4iXX0=
|