@coolon/angular-ui-powerups 12.4.9 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/activities/activities.scss +1 -1
- package/assets/cards.scss +1 -1
- package/assets/form.scss +1 -1
- package/assets/interaction/editor/inline-string-editor.scss +1 -1
- package/assets/interaction.scss +1 -1
- package/assets/mixins.scss +2 -2
- package/assets/pills.scss +1 -1
- package/assets/styles.scss +1 -1
- package/{esm2015/lib/angular-ui-powerups.module.js → esm2020/lib/angular-ui-powerups.module.mjs} +5 -5
- package/esm2020/lib/components/busy-overlay/busy-overlay.component.mjs +32 -0
- package/{esm2015/lib/components/cards/abstract-card-container.component.js → esm2020/lib/components/cards/abstract-card-container.component.mjs} +4 -4
- package/esm2020/lib/components/cards/card-container/card-container.component.mjs +129 -0
- package/esm2020/lib/components/cards/card-stack/card-stack.component.mjs +81 -0
- package/esm2020/lib/components/commands/command/command.component.mjs +96 -0
- package/{esm2015/lib/components/commands/command-face/command-face.component.js → esm2020/lib/components/commands/command-face/command-face.component.mjs} +5 -10
- package/esm2020/lib/components/commands/command-face.mjs +112 -0
- package/{esm2015/lib/components/commands/flex.component.js → esm2020/lib/components/commands/flex.component.mjs} +4 -4
- package/esm2020/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +84 -0
- package/esm2020/lib/components/commands/group/popup-menu/more-menu.component.mjs +57 -0
- package/esm2020/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +101 -0
- package/esm2020/lib/components/commands/group/popup-menu/popup-menu.component.mjs +53 -0
- package/esm2020/lib/components/commands/group/tool-bar/tool-bar.component.mjs +31 -0
- package/{esm2015/lib/components/commands/separator.component.js → esm2020/lib/components/commands/separator.component.mjs} +5 -5
- package/{esm2015/lib/components/components.module.js → esm2020/lib/components/components.module.mjs} +6 -6
- package/{esm2015/lib/components/disposable-component.js → esm2020/lib/components/disposable-component.mjs} +4 -4
- package/{esm2015/lib/components/empty-state/empty-state.component.js → esm2020/lib/components/empty-state/empty-state.component.mjs} +6 -10
- package/{esm2015/lib/components/focus-container/focus-container.component.js → esm2020/lib/components/focus-container/focus-container.component.mjs} +6 -11
- package/{esm2015/lib/components/focusable.component.js → esm2020/lib/components/focusable.component.mjs} +6 -8
- package/{esm2015/lib/components/forms/abstract-input.component.js → esm2020/lib/components/forms/abstract-input.component.mjs} +4 -4
- package/{esm2015/lib/components/forms/abstract-list-input.component.js → esm2020/lib/components/forms/abstract-list-input.component.mjs} +4 -4
- package/{esm2015/lib/components/forms/abstract-value-input.component.js → esm2020/lib/components/forms/abstract-value-input.component.mjs} +4 -4
- package/esm2020/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +72 -0
- package/esm2020/lib/components/forms/checkbox-input/checkbox-input.component.mjs +29 -0
- package/esm2020/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +52 -0
- package/esm2020/lib/components/forms/number-input/number-input.component.mjs +33 -0
- package/esm2020/lib/components/forms/password-input/password-input.component.mjs +24 -0
- package/esm2020/lib/components/forms/select-input/select-input.component.mjs +57 -0
- package/esm2020/lib/components/forms/string-input/string-input.component.mjs +48 -0
- package/esm2020/lib/components/forms/text-input/text-input.component.mjs +30 -0
- package/esm2020/lib/components/icon/icon.component.mjs +52 -0
- package/esm2020/lib/components/labelled-value/labelled-value.component.mjs +20 -0
- package/esm2020/lib/components/loading-container/loading-container.component.mjs +50 -0
- package/esm2020/lib/components/noop/noop.component.mjs +13 -0
- package/{esm2015/lib/components/resize-aware.component.js → esm2020/lib/components/resize-aware.component.mjs} +4 -4
- package/esm2020/lib/components/scroll-container/scroll-container.component.mjs +15 -0
- package/esm2020/lib/components/section-header/section-header.component.mjs +36 -0
- package/{esm2015/lib/components/switch-case/switch-case.component.js → esm2020/lib/components/switch-case/switch-case.component.mjs} +11 -15
- package/esm2020/lib/components/tables/abstract-table-model.mjs +185 -0
- package/esm2020/lib/components/tables/abstract-table.component.mjs +168 -0
- package/{esm2015/lib/components/tables/table/cell-portal-ref.js → esm2020/lib/components/tables/table/cell-portal-ref.mjs} +2 -2
- package/esm2020/lib/components/tables/table/column-model.mjs +392 -0
- package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +35 -0
- package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +22 -0
- package/esm2020/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.mjs +15 -0
- package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +55 -0
- package/esm2020/lib/components/tables/table/paginator/paginator.component.mjs +40 -0
- package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +26 -0
- package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +31 -0
- package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +93 -0
- package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +32 -0
- package/{esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js → esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs} +5 -5
- package/esm2020/lib/components/tables/table/table.component.mjs +95 -0
- package/esm2020/lib/components/tables/tree-table/decorated-tree-node.mjs +171 -0
- package/esm2020/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +72 -0
- package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +91 -0
- package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +95 -0
- package/{esm2015/lib/components/text/markdown/markdown.component.js → esm2020/lib/components/text/markdown/markdown.component.mjs} +5 -9
- package/{esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js → esm2020/lib/components/vertical-focus-container/vertical-focus-container.component.mjs} +6 -11
- package/{esm2015/lib/directives/command.directive.js → esm2020/lib/directives/command.directive.mjs} +4 -4
- package/{esm2015/lib/directives/directives.module.js → esm2020/lib/directives/directives.module.mjs} +5 -5
- package/{esm2015/lib/directives/focus-binding-factory.js → esm2020/lib/directives/focus-binding-factory.mjs} +4 -4
- package/{esm2015/lib/directives/focus-binding.directive.js → esm2020/lib/directives/focus-binding.directive.mjs} +4 -4
- package/{esm2015/lib/directives/highlight-text-model.directive.js → esm2020/lib/directives/highlight-text-model.directive.mjs} +4 -4
- package/{esm2015/lib/directives/highlight.pipe.js → esm2020/lib/directives/highlight.pipe.mjs} +6 -7
- package/esm2020/lib/interaction/activity.mjs +87 -0
- package/{esm2015/lib/interaction/components/abstract-confirm-dialog.component.js → esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs} +4 -4
- package/{esm2015/lib/interaction/components/abstract-dialog.component.js → esm2020/lib/interaction/components/abstract-dialog.component.mjs} +4 -4
- package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +109 -0
- package/esm2020/lib/interaction/components/activity-body/activity-body.component.mjs +23 -0
- package/esm2020/lib/interaction/components/activity-container/activity-container.component.mjs +205 -0
- package/{esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js → esm2020/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs} +5 -9
- package/esm2020/lib/interaction/components/activity-title/activity-title.component.mjs +41 -0
- package/{esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js → esm2020/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.mjs} +5 -6
- package/esm2020/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +24 -0
- package/esm2020/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +22 -0
- package/esm2020/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +30 -0
- package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +91 -0
- package/esm2020/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +73 -0
- package/esm2020/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +30 -0
- package/esm2020/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +30 -0
- package/esm2020/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +34 -0
- package/esm2020/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +29 -0
- package/esm2020/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +173 -0
- package/esm2020/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +91 -0
- package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +103 -0
- package/{esm2015/lib/interaction/components/input-activities/select-input-activity.js → esm2020/lib/interaction/components/input-activities/select-input-activity.mjs} +6 -8
- package/{esm2015/lib/interaction/components/input-activities/string-input-activity.js → esm2020/lib/interaction/components/input-activities/string-input-activity.mjs} +4 -4
- package/{esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js → esm2020/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.mjs} +5 -9
- package/{esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js → esm2020/lib/interaction/directives/interaction-context-trigger-for.directive.mjs} +4 -4
- package/{esm2015/lib/interaction/interaction.module.js → esm2020/lib/interaction/interaction.module.mjs} +5 -11
- package/{esm2015/lib/interaction/services/interaction.service.js → esm2020/lib/interaction/services/interaction.service.mjs} +4 -4
- package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +47 -0
- package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +61 -0
- package/{esm2015/lib/place/components/abstract-place-navigation.component.js → esm2020/lib/place/components/abstract-place-navigation.component.mjs} +4 -4
- package/esm2020/lib/place/components/list-place-nav/list-place-nav.component.mjs +23 -0
- package/esm2020/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +13 -0
- package/esm2020/lib/place/components/place-outlet/place-outlet.component.mjs +256 -0
- package/esm2020/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +93 -0
- package/esm2020/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +22 -0
- package/esm2020/lib/place/guards/noop-auth-guard.service.mjs +18 -0
- package/esm2020/lib/place/guards/place.guard.mjs +109 -0
- package/esm2020/lib/place/navigation/place-component-deactivation-handler.mjs +83 -0
- package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +43 -0
- package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +152 -0
- package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +62 -0
- package/esm2020/lib/place/navigation/session/navigation-session.mjs +157 -0
- package/esm2020/lib/place/place-component.mjs +198 -0
- package/esm2020/lib/place/place-history.mjs +138 -0
- package/esm2020/lib/place/place-router.mjs +331 -0
- package/esm2020/lib/place/place.decorator.mjs +18 -0
- package/{esm2015/lib/place/place.module.js → esm2020/lib/place/place.module.mjs} +5 -6
- package/esm2020/lib/place/route/parameter-definition.mjs +123 -0
- package/esm2020/lib/place/route/visit-sanitiser.mjs +41 -0
- package/{esm2015/lib/place/url-service.js → esm2020/lib/place/url-service.mjs} +4 -4
- package/esm2020/lib/place/visit.mjs +69 -0
- package/{esm2015/lib/services/markdown/markdown.service.js → esm2020/lib/services/markdown/markdown.service.mjs} +5 -5
- package/esm2020/lib/services/markdown/pill-plugin.mjs +37 -0
- package/esm2020/lib/services/visibility-service.mjs +79 -0
- package/fesm2015/{coolon-angular-ui-powerups.js → coolon-angular-ui-powerups.mjs} +1220 -1430
- package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -0
- package/fesm2020/coolon-angular-ui-powerups.mjs +9895 -0
- package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -0
- package/lib/services/visibility-service.d.ts +5 -1
- package/package.json +37 -25
- package/schematics/activity/index.js +3 -3
- package/schematics/activity/index.js.map +1 -1
- package/schematics/aup-i18n/index.js +7 -7
- package/schematics/aup-i18n/index.js.map +1 -1
- package/schematics/bootstrap-app/index.js +9 -9
- package/schematics/bootstrap-app/index.js.map +1 -1
- package/schematics/bootstrap-app/templates/src/styles.scss.template +2 -2
- package/schematics/component/index.js +3 -3
- package/schematics/component/index.js.map +1 -1
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/place-add/index.js +3 -3
- package/schematics/place-add/index.js.map +1 -1
- package/schematics/place-bootstrap/index.js +1 -1
- package/schematics/place-bootstrap/index.js.map +1 -1
- package/schematics/place-routes/place-builder.js +6 -6
- package/schematics/place-routes/place-builder.js.map +1 -1
- package/schematics/place-routes/place-class-scanner.js +3 -3
- package/schematics/place-routes/place-class-scanner.js.map +1 -1
- package/schematics/place-routes/place-def.js +4 -4
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/utils/decorators/decorated-class.js +1 -1
- package/schematics/utils/decorators/decorated-class.js.map +1 -1
- package/schematics/utils/import-def.js +3 -3
- package/schematics/utils/import-def.js.map +1 -1
- package/schematics/utils/method-scanner.js +4 -4
- package/schematics/utils/method-scanner.js.map +1 -1
- package/schematics/utils/path-helper.js +3 -3
- package/schematics/utils/path-helper.js.map +1 -1
- package/schematics/utils/source-file-scanner.js +5 -5
- package/schematics/utils/source-file-scanner.js.map +1 -1
- package/schematics/utils/source-file-utilities.js +1 -1
- package/schematics/utils/source-file-utilities.js.map +1 -1
- package/schematics/utils/template-utilities.js +4 -4
- package/schematics/utils/template-utilities.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.js +0 -11847
- package/bundles/coolon-angular-ui-powerups.umd.js.map +0 -1
- package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +0 -36
- package/esm2015/lib/components/cards/card-container/card-container.component.js +0 -133
- package/esm2015/lib/components/cards/card-stack/card-stack.component.js +0 -85
- package/esm2015/lib/components/commands/command/command.component.js +0 -100
- package/esm2015/lib/components/commands/command-face.js +0 -112
- package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +0 -89
- package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js +0 -61
- package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +0 -104
- package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js +0 -58
- package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +0 -36
- package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +0 -76
- package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +0 -33
- package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -56
- package/esm2015/lib/components/forms/number-input/number-input.component.js +0 -37
- package/esm2015/lib/components/forms/password-input/password-input.component.js +0 -28
- package/esm2015/lib/components/forms/select-input/select-input.component.js +0 -61
- package/esm2015/lib/components/forms/string-input/string-input.component.js +0 -52
- package/esm2015/lib/components/forms/text-input/text-input.component.js +0 -34
- package/esm2015/lib/components/icon/icon.component.js +0 -56
- package/esm2015/lib/components/labelled-value/labelled-value.component.js +0 -24
- package/esm2015/lib/components/loading-container/loading-container.component.js +0 -54
- package/esm2015/lib/components/noop/noop.component.js +0 -17
- package/esm2015/lib/components/scroll-container/scroll-container.component.js +0 -19
- package/esm2015/lib/components/section-header/section-header.component.js +0 -40
- package/esm2015/lib/components/tables/abstract-table-model.js +0 -188
- package/esm2015/lib/components/tables/abstract-table.component.js +0 -170
- package/esm2015/lib/components/tables/table/column-model.js +0 -389
- package/esm2015/lib/components/tables/table/column-template/column-template.directive.js +0 -36
- package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js +0 -26
- package/esm2015/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.js +0 -19
- package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +0 -60
- package/esm2015/lib/components/tables/table/paginator/paginator.component.js +0 -44
- package/esm2015/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.js +0 -32
- package/esm2015/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.js +0 -37
- package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +0 -98
- package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +0 -36
- package/esm2015/lib/components/tables/table/table.component.js +0 -100
- package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +0 -171
- package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +0 -76
- package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +0 -96
- package/esm2015/lib/components/tables/tree-table/tree-table-component.js +0 -100
- package/esm2015/lib/interaction/activity.js +0 -88
- package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +0 -113
- package/esm2015/lib/interaction/components/activity-body/activity-body.component.js +0 -27
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +0 -214
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +0 -45
- package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +0 -28
- package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +0 -26
- package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +0 -34
- package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +0 -95
- package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +0 -77
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +0 -34
- package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +0 -34
- package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +0 -39
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +0 -33
- package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +0 -176
- package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +0 -96
- package/esm2015/lib/interaction/components/input-activities/input-activity.js +0 -107
- package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +0 -41
- package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +0 -58
- package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +0 -27
- package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +0 -17
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +0 -263
- package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +0 -97
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +0 -26
- package/esm2015/lib/place/guards/noop-auth-guard.service.js +0 -21
- package/esm2015/lib/place/guards/place.guard.js +0 -116
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +0 -88
- package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +0 -46
- package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.js +0 -159
- package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +0 -65
- package/esm2015/lib/place/navigation/session/navigation-session.js +0 -160
- package/esm2015/lib/place/place-component.js +0 -204
- package/esm2015/lib/place/place-history.js +0 -139
- package/esm2015/lib/place/place-router.js +0 -336
- package/esm2015/lib/place/place.decorator.js +0 -19
- package/esm2015/lib/place/route/parameter-definition.js +0 -128
- package/esm2015/lib/place/route/visit-sanitiser.js +0 -44
- package/esm2015/lib/place/visit.js +0 -69
- package/esm2015/lib/services/markdown/pill-plugin.js +0 -38
- package/esm2015/lib/services/visibility-service.js +0 -75
- package/fesm2015/coolon-angular-ui-powerups.js.map +0 -1
- /package/{esm2015/coolon-angular-ui-powerups.js → esm2020/coolon-angular-ui-powerups.mjs} +0 -0
- /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- /package/{esm2015/lib/animations/exports.js → esm2020/lib/animations/exports.mjs} +0 -0
- /package/{esm2015/lib/animations/slide-animations.js → esm2020/lib/animations/slide-animations.mjs} +0 -0
- /package/{esm2015/lib/components/alignment.js → esm2020/lib/components/alignment.mjs} +0 -0
- /package/{esm2015/lib/components/commands/group/command-container.js → esm2020/lib/components/commands/group/command-container.mjs} +0 -0
- /package/{esm2015/lib/components/commands/group/popup-aware.component.js → esm2020/lib/components/commands/group/popup-aware.component.mjs} +0 -0
- /package/{esm2015/lib/components/commands/group/popup-container.js → esm2020/lib/components/commands/group/popup-container.mjs} +0 -0
- /package/{esm2015/lib/components/exports.js → esm2020/lib/components/exports.mjs} +0 -0
- /package/{esm2015/lib/components/tables/column-list-model.js → esm2020/lib/components/tables/column-list-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/edit-session.js → esm2020/lib/components/tables/edit-session.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/cell-editors.js → esm2020/lib/components/tables/table/cell-editors.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/cell-renderer.js → esm2020/lib/components/tables/table/cell-renderer.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/column-text-properties.js → esm2020/lib/components/tables/table/column-text-properties.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/mutable-cell-renderer.js → esm2020/lib/components/tables/table/mutable-cell-renderer.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/table-def.js → esm2020/lib/components/tables/table/table-def.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/table-model.js → esm2020/lib/components/tables/table/table-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/table/text-search-predicate.js → esm2020/lib/components/tables/table/text-search-predicate.mjs} +0 -0
- /package/{esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js → esm2020/lib/components/tables/tree-table/flattened-tree-list-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/tree-table/tree-expansion-model.js → esm2020/lib/components/tables/tree-table/tree-expansion-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/tree-table/tree-label-column-model.js → esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs} +0 -0
- /package/{esm2015/lib/components/tables/tree-table/tree-table-model.js → esm2020/lib/components/tables/tree-table/tree-table-model.mjs} +0 -0
- /package/{esm2015/lib/components/track-by.js → esm2020/lib/components/track-by.mjs} +0 -0
- /package/{esm2015/lib/components/types/bounds.class.js → esm2020/lib/components/types/bounds.class.mjs} +0 -0
- /package/{esm2015/lib/components/types/dimension.class.js → esm2020/lib/components/types/dimension.class.mjs} +0 -0
- /package/{esm2015/lib/components/types/point.class.js → esm2020/lib/components/types/point.class.mjs} +0 -0
- /package/{esm2015/lib/directives/exports.js → esm2020/lib/directives/exports.mjs} +0 -0
- /package/{esm2015/lib/directives/focus-binding.js → esm2020/lib/directives/focus-binding.mjs} +0 -0
- /package/{esm2015/lib/interaction/abstract-interaction-context.js → esm2020/lib/interaction/abstract-interaction-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/activity-ref.js → esm2020/lib/interaction/activity-ref.mjs} +0 -0
- /package/{esm2015/lib/interaction/alert.js → esm2020/lib/interaction/alert.mjs} +0 -0
- /package/{esm2015/lib/interaction/components/editors/edit-context.js → esm2020/lib/interaction/components/editors/edit-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js → esm2020/lib/interaction/components/editors/inline-string-editor/inline-editor-model.mjs} +0 -0
- /package/{esm2015/lib/interaction/confirm.js → esm2020/lib/interaction/confirm.mjs} +0 -0
- /package/{esm2015/lib/interaction/exports.js → esm2020/lib/interaction/exports.mjs} +0 -0
- /package/{esm2015/lib/interaction/in-place-interaction-context.js → esm2020/lib/interaction/in-place-interaction-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/interaction-context.js → esm2020/lib/interaction/interaction-context.mjs} +0 -0
- /package/{esm2015/lib/interaction/route-synchronisation-adapter.js → esm2020/lib/interaction/route-synchronisation-adapter.mjs} +0 -0
- /package/{esm2015/lib/interaction/services/interaction-service-routing-adapter.js → esm2020/lib/interaction/services/interaction-service-routing-adapter.mjs} +0 -0
- /package/{esm2015/lib/interaction/services/modal-interaction-context.factory.js → esm2020/lib/interaction/services/modal-interaction-context.factory.mjs} +0 -0
- /package/{esm2015/lib/place/components/place-outlet/route-animations.js → esm2020/lib/place/components/place-outlet/route-animations.mjs} +0 -0
- /package/{esm2015/lib/place/exports.js → esm2020/lib/place/exports.mjs} +0 -0
- /package/{esm2015/lib/place/guards/consolidated-param-map.js → esm2020/lib/place/guards/consolidated-param-map.mjs} +0 -0
- /package/{esm2015/lib/place/nav-item.js → esm2020/lib/place/nav-item.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js → esm2020/lib/place/navigation/session/abstract-pop-state-navigation.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.js → esm2020/lib/place/navigation/session/event-cleanup/event-clean-up-session.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js → esm2020/lib/place/navigation/session/interactions/navigating-during-interaction.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js → esm2020/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js → esm2020/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js → esm2020/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/navigating.js → esm2020/lib/place/navigation/session/navigating.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/navigation-context.js → esm2020/lib/place/navigation/session/navigation-context.mjs} +0 -0
- /package/{esm2015/lib/place/navigation/session/pop-state-navigation.js → esm2020/lib/place/navigation/session/pop-state-navigation.mjs} +0 -0
- /package/{esm2015/lib/place/place-access-guard.js → esm2020/lib/place/place-access-guard.mjs} +0 -0
- /package/{esm2015/lib/place/place-config.js → esm2020/lib/place/place-config.mjs} +0 -0
- /package/{esm2015/lib/place/place-definition.js → esm2020/lib/place/place-definition.mjs} +0 -0
- /package/{esm2015/lib/place/route/formatter.js → esm2020/lib/place/route/formatter.mjs} +0 -0
- /package/{esm2015/lib/place/route/json-types.js → esm2020/lib/place/route/json-types.mjs} +0 -0
- /package/{esm2015/lib/place/route/parameter-decorators.js → esm2020/lib/place/route/parameter-decorators.mjs} +0 -0
- /package/{esm2015/lib/place/route/parameter-sanitiser.js → esm2020/lib/place/route/parameter-sanitiser.mjs} +0 -0
- /package/{esm2015/lib/place/route/parameter-snapshot.js → esm2020/lib/place/route/parameter-snapshot.mjs} +0 -0
- /package/{esm2015/lib/place/url-snapshot.js → esm2020/lib/place/url-snapshot.mjs} +0 -0
- /package/{esm2015/lib/services/exports.js → esm2020/lib/services/exports.mjs} +0 -0
- /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Directive } from '@angular/core';
|
|
3
|
-
import { ActivatedRouteSnapshot } from '@angular/router';
|
|
4
|
-
import { assert, Binding, DebugContext, Dsl, Guard, lang, MutableValueModel } from '@coolon/pectin';
|
|
5
|
-
import { Klass } from '@coolon/typescript-utilities';
|
|
6
|
-
import { Memoize } from '@typescript-plus/fast-memoize-decorator';
|
|
7
|
-
import 'reflect-metadata';
|
|
8
|
-
import { isNil } from 'lodash';
|
|
9
|
-
import { DisposableComponent } from '../components/disposable-component';
|
|
10
|
-
import { PlaceDefinition } from './place-definition';
|
|
11
|
-
import { ParameterDefinition } from './route/parameter-definition';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
// RAKE: making this Symbol(...) broke things.
|
|
14
|
-
export const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
|
|
15
|
-
// this one seems ok.
|
|
16
|
-
export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
|
|
17
|
-
class ParameterChangeInterceptor {
|
|
18
|
-
constructor(parameterDef, model, callback, options) {
|
|
19
|
-
}
|
|
20
|
-
canProceed(nextState, interactionContext) {
|
|
21
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
return true;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export class PlaceComponent extends DisposableComponent {
|
|
27
|
-
constructor() {
|
|
28
|
-
super();
|
|
29
|
-
this._placeReadyCallbacks = [];
|
|
30
|
-
this.visitModel = new MutableValueModel();
|
|
31
|
-
this._inVisitUpdate = new Guard();
|
|
32
|
-
this._active = new MutableValueModel(false);
|
|
33
|
-
this._parameterChangeInterceptors = [];
|
|
34
|
-
const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
|
|
35
|
-
when(this._active).becomesTruthy(() => this._notifyPlaceReady());
|
|
36
|
-
this.childPlaces = this.placeDefinition.children.map(d => d.component);
|
|
37
|
-
}
|
|
38
|
-
initialiseVisit(visit, notifyVisitChanged) {
|
|
39
|
-
assert.isNil(this.visitModel.value);
|
|
40
|
-
const { when } = Dsl.disposeWith(this);
|
|
41
|
-
this.visitModel.value = visit;
|
|
42
|
-
DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
|
|
43
|
-
// we track if the any of the bindings updated the route. If so we remember it and update the
|
|
44
|
-
// route in one go at the end.
|
|
45
|
-
this.placeDefinition
|
|
46
|
-
.getVisitParameterDefs()
|
|
47
|
-
.forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
|
|
48
|
-
when(this.visitModel).changes((current, previous) => {
|
|
49
|
-
notifyVisitChanged(current, previous);
|
|
50
|
-
}, { unless: this._inVisitUpdate });
|
|
51
|
-
// TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
|
|
52
|
-
// now we're not doing it as it's a fair bit of effort and will only affect people if they're
|
|
53
|
-
// cutting and pasting urls to each other.
|
|
54
|
-
// // the binding process can update the visit (e.g. if a selection model has already selected during
|
|
55
|
-
// // component construction) and there was no value specified in the route
|
|
56
|
-
// if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
|
|
57
|
-
// notifyVisitChanged(this.visitModel.value, visit)
|
|
58
|
-
// }
|
|
59
|
-
}
|
|
60
|
-
updateVisit(visit) {
|
|
61
|
-
assert.isTruthy(this.isInitialised());
|
|
62
|
-
assert.notNil(visit);
|
|
63
|
-
this._inVisitUpdate.whileTrue(() => {
|
|
64
|
-
this.visitModel.value = visit;
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
isInitialised() {
|
|
68
|
-
return !!this.visitModel.value;
|
|
69
|
-
}
|
|
70
|
-
// @Trace()
|
|
71
|
-
/**
|
|
72
|
-
* Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
|
|
73
|
-
* initialised during the constructor) and the route has nothing, then the visit will be udpated and this
|
|
74
|
-
* method will return ture to nofiy the the visit has changed.
|
|
75
|
-
*/
|
|
76
|
-
installAndInitialiseBinding(initialVisit, parameterDef) {
|
|
77
|
-
const model = this[parameterDef.propertyName];
|
|
78
|
-
DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
|
|
79
|
-
const binding = this.registerDisposable(new Binding(this.visitModel, model, {
|
|
80
|
-
toRight(visit) {
|
|
81
|
-
const value = visit.getParameterValue(parameterDef);
|
|
82
|
-
// console.log('push to component', { name: parameterDef.name, value, visit });
|
|
83
|
-
return value;
|
|
84
|
-
},
|
|
85
|
-
toLeft(value, currentVisit) {
|
|
86
|
-
// console.log('push to route', { name: parameterDef.name, value, currentVisit });
|
|
87
|
-
return currentVisit.replace(parameterDef, value);
|
|
88
|
-
}
|
|
89
|
-
}));
|
|
90
|
-
// Now we need to initialise the binding direction. If we have a value in the Url then we should always push
|
|
91
|
-
// that to the view. If we don't and the view already has a value (e.g. a selection model has already initialised in the
|
|
92
|
-
// component constructor) then we should push that to the route.
|
|
93
|
-
const isInVisit = !isNil(initialVisit.getParameterValue(parameterDef));
|
|
94
|
-
const isInModel = !isNil(model.value);
|
|
95
|
-
if (!isInVisit && isInModel) {
|
|
96
|
-
binding.writeLeft(); // push it to the route
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
binding.writeRight(); // push it to the model
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
get placeDefinition() {
|
|
103
|
-
const definition = PlaceComponent.getDefinition(this.constructor);
|
|
104
|
-
if (!definition) {
|
|
105
|
-
lang.illegalState(`${this.constructor.name} extends PlaceComponent but doesn't have @Place({..}) decorator.`);
|
|
106
|
-
}
|
|
107
|
-
return definition;
|
|
108
|
-
}
|
|
109
|
-
get active() {
|
|
110
|
-
return this._active.readonly;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Called by the router to see if this component can deactivate. This isn't called for route parameter changes.
|
|
114
|
-
* @param interactionContext
|
|
115
|
-
*/
|
|
116
|
-
_canLeavePlace(interactionContext) {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
return this.canDeactivate ? this.canDeactivate(interactionContext) : true;
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Called by the router to see if this component can deactivate. This isn't called for route parameter changes.
|
|
123
|
-
* @param interactionContext
|
|
124
|
-
* @param nextState
|
|
125
|
-
*/
|
|
126
|
-
_canChangeRouteParameters(interactionContext, nextState) {
|
|
127
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
if (this._parameterChangeInterceptors.length > 0) {
|
|
129
|
-
const visit = nextState.createVisitFor(this.placeDefinition);
|
|
130
|
-
for (let i = 0; i < this._parameterChangeInterceptors.length; i++) {
|
|
131
|
-
const interceptor = this._parameterChangeInterceptors[i];
|
|
132
|
-
const keepGoing = yield interceptor.canProceed(visit, interactionContext);
|
|
133
|
-
if (!keepGoing) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return true;
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Called by the router when the place is ready to interact after any animations have run.
|
|
143
|
-
*/
|
|
144
|
-
_notifyActive(active) {
|
|
145
|
-
this._active.value = active;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Called by the router when the place is ready to interact after any animations have run.
|
|
149
|
-
*/
|
|
150
|
-
_notifyPlaceReady() {
|
|
151
|
-
if (this.onPlaceReady.length === 1) {
|
|
152
|
-
this._placeReadyCallbacks.forEach(callback => callback());
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
console.warn('Overriding PlaceComponent.onPlaceReady has been deprecated. Use PlaceComponent.onPlaceReady(() => {... do stuff...}) instead.');
|
|
156
|
-
this.onPlaceReady(undefined);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
onPlaceReady(callback) {
|
|
160
|
-
this._placeReadyCallbacks.push(callback);
|
|
161
|
-
}
|
|
162
|
-
interceptVisitParameterChange(model, callback, options) {
|
|
163
|
-
const parameterDef = ParameterDefinition.get(model);
|
|
164
|
-
this._parameterChangeInterceptors.push(new ParameterChangeInterceptor(parameterDef, model, callback, options));
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
PlaceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PlaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
168
|
-
PlaceComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: PlaceComponent, usesInheritance: true, ngImport: i0 });
|
|
169
|
-
__decorate([
|
|
170
|
-
Memoize(),
|
|
171
|
-
__metadata("design:type", PlaceDefinition),
|
|
172
|
-
__metadata("design:paramtypes", [])
|
|
173
|
-
], PlaceComponent.prototype, "placeDefinition", null);
|
|
174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PlaceComponent, decorators: [{
|
|
175
|
-
type: Directive
|
|
176
|
-
}], ctorParameters: function () { return []; }, propDecorators: { placeDefinition: [] } });
|
|
177
|
-
(function (PlaceComponent) {
|
|
178
|
-
function isPlaceComponentConstructor(target) {
|
|
179
|
-
return lang.constructorChain(target).includes(PlaceComponent);
|
|
180
|
-
}
|
|
181
|
-
PlaceComponent.isPlaceComponentConstructor = isPlaceComponentConstructor;
|
|
182
|
-
function getRouteParameters(klass) {
|
|
183
|
-
return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY);
|
|
184
|
-
}
|
|
185
|
-
PlaceComponent.getRouteParameters = getRouteParameters;
|
|
186
|
-
function getDefinition(snapshotOrConstructor) {
|
|
187
|
-
if (snapshotOrConstructor instanceof ActivatedRouteSnapshot) {
|
|
188
|
-
const component = snapshotOrConstructor.component;
|
|
189
|
-
if (!isPlaceComponentConstructor(component)) {
|
|
190
|
-
throw new Error(`ActivatedRouteSnapshot component is not a PlaceComponent, got ${component}`);
|
|
191
|
-
}
|
|
192
|
-
return Reflect.getMetadata(DEFINITION_META_DATA_KEY, component);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
return Reflect.getMetadata(DEFINITION_META_DATA_KEY, snapshotOrConstructor);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
PlaceComponent.getDefinition = getDefinition;
|
|
199
|
-
function injectDefinition(klass, definition) {
|
|
200
|
-
Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);
|
|
201
|
-
}
|
|
202
|
-
PlaceComponent.injectDefinition = injectDefinition;
|
|
203
|
-
})(PlaceComponent || (PlaceComponent = {}));
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUVQLFlBQVksRUFDWixHQUFHLEVBQ0gsS0FBSyxFQUVMLElBQUksRUFDSixpQkFBaUIsRUFFbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xFLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBS25FLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztBQUNuRSxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFHekUsTUFBTSwwQkFBMEI7SUFDOUIsWUFBWSxZQUFvQyxFQUFFLEtBQW9CLEVBQUUsUUFBNkMsRUFBRSxPQUF3QztJQUMvSixDQUFDO0lBRUssVUFBVSxDQUFDLFNBQWdCLEVBQUUsa0JBQXNDOztZQUN2RSxPQUFP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LENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUErQixDQUFDO0lBQ2xHLENBQUM7SUFGZSxpQ0FBa0IscUJBRWpDLENBQUE7SUFFRCxTQUFnQixhQUFhLENBQUMscUJBQTZFO1FBQ3pHLElBQUkscUJBQXFCLFlBQVksc0JBQXNCLEVBQUU7WUFDM0QsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUMvRjtZQUNELE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBVmUsNEJBQWEsZ0JBVTVCLENBQUE7SUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFvQyxFQUFFLFVBQTJCO1FBQ2hHLE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFGZSwrQkFBZ0IsbUJBRS9CLENBQUE7QUFTSCxDQUFDLEVBakNnQixjQUFjLEtBQWQsY0FBYyxRQWlDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCaW5kaW5nLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWJ1Z0NvbnRleHQsXG4gIERzbCxcbiAgR3VhcmQsXG4gIElNdXRhYmxlSGFzVmFsdWUsXG4gIGxhbmcsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEtsYXNzIH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yJztcbmltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cblxuLy8gUkFLRTogbWFraW5nIHRoaXMgU3ltYm9sKC4uLikgYnJva2UgdGhpbmdzLlxuZXhwb3J0IGNvbnN0IERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSA9ICdQTEFDRV9ERUZJTklUSU9OX09QVElPTlMnO1xuLy8gdGhpcyBvbmUgc2VlbXMgb2suXG5leHBvcnQgY29uc3QgUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZID0gU3ltYm9sKCdwbGFjZTpyb3V0ZTpwYXJhbWV0ZXJzJyk7XG5cblxuY2xhc3MgUGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3I8VD4ge1xuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VD4sIG1vZGVsOiBWYWx1ZU1vZGVsPFQ+LCBjYWxsYmFjazogUGxhY2VDb21wb25lbnQuSW50ZXJjZXB0Q2FsbGJhY2s8VD4sIG9wdGlvbnM6IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdE9wdGlvbnMpIHtcbiAgfVxuXG4gIGFzeW5jIGNhblByb2NlZWQobmV4dFN0YXRlOiBWaXNpdCwgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQbGFjZUNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlUmVhZHlDYWxsYmFja3M6IEZ1bmN0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSB2aXNpdE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICBwcml2YXRlIF9pblZpc2l0VXBkYXRlID0gbmV3IEd1YXJkKCk7XG4gIHByaXZhdGUgX2FjdGl2ZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgaW50ZXJhY3Rpb25Db250ZXh0PzogSW50ZXJhY3Rpb25Db250ZXh0O1xuICBjaGlsZFBsYWNlczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3JzOiBQYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcjxhbnk+W10gPSBbXTtcblxuICBjYW5EZWFjdGl2YXRlPyhpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuKHRoaXMuX2FjdGl2ZSkuYmVjb21lc1RydXRoeSgoKSA9PiB0aGlzLl9ub3RpZnlQbGFjZVJlYWR5KCkpO1xuICAgIHRoaXMuY2hpbGRQbGFjZXMgPSB0aGlzLnBsYWNlRGVmaW5pdGlvbi5jaGlsZHJlbi5tYXAoZCA9PiBkLmNvbXBvbmVudCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGlzZVZpc2l0KHZpc2l0OiBWaXNpdCwgbm90aWZ5VmlzaXRDaGFuZ2VkOiAoY3VycmVudDogVmlzaXQsIHByZXZpb3VzOiBWaXNpdCkgPT4gdm9pZCkge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLnZpc2l0TW9kZWwudmFsdWUpO1xuXG4gICAgY29uc3QgeyB3aGVuIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnZpc2l0TW9kZWwudmFsdWUgPSB2aXNpdDtcbiAgICBEZWJ1Z0NvbnRleHQuZ2V0T3JDcmVhdGUodGhpcy52aXNpdE1vZGVsKS50YWcoYCR7dGhpcy5wbGFjZURlZmluaXRpb24uY29tcG9uZW50Lm5hbWV9LnZpc2l0TW9kZWxgKTtcblxuICAgIC8vIHdlIHRyYWNrIGlmIHRoZSBhbnkgb2YgdGhlIGJpbmRpbmdzIHVwZGF0ZWQgdGhlIHJvdXRlLiAgSWYgc28gd2UgcmVtZW1iZXIgaXQgYW5kIHVwZGF0ZSB0aGVcbiAgICAvLyByb3V0ZSBpbiBvbmUgZ28gYXQgdGhlIGVuZC5cbiAgICB0aGlzLnBsYWNlRGVmaW5pdGlvblxuICAgICAgLmdldFZpc2l0UGFyYW1ldGVyRGVmcygpXG4gICAgICAuZm9yRWFjaChwYXJhbWV0ZXJEZWYgPT4gdGhpcy5pbnN0YWxsQW5kSW5pdGlhbGlzZUJpbmRpbmcodmlzaXQsIHBhcmFtZXRlckRlZikpO1xuXG4gICAgd2hlbih0aGlzLnZpc2l0TW9kZWwpLmNoYW5nZXMoKGN1cnJlbnQsIHByZXZpb3VzKSA9PiB7XG4gICAgICBub3RpZnlWaXNpdENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpO1xuICAgIH0sIHsgdW5sZXNzOiB0aGlzLl9pblZpc2l0VXBkYXRlIH0pO1xuXG4gICAgLy8gVE9ETzogdGhpcyBuZWVkcyB0byBkbyBhIHJlcGxhY2UgdXJsIG9wdGlvbiBzbyB0aGF0IHRoZSBuZXcgdXJsIGlzbid0IHB1dCBpbiB0aGUgaGlzdG9yeS4uLi4gZm9yXG4gICAgLy8gICAgICAgbm93IHdlJ3JlIG5vdCBkb2luZyBpdCBhcyBpdCdzIGEgZmFpciBiaXQgb2YgZWZmb3J0IGFuZCB3aWxsIG9ubHkgYWZmZWN0IHBlb3BsZSBpZiB0aGV5J3JlXG4gICAgLy8gICAgICAgY3V0dGluZyBhbmQgcGFzdGluZyB1cmxzIHRvIGVhY2ggb3RoZXIuXG4gICAgLy8gLy8gdGhlIGJpbmRpbmcgcHJvY2VzcyBjYW4gdXBkYXRlIHRoZSB2aXNpdCAoZS5nLiBpZiBhIHNlbGVjdGlvbiBtb2RlbCBoYXMgYWxyZWFkeSBzZWxlY3RlZCBkdXJpbmdcbiAgICAvLyAvLyBjb21wb25lbnQgY29uc3RydWN0aW9uKSBhbmQgdGhlcmUgd2FzIG5vIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcm91dGVcbiAgICAvLyBpZiAodmlzaXQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHRoaXMudmlzaXRNb2RlbC52YWx1ZSkpIHtcbiAgICAvLyAgIG5vdGlmeVZpc2l0Q2hhbmdlZCh0aGlzLnZpc2l0TW9kZWwudmFsdWUsIHZpc2l0KVxuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWaXNpdCh2aXNpdDogVmlzaXQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5pc0luaXRpYWxpc2VkKCkpO1xuICAgIGFzc2VydC5ub3ROaWwodmlzaXQpO1xuICAgIHRoaXMuX2luVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRoaXMudmlzaXRNb2RlbC52YWx1ZSA9IHZpc2l0O1xuICAgIH0pO1xuICB9XG5cbiAgaXNJbml0aWFsaXNlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnZpc2l0TW9kZWwudmFsdWU7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICAvKipcbiAgICogSW5pdGlhbGlzZWQgdGhlIGNvbXBvbmVudCBiaW5kaW5ncy4gIElmIGFueSBiaW5kaW5nIGhhcyBhbiBpbml0aWFsIG1vZGVsIHZhbHVlIChlLmcuIGEgc2VsZWN0aW9uIG1vZGVsXG4gICAqIGluaXRpYWxpc2VkIGR1cmluZyB0aGUgY29uc3RydWN0b3IpIGFuZCB0aGUgcm91dGUgaGFzIG5vdGhpbmcsIHRoZW4gdGhlIHZpc2l0IHdpbGwgYmUgdWRwYXRlZCBhbmQgdGhpc1xuICAgKiBtZXRob2Qgd2lsbCByZXR1cm4gdHVyZSB0byBub2ZpeSB0aGUgdGhlIHZpc2l0IGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YWxsQW5kSW5pdGlhbGlzZUJpbmRpbmc8VCwgUz4oaW5pdGlhbFZpc2l0OiBWaXNpdCwgcGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzW3BhcmFtZXRlckRlZi5wcm9wZXJ0eU5hbWVdIGFzIElNdXRhYmxlSGFzVmFsdWU8VD47XG4gICAgRGVidWdDb250ZXh0LnRhZyhtb2RlbCwgYCR7dGhpcy5wbGFjZURlZmluaXRpb24uY29tcG9uZW50Lm5hbWV9LiR7cGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZX1gKTtcbiAgICBjb25zdCBiaW5kaW5nID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEJpbmRpbmcodGhpcy52aXNpdE1vZGVsLCBtb2RlbCwge1xuICAgICAgdG9SaWdodCh2aXNpdDogVmlzaXQpOiBUIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2aXNpdC5nZXRQYXJhbWV0ZXJWYWx1ZShwYXJhbWV0ZXJEZWYpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncHVzaCB0byBjb21wb25lbnQnLCB7IG5hbWU6IHBhcmFtZXRlckRlZi5uYW1lLCB2YWx1ZSwgdmlzaXQgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB0b0xlZnQodmFsdWU6IFQsIGN1cnJlbnRWaXNpdD86IFZpc2l0KTogVmlzaXQge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncHVzaCB0byByb3V0ZScsIHsgbmFtZTogcGFyYW1ldGVyRGVmLm5hbWUsIHZhbHVlLCBjdXJyZW50VmlzaXQgfSk7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmlzaXQucmVwbGFjZShwYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICAvLyBOb3cgd2UgbmVlZCB0byBpbml0aWFsaXNlIHRoZSBiaW5kaW5nIGRpcmVjdGlvbi4gIElmIHdlIGhhdmUgYSB2YWx1ZSBpbiB0aGUgVXJsIHRoZW4gd2Ugc2hvdWxkIGFsd2F5cyBwdXNoXG4gICAgLy8gdGhhdCB0byB0aGUgdmlldy4gIElmIHdlIGRvbid0IGFuZCB0aGUgdmlldyBhbHJlYWR5IGhhcyBhIHZhbHVlIChlLmcuIGEgc2VsZWN0aW9uIG1vZGVsIGhhcyBhbHJlYWR5IGluaXRpYWxpc2VkIGluIHRoZVxuICAgIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvcikgdGhlbiB3ZSBzaG91bGQgcHVzaCB0aGF0IHRvIHRoZSByb3V0ZS5cbiAgICBjb25zdCBpc0luVmlzaXQgPSAhaXNOaWwoaW5pdGlhbFZpc2l0LmdldFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlckRlZikpO1xuICAgIGNvbnN0IGlzSW5Nb2RlbCA9ICFpc05pbChtb2RlbC52YWx1ZSk7XG4gICAgaWYgKCFpc0luVmlzaXQgJiYgaXNJbk1vZGVsKSB7XG4gICAgICBiaW5kaW5nLndyaXRlTGVmdCgpOyAvLyBwdXNoIGl0IHRvIHRoZSByb3V0ZVxuICAgIH0gZWxzZSB7XG4gICAgICBiaW5kaW5nLndyaXRlUmlnaHQoKTsgLy8gcHVzaCBpdCB0byB0aGUgbW9kZWxcbiAgICB9XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldCBwbGFjZURlZmluaXRpb24oKTogUGxhY2VEZWZpbml0aW9uIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbih0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IGV4dGVuZHMgUGxhY2VDb21wb25lbnQgYnV0IGRvZXNuJ3QgaGF2ZSBAUGxhY2Uoey4ufSkgZGVjb3JhdG9yLmApXG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHRvIHNlZSBpZiB0aGlzIGNvbXBvbmVudCBjYW4gZGVhY3RpdmF0ZS4gIFRoaXMgaXNuJ3QgY2FsbGVkIGZvciByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcy5cbiAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgKi9cbiAgYXN5bmMgX2NhbkxlYXZlUGxhY2UoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5EZWFjdGl2YXRlID8gdGhpcy5jYW5EZWFjdGl2YXRlKGludGVyYWN0aW9uQ29udGV4dCkgOiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHRvIHNlZSBpZiB0aGlzIGNvbXBvbmVudCBjYW4gZGVhY3RpdmF0ZS4gIFRoaXMgaXNuJ3QgY2FsbGVkIGZvciByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcy5cbiAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgKiBAcGFyYW0gbmV4dFN0YXRlXG4gICAqL1xuICBhc3luYyBfY2FuQ2hhbmdlUm91dGVQYXJhbWV0ZXJzKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2aXNpdCA9IG5leHRTdGF0ZS5jcmVhdGVWaXNpdEZvcih0aGlzLnBsYWNlRGVmaW5pdGlvbik7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpbnRlcmNlcHRvciA9IHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yc1tpXTtcbiAgICAgICAgY29uc3Qga2VlcEdvaW5nID0gYXdhaXQgaW50ZXJjZXB0b3IuY2FuUHJvY2VlZCh2aXNpdCwgaW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICAgICAgaWYgKCFrZWVwR29pbmcpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIHJvdXRlciB3aGVuIHRoZSBwbGFjZSBpcyByZWFkeSB0byBpbnRlcmFjdCBhZnRlciBhbnkgYW5pbWF0aW9ucyBoYXZlIHJ1bi5cbiAgICovXG4gIF9ub3RpZnlBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYWN0aXZlLnZhbHVlID0gYWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHdoZW4gdGhlIHBsYWNlIGlzIHJlYWR5IHRvIGludGVyYWN0IGFmdGVyIGFueSBhbmltYXRpb25zIGhhdmUgcnVuLlxuICAgKi9cbiAgX25vdGlmeVBsYWNlUmVhZHkoKSB7XG4gICAgaWYgKHRoaXMub25QbGFjZVJlYWR5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fcGxhY2VSZWFkeUNhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ092ZXJyaWRpbmcgUGxhY2VDb21wb25lbnQub25QbGFjZVJlYWR5IGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBVc2UgUGxhY2VDb21wb25lbnQub25QbGFjZVJlYWR5KCgpID0+IHsuLi4gZG8gc3R1ZmYuLi59KSBpbnN0ZWFkLicpO1xuICAgICAgdGhpcy5vblBsYWNlUmVhZHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBvblBsYWNlUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9wbGFjZVJlYWR5Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgaW50ZXJjZXB0VmlzaXRQYXJhbWV0ZXJDaGFuZ2U8VD4obW9kZWw6IFZhbHVlTW9kZWw8VD4sIGNhbGxiYWNrOiBQbGFjZUNvbXBvbmVudC5JbnRlcmNlcHRDYWxsYmFjazxUPiwgb3B0aW9ucz86IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdE9wdGlvbnMpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJEZWYgPSBQYXJhbWV0ZXJEZWZpbml0aW9uLmdldChtb2RlbCk7XG4gICAgdGhpcy5fcGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3JzLnB1c2gobmV3IFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yKHBhcmFtZXRlckRlZiwgbW9kZWwsIGNhbGxiYWNrLCBvcHRpb25zKSk7XG4gIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlQ29tcG9uZW50IHtcblxuICBleHBvcnQgZnVuY3Rpb24gaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldDogYW55KTogdGFyZ2V0IGlzIENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gbGFuZy5jb25zdHJ1Y3RvckNoYWluKHRhcmdldCBhcyBDb25zdHJ1Y3RhYmxlPGFueT4pLmluY2x1ZGVzKFBsYWNlQ29tcG9uZW50KTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVBhcmFtZXRlcnMoa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10ge1xuICAgIHJldHVybiBLbGFzcy5nZXQoa2xhc3MpLmdldE1ldGFkYXRhTGlzdChST1VURV9QQVJBTUVURVJfTElTVF9LRVkpIGFzIFBhcmFtZXRlckRlZmluaXRpb248YW55PltdO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldERlZmluaXRpb24oc25hcHNob3RPckNvbnN0cnVjdG9yOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQbGFjZURlZmluaXRpb24ge1xuICAgIGlmIChzbmFwc2hvdE9yQ29uc3RydWN0b3IgaW5zdGFuY2VvZiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBzbmFwc2hvdE9yQ29uc3RydWN0b3IuY29tcG9uZW50O1xuICAgICAgaWYgKCFpc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IoY29tcG9uZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjdGl2YXRlZFJvdXRlU25hcHNob3QgY29tcG9uZW50IGlzIG5vdCBhIFBsYWNlQ29tcG9uZW50LCBnb3QgJHtjb21wb25lbnR9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIGNvbXBvbmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwgc25hcHNob3RPckNvbnN0cnVjdG9yKTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIGRlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBkZWZpbml0aW9uLCBrbGFzcyk7XG4gIH1cblxuICBleHBvcnQgdHlwZSBJbnRlcmNlcHRDYWxsYmFjazxUPiA9IChpczogVCwgd2FzOiBULCBpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJbnRlcmNlcHRPcHRpb25zIHtcbiAgICBpbml0aWFsVmFsdWU6ICdldmFsdWF0aW9uVW5sZXNzTmlsJyB8ICdldmFsdWF0ZSdcbiAgfVxuXG5cbn1cbiJdfQ==
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { assert } from '@coolon/pectin';
|
|
3
|
-
import { first } from 'lodash';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class PlaceHistory {
|
|
6
|
-
constructor() {
|
|
7
|
-
this._archive = new Map();
|
|
8
|
-
this.placeHistoryDepth = 4;
|
|
9
|
-
}
|
|
10
|
-
notifyNavigationStarted() {
|
|
11
|
-
if (this._activeVisits) {
|
|
12
|
-
this.archive(this._activeVisits.visits);
|
|
13
|
-
this._previousVisits = this._activeVisits;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
notifyNavigationFinished(visits) {
|
|
17
|
-
this._activeVisits = new PlaceHistory.VisitRecord(visits);
|
|
18
|
-
}
|
|
19
|
-
updateVisit(visit) {
|
|
20
|
-
assert.isTruthy(this._activeVisits);
|
|
21
|
-
this._activeVisits.update(visit);
|
|
22
|
-
}
|
|
23
|
-
lastVisitIncluded(placeDef) {
|
|
24
|
-
var _a;
|
|
25
|
-
return !!((_a = this._previousVisits) === null || _a === void 0 ? void 0 : _a.getVisitFor(placeDef));
|
|
26
|
-
}
|
|
27
|
-
getMostRecentVisitFor(placeDef) {
|
|
28
|
-
return first(this.getHistory(placeDef));
|
|
29
|
-
}
|
|
30
|
-
getHistory(placeDef) {
|
|
31
|
-
let history = this._archive.get(placeDef);
|
|
32
|
-
if (!history) {
|
|
33
|
-
history = [];
|
|
34
|
-
this.setHistory(placeDef, history);
|
|
35
|
-
}
|
|
36
|
-
return history;
|
|
37
|
-
}
|
|
38
|
-
setHistory(placeDef, history) {
|
|
39
|
-
this._archive.set(placeDef, history);
|
|
40
|
-
}
|
|
41
|
-
archive(visits) {
|
|
42
|
-
visits.forEach(state => {
|
|
43
|
-
const history = this.getHistory(state.placeDefinition);
|
|
44
|
-
const previousState = first(history);
|
|
45
|
-
if (!previousState || state.hasChangedFrom(previousState)) {
|
|
46
|
-
history.unshift(state); // LIFO
|
|
47
|
-
this.setHistory(state.placeDefinition, history.slice(0, this.placeHistoryDepth));
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
PlaceHistory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PlaceHistory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
53
|
-
PlaceHistory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PlaceHistory, providedIn: 'root' });
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PlaceHistory, decorators: [{
|
|
55
|
-
type: Injectable,
|
|
56
|
-
args: [{
|
|
57
|
-
providedIn: 'root'
|
|
58
|
-
}]
|
|
59
|
-
}], ctorParameters: function () { return []; } });
|
|
60
|
-
(function (PlaceHistory) {
|
|
61
|
-
class VisitRecord {
|
|
62
|
-
constructor(visits) {
|
|
63
|
-
this.visits = visits;
|
|
64
|
-
}
|
|
65
|
-
update(visit) {
|
|
66
|
-
this.visits = this.visits.filter(v => v.placeDefinition !== visit.placeDefinition).concat(visit);
|
|
67
|
-
}
|
|
68
|
-
getVisitFor(placeDef) {
|
|
69
|
-
return this.visits.find(v => v.placeDefinition === placeDef);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
PlaceHistory.VisitRecord = VisitRecord;
|
|
73
|
-
// export class Query {
|
|
74
|
-
// private _history: Visit.State[];
|
|
75
|
-
// private _places: Place[];
|
|
76
|
-
// private _predicate: (visit: any) => boolean;
|
|
77
|
-
// private _limit: number;
|
|
78
|
-
//
|
|
79
|
-
// constructor(history, limit = history.length) {
|
|
80
|
-
// this._history = history;
|
|
81
|
-
// this._places = [];
|
|
82
|
-
// this._predicate = (visit => true);
|
|
83
|
-
// this._limit = limit;
|
|
84
|
-
// }
|
|
85
|
-
//
|
|
86
|
-
// to(...places:Place[]):this {
|
|
87
|
-
// this._places = places;
|
|
88
|
-
// return this;
|
|
89
|
-
// }
|
|
90
|
-
//
|
|
91
|
-
// with(parameters: { [parameter: string]: any }): this {
|
|
92
|
-
// this.matching(state => {
|
|
93
|
-
// return Object.keys(parameters).reduce((acc, key) => {
|
|
94
|
-
// const matchValue = parameters[key];
|
|
95
|
-
// const visitValue = state.get(key);
|
|
96
|
-
// const matched = matchValue === '*' ? !isNil(visitValue) : visitValue == matchValue;
|
|
97
|
-
// // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);
|
|
98
|
-
// return acc && matched;
|
|
99
|
-
// }, true);
|
|
100
|
-
// });
|
|
101
|
-
// return this;
|
|
102
|
-
// }
|
|
103
|
-
//
|
|
104
|
-
// last(): Visit.State {
|
|
105
|
-
// return findLast(this._history, visit => this._matches(visit))
|
|
106
|
-
// }
|
|
107
|
-
//
|
|
108
|
-
// // @trace
|
|
109
|
-
// allThatMatch(): Visit.State[] {
|
|
110
|
-
// return filter(this._history, visit => this._matches(visit)).slice(-this._limit);
|
|
111
|
-
// }
|
|
112
|
-
//
|
|
113
|
-
// // @trace
|
|
114
|
-
// mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {
|
|
115
|
-
// const lastStateWithParam = findLast(this.allThatMatch(), state => !isNil(state.get(param)));
|
|
116
|
-
// return isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);
|
|
117
|
-
// }
|
|
118
|
-
//
|
|
119
|
-
// limit(limit: number): this {
|
|
120
|
-
// this._limit = limit;
|
|
121
|
-
// return this;
|
|
122
|
-
// }
|
|
123
|
-
//
|
|
124
|
-
// matching(predicate: (visit: Visit.State) => boolean): this {
|
|
125
|
-
// this._predicate = predicate;
|
|
126
|
-
// return this;
|
|
127
|
-
// }
|
|
128
|
-
//
|
|
129
|
-
// _matches(visit: Visit.State) {
|
|
130
|
-
// return this._isPlaceMatch(visit) && this._predicate(visit);
|
|
131
|
-
// }
|
|
132
|
-
//
|
|
133
|
-
// _isPlaceMatch(visit: Visit.State) {
|
|
134
|
-
// return this._places.length < 1 || this._places.includes(visit.place)
|
|
135
|
-
// }
|
|
136
|
-
//
|
|
137
|
-
// }
|
|
138
|
-
})(PlaceHistory || (PlaceHistory = {}));
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL3BsYWNlLWhpc3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFPL0IsTUFBTSxPQUFPLFlBQVk7SUFRdkI7UUFIUSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFDdEMsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBRy9DLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBZTtRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQXlCOztRQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLGVBQWUsMENBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUM7SUFD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Q0YsY0FBYztJQUNkLG9DQUFvQztJQUNwQyx1RkFBdUY7SUFDdkYsTUFBTTtJQUNOLEVBQUU7SUFDRixjQUFjO0lBQ2QseUVBQXlFO0lBQ3pFLG1HQUFtRztJQUNuRyx1RkFBdUY7SUFDdkYsTUFBTTtJQUNOLEVBQUU7SUFDRixpQ0FBaUM7SUFDakMsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sRUFBRTtJQUNGLGlFQUFpRTtJQUNqRSxtQ0FBbUM7SUFDbkMsbUJBQW1CO0lBQ25CLE1BQU07SUFDTixFQUFFO0lBQ0YsbUNBQW1DO0lBQ25DLGtFQUFrRTtJQUNsRSxNQUFNO0lBQ04sRUFBRTtJQUNGLHdDQUF3QztJQUN4QywyRUFBMkU7SUFDM0UsTUFBTTtJQUNOLEVBQUU7SUFDRixJQUFJO0FBRU4sQ0FBQyxFQWpGZ0IsWUFBWSxLQUFaLFlBQVksUUFpRjVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0LCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlSGlzdG9yeSB7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlVmlzaXRzOiBQbGFjZUhpc3RvcnkuVmlzaXRSZWNvcmQ7XG4gIHByaXZhdGUgX3ByZXZpb3VzVmlzaXRzOiBQbGFjZUhpc3RvcnkuVmlzaXRSZWNvcmQ7XG5cbiAgcHJpdmF0ZSBfYXJjaGl2ZSA9IG5ldyBNYXA8UGxhY2VEZWZpbml0aW9uLCBWaXNpdFtdPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeURlcHRoOiBudW1iZXIgPSA0O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgbm90aWZ5TmF2aWdhdGlvblN0YXJ0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVZpc2l0cykge1xuICAgICAgdGhpcy5hcmNoaXZlKHRoaXMuX2FjdGl2ZVZpc2l0cy52aXNpdHMpO1xuICAgICAgdGhpcy5fcHJldmlvdXNWaXNpdHMgPSB0aGlzLl9hY3RpdmVWaXNpdHM7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5TmF2aWdhdGlvbkZpbmlzaGVkKHZpc2l0czogVmlzaXRbXSkge1xuICAgIHRoaXMuX2FjdGl2ZVZpc2l0cyA9IG5ldyBQbGFjZUhpc3RvcnkuVmlzaXRSZWNvcmQodmlzaXRzKTtcbiAgfVxuXG4gIHVwZGF0ZVZpc2l0KHZpc2l0OiBWaXNpdCkge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLl9hY3RpdmVWaXNpdHMpO1xuICAgIHRoaXMuX2FjdGl2ZVZpc2l0cy51cGRhdGUodmlzaXQpO1xuICB9XG5cbiAgbGFzdFZpc2l0SW5jbHVkZWQocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXZpb3VzVmlzaXRzPy5nZXRWaXNpdEZvcihwbGFjZURlZik7XG4gIH1cblxuICBnZXRNb3N0UmVjZW50VmlzaXRGb3IocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIHJldHVybiBmaXJzdCh0aGlzLmdldEhpc3RvcnkocGxhY2VEZWYpKTtcbiAgfVxuXG4gIGdldEhpc3RvcnkocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbik6IFZpc2l0W10ge1xuICAgIGxldCBoaXN0b3J5ID0gdGhpcy5fYXJjaGl2ZS5nZXQocGxhY2VEZWYpO1xuICAgIGlmICghaGlzdG9yeSkge1xuICAgICAgaGlzdG9yeSA9IFtdO1xuICAgICAgdGhpcy5zZXRIaXN0b3J5KHBsYWNlRGVmLCBoaXN0b3J5KTtcbiAgICB9XG4gICAgcmV0dXJuIGhpc3Rvcnk7XG4gIH1cblxuICBwcml2YXRlIHNldEhpc3RvcnkocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbiwgaGlzdG9yeTogVmlzaXRbXSkge1xuICAgIHRoaXMuX2FyY2hpdmUuc2V0KHBsYWNlRGVmLCBoaXN0b3J5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcmNoaXZlKHZpc2l0czogVmlzaXRbXSkge1xuICAgIHZpc2l0cy5mb3JFYWNoKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGhpc3RvcnkgPSB0aGlzLmdldEhpc3Rvcnkoc3RhdGUucGxhY2VEZWZpbml0aW9uKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBmaXJzdChoaXN0b3J5KTtcbiAgICAgIGlmICghcHJldmlvdXNTdGF0ZSB8fCBzdGF0ZS5oYXNDaGFuZ2VkRnJvbShwcmV2aW91c1N0YXRlKSkge1xuICAgICAgICBoaXN0b3J5LnVuc2hpZnQoc3RhdGUpOyAvLyBMSUZPXG4gICAgICAgIHRoaXMuc2V0SGlzdG9yeShzdGF0ZS5wbGFjZURlZmluaXRpb24sIGhpc3Rvcnkuc2xpY2UoMCwgdGhpcy5wbGFjZUhpc3RvcnlEZXB0aCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlSGlzdG9yeSB7XG5cbiAgZXhwb3J0IGNsYXNzIFZpc2l0UmVjb3JkIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlzaXRzOiBWaXNpdFtdKSB7XG4gICAgfVxuXG4gICAgdXBkYXRlKHZpc2l0OiBWaXNpdCkge1xuICAgICAgdGhpcy52aXNpdHMgPSB0aGlzLnZpc2l0cy5maWx0ZXIodiA9PiB2LnBsYWNlRGVmaW5pdGlvbiAhPT0gdmlzaXQucGxhY2VEZWZpbml0aW9uKS5jb25jYXQodmlzaXQpO1xuICAgIH1cblxuICAgIGdldFZpc2l0Rm9yKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBWaXNpdCB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm4gdGhpcy52aXNpdHMuZmluZCh2ID0+IHYucGxhY2VEZWZpbml0aW9uID09PSBwbGFjZURlZik7XG4gICAgfVxuICB9XG5cbiAgLy8gZXhwb3J0IGNsYXNzIFF1ZXJ5IHtcbiAgLy8gICBwcml2YXRlIF9oaXN0b3J5OiBWaXNpdC5TdGF0ZVtdO1xuICAvLyAgIHByaXZhdGUgX3BsYWNlczogUGxhY2VbXTtcbiAgLy8gICBwcml2YXRlIF9wcmVkaWNhdGU6ICh2aXNpdDogYW55KSA9PiBib29sZWFuO1xuICAvLyAgIHByaXZhdGUgX2xpbWl0OiBudW1iZXI7XG4gIC8vXG4gIC8vICAgY29uc3RydWN0b3IoaGlzdG9yeSwgbGltaXQgPSBoaXN0b3J5Lmxlbmd0aCkge1xuICAvLyAgICAgdGhpcy5faGlzdG9yeSA9IGhpc3Rvcnk7XG4gIC8vICAgICB0aGlzLl9wbGFjZXMgPSBbXTtcbiAgLy8gICAgIHRoaXMuX3ByZWRpY2F0ZSA9ICh2aXNpdCA9PiB0cnVlKTtcbiAgLy8gICAgIHRoaXMuX2xpbWl0ID0gbGltaXQ7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIHRvKC4uLnBsYWNlczpQbGFjZVtdKTp0aGlzIHtcbiAgLy8gICAgIHRoaXMuX3BsYWNlcyA9IHBsYWNlcztcbiAgLy8gICAgIHJldHVybiB0aGlzO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICB3aXRoKHBhcmFtZXRlcnM6IHsgW3BhcmFtZXRlcjogc3RyaW5nXTogYW55IH0pOiB0aGlzIHtcbiAgLy8gICAgIHRoaXMubWF0Y2hpbmcoc3RhdGUgPT4ge1xuICAvLyAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1ldGVycykucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IG1hdGNoVmFsdWUgPSBwYXJhbWV0ZXJzW2tleV07XG4gIC8vICAgICAgICAgY29uc3QgdmlzaXRWYWx1ZSA9IHN0YXRlLmdldChrZXkpO1xuICAvLyAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBtYXRjaFZhbHVlID09PSAnKicgPyAhaXNOaWwodmlzaXRWYWx1ZSkgOiB2aXNpdFZhbHVlID09IG1hdGNoVmFsdWU7XG4gIC8vICAgICAgICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGBtYXRjaGVkPSR7bWF0Y2hlZH1gLCBwYXJhbWV0ZXJzLCB2aXNpdFZhbHVlKTtcbiAgLy8gICAgICAgICByZXR1cm4gYWNjICYmIG1hdGNoZWQ7XG4gIC8vICAgICAgIH0sIHRydWUpO1xuICAvLyAgICAgfSk7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbGFzdCgpOiBWaXNpdC5TdGF0ZSB7XG4gIC8vICAgICByZXR1cm4gZmluZExhc3QodGhpcy5faGlzdG9yeSwgdmlzaXQgPT4gdGhpcy5fbWF0Y2hlcyh2aXNpdCkpXG4gIC8vICAgfVxuICAvL1xuICAvLyAgIC8vIEB0cmFjZVxuICAvLyAgIGFsbFRoYXRNYXRjaCgpOiBWaXNpdC5TdGF0ZVtdIHtcbiAgLy8gICAgIHJldHVybiBmaWx0ZXIodGhpcy5faGlzdG9yeSwgdmlzaXQgPT4gdGhpcy5fbWF0Y2hlcyh2aXNpdCkpLnNsaWNlKC10aGlzLl9saW1pdCk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIC8vIEB0cmFjZVxuICAvLyAgIG1vc3RSZWNlbnRWYWx1ZU9mPFQ9YW55PihwYXJhbTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQgPSBudWxsKTogVCB7XG4gIC8vICAgICBjb25zdCBsYXN0U3RhdGVXaXRoUGFyYW0gPSBmaW5kTGFzdCh0aGlzLmFsbFRoYXRNYXRjaCgpLCBzdGF0ZSA9PiAhaXNOaWwoc3RhdGUuZ2V0KHBhcmFtKSkpO1xuICAvLyAgICAgcmV0dXJuIGlzTmlsKGxhc3RTdGF0ZVdpdGhQYXJhbSkgPyBkZWZhdWx0VmFsdWUgOiBsYXN0U3RhdGVXaXRoUGFyYW0uZ2V0KHBhcmFtKTtcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbGltaXQobGltaXQ6IG51bWJlcik6IHRoaXMge1xuICAvLyAgICAgdGhpcy5fbGltaXQgPSBsaW1pdDtcbiAgLy8gICAgIHJldHVybiB0aGlzO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBtYXRjaGluZyhwcmVkaWNhdGU6ICh2aXNpdDogVmlzaXQuU3RhdGUpID0+IGJvb2xlYW4pOiB0aGlzIHtcbiAgLy8gICAgIHRoaXMuX3ByZWRpY2F0ZSA9IHByZWRpY2F0ZTtcbiAgLy8gICAgIHJldHVybiB0aGlzO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBfbWF0Y2hlcyh2aXNpdDogVmlzaXQuU3RhdGUpIHtcbiAgLy8gICAgIHJldHVybiB0aGlzLl9pc1BsYWNlTWF0Y2godmlzaXQpICYmIHRoaXMuX3ByZWRpY2F0ZSh2aXNpdCk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIF9pc1BsYWNlTWF0Y2godmlzaXQ6IFZpc2l0LlN0YXRlKSB7XG4gIC8vICAgICByZXR1cm4gdGhpcy5fcGxhY2VzLmxlbmd0aCA8IDEgfHwgdGhpcy5fcGxhY2VzLmluY2x1ZGVzKHZpc2l0LnBsYWNlKVxuICAvLyAgIH1cbiAgLy9cbiAgLy8gfVxuXG59XG4iXX0=
|