@coolon/angular-ui-powerups 16.1.0-aplpha.189 → 16.1.0-aplpha.2
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/README.md +0 -4
- package/assets/activities/activities.scss +6 -8
- package/assets/activities/input-activities.scss +6 -14
- package/assets/form.scss +23 -77
- package/assets/icons.scss +1 -2
- package/assets/interaction/editor/inline-string-editor.scss +0 -4
- package/assets/interaction.scss +1 -1
- package/assets/styles.scss +0 -4
- package/assets/table.scss +30 -55
- package/assets/tabs.scss +2 -15
- package/esm2022/lib/angular-ui-powerups.module.mjs +9 -9
- package/esm2022/lib/animations/slide-animations.mjs +10 -15
- package/esm2022/lib/components/alignment.mjs +1 -1
- package/esm2022/lib/components/busy-overlay/busy-overlay.component.mjs +12 -7
- package/esm2022/lib/components/cards/abstract-card-container.component.mjs +7 -30
- package/esm2022/lib/components/cards/card-container/card-container.component.mjs +6 -6
- package/esm2022/lib/components/cards/card-stack/card-stack.component.mjs +81 -0
- package/esm2022/lib/components/commands/command/command.component.mjs +33 -35
- package/esm2022/lib/components/commands/command-face/command-face.component.mjs +5 -13
- package/esm2022/lib/components/commands/command-face.mjs +11 -12
- package/esm2022/lib/components/commands/flex.component.mjs +4 -4
- package/esm2022/lib/components/commands/group/command-container.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-aware.component.mjs +8 -31
- package/esm2022/lib/components/commands/group/popup-container.mjs +1 -1
- package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +25 -27
- package/esm2022/lib/components/commands/group/popup-menu/more-menu.component.mjs +22 -13
- package/esm2022/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +12 -17
- package/esm2022/lib/components/commands/group/popup-menu/popup-menu.component.mjs +23 -14
- package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +19 -12
- package/esm2022/lib/components/commands/separator.component.mjs +14 -8
- package/esm2022/lib/components/components.module.mjs +59 -79
- package/esm2022/lib/components/disposable-component.mjs +42 -38
- package/esm2022/lib/components/empty-state/empty-state.component.mjs +9 -5
- package/esm2022/lib/components/exports.mjs +7 -15
- package/esm2022/lib/components/focus-container/focus-container.component.mjs +4 -4
- package/esm2022/lib/components/focusable.component.mjs +5 -5
- package/esm2022/lib/components/forms/abstract-input.component.mjs +18 -66
- package/esm2022/lib/components/forms/abstract-list-input.component.mjs +4 -4
- package/esm2022/lib/components/forms/abstract-value-input.component.mjs +4 -4
- package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +13 -12
- package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +8 -10
- package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +10 -10
- package/esm2022/lib/components/forms/number-input/number-input.component.mjs +13 -90
- package/esm2022/lib/components/forms/password-input/password-input.component.mjs +7 -44
- package/esm2022/lib/components/forms/select-input/select-input.component.mjs +16 -17
- package/esm2022/lib/components/forms/string-input/string-input.component.mjs +16 -35
- package/esm2022/lib/components/forms/text-input/text-input.component.mjs +8 -12
- package/esm2022/lib/components/icon/icon.component.mjs +7 -10
- package/esm2022/lib/components/labelled-value/labelled-value.component.mjs +4 -4
- package/esm2022/lib/components/loading-container/loading-container.component.mjs +12 -7
- package/esm2022/lib/components/noop/noop.component.mjs +7 -5
- package/esm2022/lib/components/resize-aware.component.mjs +27 -64
- package/esm2022/lib/components/scroll-container/scroll-container.component.mjs +5 -5
- package/esm2022/lib/components/section-header/section-header.component.mjs +4 -4
- package/esm2022/lib/components/switch-case/switch-case.component.mjs +17 -15
- package/esm2022/lib/components/tables/abstract-table-model.mjs +63 -112
- package/esm2022/lib/components/tables/abstract-table.component.mjs +8 -22
- package/esm2022/lib/components/tables/column/column-list-model.mjs +44 -0
- package/esm2022/lib/components/tables/column/column-model.mjs +10 -21
- package/esm2022/lib/components/tables/column/column-template/column-template.directive.mjs +4 -4
- package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
- package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +5 -5
- package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +5 -5
- package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +5 -6
- package/esm2022/lib/components/tables/column/property-column-model.mjs +5 -5
- package/esm2022/lib/components/tables/column/selection-column-model.mjs +13 -35
- package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +7 -7
- package/esm2022/lib/components/tables/editor/edit-session.mjs +2 -4
- package/esm2022/lib/components/tables/editor/editable-cell-renderer.mjs +1 -1
- package/esm2022/lib/components/tables/filter/column-text-search-formatter.mjs +1 -1
- package/esm2022/lib/components/tables/filter/enable-cell-text-search.decorator.mjs +2 -3
- package/esm2022/lib/components/tables/filter/table-filter-model.mjs +9 -14
- package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +2 -16
- package/esm2022/lib/components/tables/paginator/paginator.component.mjs +5 -5
- package/esm2022/lib/components/tables/renderer/cell-editors.mjs +1 -1
- package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +7 -23
- package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +8 -6
- package/esm2022/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.mjs +7 -5
- package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +8 -18
- package/esm2022/lib/components/tables/renderer/selection-cell/selection-cell.component.mjs +8 -11
- package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +51 -161
- package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +9 -9
- package/esm2022/lib/components/tables/renderer/table-header-cell/table-header-cell.component.mjs +7 -5
- package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.mjs +33 -0
- package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +60 -0
- package/esm2022/lib/components/tables/table/table-model.mjs +3 -12
- package/esm2022/lib/components/tables/table/table.component.mjs +64 -42
- package/esm2022/lib/components/tables/table-row-menu/table-row-menu.component.mjs +84 -0
- package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +4 -5
- package/esm2022/lib/components/tables/tree-table/flattened-tree-list-model.mjs +1 -1
- package/esm2022/lib/components/tables/tree-table/tree-expansion-model.mjs +1 -1
- package/esm2022/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +7 -5
- package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +5 -5
- package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +4 -4
- package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +8 -15
- package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +7 -4
- package/esm2022/lib/components/text/markdown/markdown.component.mjs +6 -6
- package/esm2022/lib/components/track.mjs +1 -1
- package/esm2022/lib/components/types/bounds.class.mjs +1 -1
- package/esm2022/lib/components/types/loadable.mjs +2 -0
- package/esm2022/lib/components/vertical-focus-container/vertical-focus-container.component.mjs +4 -4
- package/esm2022/lib/directives/command.directive.mjs +14 -25
- package/esm2022/lib/directives/directives.module.mjs +10 -10
- package/esm2022/lib/directives/exports.mjs +1 -2
- package/esm2022/lib/directives/focus-binding-factory.mjs +4 -4
- package/esm2022/lib/directives/focus-binding.directive.mjs +5 -5
- package/esm2022/lib/directives/focus-binding.mjs +1 -1
- package/esm2022/lib/directives/garbage-collector.directive.mjs +4 -5
- package/esm2022/lib/directives/highlight-text-model.directive.mjs +4 -4
- package/esm2022/lib/directives/highlight.pipe.mjs +11 -12
- package/esm2022/lib/interaction/abstract-interaction-context.mjs +7 -6
- package/esm2022/lib/interaction/activity-ref.mjs +2 -2
- package/esm2022/lib/interaction/activity.mjs +23 -23
- package/esm2022/lib/interaction/alert.mjs +2 -2
- package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +10 -13
- package/esm2022/lib/interaction/components/abstract-dialog.component.mjs +45 -4
- package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +17 -29
- package/esm2022/lib/interaction/components/activity-body/activity-body.component.mjs +4 -10
- package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +19 -50
- package/esm2022/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +19 -55
- package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +6 -6
- package/esm2022/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.mjs +3 -3
- package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +4 -4
- package/esm2022/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +4 -4
- package/esm2022/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +4 -4
- package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +4 -4
- package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +4 -4
- package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +12 -12
- package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +10 -6
- package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +10 -6
- package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +11 -9
- package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
- package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-editor-model.mjs +2 -2
- package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +9 -9
- package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +9 -25
- package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +5 -6
- package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +38 -44
- package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +12 -14
- package/esm2022/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.mjs +5 -6
- package/esm2022/lib/interaction/confirm.mjs +2 -26
- package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +6 -6
- package/esm2022/lib/interaction/exports.mjs +1 -6
- package/esm2022/lib/interaction/in-place-interaction-context.mjs +1 -1
- package/esm2022/lib/interaction/interaction-context.mjs +2 -3
- package/esm2022/lib/interaction/interaction.module.mjs +36 -44
- package/esm2022/lib/interaction/route-synchronisation-adapter.mjs +1 -1
- package/esm2022/lib/interaction/services/interaction-service-routing-adapter.mjs +4 -4
- package/esm2022/lib/interaction/services/interaction.service.mjs +10 -22
- package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +10 -9
- package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +5 -23
- package/esm2022/lib/interaction/services/modal-interaction-context.factory.mjs +1 -1
- package/esm2022/lib/place/components/abstract-place-navigation.component.mjs +5 -15
- package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +9 -8
- package/esm2022/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +7 -5
- package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +12 -10
- package/esm2022/lib/place/components/place-outlet/route-animations.mjs +1 -1
- package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +10 -15
- package/esm2022/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +7 -7
- package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
- package/esm2022/lib/place/guards/noop-auth-guard.service.mjs +7 -5
- package/esm2022/lib/place/guards/place.guard.mjs +9 -10
- package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
- package/esm2022/lib/place/navigation/session/abstract-pop-state-navigation.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/event-clean-up-session.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +1 -1
- package/esm2022/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +1 -1
- package/esm2022/lib/place/navigation/session/interactions/navigating-during-interaction.mjs +2 -2
- package/esm2022/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.mjs +1 -1
- package/esm2022/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.mjs +3 -3
- package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +6 -3
- package/esm2022/lib/place/navigation/session/navigating.mjs +2 -2
- package/esm2022/lib/place/navigation/session/navigation-context.mjs +1 -1
- package/esm2022/lib/place/navigation/session/navigation-session.mjs +2 -2
- package/esm2022/lib/place/navigation/session/pop-state-navigation.mjs +1 -1
- package/esm2022/lib/place/place-access-guard.mjs +1 -1
- package/esm2022/lib/place/place-auth-service.mjs +6 -7
- package/esm2022/lib/place/place-component.mjs +58 -54
- package/esm2022/lib/place/place-config.mjs +1 -1
- package/esm2022/lib/place/place-definition.mjs +4 -15
- package/esm2022/lib/place/place-history.mjs +8 -6
- package/esm2022/lib/place/place-router.mjs +68 -84
- package/esm2022/lib/place/place.decorator.mjs +2 -2
- package/esm2022/lib/place/place.module.mjs +16 -16
- package/esm2022/lib/place/route/formatter.mjs +2 -2
- package/esm2022/lib/place/route/json-types.mjs +1 -1
- package/esm2022/lib/place/route/parameter-decorators.mjs +50 -54
- package/esm2022/lib/place/route/parameter-definition.mjs +2 -6
- package/esm2022/lib/place/route/parameter-sanitiser.mjs +2 -7
- package/esm2022/lib/place/route/parameter-snapshot.mjs +1 -1
- package/esm2022/lib/place/route/visit-segment-sanitiser.mjs +1 -1
- package/esm2022/lib/place/url-service.mjs +4 -4
- package/esm2022/lib/place/url-snapshot.mjs +3 -3
- package/esm2022/lib/place/visit-segment.mjs +2 -2
- package/esm2022/lib/place/visit.mjs +2 -2
- package/esm2022/lib/services/markdown/markdown.service.mjs +7 -5
- package/esm2022/lib/services/markdown/pill-plugin.mjs +3 -1
- package/esm2022/lib/services/visibility-service.mjs +7 -7
- package/fesm2022/coolon-angular-ui-powerups.mjs +3003 -4341
- package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/angular-ui-powerups.module.d.ts +5 -5
- package/lib/animations/slide-animations.d.ts +0 -1
- package/lib/components/busy-overlay/busy-overlay.component.d.ts +4 -1
- package/lib/components/cards/abstract-card-container.component.d.ts +3 -6
- package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
- package/lib/components/cards/card-stack/card-stack.component.d.ts +68 -0
- package/lib/components/commands/command/command.component.d.ts +10 -9
- package/lib/components/commands/command-face/command-face.component.d.ts +0 -2
- package/lib/components/commands/command-face.d.ts +9 -8
- package/lib/components/commands/group/popup-aware.component.d.ts +4 -9
- package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +5 -5
- package/lib/components/commands/group/popup-menu/more-menu.component.d.ts +4 -2
- package/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.d.ts +1 -3
- package/lib/components/commands/group/popup-menu/popup-menu.component.d.ts +4 -2
- package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +7 -3
- package/lib/components/commands/separator.component.d.ts +4 -2
- package/lib/components/components.module.d.ts +53 -57
- package/lib/components/disposable-component.d.ts +9 -17
- package/lib/components/empty-state/empty-state.component.d.ts +4 -1
- package/lib/components/exports.d.ts +6 -14
- package/lib/components/forms/abstract-input.component.d.ts +7 -16
- package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +2 -2
- package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
- package/lib/components/forms/number-input/number-input.component.d.ts +4 -16
- package/lib/components/forms/password-input/password-input.component.d.ts +1 -7
- package/lib/components/forms/select-input/select-input.component.d.ts +3 -4
- package/lib/components/forms/string-input/string-input.component.d.ts +1 -7
- package/lib/components/forms/text-input/text-input.component.d.ts +0 -3
- package/lib/components/loading-container/loading-container.component.d.ts +4 -1
- package/lib/components/noop/noop.component.d.ts +1 -0
- package/lib/components/resize-aware.component.d.ts +6 -25
- package/lib/components/switch-case/switch-case.component.d.ts +7 -6
- package/lib/components/tables/abstract-table-model.d.ts +25 -50
- package/lib/components/tables/abstract-table.component.d.ts +5 -6
- package/lib/components/tables/column/column-list-model.d.ts +13 -0
- package/lib/components/tables/column/column-model.d.ts +4 -8
- package/lib/components/tables/column/custom-template-column-model.d.ts +2 -3
- package/lib/components/tables/column/custom-value-column-model.d.ts +2 -3
- package/lib/components/tables/column/editor-controls-column-model.d.ts +2 -3
- package/lib/components/tables/column/list-propery-column-model.d.ts +2 -3
- package/lib/components/tables/column/property-column-model.d.ts +2 -3
- package/lib/components/tables/column/selection-column-model.d.ts +4 -10
- package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +3 -3
- package/lib/components/tables/editor/edit-session.d.ts +1 -1
- package/lib/components/tables/editor/editable-cell-renderer.d.ts +1 -1
- package/lib/components/tables/filter/enable-cell-text-search.decorator.d.ts +1 -1
- package/lib/components/tables/filter/text-search-predicate.d.ts +0 -9
- package/lib/components/tables/renderer/cell-portal-ref.d.ts +14 -21
- package/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.d.ts +1 -0
- package/lib/components/tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component.d.ts +1 -0
- package/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.d.ts +1 -2
- package/lib/components/tables/renderer/table-body/table-body.component.d.ts +19 -43
- package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +3 -2
- package/lib/components/tables/renderer/table-header-cell/table-header-cell.component.d.ts +1 -0
- package/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.d.ts +15 -0
- package/lib/components/tables/renderer/{table-custom-more-menu/table-custom-more-menu.component.d.ts → table-more-menu/table-more-menu.component.d.ts} +8 -9
- package/lib/components/tables/table/table-model.d.ts +4 -4
- package/lib/components/tables/table/table.component.d.ts +11 -15
- package/lib/components/tables/table-row-menu/table-row-menu.component.d.ts +28 -0
- package/lib/components/tables/tree-table/tree-expansion-model.d.ts +2 -2
- package/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.d.ts +1 -0
- package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
- package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
- package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -5
- package/lib/components/tables/tree-table/tree-table-model.d.ts +5 -4
- package/lib/components/text/markdown/markdown.component.d.ts +1 -1
- package/lib/components/types/loadable.d.ts +5 -0
- package/lib/directives/command.directive.d.ts +5 -7
- package/lib/directives/directives.module.d.ts +5 -5
- package/lib/directives/exports.d.ts +0 -1
- package/lib/interaction/abstract-interaction-context.d.ts +1 -1
- package/lib/interaction/activity-ref.d.ts +2 -2
- package/lib/interaction/activity.d.ts +7 -7
- package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +1 -2
- package/lib/interaction/components/abstract-dialog.component.d.ts +14 -5
- package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +9 -12
- package/lib/interaction/components/activity-body/activity-body.component.d.ts +1 -2
- package/lib/interaction/components/activity-container/activity-container.component.d.ts +5 -11
- package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +5 -4
- package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
- package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +1 -6
- package/lib/interaction/components/editors/edit-context.d.ts +1 -1
- package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +4 -6
- package/lib/interaction/components/input-activities/string-input-activity.d.ts +1 -1
- package/lib/interaction/confirm.d.ts +0 -4
- package/lib/interaction/directives/interaction-context-trigger-for.directive.d.ts +3 -3
- package/lib/interaction/exports.d.ts +0 -5
- package/lib/interaction/interaction-context.d.ts +1 -7
- package/lib/interaction/interaction.module.d.ts +33 -35
- package/lib/interaction/services/interaction-service-routing-adapter.d.ts +2 -2
- package/lib/interaction/services/interaction.service.d.ts +1 -2
- package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.d.ts +3 -2
- package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.d.ts +3 -4
- package/lib/place/components/abstract-place-navigation.component.d.ts +0 -1
- package/lib/place/components/not-authorised-notice/not-authorised-notice.component.d.ts +1 -0
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -3
- package/lib/place/components/side-place-navigation/side-place-navigation.component.d.ts +1 -2
- package/lib/place/guards/noop-auth-guard.service.d.ts +1 -0
- package/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.d.ts +1 -0
- package/lib/place/place-auth-service.d.ts +4 -4
- package/lib/place/place-component.d.ts +16 -8
- package/lib/place/place-definition.d.ts +0 -2
- package/lib/place/place-history.d.ts +1 -0
- package/lib/place/place-router.d.ts +5 -10
- package/lib/place/place.decorator.d.ts +1 -1
- package/lib/place/place.module.d.ts +8 -8
- package/lib/place/route/json-types.d.ts +3 -1
- package/lib/place/route/parameter-decorators.d.ts +4 -3
- package/lib/place/route/parameter-definition.d.ts +2 -2
- package/lib/place/route/parameter-sanitiser.d.ts +0 -7
- package/lib/place/visit-segment.d.ts +4 -4
- package/lib/place/visit.d.ts +2 -2
- package/lib/services/markdown/markdown.service.d.ts +1 -0
- package/lib/services/visibility-service.d.ts +1 -1
- package/package.json +19 -18
- package/assets/draw.scss +0 -20
- package/assets/layout.scss +0 -3
- package/assets/place.scss +0 -31
- package/esm2022/lib/components/commands/button-renderer/button-renderer.component.mjs +0 -115
- package/esm2022/lib/components/file/file-download/file-download.component.mjs +0 -89
- package/esm2022/lib/components/forms/form-field.mjs +0 -2
- package/esm2022/lib/components/forms/search-input/search-input.component.mjs +0 -33
- package/esm2022/lib/components/loadable-component.mjs +0 -69
- package/esm2022/lib/components/tables/column/column-manager.mjs +0 -81
- package/esm2022/lib/components/tables/column/column-order-manager.mjs +0 -19
- package/esm2022/lib/components/tables/footer/footer-row-model.mjs +0 -38
- package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +0 -7
- package/esm2022/lib/components/tables/renderer/table-action-column/menu-builder.mjs +0 -2
- package/esm2022/lib/components/tables/renderer/table-action-column/table-action-column.component.mjs +0 -153
- package/esm2022/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu-popup.component.mjs +0 -45
- package/esm2022/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu.component.mjs +0 -71
- package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +0 -30
- package/esm2022/lib/directives/resize-observer.directive.mjs +0 -40
- package/esm2022/lib/interaction/activity-context.mjs +0 -4
- package/esm2022/lib/interaction/components/alert-renderer/alert-renderer.component.mjs +0 -55
- package/esm2022/lib/interaction/components/confirm-renderer/confirm-renderer.component.mjs +0 -54
- package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +0 -134
- package/esm2022/lib/interaction/interaction-context-provider.mjs +0 -17
- package/lib/components/commands/button-renderer/button-renderer.component.d.ts +0 -30
- package/lib/components/file/file-download/file-download.component.d.ts +0 -45
- package/lib/components/forms/form-field.d.ts +0 -5
- package/lib/components/forms/search-input/search-input.component.d.ts +0 -10
- package/lib/components/loadable-component.d.ts +0 -20
- package/lib/components/tables/column/column-manager.d.ts +0 -19
- package/lib/components/tables/column/column-order-manager.d.ts +0 -20
- package/lib/components/tables/footer/footer-row-model.d.ts +0 -22
- package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +0 -6
- package/lib/components/tables/renderer/table-action-column/menu-builder.d.ts +0 -7
- package/lib/components/tables/renderer/table-action-column/table-action-column.component.d.ts +0 -42
- package/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu-popup.component.d.ts +0 -19
- package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +0 -11
- package/lib/directives/resize-observer.directive.d.ts +0 -16
- package/lib/interaction/activity-context.d.ts +0 -9
- package/lib/interaction/components/alert-renderer/alert-renderer.component.d.ts +0 -17
- package/lib/interaction/components/confirm-renderer/confirm-renderer.component.d.ts +0 -15
- package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +0 -53
- package/lib/interaction/interaction-context-provider.d.ts +0 -11
|
@@ -2,13 +2,15 @@ import { Component, Input } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class DefaultHeaderCellRendererComponent {
|
|
4
4
|
headerText;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
}
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DefaultHeaderCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DefaultHeaderCellRendererComponent, selector: "aup-default-header-renderer", inputs: { headerText: "headerText" }, ngImport: i0, template: "{{headerText}}\n", styles: [""] });
|
|
7
9
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DefaultHeaderCellRendererComponent, decorators: [{
|
|
9
11
|
type: Component,
|
|
10
12
|
args: [{ selector: 'aup-default-header-renderer', template: "{{headerText}}\n" }]
|
|
11
|
-
}], propDecorators: { headerText: [{
|
|
13
|
+
}], ctorParameters: function () { return []; }, propDecorators: { headerText: [{
|
|
12
14
|
type: Input
|
|
13
15
|
}] } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1oZWFkZXItY2VsbC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvZGVmYXVsdC1oZWFkZXItY2VsbC1yZW5kZXJlci9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9qRCxNQUFNLE9BQU8sa0NBQWtDO0lBRzdDLFVBQVUsQ0FBUztJQUVuQjtJQUNBLENBQUM7dUdBTlUsa0NBQWtDOzJGQUFsQyxrQ0FBa0MseUdDUC9DLGtCQUNBOzsyRkRNYSxrQ0FBa0M7a0JBTDlDLFNBQVM7K0JBQ0UsNkJBQTZCOzBFQU92QyxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1kZWZhdWx0LWhlYWRlci1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC1oZWFkZXItY2VsbC1yZW5kZXJlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIGhlYWRlclRleHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxufVxuIiwie3toZWFkZXJUZXh0fX1cbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
|
-
import { MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox';
|
|
4
3
|
import { CanProxy, Command, MultipleSelectionModel, Proxify, proxify, SelectionModel } from '@coolon/pectin';
|
|
5
4
|
import { DisposableComponent } from '../../../disposable-component';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "
|
|
7
|
+
import * as i2 from "../../../../directives/command.directive";
|
|
8
|
+
import * as i3 from "@angular/material/legacy-checkbox";
|
|
9
9
|
export class SelectionHeaderCellComponent extends DisposableComponent {
|
|
10
10
|
selectCommand;
|
|
11
11
|
#selectionModel_accessor_storage = proxify((SelectionModel));
|
|
@@ -17,8 +17,7 @@ export class SelectionHeaderCellComponent extends DisposableComponent {
|
|
|
17
17
|
super();
|
|
18
18
|
this.selectCommand = Command.create(() => {
|
|
19
19
|
this.selectionModel.toggleAllCommand.execute();
|
|
20
|
-
})
|
|
21
|
-
.enableWhile(this.selectionModel.toggleAllCommand.enabled$);
|
|
20
|
+
});
|
|
22
21
|
}
|
|
23
22
|
isSelected() {
|
|
24
23
|
return this.ifMultiSelectionModel(m => m.allSelected$.value, false);
|
|
@@ -40,24 +39,15 @@ export class SelectionHeaderCellComponent extends DisposableComponent {
|
|
|
40
39
|
return otherwise;
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.selectCommand.execute();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectionHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectionHeaderCellComponent, selector: "aup-selection-header-cell", providers: [
|
|
50
|
-
{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }
|
|
51
|
-
], usesInheritance: true, ngImport: i0, template: "<mat-checkbox *ngIf=\"isVisible()\"\n (click)=\"handleClick($event)\"\n [checked]=\"isSelected()\"\n [indeterminate]=\"this.isIntermediate()\"\n [color]=\"color\"\n></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SelectionHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SelectionHeaderCellComponent, selector: "aup-selection-header-cell", usesInheritance: true, ngImport: i0, template: "<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\" [color]=\"color\"></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: i3.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
|
|
52
44
|
}
|
|
53
45
|
__decorate([
|
|
54
46
|
Proxify(),
|
|
55
47
|
__metadata("design:type", Object)
|
|
56
48
|
], SelectionHeaderCellComponent.prototype, "selectionModel", null);
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SelectionHeaderCellComponent, decorators: [{
|
|
58
50
|
type: Component,
|
|
59
|
-
args: [{ selector: 'aup-selection-header-cell',
|
|
60
|
-
{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }
|
|
61
|
-
], template: "<mat-checkbox *ngIf=\"isVisible()\"\n (click)=\"handleClick($event)\"\n [checked]=\"isSelected()\"\n [indeterminate]=\"this.isIntermediate()\"\n [color]=\"color\"\n></mat-checkbox>\n" }]
|
|
51
|
+
args: [{ selector: 'aup-selection-header-cell', template: "<mat-checkbox *ngIf=\"isVisible()\" [pectinCommand]=\"selectCommand\" [checked]=\"isSelected()\" [indeterminate]=\"this.isIntermediate()\" [color]=\"color\"></mat-checkbox>\n" }]
|
|
62
52
|
}], ctorParameters: function () { return []; }, propDecorators: { selectionModel: [] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWhlYWRlci1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3JlbmRlcmVyL3NlbGVjdC1oZWFkZXItY2VsbC9zZWxlY3Rpb24taGVhZGVyLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvc2VsZWN0LWhlYWRlci1jZWxsL3NlbGVjdGlvbi1oZWFkZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd4QyxPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7OztBQU9sRSxNQUFNLE9BQU8sNEJBQWtDLFNBQVEsbUJBQW1CO0lBRS9ELGFBQWEsQ0FBZ0I7SUFHN0IsbUNBQWlCLE9BQU8sQ0FBQyxDQUFBLGNBQW1CLENBQUEsQ0FBQyxDQUFDO0lBQTlDLElBQUEsY0FBYyxvREFBZ0M7SUFBOUMsSUFBQSxjQUFjLDBEQUFnQztJQUV2RCxLQUFLLENBQWU7SUFDcEIsb0JBQW9CLENBQVU7SUFFOUI7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksc0JBQXNCLENBQUE7SUFDakYsQ0FBQztJQUVELHFCQUFxQixDQUFJLFFBQXlELEVBQUUsU0FBYTtRQUMvRixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO1lBQ2hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxjQUE2RCxDQUFDLENBQUM7U0FDckY7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzt1R0F2Q1UsNEJBQTRCOzJGQUE1Qiw0QkFBNEIsd0ZDWHpDLGdMQUNBOztBRGVXO0lBRFIsT0FBTyxFQUFFOztrRUFDNkM7MkZBTDVDLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSwyQkFBMkI7MEVBUzVCLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RoZW1lUGFsZXR0ZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcblxuaW1wb3J0IHtDYW5Qcm94eSwgQ29tbWFuZCwgTXVsdGlwbGVTZWxlY3Rpb25Nb2RlbCwgUHJveGlmeSwgcHJveGlmeSwgU2VsZWN0aW9uTW9kZWx9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7RGlzcG9zYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtc2VsZWN0aW9uLWhlYWRlci1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGlvbi1oZWFkZXItY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdGlvbi1oZWFkZXItY2VsbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkhlYWRlckNlbGxDb21wb25lbnQ8Um93PiBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xuXG4gIHJlYWRvbmx5IHNlbGVjdENvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG5cbiAgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzZWxlY3Rpb25Nb2RlbCA9IHByb3hpZnkoU2VsZWN0aW9uTW9kZWw8Um93Pik7XG5cbiAgY29sb3I6IFRoZW1lUGFsZXR0ZTtcbiAgZW5hYmxlSGVhZGVyQ29udHJvbHM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNlbGVjdENvbW1hbmQgPSBDb21tYW5kLmNyZWF0ZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnRvZ2dsZUFsbENvbW1hbmQuZXhlY3V0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pZk11bHRpU2VsZWN0aW9uTW9kZWwobSA9PiBtLmFsbFNlbGVjdGVkJC52YWx1ZSwgZmFsc2UpO1xuICB9XG5cbiAgaXNJbnRlcm1lZGlhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWZNdWx0aVNlbGVjdGlvbk1vZGVsKG0gPT4gbS5zb21lU2VsZWN0ZWQkLnZhbHVlLCBmYWxzZSk7XG4gIH1cblxuICBpc1Zpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlSGVhZGVyQ29udHJvbHMgJiYgdGhpcy5pc011bHRpU2VsZWN0aW9uTW9kZWwoKVxuICB9XG5cbiAgaXNNdWx0aVNlbGVjdGlvbk1vZGVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBDYW5Qcm94eS5maW5kUm9vdCh0aGlzLnNlbGVjdGlvbk1vZGVsKSBpbnN0YW5jZW9mIE11bHRpcGxlU2VsZWN0aW9uTW9kZWxcbiAgfVxuXG4gIGlmTXVsdGlTZWxlY3Rpb25Nb2RlbDxUPihydW5uYWJsZTogKG1vZGVsJDogTXVsdGlwbGVTZWxlY3Rpb25Nb2RlbDxSb3csIGFueT4pID0+IFQsIG90aGVyd2lzZT86IFQpOiBUIHtcbiAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0aW9uTW9kZWwoKSkge1xuICAgICAgcmV0dXJuIHJ1bm5hYmxlKHRoaXMuc2VsZWN0aW9uTW9kZWwgYXMgdW5rbm93biBhcyBNdWx0aXBsZVNlbGVjdGlvbk1vZGVsPFJvdywgYW55Pik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvdGhlcndpc2U7XG4gICAgfVxuICB9XG59XG4iLCI8bWF0LWNoZWNrYm94ICpuZ0lmPVwiaXNWaXNpYmxlKClcIiBbcGVjdGluQ29tbWFuZF09XCJzZWxlY3RDb21tYW5kXCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwidGhpcy5pc0ludGVybWVkaWF0ZSgpXCIgW2NvbG9yXT1cImNvbG9yXCI+PC9tYXQtY2hlY2tib3g+XG4iXX0=
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { MAT_CHECKBOX_DEFAULT_OPTIONS } from "@angular/material/checkbox";
|
|
3
2
|
import { DisposableComponent } from '../../../disposable-component';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/material/checkbox";
|
|
4
|
+
import * as i1 from "@angular/material/legacy-checkbox";
|
|
6
5
|
export class SelectionCellComponent extends DisposableComponent {
|
|
7
6
|
selectCommand;
|
|
8
7
|
row;
|
|
@@ -10,6 +9,8 @@ export class SelectionCellComponent extends DisposableComponent {
|
|
|
10
9
|
selectionModel;
|
|
11
10
|
color;
|
|
12
11
|
select($event) {
|
|
12
|
+
$event.preventDefault();
|
|
13
|
+
$event.stopPropagation();
|
|
13
14
|
if (this.selectionModel) {
|
|
14
15
|
this.selectionModel.selectCommand.execute(this.row);
|
|
15
16
|
}
|
|
@@ -20,17 +21,13 @@ export class SelectionCellComponent extends DisposableComponent {
|
|
|
20
21
|
isDisabled() {
|
|
21
22
|
return !this.selectionModel || !this.selectionModel.isEnabled();
|
|
22
23
|
}
|
|
23
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
24
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.
|
|
25
|
-
{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }
|
|
26
|
-
], usesInheritance: true, ngImport: i0, template: "<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SelectionCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SelectionCellComponent, selector: "aup-selection-cell", inputs: { row: "row" }, usesInheritance: true, ngImport: i0, template: "<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
|
|
27
26
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SelectionCellComponent, decorators: [{
|
|
29
28
|
type: Component,
|
|
30
|
-
args: [{ selector: 'aup-selection-cell',
|
|
31
|
-
{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }
|
|
32
|
-
], template: "<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\n" }]
|
|
29
|
+
args: [{ selector: 'aup-selection-cell', template: "<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\n" }]
|
|
33
30
|
}], propDecorators: { row: [{
|
|
34
31
|
type: Input
|
|
35
32
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvc2VsZWN0aW9uLWNlbGwvc2VsZWN0aW9uLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvc2VsZWN0aW9uLWNlbGwvc2VsZWN0aW9uLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJL0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7OztBQU9sRSxNQUFNLE9BQU8sc0JBQTRCLFNBQVEsbUJBQW1CO0lBRXpELGFBQWEsQ0FBZ0I7SUFHdEMsR0FBRyxDQUFLO0lBRU4sZ0hBQWdIO0lBQ2xILGNBQWMsQ0FBc0I7SUFFcEMsS0FBSyxDQUFlO0lBR3BCLE1BQU0sQ0FBQyxNQUFrQjtRQUN2QixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsRSxDQUFDO3VHQTNCVSxzQkFBc0I7MkZBQXRCLHNCQUFzQix5R0NYbkMsMEdBQ0E7OzJGRFVhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBUzlCLEdBQUc7c0JBREYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RoZW1lUGFsZXR0ZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcblxuaW1wb3J0IHtDb21tYW5kLCBTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHtEaXNwb3NhYmxlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1zZWxlY3Rpb24tY2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdGlvbi1jZWxsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uQ2VsbENvbXBvbmVudDxSb3c+IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCB7XG5cbiAgcmVhZG9ubHkgc2VsZWN0Q29tbWFuZDogQ29tbWFuZDx2b2lkPjtcblxuICBASW5wdXQoKVxuICByb3c6IFJvd1xuXG4gICAgLy8gTm90ZTogd2UncmUgbm90IHVzaW5nIHRyYWNrIGV4dGVybmFsIGhlcmUgYXMgaXQncyBpbmNyZWRpYmx5IHNsb3cgdG8gdXBkYXRlIHdoZW4gdGhlIHRhYmxlIGhhcyBhIGxvdCBvZiByb3dzLlxuICBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8Um93PjtcblxuICBjb2xvcjogVGhlbWVQYWxldHRlO1xuXG5cbiAgc2VsZWN0KCRldmVudDogTW91c2VFdmVudCkge1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RDb21tYW5kLmV4ZWN1dGUodGhpcy5yb3cpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0aGlzLnJvdyk7XG4gIH1cblxuICBpc0Rpc2FibGVkKCk6Ym9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGlvbk1vZGVsIHx8ICF0aGlzLnNlbGVjdGlvbk1vZGVsLmlzRW5hYmxlZCgpO1xuICB9XG5cbn1cbiIsIjxtYXQtY2hlY2tib3ggKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQpXCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCIgIFtjb2xvcl09XCJjb2xvclwiPjwvbWF0LWNoZWNrYm94PlxuIl19
|
|
@@ -1,119 +1,68 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import {
|
|
3
|
-
import { Component, Directive, ElementRef, HostBinding, Inject, InjectionToken, Input, Optional, ViewChild } from "@angular/core";
|
|
2
|
+
import { Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output } from "@angular/core";
|
|
4
3
|
import { Dsl, ListModel, MutableValueModel, Proxify, proxify, StoreInValueModel, ValueModel } from "@coolon/pectin";
|
|
5
|
-
import { TableVirtualScrollDataSource } from "ng-table-virtual-scroll";
|
|
6
4
|
import { ResizeAwareComponent } from "../../../resize-aware.component";
|
|
7
5
|
import { AbstractTableModel } from "../../abstract-table-model";
|
|
8
|
-
import { FooterRowModel } from "../../footer/footer-row-model";
|
|
9
6
|
import * as i0 from "@angular/core";
|
|
10
7
|
import * as i1 from "@angular/common";
|
|
11
|
-
import * as i2 from "@angular/material/table";
|
|
12
|
-
import * as i3 from "
|
|
13
|
-
import * as i4 from "
|
|
14
|
-
import * as i5 from "../table-cell/table-cell.component";
|
|
15
|
-
import * as i6 from "../table-header-cell/table-header-cell.component";
|
|
16
|
-
import * as i7 from "../table-footer-row/table-footer-row.component";
|
|
17
|
-
export const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
|
|
18
|
-
export class TableRowAttributesDirective {
|
|
19
|
-
elementRef;
|
|
20
|
-
aupTableRowAttributes;
|
|
21
|
-
constructor(elementRef) {
|
|
22
|
-
this.elementRef = elementRef;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
for (const attr in this.aupTableRowAttributes) {
|
|
26
|
-
this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
30
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: { aupTableRowAttributes: "aupTableRowAttributes" }, ngImport: i0 });
|
|
31
|
-
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, decorators: [{
|
|
33
|
-
type: Directive,
|
|
34
|
-
args: [{
|
|
35
|
-
selector: "[aupTableRowAttributes]",
|
|
36
|
-
}]
|
|
37
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { aupTableRowAttributes: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}] } });
|
|
8
|
+
import * as i2 from "@angular/material/legacy-table";
|
|
9
|
+
import * as i3 from "../table-cell/table-cell.component";
|
|
10
|
+
import * as i4 from "../table-header-cell/table-header-cell.component";
|
|
40
11
|
export class TableBodyComponent extends ResizeAwareComponent {
|
|
41
|
-
bufferMultiplier;
|
|
42
12
|
#data$_accessor_storage = proxify((ListModel));
|
|
43
13
|
get data$() { return this.#data$_accessor_storage; }
|
|
44
14
|
set data$(value) { this.#data$_accessor_storage = value; }
|
|
45
15
|
#tableModel_accessor_storage = proxify((AbstractTableModel));
|
|
46
16
|
get tableModel() { return this.#tableModel_accessor_storage; }
|
|
47
17
|
set tableModel(value) { this.#tableModel_accessor_storage = value; }
|
|
48
|
-
#footerRow_accessor_storage = proxify((FooterRowModel.Impl));
|
|
49
|
-
get footerRow() { return this.#footerRow_accessor_storage; }
|
|
50
|
-
set footerRow(value) { this.#footerRow_accessor_storage = value; }
|
|
51
18
|
#showHeader$_accessor_storage = proxify((ValueModel));
|
|
52
19
|
get showHeader$() { return this.#showHeader$_accessor_storage; }
|
|
53
20
|
set showHeader$(value) { this.#showHeader$_accessor_storage = value; }
|
|
54
21
|
#showHeader_accessor_storage = true;
|
|
55
22
|
get showHeader() { return this.#showHeader_accessor_storage; }
|
|
56
23
|
set showHeader(value) { this.#showHeader_accessor_storage = value; }
|
|
24
|
+
visibleRowCount = new EventEmitter();
|
|
57
25
|
trackBy;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
|
|
28
|
+
* need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
|
|
29
|
+
* containment area.
|
|
30
|
+
*/
|
|
31
|
+
enableScrolling = false;
|
|
32
|
+
columns;
|
|
33
|
+
columnIds;
|
|
34
|
+
columnsById;
|
|
35
|
+
_visibleRowCount;
|
|
68
36
|
// TODO: support user defined header and row heights via css vars.
|
|
69
|
-
headerHeight
|
|
70
|
-
rowHeight
|
|
37
|
+
headerHeight = new MutableValueModel(56);
|
|
38
|
+
rowHeight = new MutableValueModel(48);
|
|
71
39
|
baseCssClass = "aup-table-component";
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
this.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.
|
|
88
|
-
}, { initialValue: "
|
|
40
|
+
constructor(elementRef, ngZone) {
|
|
41
|
+
super(elementRef, ngZone);
|
|
42
|
+
const { chain, when } = Dsl.disposeWith(this);
|
|
43
|
+
const actualHeaderHeight = chain(this.showHeader$).map(show => {
|
|
44
|
+
return show ? this.headerHeight.value : 0;
|
|
45
|
+
}, { dependsOn: this.headerHeight });
|
|
46
|
+
this._visibleRowCount = chain(this.boundsModel).map(bounds => {
|
|
47
|
+
// TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
|
|
48
|
+
const rawRowCount = (bounds.height - actualHeaderHeight.value) / this.rowHeight.value;
|
|
49
|
+
return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
|
|
50
|
+
}, {
|
|
51
|
+
dependsOn: [actualHeaderHeight, this.rowHeight],
|
|
52
|
+
postponeWhile: chain(this.boundsModel).pluckNumeric("height").isLessThan(1)
|
|
53
|
+
});
|
|
54
|
+
when(this._visibleRowCount).changes(visibleRows => {
|
|
55
|
+
this.visibleRowCount.emit(visibleRows);
|
|
56
|
+
}, { initialValue: "triggerChangeUnlessNil" });
|
|
89
57
|
this.onInit(() => {
|
|
90
|
-
this.columns
|
|
91
|
-
this.columnIds
|
|
92
|
-
this.columnsById
|
|
58
|
+
this.columns = chain(this.tableModel.columns);
|
|
59
|
+
this.columnIds = chain(this.columns).pluck("columnId");
|
|
60
|
+
this.columnsById = chain(this.columns).indexBy('columnId');
|
|
93
61
|
});
|
|
94
|
-
// const txo = new TransactionObserver({verbose: false}).onEvent(e => console.log(e.name, e.payload));
|
|
95
|
-
// txo.observe('this.virtualScrollRowRange$', this.virtualScrollRowRange$);
|
|
96
|
-
// txo.observe('this.virtualScrollSpacerSize$', this.virtualScrollSpacerSize$);
|
|
97
|
-
// txo.observe('this.virtualRows$', this.virtualRows$);
|
|
98
|
-
// txo.observe('this.tableBodyHeight$', this.tableBodyHeight$);
|
|
99
|
-
// txo.observe('this.virtualScrollActive$', this.virtualScrollActive$);
|
|
100
|
-
}
|
|
101
|
-
ngAfterViewInit() {
|
|
102
|
-
super.ngAfterViewInit();
|
|
103
|
-
if (this.scrollViewport) {
|
|
104
|
-
const { observe } = Dsl.disposeWith(this);
|
|
105
|
-
this.scrollViewport.elementScrolled().subscribe(() => this.notifyScrolled());
|
|
106
|
-
}
|
|
107
62
|
}
|
|
108
63
|
get hideHeader() {
|
|
109
64
|
return !this.showHeader;
|
|
110
65
|
}
|
|
111
|
-
get headerHeightCssVar() {
|
|
112
|
-
return `${this.headerHeight$.value}px`;
|
|
113
|
-
}
|
|
114
|
-
get rowHeightCssVar() {
|
|
115
|
-
return `${this.rowHeight$.value}px`;
|
|
116
|
-
}
|
|
117
66
|
isEditing(row) {
|
|
118
67
|
return !!this.tableModel.getEditSessionFor(row);
|
|
119
68
|
}
|
|
@@ -129,7 +78,7 @@ export class TableBodyComponent extends ResizeAwareComponent {
|
|
|
129
78
|
return this.tableModel.lastVisibleColumn$.query().value?.columnId === columnId;
|
|
130
79
|
}
|
|
131
80
|
getColumnClasses(columnId) {
|
|
132
|
-
const classes = [`aup-col-${this.columnsById
|
|
81
|
+
const classes = [`aup-col-${this.columnsById.get(columnId).dasherisedColumnId}`];
|
|
133
82
|
if (this.isFirstVisibleColumn(columnId)) {
|
|
134
83
|
classes.push("first-visible-column");
|
|
135
84
|
}
|
|
@@ -138,109 +87,50 @@ export class TableBodyComponent extends ResizeAwareComponent {
|
|
|
138
87
|
}
|
|
139
88
|
return classes;
|
|
140
89
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const tbody = this.elementRef.nativeElement.querySelector("tbody");
|
|
144
|
-
const bodyHeight = tbody.offsetHeight;
|
|
145
|
-
if (this.data$.length > 0 && bodyHeight < this.rowHeight$.value) {
|
|
146
|
-
// Hacks to get our virtual scroll to repaint
|
|
147
|
-
// Logger.get(this).log(`rowCount=${this.data$.length}, bodyHeight=${bodyHeight} -> virtual table not rendering, triggering resize to force repaint`)
|
|
148
|
-
window.dispatchEvent(new Event('resize'));
|
|
149
|
-
if (waitMillis < 500) {
|
|
150
|
-
this.scheduleTableHeightCheck(waitMillis + 50);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}, waitMillis);
|
|
154
|
-
}
|
|
155
|
-
notifyScrolled() {
|
|
156
|
-
this.virtualScrollActive$.value = true;
|
|
157
|
-
this.clearScrollTimeout();
|
|
158
|
-
this.scrollTimeout = setTimeout(() => {
|
|
159
|
-
return this.virtualScrollActive$.value = false;
|
|
160
|
-
}, 200);
|
|
161
|
-
}
|
|
162
|
-
clearScrollTimeout() {
|
|
163
|
-
if (this.scrollTimeout) {
|
|
164
|
-
clearTimeout(this.scrollTimeout);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
initialiseFooter($event) {
|
|
168
|
-
const portalRef = $event;
|
|
169
|
-
this.footerRow.onInit(portalRef.instance);
|
|
170
|
-
}
|
|
171
|
-
Proxify = Proxify;
|
|
172
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
173
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", footerRow: "footerRow", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader", "style.--aup-table-header-height": "this.headerHeightCssVar", "style.--aup-table-row-height": "this.rowHeightCssVar" } }, viewQueries: [{ propertyName: "scrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"$any(column)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"Proxify.hasTarget(footerRow)\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\" [ngClass]=\"'footer-cell'\">\n <aup-table-footer-row [row]=\"$any(footerRow)\"></aup-table-footer-row>\n </td>\n <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>\n </ng-container>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\"\n [headerHeight]=\"headerHeight$.value\"\n [bufferMultiplier]=\"bufferMultiplier\"\n>\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n<!-- Layout doesn't work yet - probably needs fixed footer row height -->\n<!-- <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"tableModel.footerRowPortalRef\">-->\n<!-- <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\">-->\n<!-- <ng-container [cdkPortalOutlet]=\"tableModel.footerRowPortalRef.portal\" (attached)=\"initialiseFooter($event)\"></ng-container>-->\n<!-- </td>-->\n<!-- <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>-->\n<!-- </ng-container>-->\n\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=virtual] table th{height:var(--aup-table-header-height);max-height:var(--aup-table-header-height);min-height:var(--aup-table-header-height)}:host[scrollMode=virtual] table td{height:var(--aup-table-row-height);max-height:var(--aup-table-row-height);min-height:var(--aup-table-row-height)}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i2.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "directive", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: ["aupTableRowAttributes"] }, { kind: "component", type: i5.TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: i6.TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }, { kind: "component", type: i7.TableFooterRow, selector: "aup-table-footer-row", inputs: ["row"] }] });
|
|
90
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TableBodyComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", enableScrolling: "enableScrolling" }, outputs: { visibleRowCount: "visibleRowCount" }, host: { properties: { "class.enable-scrolling": "this.enableScrolling", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.MatLegacyTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatLegacyHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatLegacyHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatLegacyColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatLegacyCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatLegacyRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatLegacyHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatLegacyCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatLegacyHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatLegacyRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: i4.TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
|
|
174
92
|
}
|
|
175
93
|
__decorate([
|
|
176
94
|
Proxify(),
|
|
177
|
-
__metadata("design:type",
|
|
95
|
+
__metadata("design:type", Object)
|
|
178
96
|
], TableBodyComponent.prototype, "data$", null);
|
|
179
97
|
__decorate([
|
|
180
98
|
Proxify(),
|
|
181
|
-
__metadata("design:type",
|
|
99
|
+
__metadata("design:type", Object)
|
|
182
100
|
], TableBodyComponent.prototype, "tableModel", null);
|
|
183
101
|
__decorate([
|
|
184
102
|
Proxify(),
|
|
185
|
-
__metadata("design:type",
|
|
186
|
-
], TableBodyComponent.prototype, "footerRow", null);
|
|
187
|
-
__decorate([
|
|
188
|
-
Proxify(),
|
|
189
|
-
__metadata("design:type", ValueModel)
|
|
103
|
+
__metadata("design:type", Object)
|
|
190
104
|
], TableBodyComponent.prototype, "showHeader$", null);
|
|
191
105
|
__decorate([
|
|
192
106
|
StoreInValueModel(),
|
|
193
107
|
__metadata("design:type", Object)
|
|
194
108
|
], TableBodyComponent.prototype, "showHeader", null);
|
|
195
|
-
|
|
196
|
-
Proxify(),
|
|
197
|
-
__metadata("design:type", ValueModel)
|
|
198
|
-
], TableBodyComponent.prototype, "scrollMode$", null);
|
|
199
|
-
__decorate([
|
|
200
|
-
StoreInValueModel(),
|
|
201
|
-
__metadata("design:type", String)
|
|
202
|
-
], TableBodyComponent.prototype, "scrollMode", null);
|
|
203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
204
110
|
type: Component,
|
|
205
|
-
args: [{ selector: "aup-table-body", template: "
|
|
206
|
-
}], ctorParameters: function () { return [{ type:
|
|
207
|
-
type: Inject,
|
|
208
|
-
args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
|
|
209
|
-
}, {
|
|
210
|
-
type: Optional
|
|
211
|
-
}] }]; }, propDecorators: { data$: [{
|
|
111
|
+
args: [{ selector: "aup-table-body", template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
|
|
112
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data$: [{
|
|
212
113
|
type: Input
|
|
213
114
|
}], tableModel: [{
|
|
214
115
|
type: Input
|
|
215
|
-
}], footerRow: [{
|
|
216
|
-
type: Input
|
|
217
116
|
}], showHeader$: [{
|
|
218
117
|
type: Input
|
|
219
118
|
}], showHeader: [{
|
|
220
119
|
type: Input
|
|
120
|
+
}], visibleRowCount: [{
|
|
121
|
+
type: Output
|
|
221
122
|
}], trackBy: [{
|
|
222
123
|
type: Input
|
|
223
|
-
}],
|
|
224
|
-
type: Input
|
|
225
|
-
}], scrollMode: [{
|
|
124
|
+
}], enableScrolling: [{
|
|
226
125
|
type: Input
|
|
227
126
|
}, {
|
|
228
127
|
type: HostBinding,
|
|
229
|
-
args: ["
|
|
230
|
-
}], scrollViewport: [{
|
|
231
|
-
type: ViewChild,
|
|
232
|
-
args: [CdkVirtualScrollViewport]
|
|
128
|
+
args: ["class.enable-scrolling"]
|
|
233
129
|
}], baseCssClass: [{
|
|
234
130
|
type: HostBinding,
|
|
235
131
|
args: ["class"]
|
|
236
132
|
}], hideHeader: [{
|
|
237
133
|
type: HostBinding,
|
|
238
134
|
args: ["class.hide-header"]
|
|
239
|
-
}], headerHeightCssVar: [{
|
|
240
|
-
type: HostBinding,
|
|
241
|
-
args: ["style.--aup-table-header-height"]
|
|
242
|
-
}], rowHeightCssVar: [{
|
|
243
|
-
type: HostBinding,
|
|
244
|
-
args: ["style.--aup-table-row-height"]
|
|
245
135
|
}] } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBRUwsU0FBUyxFQUVULFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHLElBQUksY0FBYyxDQUFTLDRDQUE0QyxDQUFDLENBQUE7QUFNbEksTUFBTSxPQUFPLDJCQUEyQjtJQUtQ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O3VCQUFDLE9BQU87Z0JBa0RoQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixrQkFBa0I7c0JBRHJCLFdBQVc7dUJBQUMsaUNBQWlDO2dCQU0xQyxlQUFlO3NCQURsQixXQUFXO3VCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWZ9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge0Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBEc2wsXG4gIExpc3RNb2RlbCxcbiAgTGlzdE1vZGVsQ2hhaW4sXG4gIE1hcE1vZGVsQ2hhaW4sXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBQcm94aWZ5LFxuICBwcm94aWZ5LFxuICBTdG9yZUluVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbFxufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7VGFibGVWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZX0gZnJvbSBcIm5nLXRhYmxlLXZpcnR1YWwtc2Nyb2xsXCI7XG5pbXBvcnQge1Jlc2l6ZUF3YXJlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC10YWJsZS1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7Rm9vdGVyUm93TW9kZWx9IGZyb20gXCIuLi8uLi9mb290ZXIvZm9vdGVyLXJvdy1tb2RlbFwiO1xuXG5leHBvcnQgY29uc3QgQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oXCJBVVBfVEFCTEVfVklSVFVBTF9TQ1JPTExfQlVGRkVSX01VTFRJUExJRVJcIilcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2F1cFRhYmxlUm93QXR0cmlidXRlc11cIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVSb3dBdHRyaWJ1dGVzRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBhdXBUYWJsZVJvd0F0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYXR0ciBpbiB0aGlzLmF1cFRhYmxlUm93QXR0cmlidXRlcykge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuYXVwVGFibGVSb3dBdHRyaWJ1dGVzW2F0dHJdKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC10YWJsZS1ib2R5XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFibGUtYm9keS5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFJvdyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBSZXNpemVBd2FyZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZGF0YSQ6IExpc3RNb2RlbDxSb3c+ID0gcHJveGlmeShMaXN0TW9kZWw8Um93Pik7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciB0YWJsZU1vZGVsOiBBYnN0cmFjdFRhYmxlTW9kZWw8Um93PiA9IHByb3hpZnkoQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZm9vdGVyUm93OiBGb290ZXJSb3dNb2RlbC5JbXBsPGFueT4gPSBwcm94aWZ5KEZvb3RlclJvd01vZGVsLkltcGw8YW55Pik7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzaG93SGVhZGVyJDogVmFsdWVNb2RlbDxib29sZWFuPiA9IHByb3hpZnkoVmFsdWVNb2RlbDxib29sZWFuPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3Igc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgdHJhY2tCeTogKGluZGV4OiBudW1iZXIsIGl0ZW06IFJvdykgPT4gYW55XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzY3JvbGxNb2RlJDogVmFsdWVNb2RlbDxUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZT4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8VGFibGVCb2R5Q29tcG9uZW50LlNjcm9sbE1vZGU+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLnNjcm9sbE1vZGVcIilcbiAgYWNjZXNzb3Igc2Nyb2xsTW9kZTogVGFibGVCb2R5Q29tcG9uZW50LlNjcm9sbE1vZGUgPSBcIm5vbmVcIjtcblxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydClcbiAgc2Nyb2xsVmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydFxuXG4gIGNvbHVtbnMkOiBMaXN0TW9kZWxDaGFpbjxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgY29sdW1uSWRzJDogTGlzdE1vZGVsQ2hhaW48c3RyaW5nPjtcblxuICBwcml2YXRlIGNvbHVtbnNCeUlkJDogTWFwTW9kZWxDaGFpbjxzdHJpbmcsIENvbHVtbk1vZGVsPFJvdz4+O1xuXG5cbiAgLy8gVE9ETzogc3VwcG9ydCB1c2VyIGRlZmluZWQgaGVhZGVyIGFuZCByb3cgaGVpZ2h0cyB2aWEgY3NzIHZhcnMuXG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDgpO1xuICBwcm90ZWN0ZWQgcm93SGVpZ2h0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDQ0KTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKVxuICBiYXNlQ3NzQ2xhc3MgPSBcImF1cC10YWJsZS1jb21wb25lbnRcIjtcblxuICBwcm90ZWN0ZWQgdmlydHVhbFNjcm9sbERhdGFTb3VyY2UgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+KCk7XG4gIHByaXZhdGUgdmlydHVhbFNjcm9sbEFjdGl2ZSQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWwoZmFsc2UpO1xuICBwcml2YXRlIHNjcm9sbFRpbWVvdXQ6IGFueTtcblxuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgYnVmZmVyTXVsdGlwbGllcjogbnVtYmVyID0gMSkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB3aGVuLCBvYnNlcnZlfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIGNvbnN0IGFjdHVhbEhlYWRlckhlaWdodCQgPSBjaGFpbih0aGlzLnNob3dIZWFkZXIkKS5tYXAoc2hvdyA9PiB7XG4gICAgICByZXR1cm4gc2hvdyA/IHRoaXMuaGVhZGVySGVpZ2h0JC52YWx1ZSA6IDA7XG4gICAgfSwge2RlcGVuZHNPbjogdGhpcy5oZWFkZXJIZWlnaHQkfSk7XG5cblxuICAgIC8vIHBlcmZvcm1hbmNlIGlzIHRlcnJpYmxlIGlmIHRoZSBkYXRhIGNoYW5nZXMgd2hpbGUgd2UncmUgc2Nyb2xsaW5nLCBzbyB3ZSBwb3N0cG9uZSB1cGRhdGVzIHVudGlsXG4gICAgLy8gc2Nyb2xsaW5nIHN0b3BzLlxuICAgIGNvbnN0IGRlbGF5ZWREYXRlYSQgPSBjaGFpbih0aGlzLmRhdGEkKS5wb3N0cG9uZVdoaWxlKHRoaXMudmlydHVhbFNjcm9sbEFjdGl2ZSQpXG4gICAgd2hlbihkZWxheWVkRGF0ZWEkKS5jaGFuZ2VzKGRlbGF0ZWREYXRhID0+IHtcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbERhdGFTb3VyY2UuZGF0YSA9IGRlbGF0ZWREYXRhO1xuICAgICAgdGhpcy5zY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2soKTtcbiAgICB9LCB7aW5pdGlhbFZhbHVlOiBcImV2YWx1YXRlXCJ9KVxuXG5cbiAgICB0aGlzLm9uSW5pdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbHVtbnMkID0gY2hhaW4odGhpcy50YWJsZU1vZGVsLnZpc2libGVDb2x1bW5zJCk7XG4gICAgICB0aGlzLmNvbHVtbklkcyQgPSBjaGFpbih0aGlzLmNvbHVtbnMkKS5wbHVjayhcImNvbHVtbklkXCIpO1xuICAgICAgdGhpcy5jb2x1bW5zQnlJZCQgPSBjaGFpbih0aGlzLmNvbHVtbnMkKS5pbmRleEJ5KCdjb2x1bW5JZCcpO1xuICAgIH0pO1xuXG4gICAgLy8gY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoe3ZlcmJvc2U6IGZhbHNlfSkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUubmFtZSwgZS5wYXlsb2FkKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFNjcm9sbFJvd1JhbmdlJCcsIHRoaXMudmlydHVhbFNjcm9sbFJvd1JhbmdlJCk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkJywgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLnZpcnR1YWxSb3dzJCcsIHRoaXMudmlydHVhbFJvd3MkKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy50YWJsZUJvZHlIZWlnaHQkJywgdGhpcy50YWJsZUJvZHlIZWlnaHQkKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy52aXJ0dWFsU2Nyb2xsQWN0aXZlJCcsIHRoaXMudmlydHVhbFNjcm9sbEFjdGl2ZSQpO1xuXG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgaWYgKHRoaXMuc2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgIGNvbnN0IHtvYnNlcnZlfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMubm90aWZ5U2Nyb2xsZWQoKSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGlkZS1oZWFkZXJcIilcbiAgZ2V0IGhpZGVIZWFkZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dIZWFkZXI7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJzdHlsZS4tLWF1cC10YWJsZS1oZWFkZXItaGVpZ2h0XCIpXG4gIGdldCBoZWFkZXJIZWlnaHRDc3NWYXIoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaGVhZGVySGVpZ2h0JC52YWx1ZX1weGBcbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcInN0eWxlLi0tYXVwLXRhYmxlLXJvdy1oZWlnaHRcIilcbiAgZ2V0IHJvd0hlaWdodENzc1ZhcigpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yb3dIZWlnaHQkLnZhbHVlfXB4YFxuICB9XG5cbiAgaXNFZGl0aW5nKHJvdzogUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50YWJsZU1vZGVsLmdldEVkaXRTZXNzaW9uRm9yKHJvdyk7XG4gIH1cblxuICBub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw8Um93Piwgcm93OiBSb3cpIHtcbiAgICB0aGlzLnRhYmxlTW9kZWwuX25vdGlmeUNlbGxDbGlja2VkKGNvbHVtbk1vZGVsLCByb3cpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBpc0ZpcnN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5maXJzdFZpc2libGVDb2x1bW4kLnF1ZXJ5KCkudmFsdWU/LmNvbHVtbklkID09PSBjb2x1bW5JZDtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG5cbiAgaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5sYXN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW5JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFtgYXVwLWNvbC0ke3RoaXMuY29sdW1uc0J5SWQkLmdldChjb2x1bW5JZCkuZGFzaGVyaXNlZENvbHVtbklkfWBdO1xuICAgIGlmICh0aGlzLmlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkKSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKFwiZmlyc3QtdmlzaWJsZS1jb2x1bW5cIik7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzTGFzdFZpc2libGVDb2x1bW4oY29sdW1uSWQpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJsYXN0LXZpc2libGUtY29sdW1uXCIpO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVUYWJsZUhlaWdodENoZWNrKHdhaXRNaWxsaXMgPSA1MCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdGJvZHkgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwidGJvZHlcIikgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBib2R5SGVpZ2h0ID0gdGJvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgaWYgKHRoaXMuZGF0YSQubGVuZ3RoID4gMCAmJiBib2R5SGVpZ2h0IDwgdGhpcy5yb3dIZWlnaHQkLnZhbHVlKSB7XG4gICAgICAgIC8vIEhhY2tzIHRvIGdldCBvdXIgdmlydHVhbCBzY3JvbGwgdG8gcmVwYWludFxuICAgICAgICAvLyBMb2dnZXIuZ2V0KHRoaXMpLmxvZyhgcm93Q291bnQ9JHt0aGlzLmRhdGEkLmxlbmd0aH0sIGJvZHlIZWlnaHQ9JHtib2R5SGVpZ2h0fSAtPiB2aXJ0dWFsIHRhYmxlIG5vdCByZW5kZXJpbmcsIHRyaWdnZXJpbmcgcmVzaXplIHRvIGZvcmNlIHJlcGFpbnRgKVxuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Jlc2l6ZScpKTtcbiAgICAgICAgaWYgKHdhaXRNaWxsaXMgPCA1MDApIHtcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjayh3YWl0TWlsbGlzICsgNTApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgd2FpdE1pbGxpcylcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5U2Nyb2xsZWQoKSB7XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsQWN0aXZlJC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5jbGVhclNjcm9sbFRpbWVvdXQoKTtcbiAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkLnZhbHVlID0gZmFsc2U7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTY3JvbGxUaW1lb3V0KCkge1xuICAgIGlmICh0aGlzLnNjcm9sbFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpc2VGb290ZXIoJGV2ZW50OiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZikge1xuICAgIGNvbnN0IHBvcnRhbFJlZiA9ICRldmVudCBhcyBDb21wb25lbnRSZWY8YW55PjtcbiAgICB0aGlzLmZvb3RlclJvdy5vbkluaXQocG9ydGFsUmVmLmluc3RhbmNlKVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFByb3hpZnkgPSBQcm94aWZ5O1xufVxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVCb2R5Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgU2Nyb2xsTW9kZSA9IFwibm9uZVwiIHwgXCJjbGFzc2ljXCIgfCBcInZpcnR1YWxcIjtcbn1cbiIsIlxuPGRpdiBjbGFzcz1cImNsYXNzaWMtc2Nyb2xsLWNvbnRhaW5lclwiICpuZ0lmPVwic2Nyb2xsTW9kZSQudmFsdWUgIT09ICd2aXJ0dWFsJ1wiPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGEkLnZhbHVlXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMkLnZhbHVlOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgZmlyc3Q7IGxhc3QgYXMgbGFzdFwiXG4gICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7e2NvbHVtbi5jb2x1bW5JZH19XCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiIFtjbGFzcy5oaWRlXT1cIiFjb2x1bW4uaXNWaXNpYmxlKClcIj5cbiAgICAgICAgPGF1cC10YWJsZS1oZWFkZXItY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWhlYWRlci1jZWxsPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwibm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICBbY2xhc3MuZW5hYmxlLWN1cnNvcl09XCJ0YWJsZU1vZGVsLmlzQ3Vyc29yRW5hYmxlZChjb2x1bW4pXCJcbiAgICAgICAgICBbY2xhc3MuZmxleF09XCJjb2x1bW4uaXNGbGV4KClcIlxuICAgICAgICAgIFtjbGFzcy5oaWRlXT1cIiFjb2x1bW4uaXNWaXNpYmxlKClcIlxuICAgICAgPlxuICAgICAgICA8YXVwLXRhYmxlLWNlbGwgW2NvbHVtbl09XCIkYW55KGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmxlTW9kZWxdPVwiJGFueSh0YWJsZU1vZGVsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZWRpdFNlc3Npb25dPVwiJGFueSh0YWJsZU1vZGVsLmdldEVkaXRTZXNzaW9uRm9yKHJvdykpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtY2VsbD5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbklkcyQudmFsdWU7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbklkcyQudmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ0YWJsZU1vZGVsLmdldFJvd0NsYXNzZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy5lbmFibGUtaG92ZXJdPVwidGFibGVNb2RlbC5pc0hvdmVyRW5hYmxlZCgpXCJcbiAgICAgICAgW2F1cFRhYmxlUm93QXR0cmlidXRlc109XCJ0YWJsZU1vZGVsLmdldFJvd0F0dHJpYnV0ZXMocm93KVwiXG4gICAgICAgIFthdHRyLmF1cC1yb3ctaWRdPVwidHJhY2tCeShpLCByb3cpXCJcbiAgICA+PC90cj5cblxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RpY2t5LWZvb3RlclwiICpuZ0lmPVwiUHJveGlmeS5oYXNUYXJnZXQoZm9vdGVyUm93KVwiPlxuICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMkLmxlbmd0aFwiIFtuZ0NsYXNzXT1cIidmb290ZXItY2VsbCdcIj5cbiAgICAgICAgPGF1cC10YWJsZS1mb290ZXItcm93IFtyb3ddPVwiJGFueShmb290ZXJSb3cpXCI+PC9hdXAtdGFibGUtZm9vdGVyLXJvdz5cbiAgICAgIDwvdGQ+XG4gICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3RpY2t5LWZvb3RlciddOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gIDwvdGFibGU+XG48L2Rpdj5cblxuPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAgKm5nSWY9XCJzY3JvbGxNb2RlJC52YWx1ZSA9PT0gJ3ZpcnR1YWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0dnNJdGVtU2l6ZV09XCJyb3dIZWlnaHQkLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiaGVhZGVySGVpZ2h0JC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmZmVyTXVsdGlwbGllcl09XCJidWZmZXJNdWx0aXBsaWVyXCJcbj5cbiAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJ2aXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZVwiIFt0cmFja0J5XT1cInRyYWNrQnlcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zJC52YWx1ZTsgaW5kZXggYXMgaW5kZXg7IGZpcnN0IGFzIGZpcnN0OyBsYXN0IGFzIGxhc3RcIlxuICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwie3tjb2x1bW4uY29sdW1uSWR9fVwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbY2xhc3MuZmxleF09XCJjb2x1bW4uaXNGbGV4KClcIiBbY2xhc3MuaGlkZV09XCIhY29sdW1uLmlzVmlzaWJsZSgpXCI+XG4gICAgICAgIDxhdXAtdGFibGUtaGVhZGVyLWNlbGwgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWlkXT1cImNvbHVtbi5jb2x1bW5JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1oZWFkZXItY2VsbD5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cIm5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgW2NsYXNzLmVuYWJsZS1jdXJzb3JdPVwidGFibGVNb2RlbC5pc0N1cnNvckVuYWJsZWQoY29sdW1uKVwiXG4gICAgICAgICAgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZV09XCIhY29sdW1uLmlzVmlzaWJsZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGF1cC10YWJsZS1jZWxsIFtjb2x1bW5dPVwiJGFueShjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZU1vZGVsXT1cIiRhbnkodGFibGVNb2RlbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRTZXNzaW9uXT1cIiRhbnkodGFibGVNb2RlbC5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWlkXT1cImNvbHVtbi5jb2x1bW5JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWNlbGw+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5JZHMkLnZhbHVlOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5JZHMkLnZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW25nQ2xhc3NdPVwidGFibGVNb2RlbC5nZXRSb3dDbGFzc2VzKHJvdylcIlxuICAgICAgICBbY2xhc3MuZW5hYmxlLWhvdmVyXT1cInRhYmxlTW9kZWwuaXNIb3ZlckVuYWJsZWQoKVwiXG4gICAgICAgIFthdXBUYWJsZVJvd0F0dHJpYnV0ZXNdPVwidGFibGVNb2RlbC5nZXRSb3dBdHRyaWJ1dGVzKHJvdylcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbjwhLS0gICAgTGF5b3V0IGRvZXNuJ3Qgd29yayB5ZXQgLSBwcm9iYWJseSBuZWVkcyBmaXhlZCBmb290ZXIgcm93IGhlaWdodCAtLT5cbjwhLS0gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGlja3ktZm9vdGVyXCIgKm5nSWY9XCJ0YWJsZU1vZGVsLmZvb3RlclJvd1BvcnRhbFJlZlwiPi0tPlxuPCEtLSAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWYgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zJC5sZW5ndGhcIj4tLT5cbjwhLS0gICAgICAgIDxuZy1jb250YWluZXIgW2Nka1BvcnRhbE91dGxldF09XCJ0YWJsZU1vZGVsLmZvb3RlclJvd1BvcnRhbFJlZi5wb3J0YWxcIiAoYXR0YWNoZWQpPVwiaW5pdGlhbGlzZUZvb3RlcigkZXZlbnQpXCI+PC9uZy1jb250YWluZXI+LS0+XG48IS0tICAgICAgPC90ZD4tLT5cbjwhLS0gICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3RpY2t5LWZvb3RlciddOyBzdGlja3k6IHRydWVcIj48L3RyPi0tPlxuPCEtLSAgICA8L25nLWNvbnRhaW5lcj4tLT5cblxuXG4gIDwvdGFibGU+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuIl19
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFDTCxHQUFHLEVBQ0gsU0FBUyxFQUdULGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBUTlELE1BQU0sT0FBTyxrQkFBd0IsU0FBUSxvQkFBb0I7SUFHdEQsMEJBQVEsT0FBTyxDQUFDLENBQUEsU0FBYyxDQUFBLENBQUMsQ0FBQztJQUFoQyxJQUFBLEtBQUssMkNBQTJCO0lBQWhDLElBQUEsS0FBSyxpREFBMkI7SUFHaEMsK0JBQWEsT0FBTyxDQUFDLENBQUEsa0JBQXVCLENBQUEsQ0FBQyxDQUFDO0lBQTlDLElBQUEsVUFBVSxnREFBb0M7SUFBOUMsSUFBQSxVQUFVLHNEQUFvQztJQUc5QyxnQ0FBYyxPQUFPLENBQUMsQ0FB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QUFFOzsrQ0FDc0I7QUFHaEM7SUFEQyxPQUFPLEVBQUU7O29EQUNvQztBQUc5QztJQURDLE9BQU8sRUFBRTs7cURBQ2lDO0FBRzNDO0lBREMsaUJBQWlCLEVBQUU7O29EQUNGOzJGQVpoQixrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO3NIQU9qQixLQUFLO3NCQURiLEtBQUs7Z0JBSUcsVUFBVTtzQkFEbEIsS0FBSztnQkFJRyxXQUFXO3NCQURuQixLQUFLO2dCQUlHLFVBQVU7c0JBRGxCLEtBQUs7Z0JBSUcsZUFBZTtzQkFEdkIsTUFBTTtnQkFJUCxPQUFPO3NCQUROLEtBQUs7Z0JBVU4sZUFBZTtzQkFGZCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFlckMsWUFBWTtzQkFEWCxXQUFXO3VCQUFDLE9BQU87Z0JBZ0NoQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBOZ1pvbmUsIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgRHNsLFxuICBMaXN0TW9kZWwsXG4gIExpc3RNb2RlbENoYWluLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgUHJveGlmeSxcbiAgcHJveGlmeSxcbiAgU3RvcmVJblZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1Jlc2l6ZUF3YXJlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC10YWJsZS1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC10YWJsZS1ib2R5XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFibGUtYm9keS5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFJvdz4gZXh0ZW5kcyBSZXNpemVBd2FyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBkYXRhJCA9IHByb3hpZnkoTGlzdE1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgdGFibGVNb2RlbCA9IHByb3hpZnkoQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3Igc2hvd0hlYWRlciQgPSBwcm94aWZ5KFZhbHVlTW9kZWw8Ym9vbGVhbj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIHNob3dIZWFkZXIgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSB2aXNpYmxlUm93Q291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBASW5wdXQoKVxuICB0cmFja0J5OiAoaW5kZXg6IG51bWJlciwgaXRlbTogUm93KSA9PiBhbnlcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIHNjcm9sbGluZy4gIE9uY2UgZW5hYmxlZCB0aGUgdGFibGUgd2lsbCBoYXZlIDAgaW1wbGljaXQgaGVpZ2h0LiAgWW91IHdpbGwgZWl0aGVyXG4gICAqIG5lZWQgdG8gc2V0IGl0IGV4cGxpY2l0bHkgZS5nLiBoZWlnaHQ6IDQwMHB4OyBvciBieSB1c2luZyBmbGV4IG9yIGdyaWQgbGF5b3V0IHRvIG1ha2UgaXQgZmlsbCBpdCdzXG4gICAqIGNvbnRhaW5tZW50IGFyZWEuXG4gICAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5lbmFibGUtc2Nyb2xsaW5nXCIpXG4gIGVuYWJsZVNjcm9sbGluZyA9IGZhbHNlO1xuXG4gIGNvbHVtbnM6IExpc3RNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICBjb2x1bW5JZHM6IExpc3RNb2RlbENoYWluPHN0cmluZz47XG4gIHByaXZhdGUgY29sdW1uc0J5SWQ6IE1hcE1vZGVsQ2hhaW48c3RyaW5nLCBDb2x1bW5Nb2RlbDxSb3c+PjtcblxuICByZWFkb25seSBfdmlzaWJsZVJvd0NvdW50OiBWYWx1ZU1vZGVsPG51bWJlcj47XG5cblxuICAvLyBUT0RPOiBzdXBwb3J0IHVzZXIgZGVmaW5lZCBoZWFkZXIgYW5kIHJvdyBoZWlnaHRzIHZpYSBjc3MgdmFycy5cbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJIZWlnaHQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8bnVtYmVyPig1Nik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93SGVpZ2h0ID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDgpO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpXG4gIGJhc2VDc3NDbGFzcyA9IFwiYXVwLXRhYmxlLWNvbXBvbmVudFwiO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgbmdab25lKTtcbiAgICBjb25zdCB7Y2hhaW4sIHdoZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgY29uc3QgYWN0dWFsSGVhZGVySGVpZ2h0ID0gY2hhaW4odGhpcy5zaG93SGVhZGVyJCkubWFwKHNob3cgPT4ge1xuICAgICAgcmV0dXJuIHNob3cgPyB0aGlzLmhlYWRlckhlaWdodC52YWx1ZSA6IDA7XG4gICAgfSwge2RlcGVuZHNPbjogdGhpcy5oZWFkZXJIZWlnaHR9KTtcblxuICAgIHRoaXMuX3Zpc2libGVSb3dDb3VudCA9IGNoYWluKHRoaXMuYm91bmRzTW9kZWwpLm1hcChib3VuZHMgPT4ge1xuICAgICAgLy8gVE9ETzogdGhpcyBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGFueSBjc3Mgc3R5bGluZyBhZGp1c3RtZW50cyBldGMuICBXaWxsIGludmVzdGlnYXRlIGlmIGl0J3MgYW4gaXNzdWUuXG4gICAgICBjb25zdCByYXdSb3dDb3VudCA9IChib3VuZHMuaGVpZ2h0IC0gYWN0dWFsSGVhZGVySGVpZ2h0LnZhbHVlKSAvIHRoaXMucm93SGVpZ2h0LnZhbHVlO1xuICAgICAgcmV0dXJuIHJhd1Jvd0NvdW50IDwgMSA/IDAgOiBNYXRoLmZsb29yKHJhd1Jvd0NvdW50KTtcbiAgICB9LCB7XG4gICAgICBkZXBlbmRzT246IFthY3R1YWxIZWFkZXJIZWlnaHQsIHRoaXMucm93SGVpZ2h0XSxcbiAgICAgIHBvc3Rwb25lV2hpbGU6IGNoYWluKHRoaXMuYm91bmRzTW9kZWwpLnBsdWNrTnVtZXJpYyhcImhlaWdodFwiKS5pc0xlc3NUaGFuKDEpXG4gICAgfSk7XG5cbiAgICB3aGVuKHRoaXMuX3Zpc2libGVSb3dDb3VudCkuY2hhbmdlcyh2aXNpYmxlUm93cyA9PiB7XG4gICAgICB0aGlzLnZpc2libGVSb3dDb3VudC5lbWl0KHZpc2libGVSb3dzKTtcbiAgICB9LCB7aW5pdGlhbFZhbHVlOiBcInRyaWdnZXJDaGFuZ2VVbmxlc3NOaWxcIn0pO1xuXG4gICAgdGhpcy5vbkluaXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zID0gY2hhaW4odGhpcy50YWJsZU1vZGVsLmNvbHVtbnMpO1xuICAgICAgdGhpcy5jb2x1bW5JZHMgPSBjaGFpbih0aGlzLmNvbHVtbnMpLnBsdWNrKFwiY29sdW1uSWRcIik7XG4gICAgICB0aGlzLmNvbHVtbnNCeUlkID0gY2hhaW4odGhpcy5jb2x1bW5zKS5pbmRleEJ5KCdjb2x1bW5JZCcpO1xuICAgIH0pXG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oaWRlLWhlYWRlclwiKVxuICBnZXQgaGlkZUhlYWRlcigpIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd0hlYWRlcjtcbiAgfVxuXG4gIGlzRWRpdGluZyhyb3c6IFJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVNb2RlbC5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpO1xuICB9XG5cbiAgbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLl9ub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW5Nb2RlbCwgcm93KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmZpcnN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5sYXN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW5JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFtgYXVwLWNvbC0ke3RoaXMuY29sdW1uc0J5SWQuZ2V0KGNvbHVtbklkKS5kYXNoZXJpc2VkQ29sdW1uSWR9YF07XG4gICAgaWYgKHRoaXMuaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmaXJzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImxhc3QtdmlzaWJsZS1jb2x1bW5cIik7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGEkLnZhbHVlXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCJ0YWJsZU1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCJ0YWJsZU1vZGVsLmdldEVkaXRTZXNzaW9uRm9yKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzLnZhbHVlOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5JZHMudmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ0YWJsZU1vZGVsLmdldFJvd0NsYXNzZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy5lbmFibGUtaG92ZXJdPVwidGFibGVNb2RlbC5pc0hvdmVyRW5hYmxlZCgpXCJcbiAgICAgICAgW2F0dHIuYXVwLXJvdy1pZF09XCJ0cmFja0J5KGksIHJvdylcIlxuICAgID48L3RyPlxuXG4gIDwvdGFibGU+XG48L2Rpdj5cblxuIl19
|