@angular/cdk 14.0.0-next.10 → 14.0.0-next.13
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/a11y/index.d.ts +1119 -5
- package/accordion/index.d.ts +108 -6
- package/bidi/index.d.ts +77 -5
- package/clipboard/index.d.ts +112 -5
- package/coercion/index.d.ts +64 -5
- package/collections/index.d.ts +348 -5
- package/dialog/index.d.ts +410 -0
- package/drag-drop/index.d.ts +1456 -5
- package/esm2020/a11y/a11y-module.mjs +5 -5
- package/esm2020/a11y/aria-describer/aria-describer.mjs +4 -4
- package/esm2020/a11y/focus-monitor/focus-monitor.mjs +7 -7
- package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +4 -4
- package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +4 -4
- package/esm2020/a11y/focus-trap/focus-trap.mjs +7 -7
- package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +4 -4
- package/esm2020/a11y/input-modality/input-modality-detector.mjs +4 -4
- package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +4 -4
- package/esm2020/a11y/live-announcer/live-announcer.mjs +7 -7
- package/esm2020/accordion/accordion-item.mjs +4 -4
- package/esm2020/accordion/accordion-module.mjs +5 -5
- package/esm2020/accordion/accordion.mjs +4 -4
- package/esm2020/bidi/bidi-module.mjs +5 -5
- package/esm2020/bidi/dir.mjs +4 -4
- package/esm2020/bidi/directionality.mjs +4 -4
- package/esm2020/clipboard/clipboard-module.mjs +5 -5
- package/esm2020/clipboard/clipboard.mjs +4 -4
- package/esm2020/clipboard/copy-to-clipboard.mjs +4 -4
- package/esm2020/collections/unique-selection-dispatcher.mjs +4 -4
- package/esm2020/dialog/dialog-config.mjs +63 -0
- package/esm2020/dialog/dialog-container.mjs +278 -0
- package/esm2020/dialog/dialog-injectors.mjs +26 -0
- package/esm2020/dialog/dialog-module.mjs +42 -0
- package/esm2020/dialog/dialog-ref.mjs +76 -0
- package/esm2020/dialog/dialog.mjs +298 -0
- package/esm2020/dialog/dialog_public_index.mjs +5 -0
- package/esm2020/dialog/index.mjs +9 -0
- package/esm2020/dialog/public-api.mjs +14 -0
- package/esm2020/drag-drop/directives/drag-handle.mjs +4 -4
- package/esm2020/drag-drop/directives/drag-placeholder.mjs +4 -4
- package/esm2020/drag-drop/directives/drag-preview.mjs +4 -4
- package/esm2020/drag-drop/directives/drag.mjs +11 -4
- package/esm2020/drag-drop/directives/drop-list-group.mjs +4 -4
- package/esm2020/drag-drop/directives/drop-list.mjs +4 -4
- package/esm2020/drag-drop/drag-drop-module.mjs +5 -5
- package/esm2020/drag-drop/drag-drop-registry.mjs +4 -4
- package/esm2020/drag-drop/drag-drop.mjs +4 -4
- package/esm2020/layout/breakpoints-observer.mjs +4 -4
- package/esm2020/layout/layout-module.mjs +5 -5
- package/esm2020/layout/media-matcher.mjs +4 -4
- package/esm2020/menu/context-menu-trigger.mjs +229 -0
- package/esm2020/menu/index.mjs +9 -0
- package/esm2020/menu/menu-aim.mjs +204 -0
- package/esm2020/menu/menu-bar.mjs +159 -0
- package/esm2020/menu/menu-base.mjs +203 -0
- package/esm2020/menu/menu-errors.mjs +22 -0
- package/esm2020/menu/menu-group.mjs +30 -0
- package/esm2020/menu/menu-interface.mjs +11 -0
- package/esm2020/menu/menu-item-checkbox.mjs +48 -0
- package/esm2020/menu/menu-item-radio.mjs +114 -0
- package/esm2020/menu/menu-item-selectable.mjs +42 -0
- package/esm2020/menu/menu-item.mjs +289 -0
- package/esm2020/menu/menu-module.mjs +62 -0
- package/esm2020/menu/menu-stack.mjs +156 -0
- package/esm2020/menu/menu-trigger-base.mjs +114 -0
- package/esm2020/menu/menu-trigger.mjs +304 -0
- package/esm2020/menu/menu.mjs +168 -0
- package/esm2020/menu/menu_public_index.mjs +5 -0
- package/esm2020/menu/pointer-focus-tracker.mjs +51 -0
- package/esm2020/menu/public-api.mjs +24 -0
- package/esm2020/observers/observe-content.mjs +14 -14
- package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +4 -4
- package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +4 -4
- package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +4 -4
- package/esm2020/overlay/fullscreen-overlay-container.mjs +4 -4
- package/esm2020/overlay/overlay-container.mjs +4 -4
- package/esm2020/overlay/overlay-directives.mjs +7 -7
- package/esm2020/overlay/overlay-module.mjs +5 -5
- package/esm2020/overlay/overlay-ref.mjs +4 -3
- package/esm2020/overlay/overlay.mjs +4 -4
- package/esm2020/overlay/position/overlay-position-builder.mjs +4 -4
- package/esm2020/overlay/scroll/scroll-strategy-options.mjs +4 -4
- package/esm2020/platform/platform-module.mjs +5 -5
- package/esm2020/platform/platform.mjs +4 -4
- package/esm2020/portal/dom-portal-outlet.mjs +6 -2
- package/esm2020/portal/portal-directives.mjs +17 -17
- package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +4 -4
- package/esm2020/scrolling/scroll-dispatcher.mjs +4 -4
- package/esm2020/scrolling/scrollable.mjs +4 -4
- package/esm2020/scrolling/scrolling-module.mjs +9 -9
- package/esm2020/scrolling/viewport-ruler.mjs +4 -4
- package/esm2020/scrolling/virtual-for-of.mjs +4 -4
- package/esm2020/scrolling/virtual-scroll-viewport.mjs +4 -4
- package/esm2020/stepper/step-header.mjs +4 -4
- package/esm2020/stepper/step-label.mjs +4 -4
- package/esm2020/stepper/stepper-button.mjs +7 -7
- package/esm2020/stepper/stepper-module.mjs +5 -5
- package/esm2020/stepper/stepper.mjs +7 -7
- package/esm2020/table/cell.mjs +22 -22
- package/esm2020/table/coalesced-style-scheduler.mjs +4 -4
- package/esm2020/table/row.mjs +28 -28
- package/esm2020/table/table-module.mjs +5 -5
- package/esm2020/table/table.mjs +20 -20
- package/esm2020/table/text-column.mjs +5 -5
- package/esm2020/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +1 -1
- package/esm2020/testing/test-element.mjs +1 -1
- package/esm2020/text-field/autofill.mjs +7 -7
- package/esm2020/text-field/autosize.mjs +4 -4
- package/esm2020/text-field/text-field-module.mjs +5 -5
- package/esm2020/tree/nested-node.mjs +4 -4
- package/esm2020/tree/node.mjs +4 -4
- package/esm2020/tree/outlet.mjs +4 -4
- package/esm2020/tree/padding.mjs +4 -4
- package/esm2020/tree/toggle.mjs +4 -4
- package/esm2020/tree/tree-module.mjs +5 -5
- package/esm2020/tree/tree.mjs +7 -7
- package/esm2020/version.mjs +1 -1
- package/fesm2015/a11y.mjs +40 -40
- package/fesm2015/a11y.mjs.map +1 -1
- package/fesm2015/accordion.mjs +10 -10
- package/fesm2015/accordion.mjs.map +1 -1
- package/fesm2015/bidi.mjs +10 -10
- package/fesm2015/bidi.mjs.map +1 -1
- package/fesm2015/cdk.mjs +1 -1
- package/fesm2015/cdk.mjs.map +1 -1
- package/fesm2015/clipboard.mjs +10 -10
- package/fesm2015/clipboard.mjs.map +1 -1
- package/fesm2015/collections.mjs +3 -3
- package/fesm2015/collections.mjs.map +1 -1
- package/fesm2015/dialog.mjs +780 -0
- package/fesm2015/dialog.mjs.map +1 -0
- package/fesm2015/drag-drop.mjs +35 -28
- package/fesm2015/drag-drop.mjs.map +1 -1
- package/fesm2015/layout.mjs +10 -10
- package/fesm2015/layout.mjs.map +1 -1
- package/fesm2015/menu.mjs +2135 -0
- package/fesm2015/menu.mjs.map +1 -0
- package/fesm2015/observers.mjs +13 -13
- package/fesm2015/observers.mjs.map +1 -1
- package/fesm2015/overlay.mjs +37 -36
- package/fesm2015/overlay.mjs.map +1 -1
- package/fesm2015/platform.mjs +7 -7
- package/fesm2015/platform.mjs.map +1 -1
- package/fesm2015/portal.mjs +21 -17
- package/fesm2015/portal.mjs.map +1 -1
- package/fesm2015/scrolling.mjs +26 -26
- package/fesm2015/scrolling.mjs.map +1 -1
- package/fesm2015/stepper.mjs +22 -22
- package/fesm2015/stepper.mjs.map +1 -1
- package/fesm2015/table.mjs +78 -78
- package/fesm2015/table.mjs.map +1 -1
- package/fesm2015/testing/selenium-webdriver.mjs.map +1 -1
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2015/text-field.mjs +13 -13
- package/fesm2015/text-field.mjs.map +1 -1
- package/fesm2015/tree.mjs +25 -25
- package/fesm2015/tree.mjs.map +1 -1
- package/fesm2020/a11y.mjs +40 -40
- package/fesm2020/a11y.mjs.map +1 -1
- package/fesm2020/accordion.mjs +10 -10
- package/fesm2020/accordion.mjs.map +1 -1
- package/fesm2020/bidi.mjs +10 -10
- package/fesm2020/bidi.mjs.map +1 -1
- package/fesm2020/cdk.mjs +1 -1
- package/fesm2020/cdk.mjs.map +1 -1
- package/fesm2020/clipboard.mjs +10 -10
- package/fesm2020/clipboard.mjs.map +1 -1
- package/fesm2020/collections.mjs +3 -3
- package/fesm2020/collections.mjs.map +1 -1
- package/fesm2020/dialog.mjs +784 -0
- package/fesm2020/dialog.mjs.map +1 -0
- package/fesm2020/drag-drop.mjs +35 -28
- package/fesm2020/drag-drop.mjs.map +1 -1
- package/fesm2020/layout.mjs +10 -10
- package/fesm2020/layout.mjs.map +1 -1
- package/fesm2020/menu.mjs +2108 -0
- package/fesm2020/menu.mjs.map +1 -0
- package/fesm2020/observers.mjs +13 -13
- package/fesm2020/observers.mjs.map +1 -1
- package/fesm2020/overlay.mjs +37 -36
- package/fesm2020/overlay.mjs.map +1 -1
- package/fesm2020/platform.mjs +7 -7
- package/fesm2020/platform.mjs.map +1 -1
- package/fesm2020/portal.mjs +21 -17
- package/fesm2020/portal.mjs.map +1 -1
- package/fesm2020/scrolling.mjs +26 -26
- package/fesm2020/scrolling.mjs.map +1 -1
- package/fesm2020/stepper.mjs +22 -22
- package/fesm2020/stepper.mjs.map +1 -1
- package/fesm2020/table.mjs +78 -78
- package/fesm2020/table.mjs.map +1 -1
- package/fesm2020/testing/selenium-webdriver.mjs.map +1 -1
- package/fesm2020/testing.mjs.map +1 -1
- package/fesm2020/text-field.mjs +13 -13
- package/fesm2020/text-field.mjs.map +1 -1
- package/fesm2020/tree.mjs +25 -25
- package/fesm2020/tree.mjs.map +1 -1
- package/index.d.ts +6 -8
- package/keycodes/index.d.ts +247 -6
- package/layout/index.d.ts +91 -8
- package/menu/index.d.ts +992 -0
- package/observers/index.d.ts +89 -6
- package/overlay/index.d.ts +1202 -5
- package/package.json +34 -18
- package/platform/index.d.ts +104 -6
- package/portal/index.d.ts +325 -5
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/utils/build-component.js +2 -2
- package/schematics/utils/build-component.mjs +2 -2
- package/schematics/utils/schematic-options.js +2 -2
- package/schematics/utils/schematic-options.mjs +2 -2
- package/scrolling/index.d.ts +647 -6
- package/stepper/index.d.ts +328 -6
- package/table/index.d.ts +1172 -5
- package/testing/index.d.ts +726 -5
- package/testing/selenium-webdriver/index.d.ts +134 -8
- package/testing/testbed/index.d.ts +161 -8
- package/text-field/index.d.ts +175 -6
- package/tree/index.d.ts +498 -6
- package/a11y/a11y-module.d.ts +0 -12
- package/a11y/a11y_public_index.d.ts +0 -4
- package/a11y/aria-describer/aria-describer.d.ts +0 -101
- package/a11y/aria-describer/aria-reference.d.ts +0 -22
- package/a11y/fake-event-detection.d.ts +0 -11
- package/a11y/focus-monitor/focus-monitor.d.ts +0 -209
- package/a11y/focus-trap/configurable-focus-trap-config.d.ts +0 -16
- package/a11y/focus-trap/configurable-focus-trap-factory.d.ts +0 -30
- package/a11y/focus-trap/configurable-focus-trap.d.ts +0 -33
- package/a11y/focus-trap/event-listener-inert-strategy.d.ts +0 -29
- package/a11y/focus-trap/focus-trap-inert-strategy.d.ts +0 -21
- package/a11y/focus-trap/focus-trap-manager.d.ts +0 -26
- package/a11y/focus-trap/focus-trap.d.ts +0 -163
- package/a11y/high-contrast-mode/high-contrast-mode-detector.d.ts +0 -48
- package/a11y/input-modality/input-modality-detector.d.ts +0 -99
- package/a11y/interactivity-checker/interactivity-checker.d.ts +0 -60
- package/a11y/key-manager/activedescendant-key-manager.d.ts +0 -35
- package/a11y/key-manager/focus-key-manager.d.ts +0 -37
- package/a11y/key-manager/list-key-manager.d.ts +0 -152
- package/a11y/live-announcer/live-announcer-tokens.d.ts +0 -22
- package/a11y/live-announcer/live-announcer.d.ts +0 -85
- package/a11y/package.json +0 -9
- package/a11y/public-api.d.ts +0 -25
- package/accordion/accordion-item.d.ts +0 -59
- package/accordion/accordion-module.d.ts +0 -8
- package/accordion/accordion.d.ts +0 -40
- package/accordion/accordion_public_index.d.ts +0 -4
- package/accordion/package.json +0 -9
- package/accordion/public-api.d.ts +0 -10
- package/bidi/bidi-module.d.ts +0 -7
- package/bidi/bidi_public_index.d.ts +0 -4
- package/bidi/dir-document-token.d.ts +0 -26
- package/bidi/dir.d.ts +0 -36
- package/bidi/directionality.d.ts +0 -26
- package/bidi/package.json +0 -9
- package/bidi/public-api.d.ts +0 -11
- package/clipboard/clipboard-module.d.ts +0 -7
- package/clipboard/clipboard.d.ts +0 -28
- package/clipboard/clipboard_public_index.d.ts +0 -4
- package/clipboard/copy-to-clipboard.d.ts +0 -49
- package/clipboard/package.json +0 -9
- package/clipboard/pending-copy.d.ts +0 -29
- package/clipboard/public-api.d.ts +0 -11
- package/coercion/array.d.ts +0 -10
- package/coercion/boolean-property.d.ts +0 -14
- package/coercion/css-pixel-value.d.ts +0 -9
- package/coercion/element.d.ts +0 -13
- package/coercion/number-property.d.ts +0 -20
- package/coercion/package.json +0 -9
- package/coercion/public-api.d.ts +0 -13
- package/coercion/string-array.d.ts +0 -25
- package/collections/array-data-source.d.ts +0 -16
- package/collections/collection-viewer.d.ts +0 -24
- package/collections/collections_public_index.d.ts +0 -4
- package/collections/data-source.d.ts +0 -30
- package/collections/dispose-view-repeater-strategy.d.ts +0 -22
- package/collections/package.json +0 -9
- package/collections/public-api.d.ts +0 -16
- package/collections/recycle-view-repeater-strategy.d.ts +0 -54
- package/collections/selection-model.d.ts +0 -95
- package/collections/tree-adapter.d.ts +0 -26
- package/collections/unique-selection-dispatcher.d.ts +0 -36
- package/collections/view-repeater.d.ts +0 -92
- package/drag-drop/client-rect.d.ts +0 -38
- package/drag-drop/clone-node.d.ts +0 -9
- package/drag-drop/directives/assertions.d.ts +0 -13
- package/drag-drop/directives/config.d.ts +0 -43
- package/drag-drop/directives/drag-handle.d.ts +0 -33
- package/drag-drop/directives/drag-placeholder.d.ts +0 -27
- package/drag-drop/directives/drag-preview.d.ts +0 -32
- package/drag-drop/directives/drag.d.ts +0 -160
- package/drag-drop/directives/drop-list-group.d.ts +0 -33
- package/drag-drop/directives/drop-list.d.ts +0 -123
- package/drag-drop/drag-drop-module.d.ts +0 -13
- package/drag-drop/drag-drop-registry.d.ts +0 -89
- package/drag-drop/drag-drop.d.ts +0 -36
- package/drag-drop/drag-drop_public_index.d.ts +0 -4
- package/drag-drop/drag-events.d.ts +0 -124
- package/drag-drop/drag-parent.d.ts +0 -15
- package/drag-drop/drag-ref.d.ts +0 -448
- package/drag-drop/drag-styling.d.ts +0 -42
- package/drag-drop/drag-utils.d.ts +0 -32
- package/drag-drop/drop-list-ref.d.ts +0 -312
- package/drag-drop/package.json +0 -9
- package/drag-drop/parent-position-tracker.d.ts +0 -39
- package/drag-drop/public-api.d.ts +0 -22
- package/drag-drop/transition-duration.d.ts +0 -9
- package/keycodes/keycodes.d.ts +0 -126
- package/keycodes/keycodes_public_index.d.ts +0 -4
- package/keycodes/modifiers.d.ts +0 -14
- package/keycodes/package.json +0 -9
- package/keycodes/public-api.d.ts +0 -9
- package/layout/breakpoints-observer.d.ts +0 -45
- package/layout/breakpoints.d.ts +0 -23
- package/layout/layout-module.d.ts +0 -6
- package/layout/layout_public_index.d.ts +0 -4
- package/layout/media-matcher.d.ts +0 -18
- package/layout/package.json +0 -9
- package/layout/public-api.d.ts +0 -11
- package/observers/observe-content.d.ts +0 -87
- package/observers/observers_public_index.d.ts +0 -4
- package/observers/package.json +0 -9
- package/observers/public-api.d.ts +0 -8
- package/overlay/dispatchers/base-overlay-dispatcher.d.ts +0 -24
- package/overlay/dispatchers/index.d.ts +0 -9
- package/overlay/dispatchers/overlay-keyboard-dispatcher.d.ts +0 -24
- package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +0 -32
- package/overlay/fullscreen-overlay-container.d.ts +0 -35
- package/overlay/overlay-config.d.ts +0 -47
- package/overlay/overlay-container.d.ts +0 -25
- package/overlay/overlay-directives.d.ts +0 -148
- package/overlay/overlay-module.d.ts +0 -10
- package/overlay/overlay-ref.d.ts +0 -145
- package/overlay/overlay-reference.d.ts +0 -38
- package/overlay/overlay.d.ts +0 -76
- package/overlay/overlay_public_index.d.ts +0 -4
- package/overlay/package.json +0 -9
- package/overlay/position/connected-position.d.ts +0 -102
- package/overlay/position/flexible-connected-position-strategy.d.ts +0 -282
- package/overlay/position/global-position-strategy.d.ts +0 -99
- package/overlay/position/overlay-position-builder.d.ts +0 -32
- package/overlay/position/position-strategy.d.ts +0 -19
- package/overlay/position/scroll-clip.d.ts +0 -26
- package/overlay/public-api.d.ts +0 -23
- package/overlay/scroll/block-scroll-strategy.d.ts +0 -27
- package/overlay/scroll/close-scroll-strategy.d.ts +0 -40
- package/overlay/scroll/index.d.ts +0 -14
- package/overlay/scroll/noop-scroll-strategy.d.ts +0 -17
- package/overlay/scroll/reposition-scroll-strategy.d.ts +0 -39
- package/overlay/scroll/scroll-strategy-options.d.ts +0 -44
- package/overlay/scroll/scroll-strategy.d.ts +0 -25
- package/platform/features/input-types.d.ts +0 -9
- package/platform/features/passive-listeners.d.ts +0 -19
- package/platform/features/scrolling.d.ts +0 -32
- package/platform/features/shadow-dom.d.ts +0 -18
- package/platform/features/test-environment.d.ts +0 -9
- package/platform/package.json +0 -9
- package/platform/platform-module.d.ts +0 -6
- package/platform/platform.d.ts +0 -29
- package/platform/platform_public_index.d.ts +0 -4
- package/platform/public-api.d.ts +0 -14
- package/portal/dom-portal-outlet.d.ts +0 -71
- package/portal/package.json +0 -9
- package/portal/portal-directives.d.ts +0 -99
- package/portal/portal-errors.d.ts +0 -37
- package/portal/portal-injector.d.ts +0 -21
- package/portal/portal.d.ts +0 -140
- package/portal/portal_public_index.d.ts +0 -4
- package/portal/public-api.d.ts +0 -11
- package/public-api.d.ts +0 -8
- package/scrolling/fixed-size-virtual-scroll.d.ts +0 -97
- package/scrolling/package.json +0 -9
- package/scrolling/public-api.d.ts +0 -16
- package/scrolling/scroll-dispatcher.d.ts +0 -71
- package/scrolling/scrollable.d.ts +0 -85
- package/scrolling/scrolling-module.d.ts +0 -19
- package/scrolling/scrolling_public_index.d.ts +0 -4
- package/scrolling/viewport-ruler.d.ts +0 -63
- package/scrolling/virtual-for-of.d.ts +0 -117
- package/scrolling/virtual-scroll-repeater.d.ts +0 -16
- package/scrolling/virtual-scroll-strategy.d.ts +0 -38
- package/scrolling/virtual-scroll-viewport.d.ts +0 -147
- package/stepper/package.json +0 -9
- package/stepper/public-api.d.ts +0 -12
- package/stepper/step-header.d.ts +0 -18
- package/stepper/step-label.d.ts +0 -15
- package/stepper/stepper-button.d.ts +0 -20
- package/stepper/stepper-module.d.ts +0 -11
- package/stepper/stepper.d.ts +0 -233
- package/stepper/stepper_public_index.d.ts +0 -4
- package/table/can-stick.d.ts +0 -34
- package/table/cell.d.ts +0 -126
- package/table/coalesced-style-scheduler.d.ts +0 -46
- package/table/package.json +0 -9
- package/table/public-api.d.ts +0 -19
- package/table/row.d.ts +0 -175
- package/table/sticky-position-listener.d.ts +0 -31
- package/table/sticky-styler.d.ts +0 -126
- package/table/table-errors.d.ts +0 -48
- package/table/table-module.d.ts +0 -11
- package/table/table.d.ts +0 -494
- package/table/table_public_index.d.ts +0 -4
- package/table/text-column.d.ts +0 -73
- package/table/tokens.d.ts +0 -25
- package/testing/change-detection.d.ts +0 -83
- package/testing/component-harness.d.ts +0 -426
- package/testing/element-dimensions.d.ts +0 -16
- package/testing/harness-environment.d.ts +0 -62
- package/testing/package.json +0 -9
- package/testing/public-api.d.ts +0 -14
- package/testing/selenium-webdriver/package.json +0 -9
- package/testing/selenium-webdriver/public-api.d.ts +0 -9
- package/testing/selenium-webdriver/selenium-web-driver-element.d.ts +0 -91
- package/testing/selenium-webdriver/selenium-web-driver-harness-environment.d.ts +0 -66
- package/testing/selenium-webdriver/selenium-webdriver-keys.d.ts +0 -46
- package/testing/test-element-errors.d.ts +0 -12
- package/testing/test-element.d.ts +0 -135
- package/testing/testbed/fake-events/dispatch-events.d.ts +0 -39
- package/testing/testbed/fake-events/element-focus.d.ts +0 -18
- package/testing/testbed/fake-events/event-objects.d.ts +0 -39
- package/testing/testbed/fake-events/index.d.ts +0 -11
- package/testing/testbed/fake-events/type-in-element.d.ts +0 -41
- package/testing/testbed/package.json +0 -9
- package/testing/testbed/proxy-zone-types.d.ts +0 -29
- package/testing/testbed/public-api.d.ts +0 -9
- package/testing/testbed/task-state-zone-interceptor.d.ts +0 -37
- package/testing/testbed/testbed-harness-environment.d.ts +0 -64
- package/testing/testbed/unit-test-element.d.ts +0 -98
- package/testing/testbed/zone-types.d.ts +0 -22
- package/testing/text-filtering.d.ts +0 -13
- package/text-field/autofill.d.ts +0 -66
- package/text-field/autosize.d.ts +0 -95
- package/text-field/package.json +0 -9
- package/text-field/public-api.d.ts +0 -10
- package/text-field/text-field-module.d.ts +0 -8
- package/text-field/text-field_public_index.d.ts +0 -4
- package/tree/control/base-tree-control.d.ts +0 -54
- package/tree/control/flat-tree-control.d.ts +0 -34
- package/tree/control/nested-tree-control.d.ts +0 -31
- package/tree/control/tree-control.d.ts +0 -49
- package/tree/nested-node.d.ts +0 -38
- package/tree/node.d.ts +0 -40
- package/tree/outlet.d.ts +0 -26
- package/tree/package.json +0 -9
- package/tree/padding.d.ts +0 -60
- package/tree/public-api.d.ts +0 -19
- package/tree/toggle.d.ts +0 -25
- package/tree/tree-errors.d.ts +0 -32
- package/tree/tree-module.d.ts +0 -12
- package/tree/tree.d.ts +0 -128
- package/tree/tree_public_index.d.ts +0 -4
- package/version.d.ts +0 -10
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { Directive, ElementRef, EventEmitter, Inject, Input, NgZone, Optional, Output, Self, } from '@angular/core';
|
|
9
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
+
import { ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';
|
|
11
|
+
import { Directionality } from '@angular/cdk/bidi';
|
|
12
|
+
import { fromEvent, Subject } from 'rxjs';
|
|
13
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
|
14
|
+
import { CdkMenuTrigger } from './menu-trigger';
|
|
15
|
+
import { CDK_MENU } from './menu-interface';
|
|
16
|
+
import { MENU_STACK, MenuStack } from './menu-stack';
|
|
17
|
+
import { MENU_AIM } from './menu-aim';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@angular/cdk/bidi";
|
|
20
|
+
import * as i2 from "./menu-trigger";
|
|
21
|
+
import * as i3 from "./menu-stack";
|
|
22
|
+
/**
|
|
23
|
+
* Directive which provides the ability for an element to be focused and navigated to using the
|
|
24
|
+
* keyboard when residing in a CdkMenu, CdkMenuBar, or CdkMenuGroup. It performs user defined
|
|
25
|
+
* behavior when clicked.
|
|
26
|
+
*/
|
|
27
|
+
export class CdkMenuItem {
|
|
28
|
+
constructor(
|
|
29
|
+
/** The host element for this item. */
|
|
30
|
+
_elementRef,
|
|
31
|
+
/** The Angular zone. */
|
|
32
|
+
_ngZone,
|
|
33
|
+
/** The menu stack this item belongs to. */
|
|
34
|
+
_menuStack,
|
|
35
|
+
/** The parent menu this item belongs to. */
|
|
36
|
+
_parentMenu,
|
|
37
|
+
/** The menu aim service used for this item. */
|
|
38
|
+
_menuAim,
|
|
39
|
+
/** The directionality of the page. */
|
|
40
|
+
_dir,
|
|
41
|
+
/** Reference to the CdkMenuItemTrigger directive if one is added to the same element */
|
|
42
|
+
// tslint:disable-next-line: lightweight-tokens
|
|
43
|
+
_menuTrigger) {
|
|
44
|
+
this._elementRef = _elementRef;
|
|
45
|
+
this._ngZone = _ngZone;
|
|
46
|
+
this._menuStack = _menuStack;
|
|
47
|
+
this._parentMenu = _parentMenu;
|
|
48
|
+
this._menuAim = _menuAim;
|
|
49
|
+
this._dir = _dir;
|
|
50
|
+
this._menuTrigger = _menuTrigger;
|
|
51
|
+
this._disabled = false;
|
|
52
|
+
/**
|
|
53
|
+
* If this MenuItem is a regular MenuItem, outputs when it is triggered by a keyboard or mouse
|
|
54
|
+
* event.
|
|
55
|
+
*/
|
|
56
|
+
this.triggered = new EventEmitter();
|
|
57
|
+
/** Whether the menu item opens a menu. */
|
|
58
|
+
this.hasMenu = !!this._menuTrigger;
|
|
59
|
+
/**
|
|
60
|
+
* The tabindex for this menu item managed internally and used for implementing roving a
|
|
61
|
+
* tab index.
|
|
62
|
+
*/
|
|
63
|
+
this._tabindex = -1;
|
|
64
|
+
/** Whether the item should close the menu if triggered by the spacebar. */
|
|
65
|
+
this.closeOnSpacebarTrigger = true;
|
|
66
|
+
/** Emits when the menu item is destroyed. */
|
|
67
|
+
this.destroyed = new Subject();
|
|
68
|
+
this._setupMouseEnter();
|
|
69
|
+
if (this._isStandaloneItem()) {
|
|
70
|
+
this._tabindex = 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Whether the CdkMenuItem is disabled - defaults to false */
|
|
74
|
+
get disabled() {
|
|
75
|
+
return this._disabled;
|
|
76
|
+
}
|
|
77
|
+
set disabled(value) {
|
|
78
|
+
this._disabled = coerceBooleanProperty(value);
|
|
79
|
+
}
|
|
80
|
+
ngOnDestroy() {
|
|
81
|
+
this.destroyed.next();
|
|
82
|
+
this.destroyed.complete();
|
|
83
|
+
}
|
|
84
|
+
/** Place focus on the element. */
|
|
85
|
+
focus() {
|
|
86
|
+
this._elementRef.nativeElement.focus();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* If the menu item is not disabled and the element does not have a menu trigger attached, emit
|
|
90
|
+
* on the cdkMenuItemTriggered emitter and close all open menus.
|
|
91
|
+
* @param options Options the configure how the item is triggered
|
|
92
|
+
* - keepOpen: specifies that the menu should be kept open after triggering the item.
|
|
93
|
+
*/
|
|
94
|
+
trigger(options) {
|
|
95
|
+
const { keepOpen } = { ...options };
|
|
96
|
+
if (!this.disabled && !this.hasMenu) {
|
|
97
|
+
this.triggered.next();
|
|
98
|
+
if (!keepOpen) {
|
|
99
|
+
this._menuStack.closeAll({ focusParentTrigger: true });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Return true if this MenuItem has an attached menu and it is open. */
|
|
104
|
+
isMenuOpen() {
|
|
105
|
+
return !!this._menuTrigger?.isOpen();
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get a reference to the rendered Menu if the Menu is open and it is visible in the DOM.
|
|
109
|
+
* @return the menu if it is open, otherwise undefined.
|
|
110
|
+
*/
|
|
111
|
+
getMenu() {
|
|
112
|
+
return this._menuTrigger?.getMenu();
|
|
113
|
+
}
|
|
114
|
+
/** Get the CdkMenuTrigger associated with this element. */
|
|
115
|
+
getMenuTrigger() {
|
|
116
|
+
return this._menuTrigger;
|
|
117
|
+
}
|
|
118
|
+
/** Get the label for this element which is required by the FocusableOption interface. */
|
|
119
|
+
getLabel() {
|
|
120
|
+
return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';
|
|
121
|
+
}
|
|
122
|
+
/** Reset the tabindex to -1. */
|
|
123
|
+
_resetTabIndex() {
|
|
124
|
+
if (!this._isStandaloneItem()) {
|
|
125
|
+
this._tabindex = -1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element
|
|
130
|
+
* is not in a menu bar.
|
|
131
|
+
*/
|
|
132
|
+
_setTabIndex(event) {
|
|
133
|
+
if (this.disabled) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// don't set the tabindex if there are no open sibling or parent menus
|
|
137
|
+
if (!event || !this._menuStack.isEmpty()) {
|
|
138
|
+
this._tabindex = 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Handles keyboard events for the menu item, specifically either triggering the user defined
|
|
143
|
+
* callback or opening/closing the current menu based on whether the left or right arrow key was
|
|
144
|
+
* pressed.
|
|
145
|
+
* @param event the keyboard event to handle
|
|
146
|
+
*/
|
|
147
|
+
_onKeydown(event) {
|
|
148
|
+
switch (event.keyCode) {
|
|
149
|
+
case SPACE:
|
|
150
|
+
case ENTER:
|
|
151
|
+
if (!hasModifierKey(event)) {
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
this.trigger({ keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger });
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
case RIGHT_ARROW:
|
|
157
|
+
if (!hasModifierKey(event)) {
|
|
158
|
+
if (this._parentMenu && this._isParentVertical()) {
|
|
159
|
+
if (this._dir?.value !== 'rtl') {
|
|
160
|
+
this._forwardArrowPressed(event);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this._backArrowPressed(event);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
case LEFT_ARROW:
|
|
169
|
+
if (!hasModifierKey(event)) {
|
|
170
|
+
if (this._parentMenu && this._isParentVertical()) {
|
|
171
|
+
if (this._dir?.value !== 'rtl') {
|
|
172
|
+
this._backArrowPressed(event);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
this._forwardArrowPressed(event);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** Whether this menu item is standalone or within a menu or menu bar. */
|
|
183
|
+
_isStandaloneItem() {
|
|
184
|
+
return !this._parentMenu;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Handles the user pressing the back arrow key.
|
|
188
|
+
* @param event The keyboard event.
|
|
189
|
+
*/
|
|
190
|
+
_backArrowPressed(event) {
|
|
191
|
+
const parentMenu = this._parentMenu;
|
|
192
|
+
if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {
|
|
193
|
+
event.preventDefault();
|
|
194
|
+
this._menuStack.close(parentMenu, {
|
|
195
|
+
focusNextOnEmpty: this._menuStack.inlineMenuOrientation() === 'horizontal'
|
|
196
|
+
? 1 /* previousItem */
|
|
197
|
+
: 2 /* currentItem */,
|
|
198
|
+
focusParentTrigger: true,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Handles the user pressing the forward arrow key.
|
|
204
|
+
* @param event The keyboard event.
|
|
205
|
+
*/
|
|
206
|
+
_forwardArrowPressed(event) {
|
|
207
|
+
if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
this._menuStack.closeAll({
|
|
210
|
+
focusNextOnEmpty: 0 /* nextItem */,
|
|
211
|
+
focusParentTrigger: true,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Subscribe to the mouseenter events and close any sibling menu items if this element is moused
|
|
217
|
+
* into.
|
|
218
|
+
*/
|
|
219
|
+
_setupMouseEnter() {
|
|
220
|
+
if (!this._isStandaloneItem()) {
|
|
221
|
+
const closeOpenSiblings = () => this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu));
|
|
222
|
+
this._ngZone.runOutsideAngular(() => fromEvent(this._elementRef.nativeElement, 'mouseenter')
|
|
223
|
+
.pipe(filter(() => !this._menuStack.isEmpty() && !this.hasMenu), takeUntil(this.destroyed))
|
|
224
|
+
.subscribe(() => {
|
|
225
|
+
if (this._menuAim) {
|
|
226
|
+
this._menuAim.toggle(closeOpenSiblings);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
closeOpenSiblings();
|
|
230
|
+
}
|
|
231
|
+
}));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Return true if the enclosing parent menu is configured in a horizontal orientation, false
|
|
236
|
+
* otherwise or if no parent.
|
|
237
|
+
*/
|
|
238
|
+
_isParentVertical() {
|
|
239
|
+
return this._parentMenu?.orientation === 'vertical';
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
CdkMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: CdkMenuItem, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MENU_STACK }, { token: CDK_MENU, optional: true }, { token: MENU_AIM, optional: true }, { token: i1.Directionality, optional: true }, { token: i2.CdkMenuTrigger, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
243
|
+
CdkMenuItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.15", type: CdkMenuItem, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled"], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "trigger()", "keydown": "_onKeydown($event)" }, properties: { "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 });
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: CdkMenuItem, decorators: [{
|
|
245
|
+
type: Directive,
|
|
246
|
+
args: [{
|
|
247
|
+
selector: '[cdkMenuItem]',
|
|
248
|
+
exportAs: 'cdkMenuItem',
|
|
249
|
+
host: {
|
|
250
|
+
'role': 'menuitem',
|
|
251
|
+
'class': 'cdk-menu-item',
|
|
252
|
+
'[tabindex]': '_tabindex',
|
|
253
|
+
'[attr.aria-disabled]': 'disabled || null',
|
|
254
|
+
'(blur)': '_resetTabIndex()',
|
|
255
|
+
'(focus)': '_setTabIndex()',
|
|
256
|
+
'(click)': 'trigger()',
|
|
257
|
+
'(keydown)': '_onKeydown($event)',
|
|
258
|
+
},
|
|
259
|
+
}]
|
|
260
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.MenuStack, decorators: [{
|
|
261
|
+
type: Inject,
|
|
262
|
+
args: [MENU_STACK]
|
|
263
|
+
}] }, { type: undefined, decorators: [{
|
|
264
|
+
type: Optional
|
|
265
|
+
}, {
|
|
266
|
+
type: Inject,
|
|
267
|
+
args: [CDK_MENU]
|
|
268
|
+
}] }, { type: undefined, decorators: [{
|
|
269
|
+
type: Optional
|
|
270
|
+
}, {
|
|
271
|
+
type: Inject,
|
|
272
|
+
args: [MENU_AIM]
|
|
273
|
+
}] }, { type: i1.Directionality, decorators: [{
|
|
274
|
+
type: Optional
|
|
275
|
+
}] }, { type: i2.CdkMenuTrigger, decorators: [{
|
|
276
|
+
type: Self
|
|
277
|
+
}, {
|
|
278
|
+
type: Optional
|
|
279
|
+
}] }]; }, propDecorators: { disabled: [{
|
|
280
|
+
type: Input,
|
|
281
|
+
args: ['cdkMenuItemDisabled']
|
|
282
|
+
}], typeaheadLabel: [{
|
|
283
|
+
type: Input,
|
|
284
|
+
args: ['cdkMenuitemTypeaheadLabel']
|
|
285
|
+
}], triggered: [{
|
|
286
|
+
type: Output,
|
|
287
|
+
args: ['cdkMenuItemTriggered']
|
|
288
|
+
}] } });
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9tZW51L21lbnUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFMUUsT0FBTyxFQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFFBQVEsRUFBTyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBWSxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTlELE9BQU8sRUFBQyxRQUFRLEVBQW1CLE1BQU0sWUFBWSxDQUFDOzs7OztBQUV0RDs7OztHQUlHO0FBZUgsTUFBTSxPQUFPLFdBQVc7SUFzQ3RCO0lBQ0Usc0NBQXNDO0lBQzdCLFdBQW9DO0lBQzdDLHdCQUF3QjtJQUNQLE9BQWU7SUFDaEMsMkNBQTJDO0lBQ04sVUFBcUI7SUFDMUQsNENBQTRDO0lBQ0csV0FBa0I7SUFDakUsK0NBQStDO0lBQ0EsUUFBa0I7SUFDakUsc0NBQXNDO0lB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RTt3QkFDSixNQUFNLEVBQUUsVUFBVTt3QkFDbEIsT0FBTyxFQUFFLGVBQWU7d0JBQ3hCLFlBQVksRUFBRSxXQUFXO3dCQUN6QixzQkFBc0IsRUFBRSxrQkFBa0I7d0JBQzFDLFFBQVEsRUFBRSxrQkFBa0I7d0JBQzVCLFNBQVMsRUFBRSxnQkFBZ0I7d0JBQzNCLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixXQUFXLEVBQUUsb0JBQW9CO3FCQUNsQztpQkFDRjs7MEJBNkNJLE1BQU07MkJBQUMsVUFBVTs7MEJBRWpCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTs7MEJBRTNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTs7MEJBRTNCLFFBQVE7OzBCQUdSLElBQUk7OzBCQUFJLFFBQVE7NENBbERmLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBYVEsY0FBYztzQkFBakQsS0FBSzt1QkFBQywyQkFBMkI7Z0JBTU8sU0FBUztzQkFBakQsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0ZvY3VzYWJsZU9wdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtFTlRFUiwgaGFzTW9kaWZpZXJLZXksIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7RGlyZWN0aW9uYWxpdHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q2RrTWVudVRyaWdnZXJ9IGZyb20gJy4vbWVudS10cmlnZ2VyJztcbmltcG9ydCB7Q0RLX01FTlUsIE1lbnV9IGZyb20gJy4vbWVudS1pbnRlcmZhY2UnO1xuaW1wb3J0IHtGb2N1c05leHQsIE1FTlVfU1RBQ0ssIE1lbnVTdGFja30gZnJvbSAnLi9tZW51LXN0YWNrJztcbmltcG9ydCB7Rm9jdXNhYmxlRWxlbWVudH0gZnJvbSAnLi9wb2ludGVyLWZvY3VzLXRyYWNrZXInO1xuaW1wb3J0IHtNRU5VX0FJTSwgTWVudUFpbSwgVG9nZ2xlcn0gZnJvbSAnLi9tZW51LWFpbSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHdoaWNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciBhbiBlbGVtZW50IHRvIGJlIGZvY3VzZWQgYW5kIG5hdmlnYXRlZCB0byB1c2luZyB0aGVcbiAqIGtleWJvYXJkIHdoZW4gcmVzaWRpbmcgaW4gYSBDZGtNZW51LCBDZGtNZW51QmFyLCBvciBDZGtNZW51R3JvdXAuIEl0IHBlcmZvcm1zIHVzZXIgZGVmaW5lZFxuICogYmVoYXZpb3Igd2hlbiBjbGlja2VkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrTWVudUl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdjZGtNZW51SXRlbScsXG4gIGhvc3Q6IHtcbiAgICAncm9sZSc6ICdtZW51aXRlbScsXG4gICAgJ2NsYXNzJzogJ2Nkay1tZW51LWl0ZW0nLFxuICAgICdbdGFiaW5kZXhdJzogJ190YWJpbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxuICAgICcoYmx1ciknOiAnX3Jlc2V0VGFiSW5kZXgoKScsXG4gICAgJyhmb2N1cyknOiAnX3NldFRhYkluZGV4KCknLFxuICAgICcoY2xpY2spJzogJ3RyaWdnZXIoKScsXG4gICAgJyhrZXlkb3duKSc6ICdfb25LZXlkb3duKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDZGtNZW51SXRlbSBpbXBsZW1lbnRzIEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNhYmxlRWxlbWVudCwgVG9nZ2xlciwgT25EZXN0cm95IHtcbiAgLyoqICBXaGV0aGVyIHRoZSBDZGtNZW51SXRlbSBpcyBkaXNhYmxlZCAtIGRlZmF1bHRzIHRvIGZhbHNlICovXG4gIEBJbnB1dCgnY2RrTWVudUl0ZW1EaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHRleHQgdXNlZCB0byBsb2NhdGUgdGhpcyBpdGVtIGR1cmluZyBtZW51IHR5cGVhaGVhZC4gSWYgbm90IHNwZWNpZmllZCxcbiAgICogdGhlIGB0ZXh0Q29udGVudGAgb2YgdGhlIGl0ZW0gd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgQElucHV0KCdjZGtNZW51aXRlbVR5cGVhaGVhZExhYmVsJykgdHlwZWFoZWFkTGFiZWw6IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgTWVudUl0ZW0gaXMgYSByZWd1bGFyIE1lbnVJdGVtLCBvdXRwdXRzIHdoZW4gaXQgaXMgdHJpZ2dlcmVkIGJ5IGEga2V5Ym9hcmQgb3IgbW91c2VcbiAgICogZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KCdjZGtNZW51SXRlbVRyaWdnZXJlZCcpIHJlYWRvbmx5IHRyaWdnZXJlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGl0ZW0gb3BlbnMgYSBtZW51LiAqL1xuICByZWFkb25seSBoYXNNZW51ID0gISF0aGlzLl9tZW51VHJpZ2dlcjtcblxuICAvKipcbiAgICogVGhlIHRhYmluZGV4IGZvciB0aGlzIG1lbnUgaXRlbSBtYW5hZ2VkIGludGVybmFsbHkgYW5kIHVzZWQgZm9yIGltcGxlbWVudGluZyByb3ZpbmcgYVxuICAgKiB0YWIgaW5kZXguXG4gICAqL1xuICBfdGFiaW5kZXg6IDAgfCAtMSA9IC0xO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpdGVtIHNob3VsZCBjbG9zZSB0aGUgbWVudSBpZiB0cmlnZ2VyZWQgYnkgdGhlIHNwYWNlYmFyLiAqL1xuICBwcm90ZWN0ZWQgY2xvc2VPblNwYWNlYmFyVHJpZ2dlciA9IHRydWU7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIG1lbnUgaXRlbSBpcyBkZXN0cm95ZWQuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUaGUgaG9zdCBlbGVtZW50IGZvciB0aGlzIGl0ZW0uICovXG4gICAgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIC8qKiBUaGUgQW5ndWxhciB6b25lLiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25nWm9uZTogTmdab25lLFxuICAgIC8qKiBUaGUgbWVudSBzdGFjayB0aGlzIGl0ZW0gYmVsb25ncyB0by4gKi9cbiAgICBASW5qZWN0KE1FTlVfU1RBQ0spIHByaXZhdGUgcmVhZG9ubHkgX21lbnVTdGFjazogTWVudVN0YWNrLFxuICAgIC8qKiBUaGUgcGFyZW50IG1lbnUgdGhpcyBpdGVtIGJlbG9uZ3MgdG8uICovXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDREtfTUVOVSkgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50TWVudT86IE1lbnUsXG4gICAgLyoqIFRoZSBtZW51IGFpbSBzZXJ2aWNlIHVzZWQgZm9yIHRoaXMgaXRlbS4gKi9cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1FTlVfQUlNKSBwcml2YXRlIHJlYWRvbmx5IF9tZW51QWltPzogTWVudUFpbSxcbiAgICAvKiogVGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBwYWdlLiAqL1xuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2Rpcj86IERpcmVjdGlvbmFsaXR5LFxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIENka01lbnVJdGVtVHJpZ2dlciBkaXJlY3RpdmUgaWYgb25lIGlzIGFkZGVkIHRvIHRoZSBzYW1lIGVsZW1lbnQgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGxpZ2h0d2VpZ2h0LXRva2Vuc1xuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfbWVudVRyaWdnZXI/OiBDZGtNZW51VHJpZ2dlcixcbiAgKSB7XG4gICAgdGhpcy5fc2V0dXBNb3VzZUVudGVyKCk7XG5cbiAgICBpZiAodGhpcy5faXNTdGFuZGFsb25lSXRlbSgpKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IDA7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogUGxhY2UgZm9jdXMgb24gdGhlIGVsZW1lbnQuICovXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtZW51IGl0ZW0gaXMgbm90IGRpc2FibGVkIGFuZCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbWVudSB0cmlnZ2VyIGF0dGFjaGVkLCBlbWl0XG4gICAqIG9uIHRoZSBjZGtNZW51SXRlbVRyaWdnZXJlZCBlbWl0dGVyIGFuZCBjbG9zZSBhbGwgb3BlbiBtZW51cy5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGUgY29uZmlndXJlIGhvdyB0aGUgaXRlbSBpcyB0cmlnZ2VyZWRcbiAgICogICAtIGtlZXBPcGVuOiBzcGVjaWZpZXMgdGhhdCB0aGUgbWVudSBzaG91bGQgYmUga2VwdCBvcGVuIGFmdGVyIHRyaWdnZXJpbmcgdGhlIGl0ZW0uXG4gICAqL1xuICB0cmlnZ2VyKG9wdGlvbnM/OiB7a2VlcE9wZW46IGJvb2xlYW59KSB7XG4gICAgY29uc3Qge2tlZXBPcGVufSA9IHsuLi5vcHRpb25zfTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuaGFzTWVudSkge1xuICAgICAgdGhpcy50cmlnZ2VyZWQubmV4dCgpO1xuICAgICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgICB0aGlzLl9tZW51U3RhY2suY2xvc2VBbGwoe2ZvY3VzUGFyZW50VHJpZ2dlcjogdHJ1ZX0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIE1lbnVJdGVtIGhhcyBhbiBhdHRhY2hlZCBtZW51IGFuZCBpdCBpcyBvcGVuLiAqL1xuICBpc01lbnVPcGVuKCkge1xuICAgIHJldHVybiAhIXRoaXMuX21lbnVUcmlnZ2VyPy5pc09wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlbmRlcmVkIE1lbnUgaWYgdGhlIE1lbnUgaXMgb3BlbiBhbmQgaXQgaXMgdmlzaWJsZSBpbiB0aGUgRE9NLlxuICAgKiBAcmV0dXJuIHRoZSBtZW51IGlmIGl0IGlzIG9wZW4sIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBnZXRNZW51KCk6IE1lbnUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tZW51VHJpZ2dlcj8uZ2V0TWVudSgpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgQ2RrTWVudVRyaWdnZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudC4gKi9cbiAgZ2V0TWVudVRyaWdnZXIoKTogQ2RrTWVudVRyaWdnZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tZW51VHJpZ2dlcjtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxhYmVsIGZvciB0aGlzIGVsZW1lbnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgdGhlIEZvY3VzYWJsZU9wdGlvbiBpbnRlcmZhY2UuICovXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHlwZWFoZWFkTGFiZWwgfHwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50Py50cmltKCkgfHwgJyc7XG4gIH1cblxuICAvKiogUmVzZXQgdGhlIHRhYmluZGV4IHRvIC0xLiAqL1xuICBfcmVzZXRUYWJJbmRleCgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU3RhbmRhbG9uZUl0ZW0oKSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSAtMTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0YWIgaW5kZXggdG8gMCBpZiBub3QgZGlzYWJsZWQgYW5kIGl0J3MgYSBmb2N1cyBldmVudCwgb3IgYSBtb3VzZSBlbnRlciBpZiB0aGlzIGVsZW1lbnRcbiAgICogaXMgbm90IGluIGEgbWVudSBiYXIuXG4gICAqL1xuICBfc2V0VGFiSW5kZXgoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBkb24ndCBzZXQgdGhlIHRhYmluZGV4IGlmIHRoZXJlIGFyZSBubyBvcGVuIHNpYmxpbmcgb3IgcGFyZW50IG1lbnVzXG4gICAgaWYgKCFldmVudCB8fCAhdGhpcy5fbWVudVN0YWNrLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyBmb3IgdGhlIG1lbnUgaXRlbSwgc3BlY2lmaWNhbGx5IGVpdGhlciB0cmlnZ2VyaW5nIHRoZSB1c2VyIGRlZmluZWRcbiAgICogY2FsbGJhY2sgb3Igb3BlbmluZy9jbG9zaW5nIHRoZSBjdXJyZW50IG1lbnUgYmFzZWQgb24gd2hldGhlciB0aGUgbGVmdCBvciByaWdodCBhcnJvdyBrZXkgd2FzXG4gICAqIHByZXNzZWQuXG4gICAqIEBwYXJhbSBldmVudCB0aGUga2V5Ym9hcmQgZXZlbnQgdG8gaGFuZGxlXG4gICAqL1xuICBfb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIFNQQUNFOlxuICAgICAgY2FzZSBFTlRFUjpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMudHJpZ2dlcih7a2VlcE9wZW46IGV2ZW50LmtleUNvZGUgPT09IFNQQUNFICYmICF0aGlzLmNsb3NlT25TcGFjZWJhclRyaWdnZXJ9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSSUdIVF9BUlJPVzpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFyZW50TWVudSAmJiB0aGlzLl9pc1BhcmVudFZlcnRpY2FsKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kaXI/LnZhbHVlICE9PSAncnRsJykge1xuICAgICAgICAgICAgICB0aGlzLl9mb3J3YXJkQXJyb3dQcmVzc2VkKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2JhY2tBcnJvd1ByZXNzZWQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGlmICh0aGlzLl9wYXJlbnRNZW51ICYmIHRoaXMuX2lzUGFyZW50VmVydGljYWwoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2Rpcj8udmFsdWUgIT09ICdydGwnKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2JhY2tBcnJvd1ByZXNzZWQoZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEFycm93UHJlc3NlZChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgbWVudSBpdGVtIGlzIHN0YW5kYWxvbmUgb3Igd2l0aGluIGEgbWVudSBvciBtZW51IGJhci4gKi9cbiAgcHJpdmF0ZSBfaXNTdGFuZGFsb25lSXRlbSgpIHtcbiAgICByZXR1cm4gIXRoaXMuX3BhcmVudE1lbnU7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdXNlciBwcmVzc2luZyB0aGUgYmFjayBhcnJvdyBrZXkuXG4gICAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQuXG4gICAqL1xuICBwcml2YXRlIF9iYWNrQXJyb3dQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgcGFyZW50TWVudSA9IHRoaXMuX3BhcmVudE1lbnUhO1xuICAgIGlmICh0aGlzLl9tZW51U3RhY2suaGFzSW5saW5lTWVudSgpIHx8IHRoaXMuX21lbnVTdGFjay5sZW5ndGgoKSA+IDEpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLl9tZW51U3RhY2suY2xvc2UocGFyZW50TWVudSwge1xuICAgICAgICBmb2N1c05leHRPbkVtcHR5OlxuICAgICAgICAgIHRoaXMuX21lbnVTdGFjay5pbmxpbmVNZW51T3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnXG4gICAgICAgICAgICA/IEZvY3VzTmV4dC5wcmV2aW91c0l0ZW1cbiAgICAgICAgICAgIDogRm9jdXNOZXh0LmN1cnJlbnRJdGVtLFxuICAgICAgICBmb2N1c1BhcmVudFRyaWdnZXI6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdXNlciBwcmVzc2luZyB0aGUgZm9yd2FyZCBhcnJvdyBrZXkuXG4gICAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQuXG4gICAqL1xuICBwcml2YXRlIF9mb3J3YXJkQXJyb3dQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmhhc01lbnUgJiYgdGhpcy5fbWVudVN0YWNrLmlubGluZU1lbnVPcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLl9tZW51U3RhY2suY2xvc2VBbGwoe1xuICAgICAgICBmb2N1c05leHRPbkVtcHR5OiBGb2N1c05leHQubmV4dEl0ZW0sXG4gICAgICAgIGZvY3VzUGFyZW50VHJpZ2dlcjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIG1vdXNlZW50ZXIgZXZlbnRzIGFuZCBjbG9zZSBhbnkgc2libGluZyBtZW51IGl0ZW1zIGlmIHRoaXMgZWxlbWVudCBpcyBtb3VzZWRcbiAgICogaW50by5cbiAgICovXG4gIHByaXZhdGUgX3NldHVwTW91c2VFbnRlcigpIHtcbiAgICBpZiAoIXRoaXMuX2lzU3RhbmRhbG9uZUl0ZW0oKSkge1xuICAgICAgY29uc3QgY2xvc2VPcGVuU2libGluZ3MgPSAoKSA9PlxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuX21lbnVTdGFjay5jbG9zZVN1Yk1lbnVPZih0aGlzLl9wYXJlbnRNZW51ISkpO1xuXG4gICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlZW50ZXInKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLl9tZW51U3RhY2suaXNFbXB0eSgpICYmICF0aGlzLmhhc01lbnUpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fbWVudUFpbSkge1xuICAgICAgICAgICAgICB0aGlzLl9tZW51QWltLnRvZ2dsZShjbG9zZU9wZW5TaWJsaW5ncyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjbG9zZU9wZW5TaWJsaW5ncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIGVuY2xvc2luZyBwYXJlbnQgbWVudSBpcyBjb25maWd1cmVkIGluIGEgaG9yaXpvbnRhbCBvcmllbnRhdGlvbiwgZmFsc2VcbiAgICogb3RoZXJ3aXNlIG9yIGlmIG5vIHBhcmVudC5cbiAgICovXG4gIHByaXZhdGUgX2lzUGFyZW50VmVydGljYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudE1lbnU/Lm9yaWVudGF0aW9uID09PSAndmVydGljYWwnO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { NgModule } from '@angular/core';
|
|
9
|
+
import { OverlayModule } from '@angular/cdk/overlay';
|
|
10
|
+
import { CdkMenu } from './menu';
|
|
11
|
+
import { CdkMenuBar } from './menu-bar';
|
|
12
|
+
import { CdkMenuItem } from './menu-item';
|
|
13
|
+
import { CdkMenuGroup } from './menu-group';
|
|
14
|
+
import { CdkMenuItemRadio } from './menu-item-radio';
|
|
15
|
+
import { CdkMenuItemCheckbox } from './menu-item-checkbox';
|
|
16
|
+
import { CdkMenuTrigger } from './menu-trigger';
|
|
17
|
+
import { CdkContextMenuTrigger } from './context-menu-trigger';
|
|
18
|
+
import { CdkTargetMenuAim } from './menu-aim';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
/** The list of components and directives that should be declared and exported from this module. */
|
|
21
|
+
const EXPORTED_DECLARATIONS = [
|
|
22
|
+
CdkMenuBar,
|
|
23
|
+
CdkMenu,
|
|
24
|
+
CdkMenuItem,
|
|
25
|
+
CdkMenuItemRadio,
|
|
26
|
+
CdkMenuItemCheckbox,
|
|
27
|
+
CdkMenuTrigger,
|
|
28
|
+
CdkMenuGroup,
|
|
29
|
+
CdkContextMenuTrigger,
|
|
30
|
+
CdkTargetMenuAim,
|
|
31
|
+
];
|
|
32
|
+
/** Module that declares components and directives for the CDK menu. */
|
|
33
|
+
export class CdkMenuModule {
|
|
34
|
+
}
|
|
35
|
+
CdkMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
36
|
+
CdkMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: CdkMenuModule, declarations: [CdkMenuBar,
|
|
37
|
+
CdkMenu,
|
|
38
|
+
CdkMenuItem,
|
|
39
|
+
CdkMenuItemRadio,
|
|
40
|
+
CdkMenuItemCheckbox,
|
|
41
|
+
CdkMenuTrigger,
|
|
42
|
+
CdkMenuGroup,
|
|
43
|
+
CdkContextMenuTrigger,
|
|
44
|
+
CdkTargetMenuAim], imports: [OverlayModule], exports: [CdkMenuBar,
|
|
45
|
+
CdkMenu,
|
|
46
|
+
CdkMenuItem,
|
|
47
|
+
CdkMenuItemRadio,
|
|
48
|
+
CdkMenuItemCheckbox,
|
|
49
|
+
CdkMenuTrigger,
|
|
50
|
+
CdkMenuGroup,
|
|
51
|
+
CdkContextMenuTrigger,
|
|
52
|
+
CdkTargetMenuAim] });
|
|
53
|
+
CdkMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule] });
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: CdkMenuModule, decorators: [{
|
|
55
|
+
type: NgModule,
|
|
56
|
+
args: [{
|
|
57
|
+
imports: [OverlayModule],
|
|
58
|
+
exports: EXPORTED_DECLARATIONS,
|
|
59
|
+
declarations: EXPORTED_DECLARATIONS,
|
|
60
|
+
}]
|
|
61
|
+
}] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL21lbnUvbWVudS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sWUFBWSxDQUFDOztBQUU1QyxtR0FBbUc7QUFDbkcsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixVQUFVO0lBQ1YsT0FBTztJQUNQLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLGNBQWM7SUFDZCxZQUFZO0lBQ1oscUJBQXFCO0lBQ3JCLGdCQUFnQjtDQUNqQixDQUFDO0FBRUYsdUVBQXVFO0FBTXZFLE1BQU0sT0FBTyxhQUFhOztrSEFBYixhQUFhO21IQUFiLGFBQWEsaUJBakJ4QixVQUFVO1FBQ1YsT0FBTztRQUNQLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxZQUFZO1FBQ1oscUJBQXFCO1FBQ3JCLGdCQUFnQixhQUtOLGFBQWEsYUFidkIsVUFBVTtRQUNWLE9BQU87UUFDUCxXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixnQkFBZ0I7bUhBU0wsYUFBYSxZQUpkLGFBQWE7bUdBSVosYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxxQkFBcUI7b0JBQzlCLFlBQVksRUFBRSxxQkFBcUI7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPdmVybGF5TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0Nka01lbnV9IGZyb20gJy4vbWVudSc7XG5pbXBvcnQge0Nka01lbnVCYXJ9IGZyb20gJy4vbWVudS1iYXInO1xuaW1wb3J0IHtDZGtNZW51SXRlbX0gZnJvbSAnLi9tZW51LWl0ZW0nO1xuaW1wb3J0IHtDZGtNZW51R3JvdXB9IGZyb20gJy4vbWVudS1ncm91cCc7XG5pbXBvcnQge0Nka01lbnVJdGVtUmFkaW99IGZyb20gJy4vbWVudS1pdGVtLXJhZGlvJztcbmltcG9ydCB7Q2RrTWVudUl0ZW1DaGVja2JveH0gZnJvbSAnLi9tZW51LWl0ZW0tY2hlY2tib3gnO1xuaW1wb3J0IHtDZGtNZW51VHJpZ2dlcn0gZnJvbSAnLi9tZW51LXRyaWdnZXInO1xuaW1wb3J0IHtDZGtDb250ZXh0TWVudVRyaWdnZXJ9IGZyb20gJy4vY29udGV4dC1tZW51LXRyaWdnZXInO1xuaW1wb3J0IHtDZGtUYXJnZXRNZW51QWltfSBmcm9tICcuL21lbnUtYWltJztcblxuLyoqIFRoZSBsaXN0IG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMgdGhhdCBzaG91bGQgYmUgZGVjbGFyZWQgYW5kIGV4cG9ydGVkIGZyb20gdGhpcyBtb2R1bGUuICovXG5jb25zdCBFWFBPUlRFRF9ERUNMQVJBVElPTlMgPSBbXG4gIENka01lbnVCYXIsXG4gIENka01lbnUsXG4gIENka01lbnVJdGVtLFxuICBDZGtNZW51SXRlbVJhZGlvLFxuICBDZGtNZW51SXRlbUNoZWNrYm94LFxuICBDZGtNZW51VHJpZ2dlcixcbiAgQ2RrTWVudUdyb3VwLFxuICBDZGtDb250ZXh0TWVudVRyaWdnZXIsXG4gIENka1RhcmdldE1lbnVBaW0sXG5dO1xuXG4vKiogTW9kdWxlIHRoYXQgZGVjbGFyZXMgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyBmb3IgdGhlIENESyBtZW51LiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW092ZXJsYXlNb2R1bGVdLFxuICBleHBvcnRzOiBFWFBPUlRFRF9ERUNMQVJBVElPTlMsXG4gIGRlY2xhcmF0aW9uczogRVhQT1JURURfREVDTEFSQVRJT05TLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtNZW51TW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
|
|
9
|
+
import { Subject } from 'rxjs';
|
|
10
|
+
import { debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/** Injection token used for an implementation of MenuStack. */
|
|
13
|
+
export const MENU_STACK = new InjectionToken('cdk-menu-stack');
|
|
14
|
+
/** Provider that provides the parent menu stack, or a new menu stack if there is no parent one. */
|
|
15
|
+
export const PARENT_OR_NEW_MENU_STACK_PROVIDER = {
|
|
16
|
+
provide: MENU_STACK,
|
|
17
|
+
deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
|
|
18
|
+
useFactory: (parentMenuStack) => parentMenuStack || new MenuStack(),
|
|
19
|
+
};
|
|
20
|
+
/** Provider that provides the parent menu stack, or a new inline menu stack if there is no parent one. */
|
|
21
|
+
export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (orientation) => ({
|
|
22
|
+
provide: MENU_STACK,
|
|
23
|
+
deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
|
|
24
|
+
useFactory: (parentMenuStack) => parentMenuStack || MenuStack.inline(orientation),
|
|
25
|
+
});
|
|
26
|
+
/** The next available menu stack ID. */
|
|
27
|
+
let nextId = 0;
|
|
28
|
+
/**
|
|
29
|
+
* MenuStack allows subscribers to listen for close events (when a MenuStackItem is popped off
|
|
30
|
+
* of the stack) in order to perform closing actions. Upon the MenuStack being empty it emits
|
|
31
|
+
* from the `empty` observable specifying the next focus action which the listener should perform
|
|
32
|
+
* as requested by the closer.
|
|
33
|
+
*/
|
|
34
|
+
export class MenuStack {
|
|
35
|
+
constructor() {
|
|
36
|
+
/** The ID of this menu stack. */
|
|
37
|
+
this.id = `${nextId++}`;
|
|
38
|
+
/** All MenuStackItems tracked by this MenuStack. */
|
|
39
|
+
this._elements = [];
|
|
40
|
+
/** Emits the element which was popped off of the stack when requested by a closer. */
|
|
41
|
+
this._close = new Subject();
|
|
42
|
+
/** Emits once the MenuStack has become empty after popping off elements. */
|
|
43
|
+
this._empty = new Subject();
|
|
44
|
+
/** Emits whether any menu in the menu stack has focus. */
|
|
45
|
+
this._hasFocus = new Subject();
|
|
46
|
+
/** Observable which emits the MenuStackItem which has been requested to close. */
|
|
47
|
+
this.closed = this._close;
|
|
48
|
+
/** Observable which emits whether any menu in the menu stack has focus. */
|
|
49
|
+
this.hasFocus = this._hasFocus.pipe(startWith(false), debounceTime(0), distinctUntilChanged());
|
|
50
|
+
/**
|
|
51
|
+
* Observable which emits when the MenuStack is empty after popping off the last element. It
|
|
52
|
+
* emits a FocusNext event which specifies the action the closer has requested the listener
|
|
53
|
+
* perform.
|
|
54
|
+
*/
|
|
55
|
+
this.emptied = this._empty;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the inline menu associated with this menu stack is vertical or horizontal.
|
|
58
|
+
* `null` indicates there is no inline menu associated with this menu stack.
|
|
59
|
+
*/
|
|
60
|
+
this._inlineMenuOrientation = null;
|
|
61
|
+
}
|
|
62
|
+
/** Creates a menu stack that originates from an inline menu. */
|
|
63
|
+
static inline(orientation) {
|
|
64
|
+
const stack = new MenuStack();
|
|
65
|
+
stack._inlineMenuOrientation = orientation;
|
|
66
|
+
return stack;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Adds an item to the menu stack.
|
|
70
|
+
* @param menu the MenuStackItem to put on the stack.
|
|
71
|
+
*/
|
|
72
|
+
push(menu) {
|
|
73
|
+
this._elements.push(menu);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Pop items off of the stack up to and including `lastItem` and emit each on the close
|
|
77
|
+
* observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
|
|
78
|
+
* @param lastItem the last item to pop off the stack.
|
|
79
|
+
* @param options Options that configure behavior on close.
|
|
80
|
+
*/
|
|
81
|
+
close(lastItem, options) {
|
|
82
|
+
const { focusNextOnEmpty, focusParentTrigger } = { ...options };
|
|
83
|
+
if (this._elements.indexOf(lastItem) >= 0) {
|
|
84
|
+
let poppedElement;
|
|
85
|
+
do {
|
|
86
|
+
poppedElement = this._elements.pop();
|
|
87
|
+
this._close.next({ item: poppedElement, focusParentTrigger });
|
|
88
|
+
} while (poppedElement !== lastItem);
|
|
89
|
+
if (this.isEmpty()) {
|
|
90
|
+
this._empty.next(focusNextOnEmpty);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Pop items off of the stack up to but excluding `lastItem` and emit each on the close
|
|
96
|
+
* observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
|
|
97
|
+
* @param lastItem the element which should be left on the stack
|
|
98
|
+
* @return whether or not an item was removed from the stack
|
|
99
|
+
*/
|
|
100
|
+
closeSubMenuOf(lastItem) {
|
|
101
|
+
let removed = false;
|
|
102
|
+
if (this._elements.indexOf(lastItem) >= 0) {
|
|
103
|
+
removed = this.peek() !== lastItem;
|
|
104
|
+
while (this.peek() !== lastItem) {
|
|
105
|
+
this._close.next({ item: this._elements.pop() });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return removed;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Pop off all MenuStackItems and emit each one on the `close` observable one by one.
|
|
112
|
+
* @param options Options that configure behavior on close.
|
|
113
|
+
*/
|
|
114
|
+
closeAll(options) {
|
|
115
|
+
const { focusNextOnEmpty, focusParentTrigger } = { ...options };
|
|
116
|
+
if (!this.isEmpty()) {
|
|
117
|
+
while (!this.isEmpty()) {
|
|
118
|
+
const menuStackItem = this._elements.pop();
|
|
119
|
+
if (menuStackItem) {
|
|
120
|
+
this._close.next({ item: menuStackItem, focusParentTrigger });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
this._empty.next(focusNextOnEmpty);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** Return true if this stack is empty. */
|
|
127
|
+
isEmpty() {
|
|
128
|
+
return !this._elements.length;
|
|
129
|
+
}
|
|
130
|
+
/** Return the length of the stack. */
|
|
131
|
+
length() {
|
|
132
|
+
return this._elements.length;
|
|
133
|
+
}
|
|
134
|
+
/** Get the top most element on the stack. */
|
|
135
|
+
peek() {
|
|
136
|
+
return this._elements[this._elements.length - 1];
|
|
137
|
+
}
|
|
138
|
+
/** Whether the menu stack is associated with an inline menu. */
|
|
139
|
+
hasInlineMenu() {
|
|
140
|
+
return this._inlineMenuOrientation != null;
|
|
141
|
+
}
|
|
142
|
+
/** The orientation of the associated inline menu. */
|
|
143
|
+
inlineMenuOrientation() {
|
|
144
|
+
return this._inlineMenuOrientation;
|
|
145
|
+
}
|
|
146
|
+
/** Sets whether the menu stack contains the focused element. */
|
|
147
|
+
setHasFocus(hasFocus) {
|
|
148
|
+
this._hasFocus.next(hasFocus);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
MenuStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
152
|
+
MenuStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: MenuStack });
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.15", ngImport: i0, type: MenuStack, decorators: [{
|
|
154
|
+
type: Injectable
|
|
155
|
+
}] });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvbWVudS9tZW51LXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFlN0UsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBWSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTFFLG1HQUFtRztBQUNuRyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRztJQUMvQyxPQUFPLEVBQUUsVUFBVTtJQUNuQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsRUFBRSxDQUFDLGVBQTJCLEVBQUUsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLFNBQVMsRUFBRTtDQUNoRixDQUFDO0FBRUYsMEdBQTBHO0FBQzFHLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQ3RELFdBQXNDLEVBQ3RDLEVBQUUsQ0FBQyxDQUFDO0lBQ0osT0FBTyxFQUFFLFVBQVU7SUFDbkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNoRSxVQUFVLEVBQUUsQ0FBQyxlQUEyQixFQUFFLEVBQUUsQ0FBQyxl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QUM7OzhHQXpJVSxTQUFTO2tIQUFULFNBQVM7bUdBQVQsU0FBUztrQkFEckIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqIFRoZSByZWxhdGl2ZSBpdGVtIGluIHRoZSBpbmxpbmUgbWVudSB0byBmb2N1cyBhZnRlciBjbG9zaW5nIGFsbCBwb3B1cCBtZW51cy4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEZvY3VzTmV4dCB7XG4gIG5leHRJdGVtLFxuICBwcmV2aW91c0l0ZW0sXG4gIGN1cnJlbnRJdGVtLFxufVxuXG4vKiogQSBzaW5nbGUgaXRlbSAobWVudSkgaW4gdGhlIG1lbnUgc3RhY2suICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVTdGFja0l0ZW0ge1xuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG1lbnUgc3RhY2sgdGhpcyBtZW51IHN0YWNrIGl0ZW0gYmVsb25ncyB0by4gKi9cbiAgbWVudVN0YWNrPzogTWVudVN0YWNrO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHVzZWQgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mIE1lbnVTdGFjay4gKi9cbmV4cG9ydCBjb25zdCBNRU5VX1NUQUNLID0gbmV3IEluamVjdGlvblRva2VuPE1lbnVTdGFjaz4oJ2Nkay1tZW51LXN0YWNrJyk7XG5cbi8qKiBQcm92aWRlciB0aGF0IHByb3ZpZGVzIHRoZSBwYXJlbnQgbWVudSBzdGFjaywgb3IgYSBuZXcgbWVudSBzdGFjayBpZiB0aGVyZSBpcyBubyBwYXJlbnQgb25lLiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9PUl9ORVdfTUVOVV9TVEFDS19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogTUVOVV9TVEFDSyxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIG5ldyBJbmplY3QoTUVOVV9TVEFDSyldXSxcbiAgdXNlRmFjdG9yeTogKHBhcmVudE1lbnVTdGFjaz86IE1lbnVTdGFjaykgPT4gcGFyZW50TWVudVN0YWNrIHx8IG5ldyBNZW51U3RhY2soKSxcbn07XG5cbi8qKiBQcm92aWRlciB0aGF0IHByb3ZpZGVzIHRoZSBwYXJlbnQgbWVudSBzdGFjaywgb3IgYSBuZXcgaW5saW5lIG1lbnUgc3RhY2sgaWYgdGhlcmUgaXMgbm8gcGFyZW50IG9uZS4gKi9cbmV4cG9ydCBjb25zdCBQQVJFTlRfT1JfTkVXX0lOTElORV9NRU5VX1NUQUNLX1BST1ZJREVSID0gKFxuICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyxcbikgPT4gKHtcbiAgcHJvdmlkZTogTUVOVV9TVEFDSyxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIG5ldyBJbmplY3QoTUVOVV9TVEFDSyldXSxcbiAgdXNlRmFjdG9yeTogKHBhcmVudE1lbnVTdGFjaz86IE1lbnVTdGFjaykgPT4gcGFyZW50TWVudVN0YWNrIHx8IE1lbnVTdGFjay5pbmxpbmUob3JpZW50YXRpb24pLFxufSk7XG5cbi8qKiBPcHRpb25zIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHRvIHRoZSBjbG9zZSBvciBjbG9zZUFsbCBtZXRob2RzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbG9zZU9wdGlvbnMge1xuICAvKiogVGhlIGVsZW1lbnQgdG8gZm9jdXMgbmV4dCBpZiB0aGUgY2xvc2Ugb3BlcmF0aW9uIGNhdXNlcyB0aGUgbWVudSBzdGFjayB0byBiZWNvbWUgZW1wdHkuICovXG4gIGZvY3VzTmV4dE9uRW1wdHk/OiBGb2N1c05leHQ7XG4gIC8qKiBXaGV0aGVyIHRvIGZvY3VzIHRoZSBwYXJlbnQgdHJpZ2dlciBhZnRlciBjbG9zaW5nIHRoZSBtZW51LiAqL1xuICBmb2N1c1BhcmVudFRyaWdnZXI/OiBib29sZWFuO1xufVxuXG4vKiogRXZlbnQgZGlzcGF0Y2hlZCB3aGVuIGEgbWVudSBpcyBjbG9zZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVTdGFja0Nsb3NlRXZlbnQge1xuICAvKiogVGhlIG1lbnUgYmVpbmcgY2xvc2VkLiAqL1xuICBpdGVtOiBNZW51U3RhY2tJdGVtO1xuICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgcGFyZW50IHRyaWdnZXIgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudS4gKi9cbiAgZm9jdXNQYXJlbnRUcmlnZ2VyPzogYm9vbGVhbjtcbn1cblxuLyoqIFRoZSBuZXh0IGF2YWlsYWJsZSBtZW51IHN0YWNrIElELiAqL1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogTWVudVN0YWNrIGFsbG93cyBzdWJzY3JpYmVycyB0byBsaXN0ZW4gZm9yIGNsb3NlIGV2ZW50cyAod2hlbiBhIE1lbnVTdGFja0l0ZW0gaXMgcG9wcGVkIG9mZlxuICogb2YgdGhlIHN0YWNrKSBpbiBvcmRlciB0byBwZXJmb3JtIGNsb3NpbmcgYWN0aW9ucy4gVXBvbiB0aGUgTWVudVN0YWNrIGJlaW5nIGVtcHR5IGl0IGVtaXRzXG4gKiBmcm9tIHRoZSBgZW1wdHlgIG9ic2VydmFibGUgc3BlY2lmeWluZyB0aGUgbmV4dCBmb2N1cyBhY3Rpb24gd2hpY2ggdGhlIGxpc3RlbmVyIHNob3VsZCBwZXJmb3JtXG4gKiBhcyByZXF1ZXN0ZWQgYnkgdGhlIGNsb3Nlci5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVTdGFjayB7XG4gIC8qKiBUaGUgSUQgb2YgdGhpcyBtZW51IHN0YWNrLiAqL1xuICByZWFkb25seSBpZCA9IGAke25leHRJZCsrfWA7XG5cbiAgLyoqIEFsbCBNZW51U3RhY2tJdGVtcyB0cmFja2VkIGJ5IHRoaXMgTWVudVN0YWNrLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50czogTWVudVN0YWNrSXRlbVtdID0gW107XG5cbiAgLyoqIEVtaXRzIHRoZSBlbGVtZW50IHdoaWNoIHdhcyBwb3BwZWQgb2ZmIG9mIHRoZSBzdGFjayB3aGVuIHJlcXVlc3RlZCBieSBhIGNsb3Nlci4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xvc2UgPSBuZXcgU3ViamVjdDxNZW51U3RhY2tDbG9zZUV2ZW50PigpO1xuXG4gIC8qKiBFbWl0cyBvbmNlIHRoZSBNZW51U3RhY2sgaGFzIGJlY29tZSBlbXB0eSBhZnRlciBwb3BwaW5nIG9mZiBlbGVtZW50cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZW1wdHkgPSBuZXcgU3ViamVjdDxGb2N1c05leHQgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZXRoZXIgYW55IG1lbnUgaW4gdGhlIG1lbnUgc3RhY2sgaGFzIGZvY3VzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNGb2N1cyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgdGhlIE1lbnVTdGFja0l0ZW0gd2hpY2ggaGFzIGJlZW4gcmVxdWVzdGVkIHRvIGNsb3NlLiAqL1xuICByZWFkb25seSBjbG9zZWQ6IE9ic2VydmFibGU8TWVudVN0YWNrQ2xvc2VFdmVudD4gPSB0aGlzLl9jbG9zZTtcblxuICAvKiogT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGV0aGVyIGFueSBtZW51IGluIHRoZSBtZW51IHN0YWNrIGhhcyBmb2N1cy4gKi9cbiAgcmVhZG9ubHkgaGFzRm9jdXM6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9oYXNGb2N1cy5waXBlKFxuICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgZGVib3VuY2VUaW1lKDApLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiB0aGUgTWVudVN0YWNrIGlzIGVtcHR5IGFmdGVyIHBvcHBpbmcgb2ZmIHRoZSBsYXN0IGVsZW1lbnQuIEl0XG4gICAqIGVtaXRzIGEgRm9jdXNOZXh0IGV2ZW50IHdoaWNoIHNwZWNpZmllcyB0aGUgYWN0aW9uIHRoZSBjbG9zZXIgaGFzIHJlcXVlc3RlZCB0aGUgbGlzdGVuZXJcbiAgICogcGVyZm9ybS5cbiAgICovXG4gIHJlYWRvbmx5IGVtcHRpZWQ6IE9ic2VydmFibGU8Rm9jdXNOZXh0IHwgdW5kZWZpbmVkPiA9IHRoaXMuX2VtcHR5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbmxpbmUgbWVudSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZW51IHN0YWNrIGlzIHZlcnRpY2FsIG9yIGhvcml6b250YWwuXG4gICAqIGBudWxsYCBpbmRpY2F0ZXMgdGhlcmUgaXMgbm8gaW5saW5lIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWVudSBzdGFjay5cbiAgICovXG4gIHByaXZhdGUgX2lubGluZU1lbnVPcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDcmVhdGVzIGEgbWVudSBzdGFjayB0aGF0IG9yaWdpbmF0ZXMgZnJvbSBhbiBpbmxpbmUgbWVudS4gKi9cbiAgc3RhdGljIGlubGluZShvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IE1lbnVTdGFjaygpO1xuICAgIHN0YWNrLl9pbmxpbmVNZW51T3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBpdGVtIHRvIHRoZSBtZW51IHN0YWNrLlxuICAgKiBAcGFyYW0gbWVudSB0aGUgTWVudVN0YWNrSXRlbSB0byBwdXQgb24gdGhlIHN0YWNrLlxuICAgKi9cbiAgcHVzaChtZW51OiBNZW51U3RhY2tJdGVtKSB7XG4gICAgdGhpcy5fZWxlbWVudHMucHVzaChtZW51KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3AgaXRlbXMgb2ZmIG9mIHRoZSBzdGFjayB1cCB0byBhbmQgaW5jbHVkaW5nIGBsYXN0SXRlbWAgYW5kIGVtaXQgZWFjaCBvbiB0aGUgY2xvc2VcbiAgICogb2JzZXJ2YWJsZS4gSWYgdGhlIHN0YWNrIGlzIGVtcHR5IG9yIGBsYXN0SXRlbWAgaXMgbm90IG9uIHRoZSBzdGFjayBpdCBkb2VzIG5vdGhpbmcuXG4gICAqIEBwYXJhbSBsYXN0SXRlbSB0aGUgbGFzdCBpdGVtIHRvIHBvcCBvZmYgdGhlIHN0YWNrLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRoYXQgY29uZmlndXJlIGJlaGF2aW9yIG9uIGNsb3NlLlxuICAgKi9cbiAgY2xvc2UobGFzdEl0ZW06IE1lbnVTdGFja0l0ZW0sIG9wdGlvbnM/OiBDbG9zZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7Zm9jdXNOZXh0T25FbXB0eSwgZm9jdXNQYXJlbnRUcmlnZ2VyfSA9IHsuLi5vcHRpb25zfTtcbiAgICBpZiAodGhpcy5fZWxlbWVudHMuaW5kZXhPZihsYXN0SXRlbSkgPj0gMCkge1xuICAgICAgbGV0IHBvcHBlZEVsZW1lbnQ7XG4gICAgICBkbyB7XG4gICAgICAgIHBvcHBlZEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50cy5wb3AoKSE7XG4gICAgICAgIHRoaXMuX2Nsb3NlLm5leHQoe2l0ZW06IHBvcHBlZEVsZW1lbnQsIGZvY3VzUGFyZW50VHJpZ2dlcn0pO1xuICAgICAgfSB3aGlsZSAocG9wcGVkRWxlbWVudCAhPT0gbGFzdEl0ZW0pO1xuXG4gICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgdGhpcy5fZW1wdHkubmV4dChmb2N1c05leHRPbkVtcHR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9wIGl0ZW1zIG9mZiBvZiB0aGUgc3RhY2sgdXAgdG8gYnV0IGV4Y2x1ZGluZyBgbGFzdEl0ZW1gIGFuZCBlbWl0IGVhY2ggb24gdGhlIGNsb3NlXG4gICAqIG9ic2VydmFibGUuIElmIHRoZSBzdGFjayBpcyBlbXB0eSBvciBgbGFzdEl0ZW1gIGlzIG5vdCBvbiB0aGUgc3RhY2sgaXQgZG9lcyBub3RoaW5nLlxuICAgKiBAcGFyYW0gbGFzdEl0ZW0gdGhlIGVsZW1lbnQgd2hpY2ggc2hvdWxkIGJlIGxlZnQgb24gdGhlIHN0YWNrXG4gICAqIEByZXR1cm4gd2hldGhlciBvciBub3QgYW4gaXRlbSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFja1xuICAgKi9cbiAgY2xvc2VTdWJNZW51T2YobGFzdEl0ZW06IE1lbnVTdGFja0l0ZW0pIHtcbiAgICBsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGxhc3RJdGVtKSA+PSAwKSB7XG4gICAgICByZW1vdmVkID0gdGhpcy5wZWVrKCkgIT09IGxhc3RJdGVtO1xuICAgICAgd2hpbGUgKHRoaXMucGVlaygpICE9PSBsYXN0SXRlbSkge1xuICAgICAgICB0aGlzLl9jbG9zZS5uZXh0KHtpdGVtOiB0aGlzLl9lbGVtZW50cy5wb3AoKSF9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cblxuICAvKipcbiAgICogUG9wIG9mZiBhbGwgTWVudVN0YWNrSXRlbXMgYW5kIGVtaXQgZWFjaCBvbmUgb24gdGhlIGBjbG9zZWAgb2JzZXJ2YWJsZSBvbmUgYnkgb25lLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRoYXQgY29uZmlndXJlIGJlaGF2aW9yIG9uIGNsb3NlLlxuICAgKi9cbiAgY2xvc2VBbGwob3B0aW9ucz86IENsb3NlT3B0aW9ucykge1xuICAgIGNvbnN0IHtmb2N1c05leHRPbkVtcHR5LCBmb2N1c1BhcmVudFRyaWdnZXJ9ID0gey4uLm9wdGlvbnN9O1xuICAgIGlmICghdGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHdoaWxlICghdGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgY29uc3QgbWVudVN0YWNrSXRlbSA9IHRoaXMuX2VsZW1lbnRzLnBvcCgpO1xuICAgICAgICBpZiAobWVudVN0YWNrSXRlbSkge1xuICAgICAgICAgIHRoaXMuX2Nsb3NlLm5leHQoe2l0ZW06IG1lbnVTdGFja0l0ZW0sIGZvY3VzUGFyZW50VHJpZ2dlcn0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl9lbXB0eS5uZXh0KGZvY3VzTmV4dE9uRW1wdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHN0YWNrIGlzIGVtcHR5LiAqL1xuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5fZWxlbWVudHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzdGFjay4gKi9cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50cy5sZW5ndGg7XG4gIH1cblxuICAvKiogR2V0IHRoZSB0b3AgbW9zdCBlbGVtZW50IG9uIHRoZSBzdGFjay4gKi9cbiAgcGVlaygpOiBNZW51U3RhY2tJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHNbdGhpcy5fZWxlbWVudHMubGVuZ3RoIC0gMV07XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgbWVudSBzdGFjayBpcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5saW5lIG1lbnUuICovXG4gIGhhc0lubGluZU1lbnUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubGluZU1lbnVPcmllbnRhdGlvbiAhPSBudWxsO1xuICB9XG5cbiAgLyoqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgYXNzb2NpYXRlZCBpbmxpbmUgbWVudS4gKi9cbiAgaW5saW5lTWVudU9yaWVudGF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmxpbmVNZW51T3JpZW50YXRpb247XG4gIH1cblxuICAvKiogU2V0cyB3aGV0aGVyIHRoZSBtZW51IHN0YWNrIGNvbnRhaW5zIHRoZSBmb2N1c2VkIGVsZW1lbnQuICovXG4gIHNldEhhc0ZvY3VzKGhhc0ZvY3VzOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGFzRm9jdXMubmV4dChoYXNGb2N1cyk7XG4gIH1cbn1cbiJdfQ==
|