@angular/cdk 13.0.0-next.7 → 13.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/a11y/a11y-module.d.ts +9 -7
- package/a11y/a11y_public_index.d.ts +4 -0
- package/a11y/aria-describer/aria-describer.d.ts +3 -7
- package/a11y/focus-monitor/focus-monitor.d.ts +5 -0
- package/a11y/focus-trap/configurable-focus-trap-factory.d.ts +3 -7
- package/a11y/focus-trap/focus-trap-manager.d.ts +3 -7
- package/a11y/focus-trap/focus-trap.d.ts +5 -0
- package/a11y/high-contrast-mode/high-contrast-mode-detector.d.ts +3 -0
- package/a11y/index.d.ts +5 -2
- package/a11y/input-modality/input-modality-detector.d.ts +3 -7
- package/a11y/interactivity-checker/interactivity-checker.d.ts +3 -0
- package/a11y/live-announcer/live-announcer.d.ts +6 -1
- package/a11y/package.json +6 -6
- package/accordion/accordion-item.d.ts +3 -0
- package/accordion/accordion-module.d.ts +6 -7
- package/accordion/accordion.d.ts +3 -0
- package/accordion/accordion_public_index.d.ts +4 -0
- package/accordion/index.d.ts +5 -2
- package/accordion/package.json +6 -6
- package/bidi/bidi-module.d.ts +5 -7
- package/bidi/bidi_public_index.d.ts +4 -0
- package/bidi/dir.d.ts +3 -0
- package/bidi/directionality.d.ts +3 -0
- package/bidi/index.d.ts +5 -2
- package/bidi/package.json +6 -6
- package/clipboard/clipboard-module.d.ts +5 -7
- package/clipboard/clipboard.d.ts +3 -7
- package/clipboard/clipboard_public_index.d.ts +4 -0
- package/clipboard/copy-to-clipboard.d.ts +3 -0
- package/clipboard/index.d.ts +5 -1
- package/clipboard/package.json +6 -6
- package/coercion/package.json +5 -5
- package/collections/collections_public_index.d.ts +4 -0
- package/collections/index.d.ts +5 -1
- package/collections/package.json +6 -6
- package/collections/unique-selection-dispatcher.d.ts +3 -0
- package/drag-drop/client-rect.d.ts +8 -1
- package/drag-drop/directives/drag-handle.d.ts +3 -0
- package/drag-drop/directives/drag-placeholder.d.ts +3 -0
- package/drag-drop/directives/drag-preview.d.ts +3 -0
- package/drag-drop/directives/drag.d.ts +3 -0
- package/drag-drop/directives/drop-list-group.d.ts +3 -0
- package/drag-drop/directives/drop-list.d.ts +3 -0
- package/drag-drop/drag-drop-module.d.ts +11 -7
- package/drag-drop/drag-drop-registry.d.ts +3 -0
- package/drag-drop/drag-drop.d.ts +3 -0
- package/drag-drop/drag-drop_public_index.d.ts +4 -0
- package/drag-drop/index.d.ts +5 -2
- package/drag-drop/package.json +6 -6
- package/esm2020/a11y/a11y-module.mjs +33 -0
- package/esm2020/a11y/a11y_public_index.mjs +5 -0
- package/esm2020/a11y/aria-describer/aria-describer.mjs +208 -0
- package/{esm2015/a11y/aria-describer/aria-reference.js → esm2020/a11y/aria-describer/aria-reference.mjs} +1 -1
- package/esm2020/a11y/fake-event-detection.mjs +29 -0
- package/esm2020/a11y/focus-monitor/focus-monitor.mjs +400 -0
- package/{esm2015/a11y/focus-trap/configurable-focus-trap-config.js → esm2020/a11y/focus-trap/configurable-focus-trap-config.mjs} +0 -0
- package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +53 -0
- package/esm2020/a11y/focus-trap/configurable-focus-trap.mjs +51 -0
- package/esm2020/a11y/focus-trap/event-listener-inert-strategy.mjs +61 -0
- package/esm2020/a11y/focus-trap/focus-trap-inert-strategy.mjs +11 -0
- package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +53 -0
- package/esm2020/a11y/focus-trap/focus-trap.mjs +399 -0
- package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +95 -0
- package/esm2020/a11y/index.mjs +9 -0
- package/esm2020/a11y/input-modality/input-modality-detector.mjs +176 -0
- package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +238 -0
- package/{esm2015/a11y/key-manager/activedescendant-key-manager.js → esm2020/a11y/key-manager/activedescendant-key-manager.mjs} +1 -1
- package/{esm2015/a11y/key-manager/focus-key-manager.js → esm2020/a11y/key-manager/focus-key-manager.mjs} +0 -0
- package/esm2020/a11y/key-manager/list-key-manager.mjs +321 -0
- package/esm2020/a11y/live-announcer/live-announcer-tokens.mjs +19 -0
- package/esm2020/a11y/live-announcer/live-announcer.mjs +170 -0
- package/{esm2015/a11y/public-api.js → esm2020/a11y/public-api.mjs} +0 -0
- package/esm2020/accordion/accordion-item.mjs +167 -0
- package/esm2020/accordion/accordion-module.mjs +24 -0
- package/esm2020/accordion/accordion.mjs +70 -0
- package/esm2020/accordion/accordion_public_index.mjs +5 -0
- package/esm2020/accordion/index.mjs +9 -0
- package/{esm2015/accordion/public-api.js → esm2020/accordion/public-api.mjs} +0 -0
- package/esm2020/bidi/bidi-module.mjs +23 -0
- package/esm2020/bidi/bidi_public_index.mjs +5 -0
- package/{esm2015/bidi/dir-document-token.js → esm2020/bidi/dir-document-token.mjs} +1 -1
- package/esm2020/bidi/dir.mjs +67 -0
- package/esm2020/bidi/directionality.mjs +47 -0
- package/esm2020/bidi/index.mjs +9 -0
- package/{esm2015/bidi/public-api.js → esm2020/bidi/public-api.mjs} +1 -1
- package/esm2020/clipboard/clipboard-module.mjs +23 -0
- package/esm2020/clipboard/clipboard.mjs +53 -0
- package/esm2020/clipboard/clipboard_public_index.mjs +5 -0
- package/esm2020/clipboard/copy-to-clipboard.mjs +99 -0
- package/esm2020/clipboard/index.mjs +9 -0
- package/esm2020/clipboard/pending-copy.mjs +67 -0
- package/{esm2015/clipboard/public-api.js → esm2020/clipboard/public-api.mjs} +0 -0
- package/{esm2015/coercion/array.js → esm2020/coercion/array.mjs} +0 -0
- package/{esm2015/coercion/boolean-property.js → esm2020/coercion/boolean-property.mjs} +0 -0
- package/{esm2015/coercion/css-pixel-value.js → esm2020/coercion/css-pixel-value.mjs} +0 -0
- package/{esm2015/coercion/element.js → esm2020/coercion/element.mjs} +0 -0
- package/{esm2015/coercion/index.js → esm2020/coercion/index.mjs} +0 -0
- package/{esm2015/coercion/number-property.js → esm2020/coercion/number-property.mjs} +0 -0
- package/{esm2015/coercion/public-api.js → esm2020/coercion/public-api.mjs} +0 -0
- package/{esm2015/coercion/string-array.js → esm2020/coercion/string-array.mjs} +0 -0
- package/{esm2015/collections/array-data-source.js → esm2020/collections/array-data-source.mjs} +1 -1
- package/esm2020/collections/collection-viewer.mjs +9 -0
- package/esm2020/collections/collections_public_index.mjs +5 -0
- package/{esm2015/collections/data-source.js → esm2020/collections/data-source.mjs} +0 -0
- package/esm2020/collections/dispose-view-repeater-strategy.mjs +47 -0
- package/esm2020/collections/index.mjs +9 -0
- package/{esm2015/collections/public-api.js → esm2020/collections/public-api.mjs} +0 -0
- package/esm2020/collections/recycle-view-repeater-strategy.mjs +128 -0
- package/{esm2015/collections/selection-model.js → esm2020/collections/selection-model.mjs} +2 -2
- package/esm2020/collections/tree-adapter.mjs +9 -0
- package/esm2020/collections/unique-selection-dispatcher.mjs +55 -0
- package/esm2020/collections/view-repeater.mjs +14 -0
- package/esm2020/drag-drop/client-rect.mjs +64 -0
- package/esm2020/drag-drop/clone-node.mjs +65 -0
- package/esm2020/drag-drop/directives/assertions.mjs +18 -0
- package/{esm2015/drag-drop/directives/config.js → esm2020/drag-drop/directives/config.mjs} +1 -1
- package/esm2020/drag-drop/directives/drag-handle.mjs +66 -0
- package/esm2020/drag-drop/directives/drag-placeholder.mjs +36 -0
- package/esm2020/drag-drop/directives/drag-preview.mjs +47 -0
- package/esm2020/drag-drop/directives/drag.mjs +483 -0
- package/esm2020/drag-drop/directives/drop-list-group.mjs +53 -0
- package/esm2020/drag-drop/directives/drop-list.mjs +344 -0
- package/esm2020/drag-drop/drag-drop-module.mjs +57 -0
- package/esm2020/drag-drop/drag-drop-registry.mjs +231 -0
- package/esm2020/drag-drop/drag-drop.mjs +57 -0
- package/esm2020/drag-drop/drag-drop_public_index.mjs +5 -0
- package/esm2020/drag-drop/drag-events.mjs +9 -0
- package/{esm2015/drag-drop/drag-parent.js → esm2020/drag-drop/drag-parent.mjs} +0 -0
- package/esm2020/drag-drop/drag-ref.mjs +1108 -0
- package/esm2020/drag-drop/drag-styling.mjs +69 -0
- package/esm2020/drag-drop/drag-utils.mjs +60 -0
- package/esm2020/drag-drop/drop-list-ref.mjs +830 -0
- package/esm2020/drag-drop/index.mjs +9 -0
- package/{esm2015/drag-drop/parent-position-tracker.js → esm2020/drag-drop/parent-position-tracker.mjs} +2 -2
- package/{esm2015/drag-drop/public-api.js → esm2020/drag-drop/public-api.mjs} +0 -0
- package/esm2020/drag-drop/transition-duration.mjs +36 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/esm2020/keycodes/index.mjs +9 -0
- package/{esm2015/keycodes/keycodes.js → esm2020/keycodes/keycodes.mjs} +1 -1
- package/esm2020/keycodes/keycodes_public_index.mjs +5 -0
- package/{esm2015/keycodes/modifiers.js → esm2020/keycodes/modifiers.mjs} +0 -0
- package/{esm2015/keycodes/public-api.js → esm2020/keycodes/public-api.mjs} +0 -0
- package/esm2020/layout/breakpoints-observer.mjs +105 -0
- package/{esm2015/layout/breakpoints.js → esm2020/layout/breakpoints.mjs} +1 -1
- package/esm2020/layout/index.mjs +9 -0
- package/esm2020/layout/layout-module.mjs +19 -0
- package/esm2020/layout/layout_public_index.mjs +5 -0
- package/esm2020/layout/media-matcher.mjs +85 -0
- package/{esm2015/layout/public-api.js → esm2020/layout/public-api.mjs} +0 -0
- package/esm2020/observers/index.mjs +9 -0
- package/esm2020/observers/observe-content.mjs +187 -0
- package/esm2020/observers/observers_public_index.mjs +5 -0
- package/{esm2015/observers/public-api.js → esm2020/observers/public-api.mjs} +0 -0
- package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +52 -0
- package/{esm2015/overlay/dispatchers/index.js → esm2020/overlay/dispatchers/index.mjs} +0 -0
- package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +63 -0
- package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +116 -0
- package/esm2020/overlay/fullscreen-overlay-container.mjs +94 -0
- package/esm2020/overlay/index.mjs +9 -0
- package/esm2020/overlay/overlay-config.mjs +45 -0
- package/esm2020/overlay/overlay-container.mjs +81 -0
- package/esm2020/overlay/overlay-directives.mjs +427 -0
- package/esm2020/overlay/overlay-module.mjs +29 -0
- package/esm2020/overlay/overlay-ref.mjs +402 -0
- package/{esm2015/overlay/overlay-reference.js → esm2020/overlay/overlay-reference.mjs} +0 -0
- package/esm2020/overlay/overlay.mjs +119 -0
- package/esm2020/overlay/overlay_public_index.mjs +5 -0
- package/esm2020/overlay/position/connected-position.mjs +97 -0
- package/esm2020/overlay/position/flexible-connected-position-strategy.mjs +959 -0
- package/esm2020/overlay/position/global-position-strategy.mjs +203 -0
- package/esm2020/overlay/position/overlay-position-builder.mjs +50 -0
- package/{esm2015/overlay/position/position-strategy.js → esm2020/overlay/position/position-strategy.mjs} +0 -0
- package/esm2020/overlay/position/scroll-clip.mjs +40 -0
- package/{esm2015/overlay/public-api.js → esm2020/overlay/public-api.mjs} +0 -0
- package/{esm2015/overlay/scroll/block-scroll-strategy.js → esm2020/overlay/scroll/block-scroll-strategy.mjs} +1 -1
- package/esm2020/overlay/scroll/close-scroll-strategy.mjs +61 -0
- package/{esm2015/overlay/scroll/index.js → esm2020/overlay/scroll/index.mjs} +2 -2
- package/{esm2015/overlay/scroll/noop-scroll-strategy.js → esm2020/overlay/scroll/noop-scroll-strategy.mjs} +1 -1
- package/{esm2015/overlay/scroll/reposition-scroll-strategy.js → esm2020/overlay/scroll/reposition-scroll-strategy.mjs} +1 -1
- package/esm2020/overlay/scroll/scroll-strategy-options.mjs +55 -0
- package/{esm2015/overlay/scroll/scroll-strategy.js → esm2020/overlay/scroll/scroll-strategy.mjs} +0 -0
- package/{esm2015/platform/features/input-types.js → esm2020/platform/features/input-types.mjs} +1 -1
- package/esm2020/platform/features/passive-listeners.mjs +36 -0
- package/esm2020/platform/features/scrolling.mjs +85 -0
- package/{esm2015/platform/features/shadow-dom.js → esm2020/platform/features/shadow-dom.mjs} +4 -3
- package/esm2020/platform/features/test-environment.mjs +27 -0
- package/esm2020/platform/index.mjs +9 -0
- package/esm2020/platform/platform-module.mjs +19 -0
- package/esm2020/platform/platform.mjs +85 -0
- package/esm2020/platform/platform_public_index.mjs +5 -0
- package/{esm2015/platform/public-api.js → esm2020/platform/public-api.mjs} +0 -0
- package/esm2020/portal/dom-portal-outlet.mjs +134 -0
- package/esm2020/portal/index.mjs +9 -0
- package/esm2020/portal/portal-directives.mjs +244 -0
- package/{esm2015/portal/portal-errors.js → esm2020/portal/portal-errors.mjs} +1 -1
- package/esm2020/portal/portal-injector.mjs +28 -0
- package/esm2020/portal/portal.mjs +179 -0
- package/esm2020/portal/portal_public_index.mjs +5 -0
- package/{esm2015/portal/public-api.js → esm2020/portal/public-api.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +217 -0
- package/esm2020/scrolling/index.mjs +9 -0
- package/{esm2015/scrolling/public-api.js → esm2020/scrolling/public-api.mjs} +0 -0
- package/esm2020/scrolling/scroll-dispatcher.mjs +163 -0
- package/esm2020/scrolling/scrollable.mjs +176 -0
- package/esm2020/scrolling/scrolling-module.mjs +52 -0
- package/esm2020/scrolling/scrolling_public_index.mjs +5 -0
- package/esm2020/scrolling/viewport-ruler.mjs +146 -0
- package/esm2020/scrolling/virtual-for-of.mjs +296 -0
- package/{esm2015/scrolling/virtual-scroll-repeater.js → esm2020/scrolling/virtual-scroll-repeater.mjs} +0 -0
- package/esm2020/scrolling/virtual-scroll-strategy.mjs +11 -0
- package/esm2020/scrolling/virtual-scroll-viewport.mjs +378 -0
- package/esm2020/stepper/index.mjs +9 -0
- package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
- package/esm2020/stepper/step-header.mjs +30 -0
- package/esm2020/stepper/step-label.mjs +23 -0
- package/esm2020/stepper/stepper-button.mjs +76 -0
- package/esm2020/stepper/stepper-module.mjs +40 -0
- package/esm2020/stepper/stepper.mjs +471 -0
- package/esm2020/stepper/stepper_public_index.mjs +5 -0
- package/esm2020/table/can-stick.mjs +44 -0
- package/esm2020/table/cell.mjs +222 -0
- package/esm2020/table/coalesced-style-scheduler.mjs +91 -0
- package/esm2020/table/index.mjs +9 -0
- package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
- package/esm2020/table/row.mjs +254 -0
- package/esm2020/table/sticky-position-listener.mjs +11 -0
- package/esm2020/table/sticky-styler.mjs +345 -0
- package/{esm2015/table/table-errors.js → esm2020/table/table-errors.mjs} +1 -1
- package/esm2020/table/table-module.mjs +94 -0
- package/esm2020/table/table.mjs +1023 -0
- package/esm2020/table/table_public_index.mjs +5 -0
- package/esm2020/table/text-column.mjs +153 -0
- package/{esm2015/table/tokens.js → esm2020/table/tokens.mjs} +1 -1
- package/esm2020/testing/change-detection.mjs +102 -0
- package/esm2020/testing/component-harness.mjs +322 -0
- package/{esm2015/testing/element-dimensions.js → esm2020/testing/element-dimensions.mjs} +1 -1
- package/esm2020/testing/harness-environment.mjs +202 -0
- package/{esm2015/testing/index.js → esm2020/testing/index.mjs} +0 -0
- package/{esm2015/testing/protractor/index.js → esm2020/testing/protractor/index.mjs} +0 -0
- package/esm2020/testing/protractor/protractor-element.mjs +234 -0
- package/esm2020/testing/protractor/protractor-harness-environment.mjs +72 -0
- package/{esm2015/testing/protractor/public-api.js → esm2020/testing/protractor/public-api.mjs} +0 -0
- package/{esm2015/testing/public-api.js → esm2020/testing/public-api.mjs} +0 -0
- package/{esm2015/testing/selenium-webdriver/index.js → esm2020/testing/selenium-webdriver/index.mjs} +0 -0
- package/{esm2015/testing/selenium-webdriver/public-api.js → esm2020/testing/selenium-webdriver/public-api.mjs} +0 -0
- package/esm2020/testing/selenium-webdriver/selenium-web-driver-element.mjs +199 -0
- package/esm2020/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +87 -0
- package/{esm2015/testing/selenium-webdriver/selenium-webdriver-keys.js → esm2020/testing/selenium-webdriver/selenium-webdriver-keys.mjs} +2 -2
- package/esm2020/testing/test-element.mjs +48 -0
- package/esm2020/testing/testbed/fake-events/dispatch-events.mjs +53 -0
- package/esm2020/testing/testbed/fake-events/element-focus.mjs +39 -0
- package/esm2020/testing/testbed/fake-events/event-objects.mjs +113 -0
- package/{esm2015/testing/testbed/fake-events/index.js → esm2020/testing/testbed/fake-events/index.mjs} +0 -0
- package/esm2020/testing/testbed/fake-events/type-in-element.mjs +88 -0
- package/{esm2015/testing/testbed/index.js → esm2020/testing/testbed/index.mjs} +0 -0
- package/{esm2015/testing/testbed/public-api.js → esm2020/testing/testbed/public-api.mjs} +0 -0
- package/esm2020/testing/testbed/task-state-zone-interceptor.mjs +82 -0
- package/esm2020/testing/testbed/testbed-harness-environment.mjs +162 -0
- package/esm2020/testing/testbed/unit-test-element.mjs +224 -0
- package/esm2020/testing/text-filtering.mjs +21 -0
- package/esm2020/text-field/autofill.mjs +113 -0
- package/esm2020/text-field/autosize.mjs +310 -0
- package/esm2020/text-field/index.mjs +9 -0
- package/{esm2015/text-field/public-api.js → esm2020/text-field/public-api.mjs} +0 -0
- package/esm2020/text-field/text-field-module.mjs +26 -0
- package/esm2020/text-field/text-field_public_index.mjs +5 -0
- package/{esm2015/tree/control/base-tree-control.js → esm2020/tree/control/base-tree-control.mjs} +4 -4
- package/{esm2015/tree/control/flat-tree-control.js → esm2020/tree/control/flat-tree-control.mjs} +1 -1
- package/esm2020/tree/control/nested-tree-control.mjs +58 -0
- package/{esm2015/tree/control/tree-control.js → esm2020/tree/control/tree-control.mjs} +0 -0
- package/esm2020/tree/index.mjs +9 -0
- package/esm2020/tree/nested-node.mjs +117 -0
- package/esm2020/tree/node.mjs +35 -0
- package/esm2020/tree/outlet.mjs +39 -0
- package/esm2020/tree/padding.mjs +131 -0
- package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
- package/esm2020/tree/toggle.mjs +53 -0
- package/{esm2015/tree/tree-errors.js → esm2020/tree/tree-errors.mjs} +0 -0
- package/esm2020/tree/tree-module.mjs +49 -0
- package/esm2020/tree/tree.mjs +361 -0
- package/esm2020/tree/tree_public_index.mjs +5 -0
- package/{esm2015/version.js → esm2020/version.mjs} +1 -1
- package/fesm2015/{a11y.js → a11y.mjs} +289 -254
- package/fesm2015/a11y.mjs.map +1 -0
- package/fesm2015/accordion.mjs +275 -0
- package/fesm2015/accordion.mjs.map +1 -0
- package/fesm2015/bidi.mjs +187 -0
- package/fesm2015/bidi.mjs.map +1 -0
- package/fesm2015/{cdk.js → cdk.mjs} +2 -2
- package/fesm2015/cdk.mjs.map +1 -0
- package/fesm2015/clipboard.mjs +261 -0
- package/fesm2015/clipboard.mjs.map +1 -0
- package/fesm2015/{coercion.js → coercion.mjs} +1 -1
- package/fesm2015/coercion.mjs.map +1 -0
- package/fesm2015/{collections.js → collections.mjs} +20 -24
- package/fesm2015/collections.mjs.map +1 -0
- package/fesm2015/drag-drop.mjs +3675 -0
- package/fesm2015/drag-drop.mjs.map +1 -0
- package/fesm2015/{keycodes.js → keycodes.mjs} +9 -1
- package/fesm2015/keycodes.mjs.map +1 -0
- package/fesm2015/{layout.js → layout.mjs} +38 -28
- package/fesm2015/layout.mjs.map +1 -0
- package/fesm2015/{observers.js → observers.mjs} +58 -41
- package/fesm2015/observers.mjs.map +1 -0
- package/fesm2015/overlay.mjs +3012 -0
- package/fesm2015/overlay.mjs.map +1 -0
- package/fesm2015/platform.mjs +388 -0
- package/fesm2015/platform.mjs.map +1 -0
- package/fesm2015/portal.mjs +657 -0
- package/fesm2015/portal.mjs.map +1 -0
- package/fesm2015/scrolling.mjs +1402 -0
- package/fesm2015/scrolling.mjs.map +1 -0
- package/fesm2015/{stepper.js → stepper.mjs} +194 -133
- package/fesm2015/stepper.mjs.map +1 -0
- package/fesm2015/{table.js → table.mjs} +508 -359
- package/fesm2015/table.mjs.map +1 -0
- package/fesm2015/testing/{protractor.js → protractor.mjs} +12 -25
- package/fesm2015/testing/protractor.mjs.map +1 -0
- package/fesm2015/testing/{selenium-webdriver.js → selenium-webdriver.mjs} +14 -28
- package/fesm2015/testing/selenium-webdriver.mjs.map +1 -0
- package/fesm2015/testing/{testbed.js → testbed.mjs} +23 -29
- package/fesm2015/testing/testbed.mjs.map +1 -0
- package/fesm2015/{testing.js → testing.mjs} +19 -45
- package/fesm2015/testing.mjs.map +1 -0
- package/fesm2015/text-field.mjs +463 -0
- package/fesm2015/text-field.mjs.map +1 -0
- package/fesm2015/{tree.js → tree.mjs} +206 -152
- package/fesm2015/tree.mjs.map +1 -0
- package/fesm2020/a11y.mjs +2376 -0
- package/fesm2020/a11y.mjs.map +1 -0
- package/{fesm2015/accordion.js → fesm2020/accordion.mjs} +95 -57
- package/fesm2020/accordion.mjs.map +1 -0
- package/{fesm2015/bidi.js → fesm2020/bidi.mjs} +55 -31
- package/fesm2020/bidi.mjs.map +1 -0
- package/fesm2020/cdk.mjs +30 -0
- package/fesm2020/cdk.mjs.map +1 -0
- package/{fesm2015/clipboard.js → fesm2020/clipboard.mjs} +59 -40
- package/fesm2020/clipboard.mjs.map +1 -0
- package/fesm2020/coercion.mjs +132 -0
- package/fesm2020/coercion.mjs.map +1 -0
- package/fesm2020/collections.mjs +480 -0
- package/fesm2020/collections.mjs.map +1 -0
- package/{fesm2015/drag-drop.js → fesm2020/drag-drop.mjs} +528 -369
- package/fesm2020/drag-drop.mjs.map +1 -0
- package/fesm2020/keycodes.mjs +167 -0
- package/fesm2020/keycodes.mjs.map +1 -0
- package/fesm2020/layout.mjs +254 -0
- package/fesm2020/layout.mjs.map +1 -0
- package/fesm2020/observers.mjs +210 -0
- package/fesm2020/observers.mjs.map +1 -0
- package/{fesm2015/overlay.js → fesm2020/overlay.mjs} +320 -228
- package/fesm2020/overlay.mjs.map +1 -0
- package/{fesm2015/platform.js → fesm2020/platform.mjs} +60 -28
- package/fesm2020/platform.mjs.map +1 -0
- package/{fesm2015/portal.js → fesm2020/portal.mjs} +93 -64
- package/fesm2020/portal.mjs.map +1 -0
- package/{fesm2015/scrolling.js → fesm2020/scrolling.mjs} +221 -170
- package/fesm2020/scrolling.mjs.map +1 -0
- package/fesm2020/stepper.mjs +646 -0
- package/fesm2020/stepper.mjs.map +1 -0
- package/fesm2020/table.mjs +2303 -0
- package/fesm2020/table.mjs.map +1 -0
- package/fesm2020/testing/protractor.mjs +322 -0
- package/fesm2020/testing/protractor.mjs.map +1 -0
- package/fesm2020/testing/selenium-webdriver.mjs +362 -0
- package/fesm2020/testing/selenium-webdriver.mjs.map +1 -0
- package/fesm2020/testing/testbed.mjs +780 -0
- package/fesm2020/testing/testbed.mjs.map +1 -0
- package/fesm2020/testing.mjs +719 -0
- package/fesm2020/testing.mjs.map +1 -0
- package/{fesm2015/text-field.js → fesm2020/text-field.mjs} +91 -68
- package/fesm2020/text-field.mjs.map +1 -0
- package/fesm2020/tree.mjs +975 -0
- package/fesm2020/tree.mjs.map +1 -0
- package/keycodes/index.d.ts +5 -1
- package/keycodes/keycodes_public_index.d.ts +4 -0
- package/keycodes/package.json +6 -6
- package/layout/breakpoints-observer.d.ts +3 -7
- package/layout/index.d.ts +5 -1
- package/layout/layout-module.d.ts +4 -0
- package/layout/layout_public_index.d.ts +4 -0
- package/layout/media-matcher.d.ts +3 -0
- package/layout/package.json +6 -6
- package/observers/index.d.ts +5 -1
- package/observers/observe-content.d.ts +10 -0
- package/observers/observers_public_index.d.ts +4 -0
- package/observers/package.json +6 -6
- package/overlay/dispatchers/base-overlay-dispatcher.d.ts +3 -7
- package/overlay/dispatchers/overlay-keyboard-dispatcher.d.ts +3 -7
- package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +6 -7
- package/overlay/fullscreen-overlay-container.d.ts +3 -0
- package/overlay/index.d.ts +5 -3
- package/overlay/overlay-container.d.ts +3 -7
- package/overlay/overlay-directives.d.ts +5 -0
- package/overlay/overlay-module.d.ts +8 -7
- package/overlay/overlay.d.ts +3 -0
- package/overlay/overlay_public_index.d.ts +4 -0
- package/overlay/package.json +6 -6
- package/overlay/position/flexible-connected-position-strategy.d.ts +2 -2
- package/overlay/position/overlay-position-builder.d.ts +3 -0
- package/overlay/position/scroll-clip.d.ts +5 -2
- package/overlay/scroll/index.d.ts +1 -1
- package/overlay/scroll/scroll-strategy-options.d.ts +3 -0
- package/package.json +219 -7
- package/platform/index.d.ts +5 -1
- package/platform/package.json +6 -6
- package/platform/platform-module.d.ts +4 -7
- package/platform/platform.d.ts +3 -7
- package/platform/platform_public_index.d.ts +4 -0
- package/portal/index.d.ts +5 -1
- package/portal/package.json +6 -6
- package/portal/portal-directives.d.ts +12 -0
- package/portal/portal_public_index.d.ts +4 -0
- package/schematics/ng-add/index.js +3 -3
- package/schematics/ng-add/index.mjs +3 -3
- package/schematics/ng-add/package-config.js +4 -2
- package/schematics/ng-add/package-config.mjs +4 -2
- package/schematics/ng-add/schema.js +1 -1
- package/schematics/ng-add/schema.mjs +1 -1
- package/schematics/ng-generate/drag-drop/index.js +6 -6
- package/schematics/ng-generate/drag-drop/index.mjs +6 -6
- package/schematics/ng-update/data/attribute-selectors.js +7 -5
- package/schematics/ng-update/data/attribute-selectors.mjs +7 -5
- package/schematics/ng-update/data/class-names.js +13 -11
- package/schematics/ng-update/data/class-names.mjs +13 -11
- package/schematics/ng-update/data/constructor-checks.js +28 -20
- package/schematics/ng-update/data/constructor-checks.mjs +28 -20
- package/schematics/ng-update/data/css-selectors.js +2 -2
- package/schematics/ng-update/data/css-selectors.mjs +2 -2
- package/schematics/ng-update/data/element-selectors.js +2 -2
- package/schematics/ng-update/data/element-selectors.mjs +2 -2
- package/schematics/ng-update/data/input-names.js +40 -16
- package/schematics/ng-update/data/input-names.mjs +40 -16
- package/schematics/ng-update/data/method-call-checks.js +32 -18
- package/schematics/ng-update/data/method-call-checks.mjs +32 -18
- package/schematics/ng-update/data/output-names.js +8 -6
- package/schematics/ng-update/data/output-names.mjs +8 -6
- package/schematics/ng-update/data/property-names.js +40 -32
- package/schematics/ng-update/data/property-names.mjs +40 -32
- package/schematics/ng-update/devkit-file-system.js +2 -2
- package/schematics/ng-update/devkit-file-system.mjs +2 -2
- package/schematics/ng-update/devkit-migration-rule.js +8 -7
- package/schematics/ng-update/devkit-migration-rule.mjs +8 -7
- package/schematics/ng-update/devkit-migration.d.ts +3 -2
- package/schematics/ng-update/devkit-migration.js +1 -1
- package/schematics/ng-update/devkit-migration.mjs +1 -1
- package/schematics/ng-update/find-stylesheets.js +3 -3
- package/schematics/ng-update/find-stylesheets.mjs +3 -3
- package/schematics/ng-update/html-parsing/angular.js +7 -7
- package/schematics/ng-update/html-parsing/angular.mjs +7 -7
- package/schematics/ng-update/html-parsing/elements.js +2 -2
- package/schematics/ng-update/html-parsing/elements.mjs +2 -2
- package/schematics/ng-update/index.js +11 -9
- package/schematics/ng-update/index.mjs +11 -9
- package/schematics/ng-update/migrations/attribute-selectors.js +11 -7
- package/schematics/ng-update/migrations/attribute-selectors.mjs +11 -7
- package/schematics/ng-update/migrations/class-inheritance.js +3 -3
- package/schematics/ng-update/migrations/class-inheritance.mjs +3 -3
- package/schematics/ng-update/migrations/class-names.js +7 -6
- package/schematics/ng-update/migrations/class-names.mjs +7 -6
- package/schematics/ng-update/migrations/constructor-signature.js +16 -13
- package/schematics/ng-update/migrations/constructor-signature.mjs +16 -13
- package/schematics/ng-update/migrations/css-selectors.js +7 -6
- package/schematics/ng-update/migrations/css-selectors.mjs +7 -6
- package/schematics/ng-update/migrations/element-selectors.js +7 -6
- package/schematics/ng-update/migrations/element-selectors.mjs +7 -6
- package/schematics/ng-update/migrations/input-names.js +8 -9
- package/schematics/ng-update/migrations/input-names.mjs +8 -9
- package/schematics/ng-update/migrations/method-call-arguments.js +4 -3
- package/schematics/ng-update/migrations/method-call-arguments.mjs +4 -3
- package/schematics/ng-update/migrations/misc-template.js +3 -3
- package/schematics/ng-update/migrations/misc-template.mjs +3 -3
- package/schematics/ng-update/migrations/output-names.js +7 -8
- package/schematics/ng-update/migrations/output-names.mjs +7 -8
- package/schematics/ng-update/migrations/property-names.js +4 -3
- package/schematics/ng-update/migrations/property-names.mjs +4 -3
- package/schematics/ng-update/migrations/symbol-removal.js +2 -2
- package/schematics/ng-update/migrations/symbol-removal.mjs +2 -2
- package/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.d.ts +14 -0
- package/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.js +38 -0
- package/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.mjs +38 -0
- package/schematics/ng-update/typescript/base-types.js +1 -1
- package/schematics/ng-update/typescript/base-types.mjs +1 -1
- package/schematics/ng-update/typescript/literal.d.ts +1 -1
- package/schematics/ng-update/typescript/literal.js +1 -1
- package/schematics/ng-update/typescript/literal.mjs +1 -1
- package/schematics/ng-update/typescript/module-specifiers.js +5 -5
- package/schematics/ng-update/typescript/module-specifiers.mjs +5 -5
- package/schematics/ng-update/upgrade-data.js +2 -2
- package/schematics/ng-update/upgrade-data.mjs +2 -2
- package/schematics/package.json +3 -0
- package/schematics/paths.js +3 -3
- package/schematics/paths.mjs +3 -3
- package/schematics/update-tool/component-resource-collector.js +10 -10
- package/schematics/update-tool/component-resource-collector.mjs +10 -10
- package/schematics/update-tool/file-system.js +1 -1
- package/schematics/update-tool/file-system.mjs +1 -1
- package/schematics/update-tool/index.d.ts +4 -1
- package/schematics/update-tool/index.js +9 -5
- package/schematics/update-tool/index.mjs +9 -5
- package/schematics/update-tool/migration.d.ts +1 -1
- package/schematics/update-tool/migration.js +1 -1
- package/schematics/update-tool/migration.mjs +1 -1
- package/schematics/update-tool/target-version.js +1 -1
- package/schematics/update-tool/target-version.mjs +1 -1
- package/schematics/update-tool/utils/decorators.js +8 -4
- package/schematics/update-tool/utils/decorators.mjs +8 -4
- package/schematics/update-tool/utils/functions.js +1 -1
- package/schematics/update-tool/utils/functions.mjs +1 -1
- package/schematics/update-tool/utils/imports.js +2 -2
- package/schematics/update-tool/utils/imports.mjs +2 -2
- package/schematics/update-tool/utils/line-mappings.js +1 -1
- package/schematics/update-tool/utils/line-mappings.mjs +1 -1
- package/schematics/update-tool/utils/parse-tsconfig.js +2 -2
- package/schematics/update-tool/utils/parse-tsconfig.mjs +2 -2
- package/schematics/update-tool/utils/property-name.js +1 -1
- package/schematics/update-tool/utils/property-name.mjs +1 -1
- package/schematics/update-tool/utils/virtual-host.d.ts +1 -1
- package/schematics/update-tool/utils/virtual-host.js +3 -3
- package/schematics/update-tool/utils/virtual-host.mjs +3 -3
- package/schematics/update-tool/version-changes.js +1 -1
- package/schematics/update-tool/version-changes.mjs +1 -1
- package/schematics/utils/ast/ng-module-imports.js +5 -3
- package/schematics/utils/ast/ng-module-imports.mjs +5 -3
- package/schematics/utils/ast.js +5 -5
- package/schematics/utils/ast.mjs +5 -5
- package/schematics/utils/build-component.js +32 -38
- package/schematics/utils/build-component.mjs +32 -38
- package/schematics/utils/get-project.js +1 -1
- package/schematics/utils/get-project.mjs +1 -1
- package/schematics/utils/html-manipulation.js +8 -7
- package/schematics/utils/html-manipulation.mjs +8 -7
- package/schematics/utils/parse5-element.js +9 -10
- package/schematics/utils/parse5-element.mjs +9 -10
- package/schematics/utils/project-index-file.js +2 -2
- package/schematics/utils/project-index-file.mjs +2 -2
- package/schematics/utils/project-main-file.js +2 -2
- package/schematics/utils/project-main-file.mjs +2 -2
- package/schematics/utils/project-style-file.js +7 -9
- package/schematics/utils/project-style-file.mjs +7 -9
- package/schematics/utils/project-targets.js +1 -1
- package/schematics/utils/project-targets.mjs +1 -1
- package/schematics/utils/project-tsconfig-paths.js +4 -4
- package/schematics/utils/project-tsconfig-paths.mjs +4 -4
- package/schematics/utils/schematic-options.js +7 -5
- package/schematics/utils/schematic-options.mjs +7 -5
- package/schematics/utils/vendored-ast-utils/index.js +17 -18
- package/schematics/utils/vendored-ast-utils/index.mjs +17 -18
- package/scrolling/fixed-size-virtual-scroll.d.ts +3 -0
- package/scrolling/index.d.ts +5 -1
- package/scrolling/package.json +6 -6
- package/scrolling/scroll-dispatcher.d.ts +3 -7
- package/scrolling/scrollable.d.ts +3 -0
- package/scrolling/scrolling-module.d.ts +13 -7
- package/scrolling/scrolling_public_index.d.ts +4 -0
- package/scrolling/viewport-ruler.d.ts +11 -1
- package/scrolling/virtual-for-of.d.ts +3 -0
- package/scrolling/virtual-scroll-viewport.d.ts +3 -0
- package/stepper/index.d.ts +5 -1
- package/stepper/package.json +6 -6
- package/stepper/step-header.d.ts +3 -0
- package/stepper/step-label.d.ts +3 -0
- package/stepper/stepper-button.d.ts +5 -7
- package/stepper/stepper-module.d.ts +9 -7
- package/stepper/stepper.d.ts +5 -7
- package/stepper/stepper_public_index.d.ts +4 -0
- package/table/cell.d.ts +15 -0
- package/table/coalesced-style-scheduler.d.ts +3 -0
- package/table/index.d.ts +5 -1
- package/table/package.json +6 -6
- package/table/row.d.ts +19 -0
- package/table/table-module.d.ts +9 -7
- package/table/table.d.ts +13 -0
- package/table/table_public_index.d.ts +4 -0
- package/table/text-column.d.ts +3 -0
- package/testing/package.json +5 -5
- package/testing/protractor/package.json +5 -5
- package/testing/selenium-webdriver/package.json +5 -5
- package/testing/testbed/package.json +5 -5
- package/testing/testbed/proxy-zone-types.d.ts +1 -1
- package/testing/testbed/zone-types.d.ts +1 -1
- package/text-field/autofill.d.ts +5 -0
- package/text-field/autosize.d.ts +3 -0
- package/text-field/index.d.ts +5 -1
- package/text-field/package.json +6 -6
- package/text-field/text-field-module.d.ts +7 -7
- package/text-field/text-field_public_index.d.ts +4 -0
- package/tree/control/base-tree-control.d.ts +1 -1
- package/tree/control/nested-tree-control.d.ts +2 -2
- package/tree/index.d.ts +5 -1
- package/tree/nested-node.d.ts +3 -0
- package/tree/node.d.ts +3 -0
- package/tree/outlet.d.ts +3 -0
- package/tree/package.json +6 -6
- package/tree/padding.d.ts +3 -0
- package/tree/toggle.d.ts +3 -0
- package/tree/tree-module.d.ts +10 -7
- package/tree/tree.d.ts +5 -0
- package/tree/tree_public_index.d.ts +4 -0
- package/a11y/index.metadata.json +0 -1
- package/accordion/index.metadata.json +0 -1
- package/bidi/index.metadata.json +0 -1
- package/bundles/cdk-a11y.umd.js +0 -2752
- package/bundles/cdk-a11y.umd.js.map +0 -1
- package/bundles/cdk-accordion.umd.js +0 -262
- package/bundles/cdk-accordion.umd.js.map +0 -1
- package/bundles/cdk-bidi.umd.js +0 -206
- package/bundles/cdk-bidi.umd.js.map +0 -1
- package/bundles/cdk-clipboard.umd.js +0 -278
- package/bundles/cdk-clipboard.umd.js.map +0 -1
- package/bundles/cdk-coercion.umd.js +0 -477
- package/bundles/cdk-coercion.umd.js.map +0 -1
- package/bundles/cdk-collections.umd.js +0 -846
- package/bundles/cdk-collections.umd.js.map +0 -1
- package/bundles/cdk-drag-drop.umd.js +0 -3921
- package/bundles/cdk-drag-drop.umd.js.map +0 -1
- package/bundles/cdk-keycodes.umd.js +0 -292
- package/bundles/cdk-keycodes.umd.js.map +0 -1
- package/bundles/cdk-layout.umd.js +0 -284
- package/bundles/cdk-layout.umd.js.map +0 -1
- package/bundles/cdk-observers.umd.js +0 -242
- package/bundles/cdk-observers.umd.js.map +0 -1
- package/bundles/cdk-overlay.umd.js +0 -3417
- package/bundles/cdk-overlay.umd.js.map +0 -1
- package/bundles/cdk-platform.umd.js +0 -397
- package/bundles/cdk-platform.umd.js.map +0 -1
- package/bundles/cdk-portal.umd.js +0 -1008
- package/bundles/cdk-portal.umd.js.map +0 -1
- package/bundles/cdk-scrolling.umd.js +0 -1787
- package/bundles/cdk-scrolling.umd.js.map +0 -1
- package/bundles/cdk-stepper.umd.js +0 -648
- package/bundles/cdk-stepper.umd.js.map +0 -1
- package/bundles/cdk-table.umd.js +0 -2730
- package/bundles/cdk-table.umd.js.map +0 -1
- package/bundles/cdk-testing-protractor.umd.js +0 -833
- package/bundles/cdk-testing-protractor.umd.js.map +0 -1
- package/bundles/cdk-testing-selenium-webdriver.umd.js +0 -1002
- package/bundles/cdk-testing-selenium-webdriver.umd.js.map +0 -1
- package/bundles/cdk-testing-testbed.umd.js +0 -1396
- package/bundles/cdk-testing-testbed.umd.js.map +0 -1
- package/bundles/cdk-testing.umd.js +0 -1285
- package/bundles/cdk-testing.umd.js.map +0 -1
- package/bundles/cdk-text-field.umd.js +0 -494
- package/bundles/cdk-text-field.umd.js.map +0 -1
- package/bundles/cdk-tree.umd.js +0 -1308
- package/bundles/cdk-tree.umd.js.map +0 -1
- package/bundles/cdk.umd.js +0 -38
- package/bundles/cdk.umd.js.map +0 -1
- package/clipboard/index.metadata.json +0 -1
- package/collections/index.metadata.json +0 -1
- package/drag-drop/index.metadata.json +0 -1
- package/esm2015/a11y/a11y-module.js +0 -30
- package/esm2015/a11y/a11y.externs.js +0 -6
- package/esm2015/a11y/aria-describer/aria-describer.js +0 -213
- package/esm2015/a11y/fake-event-detection.js +0 -28
- package/esm2015/a11y/focus-monitor/focus-monitor.js +0 -394
- package/esm2015/a11y/focus-trap/configurable-focus-trap-factory.js +0 -52
- package/esm2015/a11y/focus-trap/configurable-focus-trap.js +0 -49
- package/esm2015/a11y/focus-trap/event-listener-inert-strategy.js +0 -62
- package/esm2015/a11y/focus-trap/focus-trap-inert-strategy.js +0 -11
- package/esm2015/a11y/focus-trap/focus-trap-manager.js +0 -51
- package/esm2015/a11y/focus-trap/focus-trap.js +0 -391
- package/esm2015/a11y/high-contrast-mode/high-contrast-mode-detector.js +0 -92
- package/esm2015/a11y/index.js +0 -6
- package/esm2015/a11y/input-modality/input-modality-detector.js +0 -171
- package/esm2015/a11y/interactivity-checker/interactivity-checker.js +0 -237
- package/esm2015/a11y/key-manager/list-key-manager.js +0 -317
- package/esm2015/a11y/live-announcer/live-announcer-tokens.js +0 -19
- package/esm2015/a11y/live-announcer/live-announcer.js +0 -167
- package/esm2015/accordion/accordion-item.js +0 -146
- package/esm2015/accordion/accordion-module.js +0 -19
- package/esm2015/accordion/accordion.externs.js +0 -6
- package/esm2015/accordion/accordion.js +0 -63
- package/esm2015/accordion/index.js +0 -6
- package/esm2015/bidi/bidi-module.js +0 -18
- package/esm2015/bidi/bidi.externs.js +0 -6
- package/esm2015/bidi/dir.js +0 -58
- package/esm2015/bidi/directionality.js +0 -44
- package/esm2015/bidi/index.js +0 -6
- package/esm2015/cdk.externs.js +0 -0
- package/esm2015/clipboard/clipboard-module.js +0 -18
- package/esm2015/clipboard/clipboard.externs.js +0 -6
- package/esm2015/clipboard/clipboard.js +0 -52
- package/esm2015/clipboard/copy-to-clipboard.js +0 -90
- package/esm2015/clipboard/index.js +0 -5
- package/esm2015/clipboard/pending-copy.js +0 -68
- package/esm2015/coercion/coercion.externs.js +0 -0
- package/esm2015/collections/collection-viewer.js +0 -9
- package/esm2015/collections/collections.externs.js +0 -6
- package/esm2015/collections/dispose-view-repeater-strategy.js +0 -48
- package/esm2015/collections/index.js +0 -5
- package/esm2015/collections/recycle-view-repeater-strategy.js +0 -125
- package/esm2015/collections/tree-adapter.js +0 -9
- package/esm2015/collections/unique-selection-dispatcher.js +0 -53
- package/esm2015/collections/view-repeater.js +0 -14
- package/esm2015/drag-drop/client-rect.js +0 -60
- package/esm2015/drag-drop/clone-node.js +0 -65
- package/esm2015/drag-drop/directives/assertions.js +0 -19
- package/esm2015/drag-drop/directives/drag-handle.js +0 -57
- package/esm2015/drag-drop/directives/drag-placeholder.js +0 -36
- package/esm2015/drag-drop/directives/drag-preview.js +0 -42
- package/esm2015/drag-drop/directives/drag.js +0 -413
- package/esm2015/drag-drop/directives/drop-list-group.js +0 -47
- package/esm2015/drag-drop/directives/drop-list.js +0 -301
- package/esm2015/drag-drop/drag-drop-module.js +0 -43
- package/esm2015/drag-drop/drag-drop-registry.js +0 -231
- package/esm2015/drag-drop/drag-drop.externs.js +0 -6
- package/esm2015/drag-drop/drag-drop.js +0 -59
- package/esm2015/drag-drop/drag-events.js +0 -9
- package/esm2015/drag-drop/drag-ref.js +0 -1110
- package/esm2015/drag-drop/drag-styling.js +0 -69
- package/esm2015/drag-drop/drag-utils.js +0 -60
- package/esm2015/drag-drop/drop-list-ref.js +0 -813
- package/esm2015/drag-drop/index.js +0 -5
- package/esm2015/drag-drop/transition-duration.js +0 -36
- package/esm2015/keycodes/index.js +0 -5
- package/esm2015/keycodes/keycodes.externs.js +0 -6
- package/esm2015/layout/breakpoints-observer.js +0 -106
- package/esm2015/layout/index.js +0 -5
- package/esm2015/layout/layout-module.js +0 -14
- package/esm2015/layout/layout.externs.js +0 -6
- package/esm2015/layout/media-matcher.js +0 -85
- package/esm2015/observers/index.js +0 -5
- package/esm2015/observers/observe-content.js +0 -179
- package/esm2015/observers/observers.externs.js +0 -6
- package/esm2015/overlay/dispatchers/base-overlay-dispatcher.js +0 -51
- package/esm2015/overlay/dispatchers/overlay-keyboard-dispatcher.js +0 -62
- package/esm2015/overlay/dispatchers/overlay-outside-click-dispatcher.js +0 -97
- package/esm2015/overlay/fullscreen-overlay-container.js +0 -94
- package/esm2015/overlay/index.js +0 -7
- package/esm2015/overlay/overlay-config.js +0 -45
- package/esm2015/overlay/overlay-container.js +0 -85
- package/esm2015/overlay/overlay-directives.js +0 -352
- package/esm2015/overlay/overlay-module.js +0 -27
- package/esm2015/overlay/overlay-ref.js +0 -409
- package/esm2015/overlay/overlay.externs.js +0 -6
- package/esm2015/overlay/overlay.js +0 -119
- package/esm2015/overlay/position/connected-position.js +0 -94
- package/esm2015/overlay/position/flexible-connected-position-strategy.js +0 -960
- package/esm2015/overlay/position/global-position-strategy.js +0 -197
- package/esm2015/overlay/position/overlay-position-builder.js +0 -52
- package/esm2015/overlay/position/scroll-clip.js +0 -42
- package/esm2015/overlay/scroll/close-scroll-strategy.js +0 -61
- package/esm2015/overlay/scroll/scroll-strategy-options.js +0 -57
- package/esm2015/platform/features/passive-listeners.js +0 -36
- package/esm2015/platform/features/scrolling.js +0 -85
- package/esm2015/platform/features/test-environment.js +0 -16
- package/esm2015/platform/index.js +0 -5
- package/esm2015/platform/platform-module.js +0 -14
- package/esm2015/platform/platform.externs.js +0 -6
- package/esm2015/platform/platform.js +0 -77
- package/esm2015/portal/dom-portal-outlet.js +0 -136
- package/esm2015/portal/index.js +0 -5
- package/esm2015/portal/portal-directives.js +0 -221
- package/esm2015/portal/portal-injector.js +0 -28
- package/esm2015/portal/portal.externs.js +0 -6
- package/esm2015/portal/portal.js +0 -179
- package/esm2015/scrolling/fixed-size-virtual-scroll.js +0 -188
- package/esm2015/scrolling/index.js +0 -5
- package/esm2015/scrolling/scroll-dispatcher.js +0 -163
- package/esm2015/scrolling/scrollable.js +0 -173
- package/esm2015/scrolling/scrolling-module.js +0 -49
- package/esm2015/scrolling/scrolling.externs.js +0 -6
- package/esm2015/scrolling/viewport-ruler.js +0 -139
- package/esm2015/scrolling/virtual-for-of.js +0 -293
- package/esm2015/scrolling/virtual-scroll-strategy.js +0 -11
- package/esm2015/scrolling/virtual-scroll-viewport.js +0 -371
- package/esm2015/stepper/index.js +0 -5
- package/esm2015/stepper/step-header.js +0 -29
- package/esm2015/stepper/step-label.js +0 -22
- package/esm2015/stepper/stepper-button.js +0 -72
- package/esm2015/stepper/stepper-module.js +0 -37
- package/esm2015/stepper/stepper.externs.js +0 -6
- package/esm2015/stepper/stepper.js +0 -428
- package/esm2015/table/can-stick.js +0 -42
- package/esm2015/table/cell.js +0 -211
- package/esm2015/table/coalesced-style-scheduler.js +0 -89
- package/esm2015/table/index.js +0 -5
- package/esm2015/table/row.js +0 -244
- package/esm2015/table/sticky-position-listener.js +0 -11
- package/esm2015/table/sticky-styler.js +0 -336
- package/esm2015/table/table-module.js +0 -47
- package/esm2015/table/table.externs.js +0 -6
- package/esm2015/table/table.js +0 -987
- package/esm2015/table/text-column.js +0 -127
- package/esm2015/testing/change-detection.js +0 -110
- package/esm2015/testing/component-harness.js +0 -344
- package/esm2015/testing/harness-environment.js +0 -219
- package/esm2015/testing/protractor/protractor-element.js +0 -274
- package/esm2015/testing/protractor/protractor-harness-environment.js +0 -79
- package/esm2015/testing/protractor/protractor.externs.js +0 -0
- package/esm2015/testing/selenium-webdriver/selenium-web-driver-element.js +0 -241
- package/esm2015/testing/selenium-webdriver/selenium-web-driver-harness-environment.js +0 -97
- package/esm2015/testing/selenium-webdriver/selenium-webdriver.externs.js +0 -0
- package/esm2015/testing/test-element.js +0 -48
- package/esm2015/testing/testbed/fake-events/dispatch-events.js +0 -53
- package/esm2015/testing/testbed/fake-events/element-focus.js +0 -39
- package/esm2015/testing/testbed/fake-events/event-objects.js +0 -107
- package/esm2015/testing/testbed/fake-events/type-in-element.js +0 -79
- package/esm2015/testing/testbed/task-state-zone-interceptor.js +0 -82
- package/esm2015/testing/testbed/testbed-harness-environment.js +0 -173
- package/esm2015/testing/testbed/testbed.externs.js +0 -0
- package/esm2015/testing/testbed/unit-test-element.js +0 -266
- package/esm2015/testing/testing.externs.js +0 -0
- package/esm2015/testing/text-filtering.js +0 -23
- package/esm2015/text-field/autofill.js +0 -117
- package/esm2015/text-field/autosize.js +0 -293
- package/esm2015/text-field/index.js +0 -5
- package/esm2015/text-field/text-field-module.js +0 -21
- package/esm2015/text-field/text-field.externs.js +0 -6
- package/esm2015/tree/control/nested-tree-control.js +0 -59
- package/esm2015/tree/index.js +0 -5
- package/esm2015/tree/nested-node.js +0 -112
- package/esm2015/tree/node.js +0 -36
- package/esm2015/tree/outlet.js +0 -34
- package/esm2015/tree/padding.js +0 -119
- package/esm2015/tree/toggle.js +0 -46
- package/esm2015/tree/tree-module.js +0 -32
- package/esm2015/tree/tree.externs.js +0 -6
- package/esm2015/tree/tree.js +0 -345
- package/fesm2015/a11y.js.map +0 -1
- package/fesm2015/accordion.js.map +0 -1
- package/fesm2015/bidi.js.map +0 -1
- package/fesm2015/cdk.js.map +0 -1
- package/fesm2015/clipboard.js.map +0 -1
- package/fesm2015/coercion.js.map +0 -1
- package/fesm2015/collections.js.map +0 -1
- package/fesm2015/drag-drop.js.map +0 -1
- package/fesm2015/keycodes.js.map +0 -1
- package/fesm2015/layout.js.map +0 -1
- package/fesm2015/observers.js.map +0 -1
- package/fesm2015/overlay.js.map +0 -1
- package/fesm2015/platform.js.map +0 -1
- package/fesm2015/portal.js.map +0 -1
- package/fesm2015/scrolling.js.map +0 -1
- package/fesm2015/stepper.js.map +0 -1
- package/fesm2015/table.js.map +0 -1
- package/fesm2015/testing/protractor.js.map +0 -1
- package/fesm2015/testing/selenium-webdriver.js.map +0 -1
- package/fesm2015/testing/testbed.js.map +0 -1
- package/fesm2015/testing.js.map +0 -1
- package/fesm2015/text-field.js.map +0 -1
- package/fesm2015/tree.js.map +0 -1
- package/keycodes/index.metadata.json +0 -1
- package/layout/index.metadata.json +0 -1
- package/observers/index.metadata.json +0 -1
- package/overlay/index.metadata.json +0 -1
- package/platform/index.metadata.json +0 -1
- package/portal/index.metadata.json +0 -1
- package/scrolling/index.metadata.json +0 -1
- package/stepper/index.metadata.json +0 -1
- package/table/index.metadata.json +0 -1
- package/text-field/index.metadata.json +0 -1
- package/tree/index.metadata.json +0 -1
|
@@ -1,173 +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 { Directionality } from '@angular/cdk/bidi';
|
|
9
|
-
import { getRtlScrollAxisType, supportsScrollBehavior } from '@angular/cdk/platform';
|
|
10
|
-
import { Directive, ElementRef, NgZone, Optional } from '@angular/core';
|
|
11
|
-
import { fromEvent, Observable, Subject } from 'rxjs';
|
|
12
|
-
import { takeUntil } from 'rxjs/operators';
|
|
13
|
-
import { ScrollDispatcher } from './scroll-dispatcher';
|
|
14
|
-
/**
|
|
15
|
-
* Sends an event when the directive's element is scrolled. Registers itself with the
|
|
16
|
-
* ScrollDispatcher service to include itself as part of its collection of scrolling events that it
|
|
17
|
-
* can be listened to through the service.
|
|
18
|
-
*/
|
|
19
|
-
export class CdkScrollable {
|
|
20
|
-
constructor(elementRef, scrollDispatcher, ngZone, dir) {
|
|
21
|
-
this.elementRef = elementRef;
|
|
22
|
-
this.scrollDispatcher = scrollDispatcher;
|
|
23
|
-
this.ngZone = ngZone;
|
|
24
|
-
this.dir = dir;
|
|
25
|
-
this._destroyed = new Subject();
|
|
26
|
-
this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed))
|
|
27
|
-
.subscribe(observer)));
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
this.scrollDispatcher.register(this);
|
|
31
|
-
}
|
|
32
|
-
ngOnDestroy() {
|
|
33
|
-
this.scrollDispatcher.deregister(this);
|
|
34
|
-
this._destroyed.next();
|
|
35
|
-
this._destroyed.complete();
|
|
36
|
-
}
|
|
37
|
-
/** Returns observable that emits when a scroll event is fired on the host element. */
|
|
38
|
-
elementScrolled() {
|
|
39
|
-
return this._elementScrolled;
|
|
40
|
-
}
|
|
41
|
-
/** Gets the ElementRef for the viewport. */
|
|
42
|
-
getElementRef() {
|
|
43
|
-
return this.elementRef;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo
|
|
47
|
-
* method, since browsers are not consistent about what scrollLeft means in RTL. For this method
|
|
48
|
-
* left and right always refer to the left and right side of the scrolling container irrespective
|
|
49
|
-
* of the layout direction. start and end refer to left and right in an LTR context and vice-versa
|
|
50
|
-
* in an RTL context.
|
|
51
|
-
* @param options specified the offsets to scroll to.
|
|
52
|
-
*/
|
|
53
|
-
scrollTo(options) {
|
|
54
|
-
const el = this.elementRef.nativeElement;
|
|
55
|
-
const isRtl = this.dir && this.dir.value == 'rtl';
|
|
56
|
-
// Rewrite start & end offsets as right or left offsets.
|
|
57
|
-
if (options.left == null) {
|
|
58
|
-
options.left = isRtl ? options.end : options.start;
|
|
59
|
-
}
|
|
60
|
-
if (options.right == null) {
|
|
61
|
-
options.right = isRtl ? options.start : options.end;
|
|
62
|
-
}
|
|
63
|
-
// Rewrite the bottom offset as a top offset.
|
|
64
|
-
if (options.bottom != null) {
|
|
65
|
-
options.top =
|
|
66
|
-
el.scrollHeight - el.clientHeight - options.bottom;
|
|
67
|
-
}
|
|
68
|
-
// Rewrite the right offset as a left offset.
|
|
69
|
-
if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {
|
|
70
|
-
if (options.left != null) {
|
|
71
|
-
options.right =
|
|
72
|
-
el.scrollWidth - el.clientWidth - options.left;
|
|
73
|
-
}
|
|
74
|
-
if (getRtlScrollAxisType() == 2 /* INVERTED */) {
|
|
75
|
-
options.left = options.right;
|
|
76
|
-
}
|
|
77
|
-
else if (getRtlScrollAxisType() == 1 /* NEGATED */) {
|
|
78
|
-
options.left = options.right ? -options.right : options.right;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
if (options.right != null) {
|
|
83
|
-
options.left =
|
|
84
|
-
el.scrollWidth - el.clientWidth - options.right;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
this._applyScrollToOptions(options);
|
|
88
|
-
}
|
|
89
|
-
_applyScrollToOptions(options) {
|
|
90
|
-
const el = this.elementRef.nativeElement;
|
|
91
|
-
if (supportsScrollBehavior()) {
|
|
92
|
-
el.scrollTo(options);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
if (options.top != null) {
|
|
96
|
-
el.scrollTop = options.top;
|
|
97
|
-
}
|
|
98
|
-
if (options.left != null) {
|
|
99
|
-
el.scrollLeft = options.left;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Measures the scroll offset relative to the specified edge of the viewport. This method can be
|
|
105
|
-
* used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent
|
|
106
|
-
* about what scrollLeft means in RTL. The values returned by this method are normalized such that
|
|
107
|
-
* left and right always refer to the left and right side of the scrolling container irrespective
|
|
108
|
-
* of the layout direction. start and end refer to left and right in an LTR context and vice-versa
|
|
109
|
-
* in an RTL context.
|
|
110
|
-
* @param from The edge to measure from.
|
|
111
|
-
*/
|
|
112
|
-
measureScrollOffset(from) {
|
|
113
|
-
const LEFT = 'left';
|
|
114
|
-
const RIGHT = 'right';
|
|
115
|
-
const el = this.elementRef.nativeElement;
|
|
116
|
-
if (from == 'top') {
|
|
117
|
-
return el.scrollTop;
|
|
118
|
-
}
|
|
119
|
-
if (from == 'bottom') {
|
|
120
|
-
return el.scrollHeight - el.clientHeight - el.scrollTop;
|
|
121
|
-
}
|
|
122
|
-
// Rewrite start & end as left or right offsets.
|
|
123
|
-
const isRtl = this.dir && this.dir.value == 'rtl';
|
|
124
|
-
if (from == 'start') {
|
|
125
|
-
from = isRtl ? RIGHT : LEFT;
|
|
126
|
-
}
|
|
127
|
-
else if (from == 'end') {
|
|
128
|
-
from = isRtl ? LEFT : RIGHT;
|
|
129
|
-
}
|
|
130
|
-
if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {
|
|
131
|
-
// For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and
|
|
132
|
-
// 0 when scrolled all the way right.
|
|
133
|
-
if (from == LEFT) {
|
|
134
|
-
return el.scrollWidth - el.clientWidth - el.scrollLeft;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
return el.scrollLeft;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {
|
|
141
|
-
// For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and
|
|
142
|
-
// 0 when scrolled all the way right.
|
|
143
|
-
if (from == LEFT) {
|
|
144
|
-
return el.scrollLeft + el.scrollWidth - el.clientWidth;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
return -el.scrollLeft;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and
|
|
152
|
-
// (scrollWidth - clientWidth) when scrolled all the way right.
|
|
153
|
-
if (from == LEFT) {
|
|
154
|
-
return el.scrollLeft;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
return el.scrollWidth - el.clientWidth - el.scrollLeft;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
CdkScrollable.decorators = [
|
|
163
|
-
{ type: Directive, args: [{
|
|
164
|
-
selector: '[cdk-scrollable], [cdkScrollable]'
|
|
165
|
-
},] }
|
|
166
|
-
];
|
|
167
|
-
CdkScrollable.ctorParameters = () => [
|
|
168
|
-
{ type: ElementRef },
|
|
169
|
-
{ type: ScrollDispatcher },
|
|
170
|
-
{ type: NgZone },
|
|
171
|
-
{ type: Directionality, decorators: [{ type: Optional }] }
|
|
172
|
-
];
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2Nyb2xsaW5nL3Njcm9sbGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsc0JBQXNCLEVBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQXFCckQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBUXhCLFlBQXNCLFVBQW1DLEVBQ25DLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ0YsR0FBb0I7UUFIaEMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ0YsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFWckMsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFMUMscUJBQWdCLEdBQXNCLElBQUksVUFBVSxDQUFDLENBQUMsUUFBeUIsRUFBRSxFQUFFLENBQ3ZGLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUks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QThCLEVBQUU7WUFDakUsNkZBQTZGO1lBQzdGLHFDQUFxQztZQUNyQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDeEQ7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQ3RCO1NBQ0Y7YUFBTSxJQUFJLEtBQUssSUFBSSxvQkFBb0IsRUFBRSxtQkFBNkIsRUFBRTtZQUN2RSw2RkFBNkY7WUFDN0YscUNBQXFDO1lBQ3JDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQzthQUN4RDtpQkFBTTtnQkFDTCxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQzthQUN2QjtTQUNGO2FBQU07WUFDTCw4RkFBOEY7WUFDOUYsK0RBQStEO1lBQy9ELElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDeEQ7U0FDRjtJQUNILENBQUM7OztZQXpKRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1DQUFtQzthQUM5Qzs7O1lBL0JrQixVQUFVO1lBR3JCLGdCQUFnQjtZQUhPLE1BQU07WUFON0IsY0FBYyx1QkFpRFAsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1xuICBnZXRSdGxTY3JvbGxBeGlzVHlwZSxcbiAgUnRsU2Nyb2xsQXhpc1R5cGUsXG4gIHN1cHBvcnRzU2Nyb2xsQmVoYXZpb3Jcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2Zyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgT2JzZXJ2ZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7U2Nyb2xsRGlzcGF0Y2hlcn0gZnJvbSAnLi9zY3JvbGwtZGlzcGF0Y2hlcic7XG5cbmV4cG9ydCB0eXBlIF9XaXRob3V0PFQ+ID0ge1tQIGluIGtleW9mIFRdPzogbmV2ZXJ9O1xuZXhwb3J0IHR5cGUgX1hPUjxULCBVPiA9IChfV2l0aG91dDxUPiAmIFUpIHwgKF9XaXRob3V0PFU+ICYgVCk7XG5leHBvcnQgdHlwZSBfVG9wID0ge3RvcD86IG51bWJlcn07XG5leHBvcnQgdHlwZSBfQm90dG9tID0ge2JvdHRvbT86IG51bWJlcn07XG5leHBvcnQgdHlwZSBfTGVmdCA9IHtsZWZ0PzogbnVtYmVyfTtcbmV4cG9ydCB0eXBlIF9SaWdodCA9IHtyaWdodD86IG51bWJlcn07XG5leHBvcnQgdHlwZSBfU3RhcnQgPSB7c3RhcnQ/OiBudW1iZXJ9O1xuZXhwb3J0IHR5cGUgX0VuZCA9IHtlbmQ/OiBudW1iZXJ9O1xuZXhwb3J0IHR5cGUgX1hBeGlzID0gX1hPUjxfWE9SPF9MZWZ0LCBfUmlnaHQ+LCBfWE9SPF9TdGFydCwgX0VuZD4+O1xuZXhwb3J0IHR5cGUgX1lBeGlzID0gX1hPUjxfVG9wLCBfQm90dG9tPjtcblxuLyoqXG4gKiBBbiBleHRlbmRlZCB2ZXJzaW9uIG9mIFNjcm9sbFRvT3B0aW9ucyB0aGF0IGFsbG93cyBleHByZXNzaW5nIHNjcm9sbCBvZmZzZXRzIHJlbGF0aXZlIHRvIHRoZVxuICogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCBzdGFydCwgb3IgZW5kIG9mIHRoZSB2aWV3cG9ydCByYXRoZXIgdGhhbiBqdXN0IHRoZSB0b3AgYW5kIGxlZnQuXG4gKiBQbGVhc2Ugbm90ZTogdGhlIHRvcCBhbmQgYm90dG9tIHByb3BlcnRpZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgYXMgYXJlIHRoZSBsZWZ0LCByaWdodCxcbiAqIHN0YXJ0LCBhbmQgZW5kIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIEV4dGVuZGVkU2Nyb2xsVG9PcHRpb25zID0gX1hBeGlzICYgX1lBeGlzICYgU2Nyb2xsT3B0aW9ucztcblxuLyoqXG4gKiBTZW5kcyBhbiBldmVudCB3aGVuIHRoZSBkaXJlY3RpdmUncyBlbGVtZW50IGlzIHNjcm9sbGVkLiBSZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlXG4gKiBTY3JvbGxEaXNwYXRjaGVyIHNlcnZpY2UgdG8gaW5jbHVkZSBpdHNlbGYgYXMgcGFydCBvZiBpdHMgY29sbGVjdGlvbiBvZiBzY3JvbGxpbmcgZXZlbnRzIHRoYXQgaXRcbiAqIGNhbiBiZSBsaXN0ZW5lZCB0byB0aHJvdWdoIHRoZSBzZXJ2aWNlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrLXNjcm9sbGFibGVdLCBbY2RrU2Nyb2xsYWJsZV0nXG59KVxuZXhwb3J0IGNsYXNzIENka1Njcm9sbGFibGUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfZWxlbWVudFNjcm9sbGVkOiBPYnNlcnZhYmxlPEV2ZW50PiA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8RXZlbnQ+KSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKG9ic2VydmVyKSkpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGRpcj86IERpcmVjdGlvbmFsaXR5KSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5kZXJlZ2lzdGVyKHRoaXMpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhIHNjcm9sbCBldmVudCBpcyBmaXJlZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICBlbGVtZW50U2Nyb2xsZWQoKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsZWQ7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgRWxlbWVudFJlZiBmb3IgdGhlIHZpZXdwb3J0LiAqL1xuICBnZXRFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdG8gdGhlIHNwZWNpZmllZCBvZmZzZXRzLiBUaGlzIGlzIGEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBicm93c2VyJ3MgbmF0aXZlIHNjcm9sbFRvXG4gICAqIG1ldGhvZCwgc2luY2UgYnJvd3NlcnMgYXJlIG5vdCBjb25zaXN0ZW50IGFib3V0IHdoYXQgc2Nyb2xsTGVmdCBtZWFucyBpbiBSVEwuIEZvciB0aGlzIG1ldGhvZFxuICAgKiBsZWZ0IGFuZCByaWdodCBhbHdheXMgcmVmZXIgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGUgb2YgdGhlIHNjcm9sbGluZyBjb250YWluZXIgaXJyZXNwZWN0aXZlXG4gICAqIG9mIHRoZSBsYXlvdXQgZGlyZWN0aW9uLiBzdGFydCBhbmQgZW5kIHJlZmVyIHRvIGxlZnQgYW5kIHJpZ2h0IGluIGFuIExUUiBjb250ZXh0IGFuZCB2aWNlLXZlcnNhXG4gICAqIGluIGFuIFJUTCBjb250ZXh0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBzcGVjaWZpZWQgdGhlIG9mZnNldHMgdG8gc2Nyb2xsIHRvLlxuICAgKi9cbiAgc2Nyb2xsVG8ob3B0aW9uczogRXh0ZW5kZWRTY3JvbGxUb09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGlzUnRsID0gdGhpcy5kaXIgJiYgdGhpcy5kaXIudmFsdWUgPT0gJ3J0bCc7XG5cbiAgICAvLyBSZXdyaXRlIHN0YXJ0ICYgZW5kIG9mZnNldHMgYXMgcmlnaHQgb3IgbGVmdCBvZmZzZXRzLlxuICAgIGlmIChvcHRpb25zLmxlZnQgPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5sZWZ0ID0gaXNSdGwgPyBvcHRpb25zLmVuZCA6IG9wdGlvbnMuc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmlnaHQgPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5yaWdodCA9IGlzUnRsID8gb3B0aW9ucy5zdGFydCA6IG9wdGlvbnMuZW5kO1xuICAgIH1cblxuICAgIC8vIFJld3JpdGUgdGhlIGJvdHRvbSBvZmZzZXQgYXMgYSB0b3Agb2Zmc2V0LlxuICAgIGlmIChvcHRpb25zLmJvdHRvbSAhPSBudWxsKSB7XG4gICAgICAob3B0aW9ucyBhcyBfV2l0aG91dDxfQm90dG9tPiAmIF9Ub3ApLnRvcCA9XG4gICAgICAgICAgZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0IC0gb3B0aW9ucy5ib3R0b207XG4gICAgfVxuXG4gICAgLy8gUmV3cml0ZSB0aGUgcmlnaHQgb2Zmc2V0IGFzIGEgbGVmdCBvZmZzZXQuXG4gICAgaWYgKGlzUnRsICYmIGdldFJ0bFNjcm9sbEF4aXNUeXBlKCkgIT0gUnRsU2Nyb2xsQXhpc1R5cGUuTk9STUFMKSB7XG4gICAgICBpZiAob3B0aW9ucy5sZWZ0ICE9IG51bGwpIHtcbiAgICAgICAgKG9wdGlvbnMgYXMgX1dpdGhvdXQ8X0xlZnQ+ICYgX1JpZ2h0KS5yaWdodCA9XG4gICAgICAgICAgICBlbC5zY3JvbGxXaWR0aCAtIGVsLmNsaWVudFdpZHRoIC0gb3B0aW9ucy5sZWZ0O1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2V0UnRsU2Nyb2xsQXhpc1R5cGUoKSA9PSBSdGxTY3JvbGxBeGlzVHlwZS5JTlZFUlRFRCkge1xuICAgICAgICBvcHRpb25zLmxlZnQgPSBvcHRpb25zLnJpZ2h0O1xuICAgICAgfSBlbHNlIGlmIChnZXRSdGxTY3JvbGxBeGlzVHlwZSgpID09IFJ0bFNjcm9sbEF4aXNUeXBlLk5FR0FURUQpIHtcbiAgICAgICAgb3B0aW9ucy5sZWZ0ID0gb3B0aW9ucy5yaWdodCA/IC1vcHRpb25zLnJpZ2h0IDogb3B0aW9ucy5yaWdodDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMucmlnaHQgIT0gbnVsbCkge1xuICAgICAgICAob3B0aW9ucyBhcyBfV2l0aG91dDxfUmlnaHQ+ICYgX0xlZnQpLmxlZnQgPVxuICAgICAgICAgICAgZWwuc2Nyb2xsV2lkdGggLSBlbC5jbGllbnRXaWR0aCAtIG9wdGlvbnMucmlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fYXBwbHlTY3JvbGxUb09wdGlvbnMob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVNjcm9sbFRvT3B0aW9ucyhvcHRpb25zOiBTY3JvbGxUb09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHN1cHBvcnRzU2Nyb2xsQmVoYXZpb3IoKSkge1xuICAgICAgZWwuc2Nyb2xsVG8ob3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLnRvcCAhPSBudWxsKSB7XG4gICAgICAgIGVsLnNjcm9sbFRvcCA9IG9wdGlvbnMudG9wO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMubGVmdCAhPSBudWxsKSB7XG4gICAgICAgIGVsLnNjcm9sbExlZnQgPSBvcHRpb25zLmxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lYXN1cmVzIHRoZSBzY3JvbGwgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBzcGVjaWZpZWQgZWRnZSBvZiB0aGUgdmlld3BvcnQuIFRoaXMgbWV0aG9kIGNhbiBiZVxuICAgKiB1c2VkIGluc3RlYWQgb2YgZGlyZWN0bHkgY2hlY2tpbmcgc2Nyb2xsTGVmdCBvciBzY3JvbGxUb3AsIHNpbmNlIGJyb3dzZXJzIGFyZSBub3QgY29uc2lzdGVudFxuICAgKiBhYm91dCB3aGF0IHNjcm9sbExlZnQgbWVhbnMgaW4gUlRMLiBUaGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kIGFyZSBub3JtYWxpemVkIHN1Y2ggdGhhdFxuICAgKiBsZWZ0IGFuZCByaWdodCBhbHdheXMgcmVmZXIgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGUgb2YgdGhlIHNjcm9sbGluZyBjb250YWluZXIgaXJyZXNwZWN0aXZlXG4gICAqIG9mIHRoZSBsYXlvdXQgZGlyZWN0aW9uLiBzdGFydCBhbmQgZW5kIHJlZmVyIHRvIGxlZnQgYW5kIHJpZ2h0IGluIGFuIExUUiBjb250ZXh0IGFuZCB2aWNlLXZlcnNhXG4gICAqIGluIGFuIFJUTCBjb250ZXh0LlxuICAgKiBAcGFyYW0gZnJvbSBUaGUgZWRnZSB0byBtZWFzdXJlIGZyb20uXG4gICAqL1xuICBtZWFzdXJlU2Nyb2xsT2Zmc2V0KGZyb206ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ3N0YXJ0JyB8ICdlbmQnKTogbnVtYmVyIHtcbiAgICBjb25zdCBMRUZUID0gJ2xlZnQnO1xuICAgIGNvbnN0IFJJR0hUID0gJ3JpZ2h0JztcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChmcm9tID09ICd0b3AnKSB7XG4gICAgICByZXR1cm4gZWwuc2Nyb2xsVG9wO1xuICAgIH1cbiAgICBpZiAoZnJvbSA9PSAnYm90dG9tJykge1xuICAgICAgcmV0dXJuIGVsLnNjcm9sbEhlaWdodCAtIGVsLmNsaWVudEhlaWdodCAtIGVsLnNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICAvLyBSZXdyaXRlIHN0YXJ0ICYgZW5kIGFzIGxlZnQgb3IgcmlnaHQgb2Zmc2V0cy5cbiAgICBjb25zdCBpc1J0bCA9IHRoaXMuZGlyICYmIHRoaXMuZGlyLnZhbHVlID09ICdydGwnO1xuICAgIGlmIChmcm9tID09ICdzdGFydCcpIHtcbiAgICAgIGZyb20gPSBpc1J0bCA/IFJJR0hUIDogTEVGVDtcbiAgICB9IGVsc2UgaWYgKGZyb20gPT0gJ2VuZCcpIHtcbiAgICAgIGZyb20gPSBpc1J0bCA/IExFRlQgOiBSSUdIVDtcbiAgICB9XG5cbiAgICBpZiAoaXNSdGwgJiYgZ2V0UnRsU2Nyb2xsQXhpc1R5cGUoKSA9PSBSdGxTY3JvbGxBeGlzVHlwZS5JTlZFUlRFRCkge1xuICAgICAgLy8gRm9yIElOVkVSVEVELCBzY3JvbGxMZWZ0IGlzIChzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoKSB3aGVuIHNjcm9sbGVkIGFsbCB0aGUgd2F5IGxlZnQgYW5kXG4gICAgICAvLyAwIHdoZW4gc2Nyb2xsZWQgYWxsIHRoZSB3YXkgcmlnaHQuXG4gICAgICBpZiAoZnJvbSA9PSBMRUZUKSB7XG4gICAgICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCAtIGVsLmNsaWVudFdpZHRoIC0gZWwuc2Nyb2xsTGVmdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbC5zY3JvbGxMZWZ0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNSdGwgJiYgZ2V0UnRsU2Nyb2xsQXhpc1R5cGUoKSA9PSBSdGxTY3JvbGxBeGlzVHlwZS5ORUdBVEVEKSB7XG4gICAgICAvLyBGb3IgTkVHQVRFRCwgc2Nyb2xsTGVmdCBpcyAtKHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGgpIHdoZW4gc2Nyb2xsZWQgYWxsIHRoZSB3YXkgbGVmdCBhbmRcbiAgICAgIC8vIDAgd2hlbiBzY3JvbGxlZCBhbGwgdGhlIHdheSByaWdodC5cbiAgICAgIGlmIChmcm9tID09IExFRlQpIHtcbiAgICAgICAgcmV0dXJuIGVsLnNjcm9sbExlZnQgKyBlbC5zY3JvbGxXaWR0aCAtIGVsLmNsaWVudFdpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC1lbC5zY3JvbGxMZWZ0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3IgTk9STUFMLCBhcyB3ZWxsIGFzIG5vbi1SVEwgY29udGV4dHMsIHNjcm9sbExlZnQgaXMgMCB3aGVuIHNjcm9sbGVkIGFsbCB0aGUgd2F5IGxlZnQgYW5kXG4gICAgICAvLyAoc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCkgd2hlbiBzY3JvbGxlZCBhbGwgdGhlIHdheSByaWdodC5cbiAgICAgIGlmIChmcm9tID09IExFRlQpIHtcbiAgICAgICAgcmV0dXJuIGVsLnNjcm9sbExlZnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZWwuc2Nyb2xsV2lkdGggLSBlbC5jbGllbnRXaWR0aCAtIGVsLnNjcm9sbExlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,49 +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 { BidiModule } from '@angular/cdk/bidi';
|
|
9
|
-
import { PlatformModule } from '@angular/cdk/platform';
|
|
10
|
-
import { NgModule } from '@angular/core';
|
|
11
|
-
import { CdkFixedSizeVirtualScroll } from './fixed-size-virtual-scroll';
|
|
12
|
-
import { CdkScrollable } from './scrollable';
|
|
13
|
-
import { CdkVirtualForOf } from './virtual-for-of';
|
|
14
|
-
import { CdkVirtualScrollViewport } from './virtual-scroll-viewport';
|
|
15
|
-
export class CdkScrollableModule {
|
|
16
|
-
}
|
|
17
|
-
CdkScrollableModule.decorators = [
|
|
18
|
-
{ type: NgModule, args: [{
|
|
19
|
-
exports: [CdkScrollable],
|
|
20
|
-
declarations: [CdkScrollable]
|
|
21
|
-
},] }
|
|
22
|
-
];
|
|
23
|
-
/**
|
|
24
|
-
* @docs-primary-export
|
|
25
|
-
*/
|
|
26
|
-
export class ScrollingModule {
|
|
27
|
-
}
|
|
28
|
-
ScrollingModule.decorators = [
|
|
29
|
-
{ type: NgModule, args: [{
|
|
30
|
-
imports: [
|
|
31
|
-
BidiModule,
|
|
32
|
-
PlatformModule,
|
|
33
|
-
CdkScrollableModule
|
|
34
|
-
],
|
|
35
|
-
exports: [
|
|
36
|
-
BidiModule,
|
|
37
|
-
CdkScrollableModule,
|
|
38
|
-
CdkFixedSizeVirtualScroll,
|
|
39
|
-
CdkVirtualForOf,
|
|
40
|
-
CdkVirtualScrollViewport,
|
|
41
|
-
],
|
|
42
|
-
declarations: [
|
|
43
|
-
CdkFixedSizeVirtualScroll,
|
|
44
|
-
CdkVirtualForOf,
|
|
45
|
-
CdkVirtualScrollViewport,
|
|
46
|
-
],
|
|
47
|
-
},] }
|
|
48
|
-
];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2Nyb2xsaW5nL3Njcm9sbGluZy1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBTW5FLE1BQU0sT0FBTyxtQkFBbUI7OztZQUovQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUN4QixZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDOUI7O0FBR0Q7O0dBRUc7QUFvQkgsTUFBTSxPQUFPLGVBQWU7OztZQW5CM0IsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxVQUFVO29CQUNWLGNBQWM7b0JBQ2QsbUJBQW1CO2lCQUNwQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsVUFBVTtvQkFDVixtQkFBbUI7b0JBQ25CLHlCQUF5QjtvQkFDekIsZUFBZTtvQkFDZix3QkFBd0I7aUJBQ3pCO2dCQUNELFlBQVksRUFBRTtvQkFDWix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2Ysd0JBQXdCO2lCQUN6QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QmlkaU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtQbGF0Zm9ybU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsfSBmcm9tICcuL2ZpeGVkLXNpemUtdmlydHVhbC1zY3JvbGwnO1xuaW1wb3J0IHtDZGtTY3JvbGxhYmxlfSBmcm9tICcuL3Njcm9sbGFibGUnO1xuaW1wb3J0IHtDZGtWaXJ0dWFsRm9yT2Z9IGZyb20gJy4vdmlydHVhbC1mb3Itb2YnO1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJy4vdmlydHVhbC1zY3JvbGwtdmlld3BvcnQnO1xuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbQ2RrU2Nyb2xsYWJsZV0sXG4gIGRlY2xhcmF0aW9uczogW0Nka1Njcm9sbGFibGVdXG59KVxuZXhwb3J0IGNsYXNzIENka1Njcm9sbGFibGVNb2R1bGUge31cblxuLyoqXG4gKiBAZG9jcy1wcmltYXJ5LWV4cG9ydFxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQmlkaU1vZHVsZSxcbiAgICBQbGF0Zm9ybU1vZHVsZSxcbiAgICBDZGtTY3JvbGxhYmxlTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCaWRpTW9kdWxlLFxuICAgIENka1Njcm9sbGFibGVNb2R1bGUsXG4gICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgIENka1ZpcnR1YWxGb3JPZixcbiAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGluZ01vZHVsZSB7fVxuIl19
|
|
@@ -1,139 +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 { Platform } from '@angular/cdk/platform';
|
|
9
|
-
import { Injectable, NgZone, Optional, Inject } from '@angular/core';
|
|
10
|
-
import { Subject } from 'rxjs';
|
|
11
|
-
import { auditTime } from 'rxjs/operators';
|
|
12
|
-
import { DOCUMENT } from '@angular/common';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/cdk/platform";
|
|
15
|
-
import * as i2 from "@angular/common";
|
|
16
|
-
/** Time in ms to throttle the resize events by default. */
|
|
17
|
-
export const DEFAULT_RESIZE_TIME = 20;
|
|
18
|
-
/**
|
|
19
|
-
* Simple utility for getting the bounds of the browser viewport.
|
|
20
|
-
* @docs-private
|
|
21
|
-
*/
|
|
22
|
-
export class ViewportRuler {
|
|
23
|
-
constructor(_platform, ngZone, document) {
|
|
24
|
-
this._platform = _platform;
|
|
25
|
-
/** Stream of viewport change events. */
|
|
26
|
-
this._change = new Subject();
|
|
27
|
-
/** Event listener that will be used to handle the viewport change events. */
|
|
28
|
-
this._changeListener = (event) => {
|
|
29
|
-
this._change.next(event);
|
|
30
|
-
};
|
|
31
|
-
this._document = document;
|
|
32
|
-
ngZone.runOutsideAngular(() => {
|
|
33
|
-
if (_platform.isBrowser) {
|
|
34
|
-
const window = this._getWindow();
|
|
35
|
-
// Note that bind the events ourselves, rather than going through something like RxJS's
|
|
36
|
-
// `fromEvent` so that we can ensure that they're bound outside of the NgZone.
|
|
37
|
-
window.addEventListener('resize', this._changeListener);
|
|
38
|
-
window.addEventListener('orientationchange', this._changeListener);
|
|
39
|
-
}
|
|
40
|
-
// Clear the cached position so that the viewport is re-measured next time it is required.
|
|
41
|
-
// We don't need to keep track of the subscription, because it is completed on destroy.
|
|
42
|
-
this.change().subscribe(() => this._viewportSize = null);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
ngOnDestroy() {
|
|
46
|
-
if (this._platform.isBrowser) {
|
|
47
|
-
const window = this._getWindow();
|
|
48
|
-
window.removeEventListener('resize', this._changeListener);
|
|
49
|
-
window.removeEventListener('orientationchange', this._changeListener);
|
|
50
|
-
}
|
|
51
|
-
this._change.complete();
|
|
52
|
-
}
|
|
53
|
-
/** Returns the viewport's width and height. */
|
|
54
|
-
getViewportSize() {
|
|
55
|
-
if (!this._viewportSize) {
|
|
56
|
-
this._updateViewportSize();
|
|
57
|
-
}
|
|
58
|
-
const output = { width: this._viewportSize.width, height: this._viewportSize.height };
|
|
59
|
-
// If we're not on a browser, don't cache the size since it'll be mocked out anyway.
|
|
60
|
-
if (!this._platform.isBrowser) {
|
|
61
|
-
this._viewportSize = null;
|
|
62
|
-
}
|
|
63
|
-
return output;
|
|
64
|
-
}
|
|
65
|
-
/** Gets a ClientRect for the viewport's bounds. */
|
|
66
|
-
getViewportRect() {
|
|
67
|
-
// Use the document element's bounding rect rather than the window scroll properties
|
|
68
|
-
// (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll
|
|
69
|
-
// properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different
|
|
70
|
-
// conceptual viewports. Under most circumstances these viewports are equivalent, but they
|
|
71
|
-
// can disagree when the page is pinch-zoomed (on devices that support touch).
|
|
72
|
-
// See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4
|
|
73
|
-
// We use the documentElement instead of the body because, by default (without a css reset)
|
|
74
|
-
// browsers typically give the document body an 8px margin, which is not included in
|
|
75
|
-
// getBoundingClientRect().
|
|
76
|
-
const scrollPosition = this.getViewportScrollPosition();
|
|
77
|
-
const { width, height } = this.getViewportSize();
|
|
78
|
-
return {
|
|
79
|
-
top: scrollPosition.top,
|
|
80
|
-
left: scrollPosition.left,
|
|
81
|
-
bottom: scrollPosition.top + height,
|
|
82
|
-
right: scrollPosition.left + width,
|
|
83
|
-
height,
|
|
84
|
-
width,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/** Gets the (top, left) scroll position of the viewport. */
|
|
88
|
-
getViewportScrollPosition() {
|
|
89
|
-
// While we can get a reference to the fake document
|
|
90
|
-
// during SSR, it doesn't have getBoundingClientRect.
|
|
91
|
-
if (!this._platform.isBrowser) {
|
|
92
|
-
return { top: 0, left: 0 };
|
|
93
|
-
}
|
|
94
|
-
// The top-left-corner of the viewport is determined by the scroll position of the document
|
|
95
|
-
// body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about
|
|
96
|
-
// whether `document.body` or `document.documentElement` is the scrolled element, so reading
|
|
97
|
-
// `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of
|
|
98
|
-
// `document.documentElement` works consistently, where the `top` and `left` values will
|
|
99
|
-
// equal negative the scroll position.
|
|
100
|
-
const document = this._document;
|
|
101
|
-
const window = this._getWindow();
|
|
102
|
-
const documentElement = document.documentElement;
|
|
103
|
-
const documentRect = documentElement.getBoundingClientRect();
|
|
104
|
-
const top = -documentRect.top || document.body.scrollTop || window.scrollY ||
|
|
105
|
-
documentElement.scrollTop || 0;
|
|
106
|
-
const left = -documentRect.left || document.body.scrollLeft || window.scrollX ||
|
|
107
|
-
documentElement.scrollLeft || 0;
|
|
108
|
-
return { top, left };
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Returns a stream that emits whenever the size of the viewport changes.
|
|
112
|
-
* This stream emits outside of the Angular zone.
|
|
113
|
-
* @param throttleTime Time in milliseconds to throttle the stream.
|
|
114
|
-
*/
|
|
115
|
-
change(throttleTime = DEFAULT_RESIZE_TIME) {
|
|
116
|
-
return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;
|
|
117
|
-
}
|
|
118
|
-
/** Use defaultView of injected document if available or fallback to global window reference */
|
|
119
|
-
_getWindow() {
|
|
120
|
-
return this._document.defaultView || window;
|
|
121
|
-
}
|
|
122
|
-
/** Updates the cached viewport size. */
|
|
123
|
-
_updateViewportSize() {
|
|
124
|
-
const window = this._getWindow();
|
|
125
|
-
this._viewportSize = this._platform.isBrowser ?
|
|
126
|
-
{ width: window.innerWidth, height: window.innerHeight } :
|
|
127
|
-
{ width: 0, height: 0 };
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
ViewportRuler.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportRuler_Factory() { return new ViewportRuler(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.DOCUMENT, 8)); }, token: ViewportRuler, providedIn: "root" });
|
|
131
|
-
ViewportRuler.decorators = [
|
|
132
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
133
|
-
];
|
|
134
|
-
ViewportRuler.ctorParameters = () => [
|
|
135
|
-
{ type: Platform },
|
|
136
|
-
{ type: NgZone },
|
|
137
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
|
|
138
|
-
];
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtcnVsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3Njcm9sbGluZy92aWV3cG9ydC1ydWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFekMsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQVF0Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQWV4QixZQUFvQixTQUFtQixFQUMzQixNQUFjLEVBQ2dCLFFBQWE7UUFGbkMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQVh2Qyx3Q0FBd0M7UUFDdkIsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFFaEQsNkVBQTZFO1FBQ3JFLG9CQUFlLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUE7UUFRQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUUxQixNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzVCLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUVqQyx1RkFBdUY7Z0JBQ3ZGLDhF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Q1gsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge0luamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2F1ZGl0VGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqIFRpbWUgaW4gbXMgdG8gdGhyb3R0bGUgdGhlIHJlc2l6ZSBldmVudHMgYnkgZGVmYXVsdC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFU0laRV9USU1FID0gMjA7XG5cbi8qKiBPYmplY3QgdGhhdCBob2xkcyB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSB2aWV3cG9ydCBpbiBlYWNoIGRpcmVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRTY3JvbGxQb3NpdGlvbiB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG59XG5cbi8qKlxuICogU2ltcGxlIHV0aWxpdHkgZm9yIGdldHRpbmcgdGhlIGJvdW5kcyBvZiB0aGUgYnJvd3NlciB2aWV3cG9ydC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRSdWxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBDYWNoZWQgdmlld3BvcnQgZGltZW5zaW9ucy4gKi9cbiAgcHJpdmF0ZSBfdmlld3BvcnRTaXplOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9IHwgbnVsbDtcblxuICAvKiogU3RyZWFtIG9mIHZpZXdwb3J0IGNoYW5nZSBldmVudHMuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZSA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuXG4gIC8qKiBFdmVudCBsaXN0ZW5lciB0aGF0IHdpbGwgYmUgdXNlZCB0byBoYW5kbGUgdGhlIHZpZXdwb3J0IGNoYW5nZSBldmVudHMuICovXG4gIHByaXZhdGUgX2NoYW5nZUxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIHRoaXMuX2NoYW5nZS5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBVc2VkIHRvIHJlZmVyZW5jZSBjb3JyZWN0IGRvY3VtZW50L3dpbmRvdyAqL1xuICBwcm90ZWN0ZWQgX2RvY3VtZW50OiBEb2N1bWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55KSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcblxuICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLl9nZXRXaW5kb3coKTtcblxuICAgICAgICAvLyBOb3RlIHRoYXQgYmluZCB0aGUgZXZlbnRzIG91cnNlbHZlcywgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBSeEpTJ3NcbiAgICAgICAgLy8gYGZyb21FdmVudGAgc28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoYXQgdGhleSdyZSBib3VuZCBvdXRzaWRlIG9mIHRoZSBOZ1pvbmUuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9jaGFuZ2VMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHRoaXMuX2NoYW5nZUxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBwb3NpdGlvbiBzbyB0aGF0IHRoZSB2aWV3cG9ydCBpcyByZS1tZWFzdXJlZCBuZXh0IHRpbWUgaXQgaXMgcmVxdWlyZWQuXG4gICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHN1YnNjcmlwdGlvbiwgYmVjYXVzZSBpdCBpcyBjb21wbGV0ZWQgb24gZGVzdHJveS5cbiAgICAgIHRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3ZpZXdwb3J0U2l6ZSA9IG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fY2hhbmdlTGlzdGVuZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgdGhpcy5fY2hhbmdlTGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHZpZXdwb3J0J3Mgd2lkdGggYW5kIGhlaWdodC4gKi9cbiAgZ2V0Vmlld3BvcnRTaXplKCk6IFJlYWRvbmx5PHt3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcn0+IHtcbiAgICBpZiAoIXRoaXMuX3ZpZXdwb3J0U2l6ZSkge1xuICAgICAgdGhpcy5fdXBkYXRlVmlld3BvcnRTaXplKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0ge3dpZHRoOiB0aGlzLl92aWV3cG9ydFNpemUhLndpZHRoLCBoZWlnaHQ6IHRoaXMuX3ZpZXdwb3J0U2l6ZSEuaGVpZ2h0fTtcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBvbiBhIGJyb3dzZXIsIGRvbid0IGNhY2hlIHRoZSBzaXplIHNpbmNlIGl0J2xsIGJlIG1vY2tlZCBvdXQgYW55d2F5LlxuICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICB0aGlzLl92aWV3cG9ydFNpemUgPSBudWxsITtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgLyoqIEdldHMgYSBDbGllbnRSZWN0IGZvciB0aGUgdmlld3BvcnQncyBib3VuZHMuICovXG4gIGdldFZpZXdwb3J0UmVjdCgpOiBDbGllbnRSZWN0IHtcbiAgICAvLyBVc2UgdGhlIGRvY3VtZW50IGVsZW1lbnQncyBib3VuZGluZyByZWN0IHJhdGhlciB0aGFuIHRoZSB3aW5kb3cgc2Nyb2xsIHByb3BlcnRpZXNcbiAgICAvLyAoZS5nLiBwYWdlWU9mZnNldCwgc2Nyb2xsWSkgZHVlIHRvIGluIGlzc3VlIGluIENocm9tZSBhbmQgSUUgd2hlcmUgd2luZG93IHNjcm9sbFxuICAgIC8vIHByb3BlcnRpZXMgYW5kIGNsaWVudCBjb29yZGluYXRlcyAoYm91bmRpbmdDbGllbnRSZWN0LCBjbGllbnRYL1ksIGV0Yy4pIGFyZSBpbiBkaWZmZXJlbnRcbiAgICAvLyBjb25jZXB0dWFsIHZpZXdwb3J0cy4gVW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIHRoZXNlIHZpZXdwb3J0cyBhcmUgZXF1aXZhbGVudCwgYnV0IHRoZXlcbiAgICAvLyBjYW4gZGlzYWdyZWUgd2hlbiB0aGUgcGFnZSBpcyBwaW5jaC16b29tZWQgKG9uIGRldmljZXMgdGhhdCBzdXBwb3J0IHRvdWNoKS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDg5MjA2I2M0XG4gICAgLy8gV2UgdXNlIHRoZSBkb2N1bWVudEVsZW1lbnQgaW5zdGVhZCBvZiB0aGUgYm9keSBiZWNhdXNlLCBieSBkZWZhdWx0ICh3aXRob3V0IGEgY3NzIHJlc2V0KVxuICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBnaXZlIHRoZSBkb2N1bWVudCBib2R5IGFuIDhweCBtYXJnaW4sIHdoaWNoIGlzIG5vdCBpbmNsdWRlZCBpblxuICAgIC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLlxuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdGhpcy5nZXRWaWV3cG9ydFNpemUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0b3A6IHNjcm9sbFBvc2l0aW9uLnRvcCxcbiAgICAgIGxlZnQ6IHNjcm9sbFBvc2l0aW9uLmxlZnQsXG4gICAgICBib3R0b206IHNjcm9sbFBvc2l0aW9uLnRvcCArIGhlaWdodCxcbiAgICAgIHJpZ2h0OiBzY3JvbGxQb3NpdGlvbi5sZWZ0ICsgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICB3aWR0aCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlICh0b3AsIGxlZnQpIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgdmlld3BvcnQuICovXG4gIGdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTogVmlld3BvcnRTY3JvbGxQb3NpdGlvbiB7XG4gICAgLy8gV2hpbGUgd2UgY2FuIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgZmFrZSBkb2N1bWVudFxuICAgIC8vIGR1cmluZyBTU1IsIGl0IGRvZXNuJ3QgaGF2ZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QuXG4gICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybiB7dG9wOiAwLCBsZWZ0OiAwfTtcbiAgICB9XG5cbiAgICAvLyBUaGUgdG9wLWxlZnQtY29ybmVyIG9mIHRoZSB2aWV3cG9ydCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGRvY3VtZW50XG4gICAgLy8gYm9keSwgbm9ybWFsbHkganVzdCAoc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKS4gSG93ZXZlciwgQ2hyb21lIGFuZCBGaXJlZm94IGRpc2FncmVlIGFib3V0XG4gICAgLy8gd2hldGhlciBgZG9jdW1lbnQuYm9keWAgb3IgYGRvY3VtZW50LmRvY3VtZW50RWxlbWVudGAgaXMgdGhlIHNjcm9sbGVkIGVsZW1lbnQsIHNvIHJlYWRpbmdcbiAgICAvLyBgc2Nyb2xsVG9wYCBhbmQgYHNjcm9sbExlZnRgIGlzIGluY29uc2lzdGVudC4gSG93ZXZlciwgdXNpbmcgdGhlIGJvdW5kaW5nIHJlY3Qgb2ZcbiAgICAvLyBgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50YCB3b3JrcyBjb25zaXN0ZW50bHksIHdoZXJlIHRoZSBgdG9wYCBhbmQgYGxlZnRgIHZhbHVlcyB3aWxsXG4gICAgLy8gZXF1YWwgbmVnYXRpdmUgdGhlIHNjcm9sbCBwb3NpdGlvbi5cbiAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuX2dldFdpbmRvdygpO1xuICAgIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCE7XG4gICAgY29uc3QgZG9jdW1lbnRSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgdG9wID0gLWRvY3VtZW50UmVjdC50b3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgd2luZG93LnNjcm9sbFkgfHxcbiAgICAgICAgICAgICAgICAgZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCAwO1xuXG4gICAgY29uc3QgbGVmdCA9IC1kb2N1bWVudFJlY3QubGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgfHwgd2luZG93LnNjcm9sbFggfHxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7XG5cbiAgICByZXR1cm4ge3RvcCwgbGVmdH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmVhbSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydCBjaGFuZ2VzLlxuICAgKiBUaGlzIHN0cmVhbSBlbWl0cyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqIEBwYXJhbSB0aHJvdHRsZVRpbWUgVGltZSBpbiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgdGhlIHN0cmVhbS5cbiAgICovXG4gIGNoYW5nZSh0aHJvdHRsZVRpbWU6IG51bWJlciA9IERFRkFVTFRfUkVTSVpFX1RJTUUpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgcmV0dXJuIHRocm90dGxlVGltZSA+IDAgPyB0aGlzLl9jaGFuZ2UucGlwZShhdWRpdFRpbWUodGhyb3R0bGVUaW1lKSkgOiB0aGlzLl9jaGFuZ2U7XG4gIH1cblxuICAvKiogVXNlIGRlZmF1bHRWaWV3IG9mIGluamVjdGVkIGRvY3VtZW50IGlmIGF2YWlsYWJsZSBvciBmYWxsYmFjayB0byBnbG9iYWwgd2luZG93IHJlZmVyZW5jZSAqL1xuICBwcml2YXRlIF9nZXRXaW5kb3coKTogV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICB9XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIGNhY2hlZCB2aWV3cG9ydCBzaXplLiAqL1xuICBwcml2YXRlIF91cGRhdGVWaWV3cG9ydFNpemUoKSB7XG4gICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG4gICAgdGhpcy5fdmlld3BvcnRTaXplID0gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyID9cbiAgICAgICAge3dpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHR9IDpcbiAgICAgICAge3dpZHRoOiAwLCBoZWlnaHQ6IDB9O1xuICB9XG59XG4iXX0=
|