@angular/cdk 16.0.0-next.4 → 16.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/a11y/index.d.ts +2 -2
- package/accordion/index.d.ts +2 -2
- package/bidi/index.d.ts +1 -1
- package/clipboard/index.d.ts +1 -1
- package/drag-drop/index.d.ts +6 -6
- package/{esm2020 → esm2022}/a11y/a11y-module.mjs +5 -5
- package/{esm2020 → esm2022}/a11y/aria-describer/aria-describer.mjs +4 -4
- package/{esm2020 → esm2022}/a11y/focus-monitor/focus-monitor.mjs +7 -7
- package/{esm2020 → esm2022}/a11y/focus-trap/configurable-focus-trap-factory.mjs +4 -4
- package/{esm2020 → esm2022}/a11y/focus-trap/focus-trap-manager.mjs +4 -4
- package/{esm2020 → esm2022}/a11y/focus-trap/focus-trap.mjs +7 -7
- package/{esm2020 → esm2022}/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +4 -4
- package/{esm2020 → esm2022}/a11y/input-modality/input-modality-detector.mjs +4 -4
- package/{esm2020 → esm2022}/a11y/interactivity-checker/interactivity-checker.mjs +4 -4
- package/{esm2020 → esm2022}/a11y/live-announcer/live-announcer.mjs +7 -7
- package/{esm2020 → esm2022}/accordion/accordion-item.mjs +8 -8
- package/{esm2020 → esm2022}/accordion/accordion-module.mjs +5 -5
- package/{esm2020 → esm2022}/accordion/accordion.mjs +4 -4
- package/{esm2020 → esm2022}/bidi/bidi-module.mjs +5 -5
- package/{esm2020 → esm2022}/bidi/dir.mjs +4 -4
- package/{esm2020 → esm2022}/bidi/directionality.mjs +4 -4
- package/{esm2020 → esm2022}/clipboard/clipboard-module.mjs +5 -5
- package/{esm2020 → esm2022}/clipboard/clipboard.mjs +4 -4
- package/{esm2020 → esm2022}/clipboard/copy-to-clipboard.mjs +4 -4
- package/{esm2020 → esm2022}/collections/unique-selection-dispatcher.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/dialog-container.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/dialog-module.mjs +12 -12
- package/{esm2020 → esm2022}/dialog/dialog.mjs +4 -4
- package/{esm2020 → esm2022}/drag-drop/directives/drag-handle.mjs +4 -4
- package/{esm2020 → esm2022}/drag-drop/directives/drag-placeholder.mjs +4 -4
- package/{esm2020 → esm2022}/drag-drop/directives/drag-preview.mjs +4 -4
- package/esm2022/drag-drop/directives/drag.mjs +489 -0
- package/{esm2020 → esm2022}/drag-drop/directives/drop-list-group.mjs +4 -4
- package/esm2022/drag-drop/directives/drop-list.mjs +348 -0
- package/{esm2020 → esm2022}/drag-drop/drag-drop-module.mjs +15 -15
- package/{esm2020 → esm2022}/drag-drop/drag-drop-registry.mjs +4 -4
- package/{esm2020 → esm2022}/drag-drop/drag-drop.mjs +4 -4
- package/{esm2020 → esm2022}/layout/breakpoints-observer.mjs +4 -4
- package/{esm2020 → esm2022}/layout/layout-module.mjs +5 -5
- package/{esm2020 → esm2022}/layout/media-matcher.mjs +4 -4
- package/{esm2020 → esm2022}/listbox/listbox-module.mjs +5 -5
- package/{esm2020 → esm2022}/listbox/listbox.mjs +13 -13
- package/{esm2020 → esm2022}/menu/context-menu-trigger.mjs +10 -10
- package/{esm2020 → esm2022}/menu/menu-aim.mjs +7 -7
- package/{esm2020 → esm2022}/menu/menu-bar.mjs +8 -8
- package/{esm2020 → esm2022}/menu/menu-base.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu-group.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu-item-checkbox.mjs +7 -7
- package/{esm2020 → esm2022}/menu/menu-item-radio.mjs +7 -7
- package/{esm2020 → esm2022}/menu/menu-item-selectable.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu-item.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu-module.mjs +21 -21
- package/{esm2020 → esm2022}/menu/menu-stack.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu-trigger-base.mjs +4 -4
- package/esm2022/menu/menu-trigger.mjs +307 -0
- package/{esm2020 → esm2022}/menu/menu.mjs +8 -8
- package/{esm2020 → esm2022}/observers/observe-content.mjs +14 -14
- package/{esm2020 → esm2022}/overlay/dispatchers/base-overlay-dispatcher.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/fullscreen-overlay-container.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/overlay-container.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/overlay-directives.mjs +7 -7
- package/{esm2020 → esm2022}/overlay/overlay-module.mjs +5 -5
- package/{esm2020 → esm2022}/overlay/overlay.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/position/overlay-position-builder.mjs +4 -4
- package/{esm2020 → esm2022}/overlay/scroll/scroll-strategy-options.mjs +4 -4
- package/{esm2020 → esm2022}/platform/platform-module.mjs +5 -5
- package/{esm2020 → esm2022}/platform/platform.mjs +4 -4
- package/esm2022/portal/portal-directives.mjs +250 -0
- package/{esm2020 → esm2022}/scrolling/fixed-size-virtual-scroll.mjs +10 -10
- package/{esm2020 → esm2022}/scrolling/scroll-dispatcher.mjs +4 -4
- package/{esm2020 → esm2022}/scrolling/scrollable.mjs +4 -4
- package/{esm2020 → esm2022}/scrolling/scrolling-module.mjs +19 -19
- package/{esm2020 → esm2022}/scrolling/viewport-ruler.mjs +4 -4
- package/{esm2020 → esm2022}/scrolling/virtual-for-of.mjs +4 -4
- package/{esm2020 → esm2022}/scrolling/virtual-scroll-viewport.mjs +10 -10
- package/{esm2020 → esm2022}/scrolling/virtual-scrollable-element.mjs +4 -4
- package/{esm2020 → esm2022}/scrolling/virtual-scrollable-window.mjs +4 -4
- package/{esm2020 → esm2022}/scrolling/virtual-scrollable.mjs +4 -4
- package/{esm2020 → esm2022}/stepper/step-header.mjs +4 -4
- package/{esm2020 → esm2022}/stepper/step-label.mjs +4 -4
- package/{esm2020 → esm2022}/stepper/stepper-button.mjs +7 -7
- package/{esm2020 → esm2022}/stepper/stepper-module.mjs +10 -10
- package/{esm2020 → esm2022}/stepper/stepper.mjs +7 -7
- package/{esm2020 → esm2022}/table/cell.mjs +22 -22
- package/{esm2020 → esm2022}/table/coalesced-style-scheduler.mjs +4 -4
- package/esm2022/table/row.mjs +271 -0
- package/{esm2020 → esm2022}/table/table-module.mjs +47 -47
- package/{esm2020 → esm2022}/table/table.mjs +25 -25
- package/{esm2020 → esm2022}/table/text-column.mjs +6 -6
- package/{esm2020 → esm2022}/text-field/autofill.mjs +7 -7
- package/{esm2020 → esm2022}/text-field/autosize.mjs +4 -4
- package/{esm2020 → esm2022}/text-field/text-field-module.mjs +5 -5
- package/{esm2020 → esm2022}/tree/nested-node.mjs +7 -7
- package/{esm2020 → esm2022}/tree/node.mjs +4 -4
- package/{esm2020 → esm2022}/tree/outlet.mjs +4 -4
- package/{esm2020 → esm2022}/tree/padding.mjs +4 -4
- package/{esm2020 → esm2022}/tree/toggle.mjs +4 -4
- package/{esm2020 → esm2022}/tree/tree-module.mjs +17 -17
- package/esm2022/tree/tree.mjs +349 -0
- package/{esm2020 → esm2022}/version.mjs +1 -1
- package/{fesm2020 → fesm2022}/a11y.mjs +40 -197
- package/fesm2022/a11y.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/accordion.mjs +14 -51
- package/fesm2022/accordion.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bidi.mjs +10 -54
- package/fesm2022/bidi.mjs.map +1 -0
- package/fesm2022/cdk.mjs +7 -0
- package/fesm2022/cdk.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/clipboard.mjs +10 -54
- package/fesm2022/clipboard.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/coercion.mjs +0 -58
- package/fesm2022/coercion.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/collections.mjs +5 -70
- package/fesm2022/collections.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/dialog.mjs +17 -75
- package/fesm2022/dialog.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/drag-drop.mjs +45 -216
- package/fesm2022/drag-drop.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/keycodes.mjs +0 -30
- package/fesm2022/keycodes.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/layout.mjs +10 -54
- package/fesm2022/layout.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/listbox.mjs +16 -46
- package/fesm2022/listbox.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/menu.mjs +86 -220
- package/fesm2022/menu.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/observers.mjs +13 -36
- package/fesm2022/observers.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/overlay.mjs +34 -206
- package/fesm2022/overlay.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/platform.mjs +7 -72
- package/fesm2022/platform.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/portal.mjs +26 -77
- package/fesm2022/portal.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/scrolling.mjs +57 -158
- package/fesm2022/scrolling.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/stepper.mjs +27 -78
- package/fesm2022/stepper.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/table.mjs +134 -227
- package/fesm2022/table.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/testing/selenium-webdriver.mjs +0 -37
- package/fesm2022/testing/selenium-webdriver.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/testing/testbed.mjs +1 -72
- package/fesm2022/testing/testbed.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/testing.mjs +0 -66
- package/fesm2022/testing.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/text-field.mjs +13 -50
- package/fesm2022/text-field.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/tree.mjs +45 -131
- package/fesm2022/tree.mjs.map +1 -0
- package/listbox/index.d.ts +2 -2
- package/menu/index.d.ts +5 -5
- package/observers/index.d.ts +1 -1
- package/overlay/index.d.ts +1 -1
- package/package.json +77 -131
- package/portal/index.d.ts +2 -2
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/ng-update/devkit-file-system.js +3 -2
- package/schematics/ng-update/devkit-file-system.mjs +3 -2
- package/schematics/ng-update/migrations/attribute-selectors.js +5 -8
- package/schematics/ng-update/migrations/attribute-selectors.mjs +5 -8
- package/schematics/ng-update/migrations/class-inheritance.js +8 -11
- package/schematics/ng-update/migrations/class-inheritance.mjs +8 -11
- package/schematics/ng-update/migrations/class-names.js +12 -15
- package/schematics/ng-update/migrations/class-names.mjs +12 -15
- package/schematics/ng-update/migrations/constructor-signature.js +7 -10
- package/schematics/ng-update/migrations/constructor-signature.mjs +7 -10
- package/schematics/ng-update/migrations/css-selectors.js +5 -8
- package/schematics/ng-update/migrations/css-selectors.mjs +5 -8
- package/schematics/ng-update/migrations/element-selectors.js +5 -8
- package/schematics/ng-update/migrations/element-selectors.mjs +5 -8
- package/schematics/ng-update/migrations/input-names.js +5 -8
- package/schematics/ng-update/migrations/input-names.mjs +5 -8
- package/schematics/ng-update/migrations/method-call-arguments.js +5 -8
- package/schematics/ng-update/migrations/method-call-arguments.mjs +5 -8
- package/schematics/ng-update/migrations/misc-template.js +3 -6
- package/schematics/ng-update/migrations/misc-template.mjs +3 -6
- package/schematics/ng-update/migrations/output-names.js +5 -8
- package/schematics/ng-update/migrations/output-names.mjs +5 -8
- package/schematics/ng-update/migrations/property-names.js +5 -8
- package/schematics/ng-update/migrations/property-names.mjs +5 -8
- package/schematics/ng-update/migrations/symbol-removal.js +5 -8
- package/schematics/ng-update/migrations/symbol-removal.mjs +5 -8
- package/schematics/update-tool/component-resource-collector.js +5 -3
- package/schematics/update-tool/component-resource-collector.mjs +5 -3
- package/schematics/update-tool/index.js +8 -2
- package/schematics/update-tool/index.mjs +8 -2
- package/schematics/update-tool/migration.js +10 -3
- package/schematics/update-tool/migration.mjs +10 -3
- package/schematics/update-tool/utils/virtual-host.js +3 -2
- package/schematics/update-tool/utils/virtual-host.mjs +3 -2
- package/scrolling/index.d.ts +3 -3
- package/stepper/index.d.ts +4 -4
- package/table/index.d.ts +6 -6
- package/text-field/index.d.ts +1 -1
- package/tree/index.d.ts +6 -6
- package/esm2020/drag-drop/directives/drag.mjs +0 -489
- package/esm2020/drag-drop/directives/drop-list.mjs +0 -348
- package/esm2020/menu/menu-trigger.mjs +0 -306
- package/esm2020/portal/portal-directives.mjs +0 -250
- package/esm2020/table/row.mjs +0 -271
- package/esm2020/tree/tree.mjs +0 -349
- package/fesm2015/a11y.mjs +0 -2544
- package/fesm2015/a11y.mjs.map +0 -1
- package/fesm2015/accordion.mjs +0 -275
- package/fesm2015/accordion.mjs.map +0 -1
- package/fesm2015/bidi.mjs +0 -194
- package/fesm2015/bidi.mjs.map +0 -1
- package/fesm2015/cdk.mjs +0 -30
- package/fesm2015/cdk.mjs.map +0 -1
- package/fesm2015/clipboard.mjs +0 -263
- package/fesm2015/clipboard.mjs.map +0 -1
- package/fesm2015/coercion.mjs.map +0 -1
- package/fesm2015/collections.mjs.map +0 -1
- package/fesm2015/dialog.mjs +0 -800
- package/fesm2015/dialog.mjs.map +0 -1
- package/fesm2015/drag-drop.mjs +0 -3823
- package/fesm2015/drag-drop.mjs.map +0 -1
- package/fesm2015/keycodes.mjs +0 -167
- package/fesm2015/keycodes.mjs.map +0 -1
- package/fesm2015/layout.mjs.map +0 -1
- package/fesm2015/listbox.mjs +0 -918
- package/fesm2015/listbox.mjs.map +0 -1
- package/fesm2015/menu.mjs +0 -2009
- package/fesm2015/menu.mjs.map +0 -1
- package/fesm2015/observers.mjs +0 -211
- package/fesm2015/observers.mjs.map +0 -1
- package/fesm2015/overlay.mjs +0 -3142
- package/fesm2015/overlay.mjs.map +0 -1
- package/fesm2015/platform.mjs +0 -385
- package/fesm2015/platform.mjs.map +0 -1
- package/fesm2015/portal.mjs +0 -691
- package/fesm2015/portal.mjs.map +0 -1
- package/fesm2015/scrolling.mjs +0 -1566
- package/fesm2015/scrolling.mjs.map +0 -1
- package/fesm2015/stepper.mjs +0 -621
- package/fesm2015/stepper.mjs.map +0 -1
- package/fesm2015/table.mjs +0 -2357
- package/fesm2015/table.mjs.map +0 -1
- package/fesm2015/testing/selenium-webdriver.mjs +0 -419
- package/fesm2015/testing/selenium-webdriver.mjs.map +0 -1
- package/fesm2015/testing/testbed.mjs +0 -868
- package/fesm2015/testing/testbed.mjs.map +0 -1
- package/fesm2015/testing.mjs +0 -785
- package/fesm2015/testing.mjs.map +0 -1
- package/fesm2015/text-field.mjs +0 -461
- package/fesm2015/text-field.mjs.map +0 -1
- package/fesm2015/tree.mjs +0 -950
- package/fesm2015/tree.mjs.map +0 -1
- package/fesm2020/a11y.mjs.map +0 -1
- package/fesm2020/accordion.mjs.map +0 -1
- package/fesm2020/bidi.mjs.map +0 -1
- package/fesm2020/cdk.mjs +0 -30
- package/fesm2020/cdk.mjs.map +0 -1
- package/fesm2020/clipboard.mjs.map +0 -1
- package/fesm2020/coercion.mjs +0 -132
- package/fesm2020/coercion.mjs.map +0 -1
- package/fesm2020/collections.mjs +0 -543
- package/fesm2020/collections.mjs.map +0 -1
- package/fesm2020/dialog.mjs.map +0 -1
- package/fesm2020/drag-drop.mjs.map +0 -1
- package/fesm2020/keycodes.mjs.map +0 -1
- package/fesm2020/layout.mjs +0 -254
- package/fesm2020/layout.mjs.map +0 -1
- package/fesm2020/listbox.mjs.map +0 -1
- package/fesm2020/menu.mjs.map +0 -1
- package/fesm2020/observers.mjs.map +0 -1
- package/fesm2020/overlay.mjs.map +0 -1
- package/fesm2020/platform.mjs.map +0 -1
- package/fesm2020/portal.mjs.map +0 -1
- package/fesm2020/scrolling.mjs.map +0 -1
- package/fesm2020/stepper.mjs.map +0 -1
- package/fesm2020/table.mjs.map +0 -1
- package/fesm2020/testing/selenium-webdriver.mjs.map +0 -1
- package/fesm2020/testing/testbed.mjs.map +0 -1
- package/fesm2020/testing.mjs.map +0 -1
- package/fesm2020/text-field.mjs.map +0 -1
- package/fesm2020/tree.mjs.map +0 -1
- /package/{esm2020 → esm2022}/a11y/a11y_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/aria-describer/aria-reference.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/fake-event-detection.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/focus-trap/configurable-focus-trap-config.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/focus-trap/configurable-focus-trap.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/focus-trap/event-listener-inert-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/focus-trap/focus-trap-inert-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/index.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/key-manager/activedescendant-key-manager.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/key-manager/focus-key-manager.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/key-manager/list-key-manager.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/live-announcer/live-announcer-tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/a11y/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/accordion/accordion_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/accordion/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/bidi/bidi_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/bidi/dir-document-token.mjs +0 -0
- /package/{esm2020 → esm2022}/bidi/index.mjs +0 -0
- /package/{esm2020 → esm2022}/bidi/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/clipboard/clipboard_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/clipboard/index.mjs +0 -0
- /package/{esm2020 → esm2022}/clipboard/pending-copy.mjs +0 -0
- /package/{esm2020 → esm2022}/clipboard/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/array.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/boolean-property.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/css-pixel-value.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/element.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/number-property.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/coercion/string-array.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/array-data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/collection-viewer.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/collections_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/dispose-view-repeater-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/index.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/recycle-view-repeater-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/selection-model.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/tree-adapter.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/view-repeater.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialog-config.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialog-injectors.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialog-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialog_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/directives/assertions.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/directives/config.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/dom/client-rect.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/dom/clone-node.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/dom/parent-position-tracker.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/dom/styling.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/dom/transition-duration.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/drag-drop_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/drag-events.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/drag-parent.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/drag-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/drag-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/drop-list-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/index.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/sorting/drop-list-sort-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/drag-drop/sorting/single-axis-sort-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/keycodes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/keycodes/keycodes.mjs +0 -0
- /package/{esm2020 → esm2022}/keycodes/keycodes_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/keycodes/modifiers.mjs +0 -0
- /package/{esm2020 → esm2022}/keycodes/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/breakpoints.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/index.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/layout_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/listbox/index.mjs +0 -0
- /package/{esm2020 → esm2022}/listbox/listbox_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/listbox/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/menu-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/menu-interface.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/menu_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/pointer-focus-tracker.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/observers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/observers/observers_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/observers/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/dispatchers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/index.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/overlay-config.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/overlay-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/overlay-reference.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/overlay_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/position/connected-position.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/position/flexible-connected-position-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/position/global-position-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/position/position-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/position/scroll-clip.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/scroll/block-scroll-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/scroll/close-scroll-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/scroll/index.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/scroll/noop-scroll-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/scroll/reposition-scroll-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/overlay/scroll/scroll-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/features/input-types.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/features/passive-listeners.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/features/scrolling.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/features/shadow-dom.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/features/test-environment.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/index.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/platform_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/platform/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/dom-portal-outlet.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/portal-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/portal-injector.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/portal.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/portal_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/portal/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/scrolling/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scrolling/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/scrolling/scrolling_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/scrolling/virtual-scroll-repeater.mjs +0 -0
- /package/{esm2020 → esm2022}/scrolling/virtual-scroll-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/stepper/index.mjs +0 -0
- /package/{esm2020 → esm2022}/stepper/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/stepper/stepper_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/can-stick.mjs +0 -0
- /package/{esm2020 → esm2022}/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/table/sticky-position-listener.mjs +0 -0
- /package/{esm2020 → esm2022}/table/sticky-styler.mjs +0 -0
- /package/{esm2020 → esm2022}/table/table-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/table/table_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/change-detection.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/component-harness.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/element-dimensions.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/harness-environment.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/selenium-webdriver/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/selenium-webdriver/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/selenium-webdriver/selenium-web-driver-element.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/selenium-webdriver/selenium-webdriver-keys.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/test-element-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/test-element.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/fake-events/dispatch-events.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/fake-events/element-focus.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/fake-events/event-objects.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/fake-events/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/fake-events/type-in-element.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/task-state-zone-interceptor.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/testbed-harness-environment.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testbed/unit-test-element.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/text-filtering.mjs +0 -0
- /package/{esm2020 → esm2022}/text-field/index.mjs +0 -0
- /package/{esm2020 → esm2022}/text-field/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/text-field/text-field_public_index.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/control/base-tree-control.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/control/flat-tree-control.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/control/nested-tree-control.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/control/tree-control.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/tree-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/tree/tree_public_index.mjs +0 -0
|
@@ -1,348 +0,0 @@
|
|
|
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 { coerceArray, coerceNumberProperty, coerceBooleanProperty, } from '@angular/cdk/coercion';
|
|
9
|
-
import { ElementRef, EventEmitter, Input, Output, Optional, Directive, ChangeDetectorRef, SkipSelf, Inject, InjectionToken, } from '@angular/core';
|
|
10
|
-
import { Directionality } from '@angular/cdk/bidi';
|
|
11
|
-
import { ScrollDispatcher } from '@angular/cdk/scrolling';
|
|
12
|
-
import { CDK_DROP_LIST_GROUP, CdkDropListGroup } from './drop-list-group';
|
|
13
|
-
import { DragDrop } from '../drag-drop';
|
|
14
|
-
import { CDK_DRAG_CONFIG } from './config';
|
|
15
|
-
import { merge, Subject } from 'rxjs';
|
|
16
|
-
import { startWith, takeUntil } from 'rxjs/operators';
|
|
17
|
-
import { assertElementNode } from './assertions';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "../drag-drop";
|
|
20
|
-
import * as i2 from "@angular/cdk/scrolling";
|
|
21
|
-
import * as i3 from "@angular/cdk/bidi";
|
|
22
|
-
import * as i4 from "./drop-list-group";
|
|
23
|
-
/** Counter used to generate unique ids for drop zones. */
|
|
24
|
-
let _uniqueIdCounter = 0;
|
|
25
|
-
/**
|
|
26
|
-
* Injection token that can be used to reference instances of `CdkDropList`. It serves as
|
|
27
|
-
* alternative token to the actual `CdkDropList` class which could cause unnecessary
|
|
28
|
-
* retention of the class and its directive metadata.
|
|
29
|
-
*/
|
|
30
|
-
export const CDK_DROP_LIST = new InjectionToken('CdkDropList');
|
|
31
|
-
/** Container that wraps a set of draggable items. */
|
|
32
|
-
class CdkDropList {
|
|
33
|
-
/** Whether starting a dragging sequence from this container is disabled. */
|
|
34
|
-
get disabled() {
|
|
35
|
-
return this._disabled || (!!this._group && this._group.disabled);
|
|
36
|
-
}
|
|
37
|
-
set disabled(value) {
|
|
38
|
-
// Usually we sync the directive and ref state right before dragging starts, in order to have
|
|
39
|
-
// a single point of failure and to avoid having to use setters for everything. `disabled` is
|
|
40
|
-
// a special case, because it can prevent the `beforeStarted` event from firing, which can lock
|
|
41
|
-
// the user in a disabled state, so we also need to sync it as it's being set.
|
|
42
|
-
this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);
|
|
43
|
-
}
|
|
44
|
-
constructor(
|
|
45
|
-
/** Element that the drop list is attached to. */
|
|
46
|
-
element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {
|
|
47
|
-
this.element = element;
|
|
48
|
-
this._changeDetectorRef = _changeDetectorRef;
|
|
49
|
-
this._scrollDispatcher = _scrollDispatcher;
|
|
50
|
-
this._dir = _dir;
|
|
51
|
-
this._group = _group;
|
|
52
|
-
/** Emits when the list has been destroyed. */
|
|
53
|
-
this._destroyed = new Subject();
|
|
54
|
-
/**
|
|
55
|
-
* Other draggable containers that this container is connected to and into which the
|
|
56
|
-
* container's items can be transferred. Can either be references to other drop containers,
|
|
57
|
-
* or their unique IDs.
|
|
58
|
-
*/
|
|
59
|
-
this.connectedTo = [];
|
|
60
|
-
/**
|
|
61
|
-
* Unique ID for the drop zone. Can be used as a reference
|
|
62
|
-
* in the `connectedTo` of another `CdkDropList`.
|
|
63
|
-
*/
|
|
64
|
-
this.id = `cdk-drop-list-${_uniqueIdCounter++}`;
|
|
65
|
-
/**
|
|
66
|
-
* Function that is used to determine whether an item
|
|
67
|
-
* is allowed to be moved into a drop container.
|
|
68
|
-
*/
|
|
69
|
-
this.enterPredicate = () => true;
|
|
70
|
-
/** Functions that is used to determine whether an item can be sorted into a particular index. */
|
|
71
|
-
this.sortPredicate = () => true;
|
|
72
|
-
/** Emits when the user drops an item inside the container. */
|
|
73
|
-
this.dropped = new EventEmitter();
|
|
74
|
-
/**
|
|
75
|
-
* Emits when the user has moved a new drag item into this container.
|
|
76
|
-
*/
|
|
77
|
-
this.entered = new EventEmitter();
|
|
78
|
-
/**
|
|
79
|
-
* Emits when the user removes an item from the container
|
|
80
|
-
* by dragging it into another container.
|
|
81
|
-
*/
|
|
82
|
-
this.exited = new EventEmitter();
|
|
83
|
-
/** Emits as the user is swapping items while actively dragging. */
|
|
84
|
-
this.sorted = new EventEmitter();
|
|
85
|
-
/**
|
|
86
|
-
* Keeps track of the items that are registered with this container. Historically we used to
|
|
87
|
-
* do this with a `ContentChildren` query, however queries don't handle transplanted views very
|
|
88
|
-
* well which means that we can't handle cases like dragging the headers of a `mat-table`
|
|
89
|
-
* correctly. What we do instead is to have the items register themselves with the container
|
|
90
|
-
* and then we sort them based on their position in the DOM.
|
|
91
|
-
*/
|
|
92
|
-
this._unsortedItems = new Set();
|
|
93
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
94
|
-
assertElementNode(element.nativeElement, 'cdkDropList');
|
|
95
|
-
}
|
|
96
|
-
this._dropListRef = dragDrop.createDropList(element);
|
|
97
|
-
this._dropListRef.data = this;
|
|
98
|
-
if (config) {
|
|
99
|
-
this._assignDefaults(config);
|
|
100
|
-
}
|
|
101
|
-
this._dropListRef.enterPredicate = (drag, drop) => {
|
|
102
|
-
return this.enterPredicate(drag.data, drop.data);
|
|
103
|
-
};
|
|
104
|
-
this._dropListRef.sortPredicate = (index, drag, drop) => {
|
|
105
|
-
return this.sortPredicate(index, drag.data, drop.data);
|
|
106
|
-
};
|
|
107
|
-
this._setupInputSyncSubscription(this._dropListRef);
|
|
108
|
-
this._handleEvents(this._dropListRef);
|
|
109
|
-
CdkDropList._dropLists.push(this);
|
|
110
|
-
if (_group) {
|
|
111
|
-
_group._items.add(this);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/** Registers an items with the drop list. */
|
|
115
|
-
addItem(item) {
|
|
116
|
-
this._unsortedItems.add(item);
|
|
117
|
-
if (this._dropListRef.isDragging()) {
|
|
118
|
-
this._syncItemsWithRef();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/** Removes an item from the drop list. */
|
|
122
|
-
removeItem(item) {
|
|
123
|
-
this._unsortedItems.delete(item);
|
|
124
|
-
if (this._dropListRef.isDragging()) {
|
|
125
|
-
this._syncItemsWithRef();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/** Gets the registered items in the list, sorted by their position in the DOM. */
|
|
129
|
-
getSortedItems() {
|
|
130
|
-
return Array.from(this._unsortedItems).sort((a, b) => {
|
|
131
|
-
const documentPosition = a._dragRef
|
|
132
|
-
.getVisibleElement()
|
|
133
|
-
.compareDocumentPosition(b._dragRef.getVisibleElement());
|
|
134
|
-
// `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.
|
|
135
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition
|
|
136
|
-
// tslint:disable-next-line:no-bitwise
|
|
137
|
-
return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
ngOnDestroy() {
|
|
141
|
-
const index = CdkDropList._dropLists.indexOf(this);
|
|
142
|
-
if (index > -1) {
|
|
143
|
-
CdkDropList._dropLists.splice(index, 1);
|
|
144
|
-
}
|
|
145
|
-
if (this._group) {
|
|
146
|
-
this._group._items.delete(this);
|
|
147
|
-
}
|
|
148
|
-
this._unsortedItems.clear();
|
|
149
|
-
this._dropListRef.dispose();
|
|
150
|
-
this._destroyed.next();
|
|
151
|
-
this._destroyed.complete();
|
|
152
|
-
}
|
|
153
|
-
/** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */
|
|
154
|
-
_setupInputSyncSubscription(ref) {
|
|
155
|
-
if (this._dir) {
|
|
156
|
-
this._dir.change
|
|
157
|
-
.pipe(startWith(this._dir.value), takeUntil(this._destroyed))
|
|
158
|
-
.subscribe(value => ref.withDirection(value));
|
|
159
|
-
}
|
|
160
|
-
ref.beforeStarted.subscribe(() => {
|
|
161
|
-
const siblings = coerceArray(this.connectedTo).map(drop => {
|
|
162
|
-
if (typeof drop === 'string') {
|
|
163
|
-
const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);
|
|
164
|
-
if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
165
|
-
console.warn(`CdkDropList could not find connected drop list with id "${drop}"`);
|
|
166
|
-
}
|
|
167
|
-
return correspondingDropList;
|
|
168
|
-
}
|
|
169
|
-
return drop;
|
|
170
|
-
});
|
|
171
|
-
if (this._group) {
|
|
172
|
-
this._group._items.forEach(drop => {
|
|
173
|
-
if (siblings.indexOf(drop) === -1) {
|
|
174
|
-
siblings.push(drop);
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
// Note that we resolve the scrollable parents here so that we delay the resolution
|
|
179
|
-
// as long as possible, ensuring that the element is in its final place in the DOM.
|
|
180
|
-
if (!this._scrollableParentsResolved) {
|
|
181
|
-
const scrollableParents = this._scrollDispatcher
|
|
182
|
-
.getAncestorScrollContainers(this.element)
|
|
183
|
-
.map(scrollable => scrollable.getElementRef().nativeElement);
|
|
184
|
-
this._dropListRef.withScrollableParents(scrollableParents);
|
|
185
|
-
// Only do this once since it involves traversing the DOM and the parents
|
|
186
|
-
// shouldn't be able to change without the drop list being destroyed.
|
|
187
|
-
this._scrollableParentsResolved = true;
|
|
188
|
-
}
|
|
189
|
-
ref.disabled = this.disabled;
|
|
190
|
-
ref.lockAxis = this.lockAxis;
|
|
191
|
-
ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);
|
|
192
|
-
ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);
|
|
193
|
-
ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);
|
|
194
|
-
ref
|
|
195
|
-
.connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))
|
|
196
|
-
.withOrientation(this.orientation);
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
/** Handles events from the underlying DropListRef. */
|
|
200
|
-
_handleEvents(ref) {
|
|
201
|
-
ref.beforeStarted.subscribe(() => {
|
|
202
|
-
this._syncItemsWithRef();
|
|
203
|
-
this._changeDetectorRef.markForCheck();
|
|
204
|
-
});
|
|
205
|
-
ref.entered.subscribe(event => {
|
|
206
|
-
this.entered.emit({
|
|
207
|
-
container: this,
|
|
208
|
-
item: event.item.data,
|
|
209
|
-
currentIndex: event.currentIndex,
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
ref.exited.subscribe(event => {
|
|
213
|
-
this.exited.emit({
|
|
214
|
-
container: this,
|
|
215
|
-
item: event.item.data,
|
|
216
|
-
});
|
|
217
|
-
this._changeDetectorRef.markForCheck();
|
|
218
|
-
});
|
|
219
|
-
ref.sorted.subscribe(event => {
|
|
220
|
-
this.sorted.emit({
|
|
221
|
-
previousIndex: event.previousIndex,
|
|
222
|
-
currentIndex: event.currentIndex,
|
|
223
|
-
container: this,
|
|
224
|
-
item: event.item.data,
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
ref.dropped.subscribe(dropEvent => {
|
|
228
|
-
this.dropped.emit({
|
|
229
|
-
previousIndex: dropEvent.previousIndex,
|
|
230
|
-
currentIndex: dropEvent.currentIndex,
|
|
231
|
-
previousContainer: dropEvent.previousContainer.data,
|
|
232
|
-
container: dropEvent.container.data,
|
|
233
|
-
item: dropEvent.item.data,
|
|
234
|
-
isPointerOverContainer: dropEvent.isPointerOverContainer,
|
|
235
|
-
distance: dropEvent.distance,
|
|
236
|
-
dropPoint: dropEvent.dropPoint,
|
|
237
|
-
event: dropEvent.event,
|
|
238
|
-
});
|
|
239
|
-
// Mark for check since all of these events run outside of change
|
|
240
|
-
// detection and we're not guaranteed for something else to have triggered it.
|
|
241
|
-
this._changeDetectorRef.markForCheck();
|
|
242
|
-
});
|
|
243
|
-
merge(ref.receivingStarted, ref.receivingStopped).subscribe(() => this._changeDetectorRef.markForCheck());
|
|
244
|
-
}
|
|
245
|
-
/** Assigns the default input values based on a provided config object. */
|
|
246
|
-
_assignDefaults(config) {
|
|
247
|
-
const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;
|
|
248
|
-
this.disabled = draggingDisabled == null ? false : draggingDisabled;
|
|
249
|
-
this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;
|
|
250
|
-
this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;
|
|
251
|
-
this.orientation = listOrientation || 'vertical';
|
|
252
|
-
if (lockAxis) {
|
|
253
|
-
this.lockAxis = lockAxis;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
/** Syncs up the registered drag items with underlying drop list ref. */
|
|
257
|
-
_syncItemsWithRef() {
|
|
258
|
-
this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/** Keeps track of the drop lists that are currently on the page. */
|
|
262
|
-
CdkDropList._dropLists = [];
|
|
263
|
-
CdkDropList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: CdkDropList, deps: [{ token: i0.ElementRef }, { token: i1.DragDrop }, { token: i0.ChangeDetectorRef }, { token: i2.ScrollDispatcher }, { token: i3.Directionality, optional: true }, { token: CDK_DROP_LIST_GROUP, optional: true, skipSelf: true }, { token: CDK_DRAG_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
264
|
-
CdkDropList.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: CdkDropList, isStandalone: true, selector: "[cdkDropList], cdk-drop-list", inputs: { connectedTo: ["cdkDropListConnectedTo", "connectedTo"], data: ["cdkDropListData", "data"], orientation: ["cdkDropListOrientation", "orientation"], id: "id", lockAxis: ["cdkDropListLockAxis", "lockAxis"], disabled: ["cdkDropListDisabled", "disabled"], sortingDisabled: ["cdkDropListSortingDisabled", "sortingDisabled"], enterPredicate: ["cdkDropListEnterPredicate", "enterPredicate"], sortPredicate: ["cdkDropListSortPredicate", "sortPredicate"], autoScrollDisabled: ["cdkDropListAutoScrollDisabled", "autoScrollDisabled"], autoScrollStep: ["cdkDropListAutoScrollStep", "autoScrollStep"] }, outputs: { dropped: "cdkDropListDropped", entered: "cdkDropListEntered", exited: "cdkDropListExited", sorted: "cdkDropListSorted" }, host: { properties: { "attr.id": "id", "class.cdk-drop-list-disabled": "disabled", "class.cdk-drop-list-dragging": "_dropListRef.isDragging()", "class.cdk-drop-list-receiving": "_dropListRef.isReceiving()" }, classAttribute: "cdk-drop-list" }, providers: [
|
|
265
|
-
// Prevent child drop lists from picking up the same group as their parent.
|
|
266
|
-
{ provide: CDK_DROP_LIST_GROUP, useValue: undefined },
|
|
267
|
-
{ provide: CDK_DROP_LIST, useExisting: CdkDropList },
|
|
268
|
-
], exportAs: ["cdkDropList"], ngImport: i0 });
|
|
269
|
-
export { CdkDropList };
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: CdkDropList, decorators: [{
|
|
271
|
-
type: Directive,
|
|
272
|
-
args: [{
|
|
273
|
-
selector: '[cdkDropList], cdk-drop-list',
|
|
274
|
-
exportAs: 'cdkDropList',
|
|
275
|
-
standalone: true,
|
|
276
|
-
providers: [
|
|
277
|
-
// Prevent child drop lists from picking up the same group as their parent.
|
|
278
|
-
{ provide: CDK_DROP_LIST_GROUP, useValue: undefined },
|
|
279
|
-
{ provide: CDK_DROP_LIST, useExisting: CdkDropList },
|
|
280
|
-
],
|
|
281
|
-
host: {
|
|
282
|
-
'class': 'cdk-drop-list',
|
|
283
|
-
'[attr.id]': 'id',
|
|
284
|
-
'[class.cdk-drop-list-disabled]': 'disabled',
|
|
285
|
-
'[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',
|
|
286
|
-
'[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',
|
|
287
|
-
},
|
|
288
|
-
}]
|
|
289
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DragDrop }, { type: i0.ChangeDetectorRef }, { type: i2.ScrollDispatcher }, { type: i3.Directionality, decorators: [{
|
|
290
|
-
type: Optional
|
|
291
|
-
}] }, { type: i4.CdkDropListGroup, decorators: [{
|
|
292
|
-
type: Optional
|
|
293
|
-
}, {
|
|
294
|
-
type: Inject,
|
|
295
|
-
args: [CDK_DROP_LIST_GROUP]
|
|
296
|
-
}, {
|
|
297
|
-
type: SkipSelf
|
|
298
|
-
}] }, { type: undefined, decorators: [{
|
|
299
|
-
type: Optional
|
|
300
|
-
}, {
|
|
301
|
-
type: Inject,
|
|
302
|
-
args: [CDK_DRAG_CONFIG]
|
|
303
|
-
}] }]; }, propDecorators: { connectedTo: [{
|
|
304
|
-
type: Input,
|
|
305
|
-
args: ['cdkDropListConnectedTo']
|
|
306
|
-
}], data: [{
|
|
307
|
-
type: Input,
|
|
308
|
-
args: ['cdkDropListData']
|
|
309
|
-
}], orientation: [{
|
|
310
|
-
type: Input,
|
|
311
|
-
args: ['cdkDropListOrientation']
|
|
312
|
-
}], id: [{
|
|
313
|
-
type: Input
|
|
314
|
-
}], lockAxis: [{
|
|
315
|
-
type: Input,
|
|
316
|
-
args: ['cdkDropListLockAxis']
|
|
317
|
-
}], disabled: [{
|
|
318
|
-
type: Input,
|
|
319
|
-
args: ['cdkDropListDisabled']
|
|
320
|
-
}], sortingDisabled: [{
|
|
321
|
-
type: Input,
|
|
322
|
-
args: ['cdkDropListSortingDisabled']
|
|
323
|
-
}], enterPredicate: [{
|
|
324
|
-
type: Input,
|
|
325
|
-
args: ['cdkDropListEnterPredicate']
|
|
326
|
-
}], sortPredicate: [{
|
|
327
|
-
type: Input,
|
|
328
|
-
args: ['cdkDropListSortPredicate']
|
|
329
|
-
}], autoScrollDisabled: [{
|
|
330
|
-
type: Input,
|
|
331
|
-
args: ['cdkDropListAutoScrollDisabled']
|
|
332
|
-
}], autoScrollStep: [{
|
|
333
|
-
type: Input,
|
|
334
|
-
args: ['cdkDropListAutoScrollStep']
|
|
335
|
-
}], dropped: [{
|
|
336
|
-
type: Output,
|
|
337
|
-
args: ['cdkDropListDropped']
|
|
338
|
-
}], entered: [{
|
|
339
|
-
type: Output,
|
|
340
|
-
args: ['cdkDropListEntered']
|
|
341
|
-
}], exited: [{
|
|
342
|
-
type: Output,
|
|
343
|
-
args: ['cdkDropListExited']
|
|
344
|
-
}], sorted: [{
|
|
345
|
-
type: Output,
|
|
346
|
-
args: ['cdkDropListSorted']
|
|
347
|
-
}] } });
|
|
348
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9kcmFnLWRyb3AvZGlyZWN0aXZlcy9kcm9wLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUVMLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBRXRCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFHeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHeEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWdELGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN4RixPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBRS9DLDBEQUEwRDtBQUMxRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQVN6Qjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBRTVFLHFEQUFxRDtBQUNyRCxNQWlCYSxXQUFXO0lB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O2dCQWU1QixlQUFlO3NCQURkLEtBQUs7dUJBQUMsNEJBQTRCO2dCQVFuQyxjQUFjO3NCQURiLEtBQUs7dUJBQUMsMkJBQTJCO2dCQUtsQyxhQUFhO3NCQURaLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUtqQyxrQkFBa0I7c0JBRGpCLEtBQUs7dUJBQUMsK0JBQStCO2dCQUt0QyxjQUFjO3NCQURiLEtBQUs7dUJBQUMsMkJBQTJCO2dCQUt6QixPQUFPO3NCQURmLE1BQU07dUJBQUMsb0JBQW9CO2dCQU9uQixPQUFPO3NCQURmLE1BQU07dUJBQUMsb0JBQW9CO2dCQVFuQixNQUFNO3NCQURkLE1BQU07dUJBQUMsbUJBQW1CO2dCQUtsQixNQUFNO3NCQURkLE1BQU07dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIEJvb2xlYW5JbnB1dCxcbiAgY29lcmNlQXJyYXksXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHksXG4gIE51bWJlcklucHV0LFxufSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIE9wdGlvbmFsLFxuICBEaXJlY3RpdmUsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBTa2lwU2VsZixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1Njcm9sbERpc3BhdGNoZXJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtDZGtEcmFnfSBmcm9tICcuL2RyYWcnO1xuaW1wb3J0IHtDZGtEcmFnRHJvcCwgQ2RrRHJhZ0VudGVyLCBDZGtEcmFnRXhpdCwgQ2RrRHJhZ1NvcnRFdmVudH0gZnJvbSAnLi4vZHJhZy1ldmVudHMnO1xuaW1wb3J0IHtDREtfRFJPUF9MSVNUX0dST1VQLCBDZGtEcm9wTGlzdEdyb3VwfSBmcm9tICcuL2Ryb3AtbGlzdC1ncm91cCc7XG5pbXBvcnQge0Ryb3BMaXN0UmVmfSBmcm9tICcuLi9kcm9wLWxpc3QtcmVmJztcbmltcG9ydCB7RHJhZ1JlZn0gZnJvbSAnLi4vZHJhZy1yZWYnO1xuaW1wb3J0IHtEcmFnRHJvcH0gZnJvbSAnLi4vZHJhZy1kcm9wJztcbmltcG9ydCB7RHJvcExpc3RPcmllbnRhdGlvbiwgRHJhZ0F4aXMsIERyYWdEcm9wQ29uZmlnLCBDREtfRFJBR19DT05GSUd9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7bWVyZ2UsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGgsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHthc3NlcnRFbGVtZW50Tm9kZX0gZnJvbSAnLi9hc3NlcnRpb25zJztcblxuLyoqIENvdW50ZXIgdXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgaWRzIGZvciBkcm9wIHpvbmVzLiAqL1xubGV0IF91bmlxdWVJZENvdW50ZXIgPSAwO1xuXG4vKipcbiAqIEludGVybmFsIGNvbXBpbGUtdGltZS1vbmx5IHJlcHJlc2VudGF0aW9uIG9mIGEgYENka0Ryb3BMaXN0YC5cbiAqIFVzZWQgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0IGlzc3VlcyBiZXR3ZWVuIHRoZSBgQ2RrRHJvcExpc3RgIGFuZCB0aGUgYENka0RyYWdgLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0Ryb3BMaXN0SW50ZXJuYWwgZXh0ZW5kcyBDZGtEcm9wTGlzdCB7fVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSBpbnN0YW5jZXMgb2YgYENka0Ryb3BMaXN0YC4gSXQgc2VydmVzIGFzXG4gKiBhbHRlcm5hdGl2ZSB0b2tlbiB0byB0aGUgYWN0dWFsIGBDZGtEcm9wTGlzdGAgY2xhc3Mgd2hpY2ggY291bGQgY2F1c2UgdW5uZWNlc3NhcnlcbiAqIHJldGVudGlvbiBvZiB0aGUgY2xhc3MgYW5kIGl0cyBkaXJlY3RpdmUgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBDREtfRFJPUF9MSVNUID0gbmV3IEluamVjdGlvblRva2VuPENka0Ryb3BMaXN0PignQ2RrRHJvcExpc3QnKTtcblxuLyoqIENvbnRhaW5lciB0aGF0IHdyYXBzIGEgc2V0IG9mIGRyYWdnYWJsZSBpdGVtcy4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjZGtEcm9wTGlzdF0sIGNkay1kcm9wLWxpc3QnLFxuICBleHBvcnRBczogJ2Nka0Ryb3BMaXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gUHJldmVudCBjaGlsZCBkcm9wIGxpc3RzIGZyb20gcGlja2luZyB1cCB0aGUgc2FtZSBncm91cCBhcyB0aGVpciBwYXJlbnQuXG4gICAge3Byb3ZpZGU6IENES19EUk9QX0xJU1RfR1JPVVAsIHVzZVZhbHVlOiB1bmRlZmluZWR9LFxuICAgIHtwcm92aWRlOiBDREtfRFJPUF9MSVNULCB1c2VFeGlzdGluZzogQ2RrRHJvcExpc3R9LFxuICBdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2Nkay1kcm9wLWxpc3QnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbY2xhc3MuY2RrLWRyb3AtbGlzdC1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuY2RrLWRyb3AtbGlzdC1kcmFnZ2luZ10nOiAnX2Ryb3BMaXN0UmVmLmlzRHJhZ2dpbmcoKScsXG4gICAgJ1tjbGFzcy5jZGstZHJvcC1saXN0LXJlY2VpdmluZ10nOiAnX2Ryb3BMaXN0UmVmLmlzUmVjZWl2aW5nKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDZGtEcm9wTGlzdDxUID0gYW55PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBsaXN0IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogV2hldGhlciB0aGUgZWxlbWVudCdzIHNjcm9sbGFibGUgcGFyZW50cyBoYXZlIGJlZW4gcmVzb2x2ZWQuICovXG4gIHByaXZhdGUgX3Njcm9sbGFibGVQYXJlbnRzUmVzb2x2ZWQ6IGJvb2xlYW47XG5cbiAgLyoqIEtlZXBzIHRyYWNrIG9mIHRoZSBkcm9wIGxpc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBvbiB0aGUgcGFnZS4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2Ryb3BMaXN0czogQ2RrRHJvcExpc3RbXSA9IFtdO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHVuZGVybHlpbmcgZHJvcCBsaXN0IGluc3RhbmNlLiAqL1xuICBfZHJvcExpc3RSZWY6IERyb3BMaXN0UmVmPENka0Ryb3BMaXN0PFQ+PjtcblxuICAvKipcbiAgICogT3RoZXIgZHJhZ2dhYmxlIGNvbnRhaW5lcnMgdGhhdCB0aGlzIGNvbnRhaW5lciBpcyBjb25uZWN0ZWQgdG8gYW5kIGludG8gd2hpY2ggdGhlXG4gICAqIGNvbnRhaW5lcidzIGl0ZW1zIGNhbiBiZSB0cmFuc2ZlcnJlZC4gQ2FuIGVpdGhlciBiZSByZWZlcmVuY2VzIHRvIG90aGVyIGRyb3AgY29udGFpbmVycyxcbiAgICogb3IgdGhlaXIgdW5pcXVlIElEcy5cbiAgICovXG4gIEBJbnB1dCgnY2RrRHJvcExpc3RDb25uZWN0ZWRUbycpXG4gIGNvbm5lY3RlZFRvOiAoQ2RrRHJvcExpc3QgfCBzdHJpbmcpW10gfCBDZGtEcm9wTGlzdCB8IHN0cmluZyA9IFtdO1xuXG4gIC8qKiBBcmJpdHJhcnkgZGF0YSB0byBhdHRhY2ggdG8gdGhpcyBjb250YWluZXIuICovXG4gIEBJbnB1dCgnY2RrRHJvcExpc3REYXRhJykgZGF0YTogVDtcblxuICAvKiogRGlyZWN0aW9uIGluIHdoaWNoIHRoZSBsaXN0IGlzIG9yaWVudGVkLiAqL1xuICBASW5wdXQoJ2Nka0Ryb3BMaXN0T3JpZW50YXRpb24nKSBvcmllbnRhdGlvbjogRHJvcExpc3RPcmllbnRhdGlvbjtcblxuICAvKipcbiAgICogVW5pcXVlIElEIGZvciB0aGUgZHJvcCB6b25lLiBDYW4gYmUgdXNlZCBhcyBhIHJlZmVyZW5jZVxuICAgKiBpbiB0aGUgYGNvbm5lY3RlZFRvYCBvZiBhbm90aGVyIGBDZGtEcm9wTGlzdGAuXG4gICAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nID0gYGNkay1kcm9wLWxpc3QtJHtfdW5pcXVlSWRDb3VudGVyKyt9YDtcblxuICAvKiogTG9ja3MgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnZ2FibGUgZWxlbWVudHMgaW5zaWRlIHRoZSBjb250YWluZXIgYWxvbmcgdGhlIHNwZWNpZmllZCBheGlzLiAqL1xuICBASW5wdXQoJ2Nka0Ryb3BMaXN0TG9ja0F4aXMnKSBsb2NrQXhpczogRHJhZ0F4aXM7XG5cbiAgLyoqIFdoZXRoZXIgc3RhcnRpbmcgYSBkcmFnZ2luZyBzZXF1ZW5jZSBmcm9tIHRoaXMgY29udGFpbmVyIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoJ2Nka0Ryb3BMaXN0RGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8ICghIXRoaXMuX2dyb3VwICYmIHRoaXMuX2dyb3VwLmRpc2FibGVkKTtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIC8vIFVzdWFsbHkgd2Ugc3luYyB0aGUgZGlyZWN0aXZlIGFuZCByZWYgc3RhdGUgcmlnaHQgYmVmb3JlIGRyYWdnaW5nIHN0YXJ0cywgaW4gb3JkZXIgdG8gaGF2ZVxuICAgIC8vIGEgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUgYW5kIHRvIGF2b2lkIGhhdmluZyB0byB1c2Ugc2V0dGVycyBmb3IgZXZlcnl0aGluZy4gYGRpc2FibGVkYCBpc1xuICAgIC8vIGEgc3BlY2lhbCBjYXNlLCBiZWNhdXNlIGl0IGNhbiBwcmV2ZW50IHRoZSBgYmVmb3JlU3RhcnRlZGAgZXZlbnQgZnJvbSBmaXJpbmcsIHdoaWNoIGNhbiBsb2NrXG4gICAgLy8gdGhlIHVzZXIgaW4gYSBkaXNhYmxlZCBzdGF0ZSwgc28gd2UgYWxzbyBuZWVkIHRvIHN5bmMgaXQgYXMgaXQncyBiZWluZyBzZXQuXG4gICAgdGhpcy5fZHJvcExpc3RSZWYuZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgc29ydGluZyB3aXRoaW4gdGhpcyBkcm9wIGxpc3QgaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgnY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWQnKVxuICBzb3J0aW5nRGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGFuIGl0ZW1cbiAgICogaXMgYWxsb3dlZCB0byBiZSBtb3ZlZCBpbnRvIGEgZHJvcCBjb250YWluZXIuXG4gICAqL1xuICBASW5wdXQoJ2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGUnKVxuICBlbnRlclByZWRpY2F0ZTogKGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcblxuICAvKiogRnVuY3Rpb25zIHRoYXQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBpdGVtIGNhbiBiZSBzb3J0ZWQgaW50byBhIHBhcnRpY3VsYXIgaW5kZXguICovXG4gIEBJbnB1dCgnY2RrRHJvcExpc3RTb3J0UHJlZGljYXRlJylcbiAgc29ydFByZWRpY2F0ZTogKGluZGV4OiBudW1iZXIsIGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0byBhdXRvLXNjcm9sbCB0aGUgdmlldyB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZWlyIHBvaW50ZXIgY2xvc2UgdG8gdGhlIGVkZ2VzLiAqL1xuICBASW5wdXQoJ2Nka0Ryb3BMaXN0QXV0b1Njcm9sbERpc2FibGVkJylcbiAgYXV0b1Njcm9sbERpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqIE51bWJlciBvZiBwaXhlbHMgdG8gc2Nyb2xsIGZvciBlYWNoIGZyYW1lIHdoZW4gYXV0by1zY3JvbGxpbmcgYW4gZWxlbWVudC4gKi9cbiAgQElucHV0KCdjZGtEcm9wTGlzdEF1dG9TY3JvbGxTdGVwJylcbiAgYXV0b1Njcm9sbFN0ZXA6IE51bWJlcklucHV0O1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB1c2VyIGRyb3BzIGFuIGl0ZW0gaW5zaWRlIHRoZSBjb250YWluZXIuICovXG4gIEBPdXRwdXQoJ2Nka0Ryb3BMaXN0RHJvcHBlZCcpXG4gIHJlYWRvbmx5IGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxDZGtEcmFnRHJvcDxULCBhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2RrRHJhZ0Ryb3A8VCwgYW55Pj4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdXNlciBoYXMgbW92ZWQgYSBuZXcgZHJhZyBpdGVtIGludG8gdGhpcyBjb250YWluZXIuXG4gICAqL1xuICBAT3V0cHV0KCdjZGtEcm9wTGlzdEVudGVyZWQnKVxuICByZWFkb25seSBlbnRlcmVkOiBFdmVudEVtaXR0ZXI8Q2RrRHJhZ0VudGVyPFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2RrRHJhZ0VudGVyPFQ+PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSB1c2VyIHJlbW92ZXMgYW4gaXRlbSBmcm9tIHRoZSBjb250YWluZXJcbiAgICogYnkgZHJhZ2dpbmcgaXQgaW50byBhbm90aGVyIGNvbnRhaW5lci5cbiAgICovXG4gIEBPdXRwdXQoJ2Nka0Ryb3BMaXN0RXhpdGVkJylcbiAgcmVhZG9ubHkgZXhpdGVkOiBFdmVudEVtaXR0ZXI8Q2RrRHJhZ0V4aXQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxDZGtEcmFnRXhpdDxUPj4oKTtcblxuICAvKiogRW1pdHMgYXMgdGhlIHVzZXIgaXMgc3dhcHBpbmcgaXRlbXMgd2hpbGUgYWN0aXZlbHkgZHJhZ2dpbmcuICovXG4gIEBPdXRwdXQoJ2Nka0Ryb3BMaXN0U29ydGVkJylcbiAgcmVhZG9ubHkgc29ydGVkOiBFdmVudEVtaXR0ZXI8Q2RrRHJhZ1NvcnRFdmVudDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPENka0RyYWdTb3J0RXZlbnQ8VD4+KCk7XG5cbiAgLyoqXG4gICAqIEtlZXBzIHRyYWNrIG9mIHRoZSBpdGVtcyB0aGF0IGFyZSByZWdpc3RlcmVkIHdpdGggdGhpcyBjb250YWluZXIuIEhpc3RvcmljYWxseSB3ZSB1c2VkIHRvXG4gICAqIGRvIHRoaXMgd2l0aCBhIGBDb250ZW50Q2hpbGRyZW5gIHF1ZXJ5LCBob3dldmVyIHF1ZXJpZXMgZG9uJ3QgaGFuZGxlIHRyYW5zcGxhbnRlZCB2aWV3cyB2ZXJ5XG4gICAqIHdlbGwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4ndCBoYW5kbGUgY2FzZXMgbGlrZSBkcmFnZ2luZyB0aGUgaGVhZGVycyBvZiBhIGBtYXQtdGFibGVgXG4gICAqIGNvcnJlY3RseS4gV2hhdCB3ZSBkbyBpbnN0ZWFkIGlzIHRvIGhhdmUgdGhlIGl0ZW1zIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgY29udGFpbmVyXG4gICAqIGFuZCB0aGVuIHdlIHNvcnQgdGhlbSBiYXNlZCBvbiB0aGVpciBwb3NpdGlvbiBpbiB0aGUgRE9NLlxuICAgKi9cbiAgcHJpdmF0ZSBfdW5zb3J0ZWRJdGVtcyA9IG5ldyBTZXQ8Q2RrRHJhZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogRWxlbWVudCB0aGF0IHRoZSBkcm9wIGxpc3QgaXMgYXR0YWNoZWQgdG8uICovXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIGRyYWdEcm9wOiBEcmFnRHJvcCxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kaXI/OiBEaXJlY3Rpb25hbGl0eSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoQ0RLX0RST1BfTElTVF9HUk9VUClcbiAgICBAU2tpcFNlbGYoKVxuICAgIHByaXZhdGUgX2dyb3VwPzogQ2RrRHJvcExpc3RHcm91cDxDZGtEcm9wTGlzdD4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDREtfRFJBR19DT05GSUcpIGNvbmZpZz86IERyYWdEcm9wQ29uZmlnLFxuICApIHtcbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICBhc3NlcnRFbGVtZW50Tm9kZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdjZGtEcm9wTGlzdCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2Ryb3BMaXN0UmVmID0gZHJhZ0Ryb3AuY3JlYXRlRHJvcExpc3QoZWxlbWVudCk7XG4gICAgdGhpcy5fZHJvcExpc3RSZWYuZGF0YSA9IHRoaXM7XG5cbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLl9hc3NpZ25EZWZhdWx0cyhjb25maWcpO1xuICAgIH1cblxuICAgIHRoaXMuX2Ryb3BMaXN0UmVmLmVudGVyUHJlZGljYXRlID0gKGRyYWc6IERyYWdSZWY8Q2RrRHJhZz4sIGRyb3A6IERyb3BMaXN0UmVmPENka0Ryb3BMaXN0PikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZW50ZXJQcmVkaWNhdGUoZHJhZy5kYXRhLCBkcm9wLmRhdGEpO1xuICAgIH07XG5cbiAgICB0aGlzLl9kcm9wTGlzdFJlZi5zb3J0UHJlZGljYXRlID0gKFxuICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgIGRyYWc6IERyYWdSZWY8Q2RrRHJhZz4sXG4gICAgICBkcm9wOiBEcm9wTGlzdFJlZjxDZGtEcm9wTGlzdD4sXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zb3J0UHJlZGljYXRlKGluZGV4LCBkcmFnLmRhdGEsIGRyb3AuZGF0YSk7XG4gICAgfTtcblxuICAgIHRoaXMuX3NldHVwSW5wdXRTeW5jU3Vic2NyaXB0aW9uKHRoaXMuX2Ryb3BMaXN0UmVmKTtcbiAgICB0aGlzLl9oYW5kbGVFdmVudHModGhpcy5fZHJvcExpc3RSZWYpO1xuICAgIENka0Ryb3BMaXN0Ll9kcm9wTGlzdHMucHVzaCh0aGlzKTtcblxuICAgIGlmIChfZ3JvdXApIHtcbiAgICAgIF9ncm91cC5faXRlbXMuYWRkKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgYW4gaXRlbXMgd2l0aCB0aGUgZHJvcCBsaXN0LiAqL1xuICBhZGRJdGVtKGl0ZW06IENka0RyYWcpOiB2b2lkIHtcbiAgICB0aGlzLl91bnNvcnRlZEl0ZW1zLmFkZChpdGVtKTtcblxuICAgIGlmICh0aGlzLl9kcm9wTGlzdFJlZi5pc0RyYWdnaW5nKCkpIHtcbiAgICAgIHRoaXMuX3N5bmNJdGVtc1dpdGhSZWYoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVtb3ZlcyBhbiBpdGVtIGZyb20gdGhlIGRyb3AgbGlzdC4gKi9cbiAgcmVtb3ZlSXRlbShpdGVtOiBDZGtEcmFnKTogdm9pZCB7XG4gICAgdGhpcy5fdW5zb3J0ZWRJdGVtcy5kZWxldGUoaXRlbSk7XG5cbiAgICBpZiAodGhpcy5fZHJvcExpc3RSZWYuaXNEcmFnZ2luZygpKSB7XG4gICAgICB0aGlzLl9zeW5jSXRlbXNXaXRoUmVmKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldHMgdGhlIHJlZ2lzdGVyZWQgaXRlbXMgaW4gdGhlIGxpc3QsIHNvcnRlZCBieSB0aGVpciBwb3NpdGlvbiBpbiB0aGUgRE9NLiAqL1xuICBnZXRTb3J0ZWRJdGVtcygpOiBDZGtEcmFnW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Vuc29ydGVkSXRlbXMpLnNvcnQoKGE6IENka0RyYWcsIGI6IENka0RyYWcpID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50UG9zaXRpb24gPSBhLl9kcmFnUmVmXG4gICAgICAgIC5nZXRWaXNpYmxlRWxlbWVudCgpXG4gICAgICAgIC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiLl9kcmFnUmVmLmdldFZpc2libGVFbGVtZW50KCkpO1xuXG4gICAgICAvLyBgY29tcGFyZURvY3VtZW50UG9zaXRpb25gIHJldHVybnMgYSBiaXRtYXNrIHNvIHdlIGhhdmUgdG8gdXNlIGEgYml0d2lzZSBvcGVyYXRvci5cbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ob2RlL2NvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgcmV0dXJuIGRvY3VtZW50UG9zaXRpb24gJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyA/IC0xIDogMTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IGluZGV4ID0gQ2RrRHJvcExpc3QuX2Ryb3BMaXN0cy5pbmRleE9mKHRoaXMpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIENka0Ryb3BMaXN0Ll9kcm9wTGlzdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZ3JvdXApIHtcbiAgICAgIHRoaXMuX2dyb3VwLl9pdGVtcy5kZWxldGUodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdW5zb3J0ZWRJdGVtcy5jbGVhcigpO1xuICAgIHRoaXMuX2Ryb3BMaXN0UmVmLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFN5bmNzIHRoZSBpbnB1dHMgb2YgdGhlIENka0Ryb3BMaXN0IHdpdGggdGhlIG9wdGlvbnMgb2YgdGhlIHVuZGVybHlpbmcgRHJvcExpc3RSZWYuICovXG4gIHByaXZhdGUgX3NldHVwSW5wdXRTeW5jU3Vic2NyaXB0aW9uKHJlZjogRHJvcExpc3RSZWY8Q2RrRHJvcExpc3Q+KSB7XG4gICAgaWYgKHRoaXMuX2Rpcikge1xuICAgICAgdGhpcy5fZGlyLmNoYW5nZVxuICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5fZGlyLnZhbHVlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gcmVmLndpdGhEaXJlY3Rpb24odmFsdWUpKTtcbiAgICB9XG5cbiAgICByZWYuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3Qgc2libGluZ3MgPSBjb2VyY2VBcnJheSh0aGlzLmNvbm5lY3RlZFRvKS5tYXAoZHJvcCA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nRHJvcExpc3QgPSBDZGtEcm9wTGlzdC5fZHJvcExpc3RzLmZpbmQobGlzdCA9PiBsaXN0LmlkID09PSBkcm9wKTtcblxuICAgICAgICAgIGlmICghY29ycmVzcG9uZGluZ0Ryb3BMaXN0ICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYENka0Ryb3BMaXN0IGNvdWxkIG5vdCBmaW5kIGNvbm5lY3RlZCBkcm9wIGxpc3Qgd2l0aCBpZCBcIiR7ZHJvcH1cImApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb3JyZXNwb25kaW5nRHJvcExpc3QhO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRyb3A7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuX2dyb3VwKSB7XG4gICAgICAgIHRoaXMuX2dyb3VwLl9pdGVtcy5mb3JFYWNoKGRyb3AgPT4ge1xuICAgICAgICAgIGlmIChzaWJsaW5ncy5pbmRleE9mKGRyb3ApID09PSAtMSkge1xuICAgICAgICAgICAgc2libGluZ3MucHVzaChkcm9wKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBOb3RlIHRoYXQgd2UgcmVzb2x2ZSB0aGUgc2Nyb2xsYWJsZSBwYXJlbnRzIGhlcmUgc28gdGhhdCB3ZSBkZWxheSB0aGUgcmVzb2x1dGlvblxuICAgICAgLy8gYXMgbG9uZyBhcyBwb3NzaWJsZSwgZW5zdXJpbmcgdGhhdCB0aGUgZWxlbWVudCBpcyBpbiBpdHMgZmluYWwgcGxhY2UgaW4gdGhlIERPTS5cbiAgICAgIGlmICghdGhpcy5fc2Nyb2xsYWJsZVBhcmVudHNSZXNvbHZlZCkge1xuICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50cyA9IHRoaXMuX3Njcm9sbERpc3BhdGNoZXJcbiAgICAgICAgICAuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuZWxlbWVudClcbiAgICAgICAgICAubWFwKHNjcm9sbGFibGUgPT4gc2Nyb2xsYWJsZS5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2Ryb3BMaXN0UmVmLndpdGhTY3JvbGxhYmxlUGFyZW50cyhzY3JvbGxhYmxlUGFyZW50cyk7XG5cbiAgICAgICAgLy8gT25seSBkbyB0aGlzIG9uY2Ugc2luY2UgaXQgaW52b2x2ZXMgdHJhdmVyc2luZyB0aGUgRE9NIGFuZCB0aGUgcGFyZW50c1xuICAgICAgICAvLyBzaG91bGRuJ3QgYmUgYWJsZSB0byBjaGFuZ2Ugd2l0aG91dCB0aGUgZHJvcCBsaXN0IGJlaW5nIGRlc3Ryb3llZC5cbiAgICAgICAgdGhpcy5fc2Nyb2xsYWJsZVBhcmVudHNSZXNvbHZlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJlZi5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICByZWYubG9ja0F4aXMgPSB0aGlzLmxvY2tBeGlzO1xuICAgICAgcmVmLnNvcnRpbmdEaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh0aGlzLnNvcnRpbmdEaXNhYmxlZCk7XG4gICAgICByZWYuYXV0b1Njcm9sbERpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHRoaXMuYXV0b1Njcm9sbERpc2FibGVkKTtcbiAgICAgIHJlZi5hdXRvU2Nyb2xsU3RlcCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHRoaXMuYXV0b1Njcm9sbFN0ZXAsIDIpO1xuICAgICAgcmVmXG4gICAgICAgIC5jb25uZWN0ZWRUbyhzaWJsaW5ncy5maWx0ZXIoZHJvcCA9PiBkcm9wICYmIGRyb3AgIT09IHRoaXMpLm1hcChsaXN0ID0+IGxpc3QuX2Ryb3BMaXN0UmVmKSlcbiAgICAgICAgLndpdGhPcmllbnRhdGlvbih0aGlzLm9yaWVudGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGV2ZW50cyBmcm9tIHRoZSB1bmRlcmx5aW5nIERyb3BMaXN0UmVmLiAqL1xuICBwcml2YXRlIF9oYW5kbGVFdmVudHMocmVmOiBEcm9wTGlzdFJlZjxDZGtEcm9wTGlzdD4pIHtcbiAgICByZWYuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fc3luY0l0ZW1zV2l0aFJlZigpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICByZWYuZW50ZXJlZC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5lbnRlcmVkLmVtaXQoe1xuICAgICAgICBjb250YWluZXI6IHRoaXMsXG4gICAgICAgIGl0ZW06IGV2ZW50Lml0ZW0uZGF0YSxcbiAgICAgICAgY3VycmVudEluZGV4OiBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJlZi5leGl0ZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuZXhpdGVkLmVtaXQoe1xuICAgICAgICBjb250YWluZXI6IHRoaXMsXG4gICAgICAgIGl0ZW06IGV2ZW50Lml0ZW0uZGF0YSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICByZWYuc29ydGVkLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICB0aGlzLnNvcnRlZC5lbWl0KHtcbiAgICAgICAgcHJldmlvdXNJbmRleDogZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgY3VycmVudEluZGV4OiBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcyxcbiAgICAgICAgaXRlbTogZXZlbnQuaXRlbS5kYXRhLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZWYuZHJvcHBlZC5zdWJzY3JpYmUoZHJvcEV2ZW50ID0+IHtcbiAgICAgIHRoaXMuZHJvcHBlZC5lbWl0KHtcbiAgICAgICAgcHJldmlvdXNJbmRleDogZHJvcEV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGN1cnJlbnRJbmRleDogZHJvcEV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICAgcHJldmlvdXNDb250YWluZXI6IGRyb3BFdmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICBjb250YWluZXI6IGRyb3BFdmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgaXRlbTogZHJvcEV2ZW50Lml0ZW0uZGF0YSxcbiAgICAgICAgaXNQb2ludGVyT3ZlckNvbnRhaW5lcjogZHJvcEV2ZW50LmlzUG9pbnRlck92ZXJDb250YWluZXIsXG4gICAgICAgIGRpc3RhbmNlOiBkcm9wRXZlbnQuZGlzdGFuY2UsXG4gICAgICAgIGRyb3BQb2ludDogZHJvcEV2ZW50LmRyb3BQb2ludCxcbiAgICAgICAgZXZlbnQ6IGRyb3BFdmVudC5ldmVudCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBNYXJrIGZvciBjaGVjayBzaW5jZSBhbGwgb2YgdGhlc2UgZXZlbnRzIHJ1biBvdXRzaWRlIG9mIGNoYW5nZVxuICAgICAgLy8gZGV0ZWN0aW9uIGFuZCB3ZSdyZSBub3QgZ3VhcmFudGVlZCBmb3Igc29tZXRoaW5nIGVsc2UgdG8gaGF2ZSB0cmlnZ2VyZWQgaXQuXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIG1lcmdlKHJlZi5yZWNlaXZpbmdTdGFydGVkLCByZWYucmVjZWl2aW5nU3RvcHBlZCkuc3Vic2NyaWJlKCgpID0+XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIEFzc2lnbnMgdGhlIGRlZmF1bHQgaW5wdXQgdmFsdWVzIGJhc2VkIG9uIGEgcHJvdmlkZWQgY29uZmlnIG9iamVjdC4gKi9cbiAgcHJpdmF0ZSBfYXNzaWduRGVmYXVsdHMoY29uZmlnOiBEcmFnRHJvcENvbmZpZykge1xuICAgIGNvbnN0IHtsb2NrQXhpcywgZHJhZ2dpbmdEaXNhYmxlZCwgc29ydGluZ0Rpc2FibGVkLCBsaXN0QXV0b1Njcm9sbERpc2FibGVkLCBsaXN0T3JpZW50YXRpb259ID1cbiAgICAgIGNvbmZpZztcblxuICAgIHRoaXMuZGlzYWJsZWQgPSBkcmFnZ2luZ0Rpc2FibGVkID09IG51bGwgPyBmYWxzZSA6IGRyYWdnaW5nRGlzYWJsZWQ7XG4gICAgdGhpcy5zb3J0aW5nRGlzYWJsZWQgPSBzb3J0aW5nRGlzYWJsZWQgPT0gbnVsbCA/IGZhbHNlIDogc29ydGluZ0Rpc2FibGVkO1xuICAgIHRoaXMuYXV0b1Njcm9sbERpc2FibGVkID0gbGlzdEF1dG9TY3JvbGxEaXNhYmxlZCA9PSBudWxsID8gZmFsc2UgOiBsaXN0QXV0b1Njcm9sbERpc2FibGVkO1xuICAgIHRoaXMub3JpZW50YXRpb24gPSBsaXN0T3JpZW50YXRpb24gfHwgJ3ZlcnRpY2FsJztcblxuICAgIGlmIChsb2NrQXhpcykge1xuICAgICAgdGhpcy5sb2NrQXhpcyA9IGxvY2tBeGlzO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTeW5jcyB1cCB0aGUgcmVnaXN0ZXJlZCBkcmFnIGl0ZW1zIHdpdGggdW5kZXJseWluZyBkcm9wIGxpc3QgcmVmLiAqL1xuICBwcml2YXRlIF9zeW5jSXRlbXNXaXRoUmVmKCkge1xuICAgIHRoaXMuX2Ryb3BMaXN0UmVmLndpdGhJdGVtcyh0aGlzLmdldFNvcnRlZEl0ZW1zKCkubWFwKGl0ZW0gPT4gaXRlbS5fZHJhZ1JlZikpO1xuICB9XG59XG4iXX0=
|