@kato-lee/cdk 14.2.7 → 20.2.14
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/LICENSE +21 -21
- package/README.md +8 -8
- package/_adev_assets/cdk_drag_drop.json +7215 -0
- package/_adev_assets/cdk_testing.json +7605 -0
- package/_adev_assets/cdk_testing_protractor.json +1747 -0
- package/_adev_assets/cdk_testing_selenium_webdriver.json +1801 -0
- package/_adev_assets/cdk_testing_testbed.json +1903 -0
- package/_index.scss +8 -8
- package/a11y/_index.scss +60 -102
- package/a11y/index.d.ts +550 -1212
- package/a11y-module.d.d.ts +314 -0
- package/a11y-prebuilt.css +1 -1
- package/accordion/index.d.ts +92 -140
- package/activedescendant-key-manager.d.d.ts +39 -0
- package/bidi/index.d.ts +21 -80
- package/bidi-module.d.d.ts +57 -0
- package/clipboard/index.d.ts +101 -115
- package/coercion/index.d.ts +45 -67
- package/coercion/private/index.d.ts +9 -0
- package/collections/index.d.ts +99 -374
- package/data-source.d.d.ts +43 -0
- package/dialog/index.d.ts +412 -469
- package/drag-drop/index.d.ts +1410 -1614
- package/fesm2022/a11y-module.mjs +951 -0
- package/fesm2022/a11y-module.mjs.map +1 -0
- package/fesm2022/a11y.mjs +538 -0
- package/fesm2022/a11y.mjs.map +1 -0
- package/fesm2022/accordion.mjs +216 -0
- package/fesm2022/accordion.mjs.map +1 -0
- package/fesm2022/activedescendant-key-manager.mjs +16 -0
- package/fesm2022/activedescendant-key-manager.mjs.map +1 -0
- package/fesm2022/array.mjs +6 -0
- package/fesm2022/array.mjs.map +1 -0
- package/fesm2022/bidi.mjs +78 -0
- package/fesm2022/bidi.mjs.map +1 -0
- package/fesm2022/breakpoints-observer.mjs +179 -0
- package/fesm2022/breakpoints-observer.mjs.map +1 -0
- package/fesm2022/cdk.mjs +7 -0
- package/fesm2022/cdk.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/clipboard.mjs +210 -259
- package/fesm2022/clipboard.mjs.map +1 -0
- package/fesm2022/coercion/private.mjs +15 -0
- package/fesm2022/coercion/private.mjs.map +1 -0
- package/fesm2022/coercion.mjs +43 -0
- package/fesm2022/coercion.mjs.map +1 -0
- package/fesm2022/collections.mjs +8 -0
- package/fesm2022/collections.mjs.map +1 -0
- package/fesm2022/css-pixel-value.mjs +10 -0
- package/fesm2022/css-pixel-value.mjs.map +1 -0
- package/fesm2022/data-source.mjs +15 -0
- package/fesm2022/data-source.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/dialog.mjs +874 -787
- package/fesm2022/dialog.mjs.map +1 -0
- package/fesm2022/directionality.mjs +77 -0
- package/fesm2022/directionality.mjs.map +1 -0
- package/fesm2022/dispose-view-repeater-strategy.mjs +44 -0
- package/fesm2022/dispose-view-repeater-strategy.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/drag-drop.mjs +4477 -3808
- package/fesm2022/drag-drop.mjs.map +1 -0
- package/fesm2022/element.mjs +29 -0
- package/fesm2022/element.mjs.map +1 -0
- package/fesm2022/fake-event-detection.mjs +24 -0
- package/fesm2022/fake-event-detection.mjs.map +1 -0
- package/fesm2022/focus-key-manager.mjs +22 -0
- package/fesm2022/focus-key-manager.mjs.map +1 -0
- package/fesm2022/focus-monitor.mjs +622 -0
- package/fesm2022/focus-monitor.mjs.map +1 -0
- package/fesm2022/id-generator.mjs +37 -0
- package/fesm2022/id-generator.mjs.map +1 -0
- package/fesm2022/keycodes.mjs +15 -0
- package/fesm2022/keycodes.mjs.map +1 -0
- package/{fesm2015/keycodes.mjs → fesm2022/keycodes2.mjs} +122 -167
- package/fesm2022/keycodes2.mjs.map +1 -0
- package/fesm2022/layout.mjs +43 -0
- package/fesm2022/layout.mjs.map +1 -0
- package/fesm2022/list-key-manager.mjs +360 -0
- package/fesm2022/list-key-manager.mjs.map +1 -0
- package/fesm2022/listbox.mjs +928 -0
- package/fesm2022/listbox.mjs.map +1 -0
- package/fesm2022/menu.mjs +2001 -0
- package/fesm2022/menu.mjs.map +1 -0
- package/fesm2022/observers/private.mjs +124 -0
- package/fesm2022/observers/private.mjs.map +1 -0
- package/fesm2022/observers.mjs +210 -0
- package/fesm2022/observers.mjs.map +1 -0
- package/{fesm2020/overlay.mjs → fesm2022/overlay-module.mjs} +3062 -3145
- package/fesm2022/overlay-module.mjs.map +1 -0
- package/fesm2022/overlay.mjs +101 -0
- package/fesm2022/overlay.mjs.map +1 -0
- package/fesm2022/passive-listeners.mjs +31 -0
- package/fesm2022/passive-listeners.mjs.map +1 -0
- package/fesm2022/platform.mjs +73 -0
- package/fesm2022/platform.mjs.map +1 -0
- package/fesm2022/platform2.mjs +77 -0
- package/fesm2022/platform2.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/portal.mjs +614 -689
- package/fesm2022/portal.mjs.map +1 -0
- package/fesm2022/private.mjs +19 -0
- package/fesm2022/private.mjs.map +1 -0
- package/fesm2022/recycle-view-repeater-strategy.mjs +156 -0
- package/fesm2022/recycle-view-repeater-strategy.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/scrolling.mjs +1472 -1558
- package/fesm2022/scrolling.mjs.map +1 -0
- package/fesm2022/scrolling2.mjs +99 -0
- package/fesm2022/scrolling2.mjs.map +1 -0
- package/fesm2022/selection-model.mjs +221 -0
- package/fesm2022/selection-model.mjs.map +1 -0
- package/fesm2022/shadow-dom.mjs +49 -0
- package/fesm2022/shadow-dom.mjs.map +1 -0
- package/fesm2022/stepper.mjs +632 -0
- package/fesm2022/stepper.mjs.map +1 -0
- package/fesm2022/style-loader.mjs +47 -0
- package/fesm2022/style-loader.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/table.mjs +2511 -2348
- package/fesm2022/table.mjs.map +1 -0
- package/fesm2022/test-environment.mjs +19 -0
- package/fesm2022/test-environment.mjs.map +1 -0
- package/fesm2022/testing/selenium-webdriver.mjs +353 -0
- package/fesm2022/testing/selenium-webdriver.mjs.map +1 -0
- package/fesm2022/testing/testbed.mjs +782 -0
- package/fesm2022/testing/testbed.mjs.map +1 -0
- package/fesm2022/testing.mjs +950 -0
- package/fesm2022/testing.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/text-field.mjs +432 -459
- package/fesm2022/text-field.mjs.map +1 -0
- package/fesm2022/tree-key-manager.mjs +360 -0
- package/fesm2022/tree-key-manager.mjs.map +1 -0
- package/fesm2022/tree.mjs +1800 -0
- package/fesm2022/tree.mjs.map +1 -0
- package/fesm2022/typeahead.mjs +88 -0
- package/fesm2022/typeahead.mjs.map +1 -0
- package/fesm2022/unique-selection-dispatcher.mjs +49 -0
- package/fesm2022/unique-selection-dispatcher.mjs.map +1 -0
- package/focus-key-manager.d.d.ts +39 -0
- package/focus-monitor.d.d.ts +208 -0
- package/harness-environment.d.d.ts +944 -0
- package/index.d.ts +6 -6
- package/keycodes/index.d.ts +129 -249
- package/layout/index.d.ts +89 -90
- package/list-key-manager.d.d.ts +170 -0
- package/listbox/index.d.ts +354 -419
- package/menu/index.d.ts +834 -1013
- package/number-property.d.d.ts +16 -0
- package/observers/index.d.ts +84 -109
- package/observers/private/index.d.ts +34 -0
- package/overlay/_index-deprecated.scss +13 -13
- package/overlay/_index.scss +193 -152
- package/overlay/index.d.ts +328 -1343
- package/overlay-module.d.d.ts +801 -0
- package/overlay-prebuilt.css +1 -1
- package/package.json +177 -232
- package/platform/index.d.ts +67 -106
- package/platform.d.d.ts +33 -0
- package/portal/index.d.ts +51 -328
- package/portal-directives.d.d.ts +211 -0
- package/private/index.d.ts +13 -0
- package/schematics/collection.json +18 -0
- package/schematics/index.d.ts +14 -0
- package/schematics/index.js +37 -0
- package/schematics/index.js.map +1 -0
- package/schematics/migration.json +15 -0
- package/schematics/ng-add/index.d.ts +17 -0
- package/schematics/ng-add/index.js +31 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.d.ts +11 -0
- package/schematics/ng-add/schema.js +10 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +53 -0
- package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +21 -0
- package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +25 -0
- package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +45 -0
- package/schematics/ng-generate/drag-drop/index.d.ts +11 -0
- package/schematics/ng-generate/drag-drop/index.js +42 -0
- package/schematics/ng-generate/drag-drop/index.js.map +1 -0
- package/schematics/ng-generate/drag-drop/schema.d.ts +10 -0
- package/schematics/ng-generate/drag-drop/schema.js +10 -0
- package/schematics/ng-generate/drag-drop/schema.js.map +1 -0
- package/schematics/ng-generate/drag-drop/schema.json +100 -0
- package/schematics/ng-update/data/attribute-selectors.d.ts +15 -0
- package/schematics/ng-update/data/attribute-selectors.js +12 -0
- package/schematics/ng-update/data/attribute-selectors.js.map +1 -0
- package/schematics/ng-update/data/class-names.d.ts +15 -0
- package/schematics/ng-update/data/class-names.js +12 -0
- package/schematics/ng-update/data/class-names.js.map +1 -0
- package/schematics/ng-update/data/constructor-checks.d.ts +15 -0
- package/schematics/ng-update/data/constructor-checks.js +17 -0
- package/schematics/ng-update/data/constructor-checks.js.map +1 -0
- package/schematics/ng-update/data/css-selectors.d.ts +27 -0
- package/schematics/ng-update/data/css-selectors.js +12 -0
- package/schematics/ng-update/data/css-selectors.js.map +1 -0
- package/schematics/ng-update/data/css-tokens.d.ts +27 -0
- package/schematics/ng-update/data/css-tokens.js +12 -0
- package/schematics/ng-update/data/css-tokens.js.map +1 -0
- package/schematics/ng-update/data/element-selectors.d.ts +15 -0
- package/schematics/ng-update/data/element-selectors.js +12 -0
- package/schematics/ng-update/data/element-selectors.js.map +1 -0
- package/schematics/ng-update/data/index.d.ts +18 -0
- package/schematics/ng-update/data/index.js +35 -0
- package/schematics/ng-update/data/index.js.map +1 -0
- package/schematics/ng-update/data/input-names.d.ts +22 -0
- package/schematics/ng-update/data/input-names.js +12 -0
- package/schematics/ng-update/data/input-names.js.map +1 -0
- package/schematics/ng-update/data/method-call-checks.d.ts +17 -0
- package/schematics/ng-update/data/method-call-checks.js +12 -0
- package/schematics/ng-update/data/method-call-checks.js.map +1 -0
- package/schematics/ng-update/data/output-names.d.ts +22 -0
- package/schematics/ng-update/data/output-names.js +12 -0
- package/schematics/ng-update/data/output-names.js.map +1 -0
- package/schematics/ng-update/data/property-names.d.ts +20 -0
- package/schematics/ng-update/data/property-names.js +12 -0
- package/schematics/ng-update/data/property-names.js.map +1 -0
- package/schematics/ng-update/data/symbol-removal.d.ts +17 -0
- package/schematics/ng-update/data/symbol-removal.js +12 -0
- package/schematics/ng-update/data/symbol-removal.js.map +1 -0
- package/schematics/ng-update/devkit-file-system.d.ts +30 -0
- package/schematics/ng-update/devkit-file-system.js +83 -0
- package/schematics/ng-update/devkit-file-system.js.map +1 -0
- package/schematics/ng-update/devkit-migration-rule.d.ts +24 -0
- package/schematics/ng-update/devkit-migration-rule.js +142 -0
- package/schematics/ng-update/devkit-migration-rule.js.map +1 -0
- package/schematics/ng-update/devkit-migration.d.ts +35 -0
- package/schematics/ng-update/devkit-migration.js +20 -0
- package/schematics/ng-update/devkit-migration.js.map +1 -0
- package/schematics/ng-update/find-stylesheets.d.ts +16 -0
- package/schematics/ng-update/find-stylesheets.js +41 -0
- package/schematics/ng-update/find-stylesheets.js.map +1 -0
- package/schematics/ng-update/html-parsing/angular.d.ts +15 -0
- package/schematics/ng-update/html-parsing/angular.js +51 -0
- package/schematics/ng-update/html-parsing/angular.js.map +1 -0
- package/schematics/ng-update/html-parsing/elements.d.ts +24 -0
- package/schematics/ng-update/html-parsing/elements.js +63 -0
- package/schematics/ng-update/html-parsing/elements.js.map +1 -0
- package/schematics/ng-update/index.d.ts +10 -0
- package/schematics/ng-update/index.js +29 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/migrations/attribute-selectors.d.ts +26 -0
- package/schematics/ng-update/migrations/attribute-selectors.js +71 -0
- package/schematics/ng-update/migrations/attribute-selectors.js.map +1 -0
- package/schematics/ng-update/migrations/class-inheritance.d.ts +26 -0
- package/schematics/ng-update/migrations/class-inheritance.js +58 -0
- package/schematics/ng-update/migrations/class-inheritance.js.map +1 -0
- package/schematics/ng-update/migrations/class-names.d.ts +32 -0
- package/schematics/ng-update/migrations/class-names.js +91 -0
- package/schematics/ng-update/migrations/class-names.js.map +1 -0
- package/schematics/ng-update/migrations/constructor-signature.d.ts +29 -0
- package/schematics/ng-update/migrations/constructor-signature.js +139 -0
- package/schematics/ng-update/migrations/constructor-signature.js.map +1 -0
- package/schematics/ng-update/migrations/css-selectors.d.ts +26 -0
- package/schematics/ng-update/migrations/css-selectors.js +75 -0
- package/schematics/ng-update/migrations/css-selectors.js.map +1 -0
- package/schematics/ng-update/migrations/css-tokens.d.ts +26 -0
- package/schematics/ng-update/migrations/css-tokens.js +83 -0
- package/schematics/ng-update/migrations/css-tokens.js.map +1 -0
- package/schematics/ng-update/migrations/element-selectors.d.ts +26 -0
- package/schematics/ng-update/migrations/element-selectors.js +66 -0
- package/schematics/ng-update/migrations/element-selectors.js.map +1 -0
- package/schematics/ng-update/migrations/input-names.d.ts +26 -0
- package/schematics/ng-update/migrations/input-names.js +59 -0
- package/schematics/ng-update/migrations/input-names.js.map +1 -0
- package/schematics/ng-update/migrations/method-call-arguments.d.ts +22 -0
- package/schematics/ng-update/migrations/method-call-arguments.js +62 -0
- package/schematics/ng-update/migrations/method-call-arguments.js.map +1 -0
- package/schematics/ng-update/migrations/misc-template.d.ts +18 -0
- package/schematics/ng-update/migrations/misc-template.js +25 -0
- package/schematics/ng-update/migrations/misc-template.js.map +1 -0
- package/schematics/ng-update/migrations/output-names.d.ts +22 -0
- package/schematics/ng-update/migrations/output-names.js +46 -0
- package/schematics/ng-update/migrations/output-names.js.map +1 -0
- package/schematics/ng-update/migrations/property-names.d.ts +22 -0
- package/schematics/ng-update/migrations/property-names.js +60 -0
- package/schematics/ng-update/migrations/property-names.js.map +1 -0
- package/schematics/ng-update/migrations/symbol-removal.d.ts +18 -0
- package/schematics/ng-update/migrations/symbol-removal.js +47 -0
- package/schematics/ng-update/migrations/symbol-removal.js.map +1 -0
- package/schematics/ng-update/public-api.d.ts +19 -0
- package/schematics/ng-update/public-api.js +36 -0
- package/schematics/ng-update/public-api.js.map +1 -0
- package/schematics/ng-update/typescript/base-types.d.ts +10 -0
- package/schematics/ng-update/typescript/base-types.js +23 -0
- package/schematics/ng-update/typescript/base-types.js.map +1 -0
- package/schematics/ng-update/typescript/imports.d.ts +18 -0
- package/schematics/ng-update/typescript/imports.js +53 -0
- package/schematics/ng-update/typescript/imports.js.map +1 -0
- package/schematics/ng-update/typescript/literal.d.ts +18 -0
- package/schematics/ng-update/typescript/literal.js +32 -0
- package/schematics/ng-update/typescript/literal.js.map +1 -0
- package/schematics/ng-update/typescript/module-specifiers.d.ts +16 -0
- package/schematics/ng-update/typescript/module-specifiers.js +35 -0
- package/schematics/ng-update/typescript/module-specifiers.js.map +1 -0
- package/schematics/ng-update/upgrade-data.d.ts +35 -0
- package/schematics/ng-update/upgrade-data.js +40 -0
- package/schematics/ng-update/upgrade-data.js.map +1 -0
- package/schematics/package.json +3 -0
- package/schematics/paths.d.ts +11 -0
- package/schematics/paths.js +16 -0
- package/schematics/paths.js.map +1 -0
- package/schematics/update-tool/component-resource-collector.d.ts +44 -0
- package/schematics/update-tool/component-resource-collector.js +164 -0
- package/schematics/update-tool/component-resource-collector.js.map +1 -0
- package/schematics/update-tool/file-system.d.ts +72 -0
- package/schematics/update-tool/file-system.js +18 -0
- package/schematics/update-tool/file-system.js.map +1 -0
- package/schematics/update-tool/index.d.ts +74 -0
- package/schematics/update-tool/index.js +172 -0
- package/schematics/update-tool/index.js.map +1 -0
- package/schematics/update-tool/logger.d.ts +15 -0
- package/schematics/update-tool/logger.js +18 -0
- package/schematics/update-tool/logger.js.map +1 -0
- package/schematics/update-tool/migration.d.ts +87 -0
- package/schematics/update-tool/migration.js +70 -0
- package/schematics/update-tool/migration.js.map +1 -0
- package/schematics/update-tool/public-api.d.ts +16 -0
- package/schematics/update-tool/public-api.js +33 -0
- package/schematics/update-tool/public-api.js.map +1 -0
- package/schematics/update-tool/target-version.d.ts +16 -0
- package/schematics/update-tool/target-version.js +27 -0
- package/schematics/update-tool/target-version.js.map +1 -0
- package/schematics/update-tool/update-recorder.d.ts +13 -0
- package/schematics/update-tool/update-recorder.js +10 -0
- package/schematics/update-tool/update-recorder.js.map +1 -0
- package/schematics/update-tool/utils/decorators.d.ts +22 -0
- package/schematics/update-tool/utils/decorators.js +41 -0
- package/schematics/update-tool/utils/decorators.js.map +1 -0
- package/schematics/update-tool/utils/diagnostics.d.ts +11 -0
- package/schematics/update-tool/utils/diagnostics.js +18 -0
- package/schematics/update-tool/utils/diagnostics.js.map +1 -0
- package/schematics/update-tool/utils/functions.d.ts +14 -0
- package/schematics/update-tool/utils/functions.js +20 -0
- package/schematics/update-tool/utils/functions.js.map +1 -0
- package/schematics/update-tool/utils/imports.d.ts +17 -0
- package/schematics/update-tool/utils/imports.js +110 -0
- package/schematics/update-tool/utils/imports.js.map +1 -0
- package/schematics/update-tool/utils/line-mappings.d.ts +21 -0
- package/schematics/update-tool/utils/line-mappings.js +75 -0
- package/schematics/update-tool/utils/line-mappings.js.map +1 -0
- package/schematics/update-tool/utils/parse-tsconfig.d.ts +18 -0
- package/schematics/update-tool/utils/parse-tsconfig.js +45 -0
- package/schematics/update-tool/utils/parse-tsconfig.js.map +1 -0
- package/schematics/update-tool/utils/property-name.d.ts +18 -0
- package/schematics/update-tool/utils/property-name.js +27 -0
- package/schematics/update-tool/utils/property-name.js.map +1 -0
- package/schematics/update-tool/utils/virtual-host.d.ts +36 -0
- package/schematics/update-tool/utils/virtual-host.js +71 -0
- package/schematics/update-tool/utils/virtual-host.js.map +1 -0
- package/schematics/update-tool/version-changes.d.ts +32 -0
- package/schematics/update-tool/version-changes.js +38 -0
- package/schematics/update-tool/version-changes.js.map +1 -0
- package/schematics/utils/ast/ng-module-imports.d.ts +12 -0
- package/schematics/utils/ast/ng-module-imports.js +82 -0
- package/schematics/utils/ast/ng-module-imports.js.map +1 -0
- package/schematics/utils/ast.d.ts +25 -0
- package/schematics/utils/ast.js +79 -0
- package/schematics/utils/ast.js.map +1 -0
- package/schematics/utils/build-component.d.ts +20 -0
- package/schematics/utils/build-component.js +189 -0
- package/schematics/utils/build-component.js.map +1 -0
- package/schematics/utils/get-project.d.ts +13 -0
- package/schematics/utils/get-project.js +28 -0
- package/schematics/utils/get-project.js.map +1 -0
- package/schematics/utils/html-manipulation.d.ts +15 -0
- package/schematics/utils/html-manipulation.js +91 -0
- package/schematics/utils/html-manipulation.js.map +1 -0
- package/schematics/utils/index.d.ts +19 -0
- package/schematics/utils/index.js +36 -0
- package/schematics/utils/index.js.map +1 -0
- package/schematics/utils/parse5-element.d.ts +12 -0
- package/schematics/utils/parse5-element.js +30 -0
- package/schematics/utils/parse5-element.js.map +1 -0
- package/schematics/utils/project-index-file.d.ts +13 -0
- package/schematics/utils/project-index-file.js +43 -0
- package/schematics/utils/project-index-file.js.map +1 -0
- package/schematics/utils/project-main-file.d.ts +11 -0
- package/schematics/utils/project-main-file.js +25 -0
- package/schematics/utils/project-main-file.js.map +1 -0
- package/schematics/utils/project-style-file.d.ts +13 -0
- package/schematics/utils/project-style-file.js +42 -0
- package/schematics/utils/project-style-file.js.map +1 -0
- package/schematics/utils/project-targets.d.ts +15 -0
- package/schematics/utils/project-targets.js +46 -0
- package/schematics/utils/project-targets.js.map +1 -0
- package/schematics/utils/project-tsconfig-paths.d.ts +14 -0
- package/schematics/utils/project-tsconfig-paths.js +46 -0
- package/schematics/utils/project-tsconfig-paths.js.map +1 -0
- package/schematics/utils/schematic-options.d.ts +20 -0
- package/schematics/utils/schematic-options.js +89 -0
- package/schematics/utils/schematic-options.js.map +1 -0
- package/scrolling/index.d.ts +62 -849
- package/scrolling-module.d.d.ts +551 -0
- package/selection-model.d.d.ts +112 -0
- package/stepper/index.d.ts +236 -419
- package/style-loader.d.d.ts +21 -0
- package/table/index.d.ts +901 -1483
- package/testing/index.d.ts +98 -0
- package/testing/selenium-webdriver/index.d.ts +150 -0
- package/testing/testbed/index.d.ts +157 -0
- package/text-field/_index.scss +89 -89
- package/text-field/index.d.ts +154 -203
- package/text-field-prebuilt.css +1 -1
- package/tree/index.d.ts +720 -593
- package/tree-key-manager-strategy.d.d.ts +116 -0
- package/unique-selection-dispatcher.d.d.ts +33 -0
- package/view-repeater.d.d.ts +88 -0
- package/a11y/_index.import.scss +0 -2
- package/esm2020/a11y/a11y-module.mjs +0 -32
- package/esm2020/a11y/a11y_public_index.mjs +0 -5
- package/esm2020/a11y/aria-describer/aria-describer.mjs +0 -232
- package/esm2020/a11y/aria-describer/aria-reference.mjs +0 -44
- package/esm2020/a11y/fake-event-detection.mjs +0 -31
- package/esm2020/a11y/focus-monitor/focus-monitor.mjs +0 -451
- package/esm2020/a11y/focus-trap/configurable-focus-trap-config.mjs +0 -9
- package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +0 -53
- package/esm2020/a11y/focus-trap/configurable-focus-trap.mjs +0 -51
- package/esm2020/a11y/focus-trap/event-listener-inert-strategy.mjs +0 -61
- package/esm2020/a11y/focus-trap/focus-trap-inert-strategy.mjs +0 -11
- package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +0 -53
- package/esm2020/a11y/focus-trap/focus-trap.mjs +0 -402
- package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +0 -109
- package/esm2020/a11y/index.mjs +0 -9
- package/esm2020/a11y/input-modality/input-modality-detector.mjs +0 -176
- package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +0 -238
- package/esm2020/a11y/key-manager/activedescendant-key-manager.mjs +0 -20
- package/esm2020/a11y/key-manager/focus-key-manager.mjs +0 -29
- package/esm2020/a11y/key-manager/list-key-manager.mjs +0 -321
- package/esm2020/a11y/live-announcer/live-announcer-tokens.mjs +0 -19
- package/esm2020/a11y/live-announcer/live-announcer.mjs +0 -178
- package/esm2020/a11y/public-api.mjs +0 -26
- package/esm2020/accordion/accordion-item.mjs +0 -167
- package/esm2020/accordion/accordion-module.mjs +0 -24
- package/esm2020/accordion/accordion.mjs +0 -70
- package/esm2020/accordion/accordion_public_index.mjs +0 -5
- package/esm2020/accordion/index.mjs +0 -9
- package/esm2020/accordion/public-api.mjs +0 -11
- package/esm2020/bidi/bidi-module.mjs +0 -23
- package/esm2020/bidi/bidi_public_index.mjs +0 -5
- package/esm2020/bidi/dir-document-token.mjs +0 -33
- package/esm2020/bidi/dir.mjs +0 -69
- package/esm2020/bidi/directionality.mjs +0 -52
- package/esm2020/bidi/index.mjs +0 -9
- package/esm2020/bidi/public-api.mjs +0 -12
- package/esm2020/clipboard/clipboard-module.mjs +0 -23
- package/esm2020/clipboard/clipboard.mjs +0 -53
- package/esm2020/clipboard/clipboard_public_index.mjs +0 -5
- package/esm2020/clipboard/copy-to-clipboard.mjs +0 -99
- package/esm2020/clipboard/index.mjs +0 -9
- package/esm2020/clipboard/pending-copy.mjs +0 -69
- package/esm2020/clipboard/public-api.mjs +0 -12
- package/esm2020/coercion/array.mjs +0 -11
- package/esm2020/coercion/boolean-property.mjs +0 -12
- package/esm2020/coercion/css-pixel-value.mjs +0 -15
- package/esm2020/coercion/element.mjs +0 -16
- package/esm2020/coercion/index.mjs +0 -9
- package/esm2020/coercion/number-property.mjs +0 -21
- package/esm2020/coercion/public-api.mjs +0 -14
- package/esm2020/coercion/string-array.mjs +0 -38
- package/esm2020/collections/array-data-source.mjs +0 -21
- package/esm2020/collections/collection-viewer.mjs +0 -9
- package/esm2020/collections/collections_public_index.mjs +0 -5
- package/esm2020/collections/data-source.mjs +0 -19
- package/esm2020/collections/dispose-view-repeater-strategy.mjs +0 -47
- package/esm2020/collections/index.mjs +0 -9
- package/esm2020/collections/public-api.mjs +0 -17
- package/esm2020/collections/recycle-view-repeater-strategy.mjs +0 -128
- package/esm2020/collections/selection-model.mjs +0 -216
- package/esm2020/collections/tree-adapter.mjs +0 -9
- package/esm2020/collections/unique-selection-dispatcher.mjs +0 -55
- package/esm2020/collections/view-repeater.mjs +0 -14
- package/esm2020/dialog/dialog-config.mjs +0 -63
- package/esm2020/dialog/dialog-container.mjs +0 -278
- package/esm2020/dialog/dialog-injectors.mjs +0 -26
- package/esm2020/dialog/dialog-module.mjs +0 -42
- package/esm2020/dialog/dialog-ref.mjs +0 -76
- package/esm2020/dialog/dialog.mjs +0 -301
- package/esm2020/dialog/dialog_public_index.mjs +0 -5
- package/esm2020/dialog/index.mjs +0 -9
- package/esm2020/dialog/public-api.mjs +0 -14
- package/esm2020/drag-drop/directives/assertions.mjs +0 -18
- package/esm2020/drag-drop/directives/config.mjs +0 -14
- package/esm2020/drag-drop/directives/drag-handle.mjs +0 -66
- package/esm2020/drag-drop/directives/drag-placeholder.mjs +0 -36
- package/esm2020/drag-drop/directives/drag-preview.mjs +0 -47
- package/esm2020/drag-drop/directives/drag.mjs +0 -487
- package/esm2020/drag-drop/directives/drop-list-group.mjs +0 -53
- package/esm2020/drag-drop/directives/drop-list.mjs +0 -345
- package/esm2020/drag-drop/dom/client-rect.mjs +0 -64
- package/esm2020/drag-drop/dom/clone-node.mjs +0 -65
- package/esm2020/drag-drop/dom/parent-position-tracker.mjs +0 -76
- package/esm2020/drag-drop/dom/styling.mjs +0 -69
- package/esm2020/drag-drop/dom/transition-duration.mjs +0 -36
- package/esm2020/drag-drop/drag-drop-module.mjs +0 -57
- package/esm2020/drag-drop/drag-drop-registry.mjs +0 -231
- package/esm2020/drag-drop/drag-drop.mjs +0 -57
- package/esm2020/drag-drop/drag-drop_public_index.mjs +0 -5
- package/esm2020/drag-drop/drag-events.mjs +0 -9
- package/esm2020/drag-drop/drag-parent.mjs +0 -16
- package/esm2020/drag-drop/drag-ref.mjs +0 -1146
- package/esm2020/drag-drop/drag-utils.mjs +0 -60
- package/esm2020/drag-drop/drop-list-ref.mjs +0 -577
- package/esm2020/drag-drop/index.mjs +0 -9
- package/esm2020/drag-drop/public-api.mjs +0 -23
- package/esm2020/drag-drop/sorting/drop-list-sort-strategy.mjs +0 -9
- package/esm2020/drag-drop/sorting/single-axis-sort-strategy.mjs +0 -341
- package/esm2020/index.mjs +0 -9
- package/esm2020/keycodes/index.mjs +0 -9
- package/esm2020/keycodes/keycodes.mjs +0 -127
- package/esm2020/keycodes/keycodes_public_index.mjs +0 -5
- package/esm2020/keycodes/modifiers.mjs +0 -18
- package/esm2020/keycodes/public-api.mjs +0 -10
- package/esm2020/layout/breakpoints-observer.mjs +0 -105
- package/esm2020/layout/breakpoints.mjs +0 -29
- package/esm2020/layout/index.mjs +0 -9
- package/esm2020/layout/layout-module.mjs +0 -19
- package/esm2020/layout/layout_public_index.mjs +0 -5
- package/esm2020/layout/media-matcher.mjs +0 -85
- package/esm2020/layout/public-api.mjs +0 -12
- package/esm2020/listbox/index.mjs +0 -9
- package/esm2020/listbox/listbox-module.mjs +0 -24
- package/esm2020/listbox/listbox.mjs +0 -872
- package/esm2020/listbox/listbox_public_index.mjs +0 -5
- package/esm2020/listbox/public-api.mjs +0 -10
- package/esm2020/menu/context-menu-trigger.mjs +0 -212
- package/esm2020/menu/index.mjs +0 -9
- package/esm2020/menu/menu-aim.mjs +0 -203
- package/esm2020/menu/menu-bar.mjs +0 -133
- package/esm2020/menu/menu-base.mjs +0 -187
- package/esm2020/menu/menu-errors.mjs +0 -22
- package/esm2020/menu/menu-group.mjs +0 -30
- package/esm2020/menu/menu-interface.mjs +0 -11
- package/esm2020/menu/menu-item-checkbox.mjs +0 -49
- package/esm2020/menu/menu-item-radio.mjs +0 -71
- package/esm2020/menu/menu-item-selectable.mjs +0 -42
- package/esm2020/menu/menu-item.mjs +0 -267
- package/esm2020/menu/menu-module.mjs +0 -62
- package/esm2020/menu/menu-stack.mjs +0 -156
- package/esm2020/menu/menu-trigger-base.mjs +0 -107
- package/esm2020/menu/menu-trigger.mjs +0 -291
- package/esm2020/menu/menu.mjs +0 -134
- package/esm2020/menu/menu_public_index.mjs +0 -5
- package/esm2020/menu/pointer-focus-tracker.mjs +0 -51
- package/esm2020/menu/public-api.mjs +0 -24
- package/esm2020/observers/index.mjs +0 -9
- package/esm2020/observers/observe-content.mjs +0 -187
- package/esm2020/observers/observers_public_index.mjs +0 -5
- package/esm2020/observers/public-api.mjs +0 -9
- package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +0 -52
- package/esm2020/overlay/dispatchers/index.mjs +0 -10
- package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +0 -81
- package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +0 -138
- package/esm2020/overlay/fullscreen-overlay-container.mjs +0 -94
- package/esm2020/overlay/index.mjs +0 -9
- package/esm2020/overlay/overlay-config.mjs +0 -45
- package/esm2020/overlay/overlay-container.mjs +0 -81
- package/esm2020/overlay/overlay-directives.mjs +0 -427
- package/esm2020/overlay/overlay-module.mjs +0 -29
- package/esm2020/overlay/overlay-ref.mjs +0 -427
- package/esm2020/overlay/overlay-reference.mjs +0 -9
- package/esm2020/overlay/overlay.mjs +0 -125
- package/esm2020/overlay/overlay_public_index.mjs +0 -5
- package/esm2020/overlay/position/connected-position.mjs +0 -88
- package/esm2020/overlay/position/flexible-connected-position-strategy.mjs +0 -985
- package/esm2020/overlay/position/global-position-strategy.mjs +0 -237
- package/esm2020/overlay/position/overlay-position-builder.mjs +0 -50
- package/esm2020/overlay/position/position-strategy.mjs +0 -9
- package/esm2020/overlay/position/scroll-clip.mjs +0 -40
- package/esm2020/overlay/public-api.mjs +0 -22
- package/esm2020/overlay/scroll/block-scroll-strategy.mjs +0 -80
- package/esm2020/overlay/scroll/close-scroll-strategy.mjs +0 -61
- package/esm2020/overlay/scroll/index.mjs +0 -14
- package/esm2020/overlay/scroll/noop-scroll-strategy.mjs +0 -17
- package/esm2020/overlay/scroll/reposition-scroll-strategy.mjs +0 -61
- package/esm2020/overlay/scroll/scroll-strategy-options.mjs +0 -55
- package/esm2020/overlay/scroll/scroll-strategy.mjs +0 -14
- package/esm2020/platform/features/input-types.mjs +0 -59
- package/esm2020/platform/features/passive-listeners.mjs +0 -36
- package/esm2020/platform/features/scrolling.mjs +0 -85
- package/esm2020/platform/features/shadow-dom.mjs +0 -54
- package/esm2020/platform/features/test-environment.mjs +0 -24
- package/esm2020/platform/index.mjs +0 -9
- package/esm2020/platform/platform-module.mjs +0 -19
- package/esm2020/platform/platform.mjs +0 -85
- package/esm2020/platform/platform_public_index.mjs +0 -5
- package/esm2020/platform/public-api.mjs +0 -15
- package/esm2020/portal/dom-portal-outlet.mjs +0 -158
- package/esm2020/portal/index.mjs +0 -9
- package/esm2020/portal/portal-directives.mjs +0 -246
- package/esm2020/portal/portal-errors.mjs +0 -51
- package/esm2020/portal/portal-injector.mjs +0 -28
- package/esm2020/portal/portal.mjs +0 -188
- package/esm2020/portal/portal_public_index.mjs +0 -5
- package/esm2020/portal/public-api.mjs +0 -12
- package/esm2020/public-api.mjs +0 -9
- package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +0 -217
- package/esm2020/scrolling/index.mjs +0 -9
- package/esm2020/scrolling/public-api.mjs +0 -20
- package/esm2020/scrolling/scroll-dispatcher.mjs +0 -163
- package/esm2020/scrolling/scrollable.mjs +0 -176
- package/esm2020/scrolling/scrolling-module.mjs +0 -67
- package/esm2020/scrolling/scrolling_public_index.mjs +0 -5
- package/esm2020/scrolling/viewport-ruler.mjs +0 -146
- package/esm2020/scrolling/virtual-for-of.mjs +0 -298
- package/esm2020/scrolling/virtual-scroll-repeater.mjs +0 -9
- package/esm2020/scrolling/virtual-scroll-strategy.mjs +0 -11
- package/esm2020/scrolling/virtual-scroll-viewport.mjs +0 -437
- package/esm2020/scrolling/virtual-scrollable-element.mjs +0 -41
- package/esm2020/scrolling/virtual-scrollable-window.mjs +0 -40
- package/esm2020/scrolling/virtual-scrollable.mjs +0 -40
- package/esm2020/stepper/index.mjs +0 -9
- package/esm2020/stepper/public-api.mjs +0 -13
- package/esm2020/stepper/step-header.mjs +0 -30
- package/esm2020/stepper/step-label.mjs +0 -23
- package/esm2020/stepper/stepper-button.mjs +0 -56
- package/esm2020/stepper/stepper-module.mjs +0 -40
- package/esm2020/stepper/stepper.mjs +0 -458
- package/esm2020/stepper/stepper_public_index.mjs +0 -5
- package/esm2020/table/can-stick.mjs +0 -44
- package/esm2020/table/cell.mjs +0 -217
- package/esm2020/table/coalesced-style-scheduler.mjs +0 -91
- package/esm2020/table/index.mjs +0 -9
- package/esm2020/table/public-api.mjs +0 -20
- package/esm2020/table/row.mjs +0 -262
- package/esm2020/table/sticky-position-listener.mjs +0 -11
- package/esm2020/table/sticky-styler.mjs +0 -345
- package/esm2020/table/table-errors.mjs +0 -67
- package/esm2020/table/table-module.mjs +0 -94
- package/esm2020/table/table.mjs +0 -1065
- package/esm2020/table/table_public_index.mjs +0 -5
- package/esm2020/table/text-column.mjs +0 -153
- package/esm2020/table/tokens.mjs +0 -16
- package/esm2020/text-field/autofill.mjs +0 -113
- package/esm2020/text-field/autosize.mjs +0 -309
- package/esm2020/text-field/index.mjs +0 -9
- package/esm2020/text-field/public-api.mjs +0 -11
- package/esm2020/text-field/text-field-module.mjs +0 -24
- package/esm2020/text-field/text-field_public_index.mjs +0 -5
- package/esm2020/tree/control/base-tree-control.mjs +0 -57
- package/esm2020/tree/control/flat-tree-control.mjs +0 -51
- package/esm2020/tree/control/nested-tree-control.mjs +0 -58
- package/esm2020/tree/control/tree-control.mjs +0 -2
- package/esm2020/tree/index.mjs +0 -9
- package/esm2020/tree/nested-node.mjs +0 -112
- package/esm2020/tree/node.mjs +0 -35
- package/esm2020/tree/outlet.mjs +0 -39
- package/esm2020/tree/padding.mjs +0 -131
- package/esm2020/tree/public-api.mjs +0 -20
- package/esm2020/tree/toggle.mjs +0 -50
- package/esm2020/tree/tree-errors.mjs +0 -43
- package/esm2020/tree/tree-module.mjs +0 -49
- package/esm2020/tree/tree.mjs +0 -347
- package/esm2020/tree/tree_public_index.mjs +0 -5
- package/esm2020/version.mjs +0 -11
- package/fesm2015/a11y.mjs +0 -2473
- package/fesm2015/a11y.mjs.map +0 -1
- package/fesm2015/accordion.mjs +0 -414
- 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 +0 -132
- package/fesm2015/coercion.mjs.map +0 -1
- package/fesm2015/collections.mjs +0 -519
- package/fesm2015/collections.mjs.map +0 -1
- package/fesm2015/dialog.mjs +0 -1050
- package/fesm2015/dialog.mjs.map +0 -1
- package/fesm2015/drag-drop.mjs +0 -3812
- package/fesm2015/drag-drop.mjs.map +0 -1
- package/fesm2015/keycodes.mjs.map +0 -1
- package/fesm2015/layout.mjs +0 -337
- package/fesm2015/layout.mjs.map +0 -1
- package/fesm2015/listbox.mjs +0 -1200
- package/fesm2015/listbox.mjs.map +0 -1
- package/fesm2015/menu.mjs +0 -2719
- package/fesm2015/menu.mjs.map +0 -1
- package/fesm2015/observers.mjs +0 -326
- package/fesm2015/observers.mjs.map +0 -1
- package/fesm2015/overlay.mjs +0 -3137
- 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.map +0 -1
- package/fesm2015/stepper.mjs +0 -989
- package/fesm2015/stepper.mjs.map +0 -1
- package/fesm2015/table.mjs +0 -2356
- package/fesm2015/table.mjs.map +0 -1
- package/fesm2015/testing.mjs +0 -833
- 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 -1303
- package/fesm2015/tree.mjs.map +0 -1
- package/fesm2020/a11y.mjs +0 -2476
- package/fesm2020/a11y.mjs.map +0 -1
- package/fesm2020/accordion.mjs +0 -414
- package/fesm2020/accordion.mjs.map +0 -1
- package/fesm2020/bidi.mjs +0 -192
- 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 -535
- 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 +0 -167
- package/fesm2020/keycodes.mjs.map +0 -1
- package/fesm2020/layout.mjs +0 -337
- package/fesm2020/layout.mjs.map +0 -1
- package/fesm2020/listbox.mjs +0 -1164
- package/fesm2020/listbox.mjs.map +0 -1
- package/fesm2020/menu.mjs +0 -2615
- package/fesm2020/menu.mjs.map +0 -1
- package/fesm2020/observers.mjs +0 -325
- package/fesm2020/observers.mjs.map +0 -1
- package/fesm2020/overlay.mjs.map +0 -1
- package/fesm2020/platform.mjs +0 -383
- package/fesm2020/platform.mjs.map +0 -1
- package/fesm2020/portal.mjs.map +0 -1
- package/fesm2020/scrolling.mjs +0 -1591
- package/fesm2020/scrolling.mjs.map +0 -1
- package/fesm2020/stepper.mjs +0 -985
- package/fesm2020/stepper.mjs.map +0 -1
- package/fesm2020/table.mjs.map +0 -1
- package/fesm2020/testing.mjs +0 -797
- package/fesm2020/testing.mjs.map +0 -1
- package/fesm2020/text-field.mjs.map +0 -1
- package/fesm2020/tree.mjs +0 -1305
- package/fesm2020/tree.mjs.map +0 -1
- package/overlay/_index.import.scss +0 -13
- package/text-field/_index.import.scss +0 -2
|
@@ -1,146 +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 '@kato-lee/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 "@kato-lee/cdk/platform";
|
|
15
|
-
/** Time in ms to throttle the resize events by default. */
|
|
16
|
-
export const DEFAULT_RESIZE_TIME = 20;
|
|
17
|
-
/**
|
|
18
|
-
* Simple utility for getting the bounds of the browser viewport.
|
|
19
|
-
* @docs-private
|
|
20
|
-
*/
|
|
21
|
-
export class ViewportRuler {
|
|
22
|
-
constructor(_platform, ngZone, document) {
|
|
23
|
-
this._platform = _platform;
|
|
24
|
-
/** Stream of viewport change events. */
|
|
25
|
-
this._change = new Subject();
|
|
26
|
-
/** Event listener that will be used to handle the viewport change events. */
|
|
27
|
-
this._changeListener = (event) => {
|
|
28
|
-
this._change.next(event);
|
|
29
|
-
};
|
|
30
|
-
this._document = document;
|
|
31
|
-
ngZone.runOutsideAngular(() => {
|
|
32
|
-
if (_platform.isBrowser) {
|
|
33
|
-
const window = this._getWindow();
|
|
34
|
-
// Note that bind the events ourselves, rather than going through something like RxJS's
|
|
35
|
-
// `fromEvent` so that we can ensure that they're bound outside of the NgZone.
|
|
36
|
-
window.addEventListener('resize', this._changeListener);
|
|
37
|
-
window.addEventListener('orientationchange', this._changeListener);
|
|
38
|
-
}
|
|
39
|
-
// Clear the cached position so that the viewport is re-measured next time it is required.
|
|
40
|
-
// We don't need to keep track of the subscription, because it is completed on destroy.
|
|
41
|
-
this.change().subscribe(() => (this._viewportSize = null));
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
if (this._platform.isBrowser) {
|
|
46
|
-
const window = this._getWindow();
|
|
47
|
-
window.removeEventListener('resize', this._changeListener);
|
|
48
|
-
window.removeEventListener('orientationchange', this._changeListener);
|
|
49
|
-
}
|
|
50
|
-
this._change.complete();
|
|
51
|
-
}
|
|
52
|
-
/** Returns the viewport's width and height. */
|
|
53
|
-
getViewportSize() {
|
|
54
|
-
if (!this._viewportSize) {
|
|
55
|
-
this._updateViewportSize();
|
|
56
|
-
}
|
|
57
|
-
const output = { width: this._viewportSize.width, height: this._viewportSize.height };
|
|
58
|
-
// If we're not on a browser, don't cache the size since it'll be mocked out anyway.
|
|
59
|
-
if (!this._platform.isBrowser) {
|
|
60
|
-
this._viewportSize = null;
|
|
61
|
-
}
|
|
62
|
-
return output;
|
|
63
|
-
}
|
|
64
|
-
/** Gets a ClientRect for the viewport's bounds. */
|
|
65
|
-
getViewportRect() {
|
|
66
|
-
// Use the document element's bounding rect rather than the window scroll properties
|
|
67
|
-
// (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll
|
|
68
|
-
// properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different
|
|
69
|
-
// conceptual viewports. Under most circumstances these viewports are equivalent, but they
|
|
70
|
-
// can disagree when the page is pinch-zoomed (on devices that support touch).
|
|
71
|
-
// See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4
|
|
72
|
-
// We use the documentElement instead of the body because, by default (without a css reset)
|
|
73
|
-
// browsers typically give the document body an 8px margin, which is not included in
|
|
74
|
-
// getBoundingClientRect().
|
|
75
|
-
const scrollPosition = this.getViewportScrollPosition();
|
|
76
|
-
const { width, height } = this.getViewportSize();
|
|
77
|
-
return {
|
|
78
|
-
top: scrollPosition.top,
|
|
79
|
-
left: scrollPosition.left,
|
|
80
|
-
bottom: scrollPosition.top + height,
|
|
81
|
-
right: scrollPosition.left + width,
|
|
82
|
-
height,
|
|
83
|
-
width,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/** Gets the (top, left) scroll position of the viewport. */
|
|
87
|
-
getViewportScrollPosition() {
|
|
88
|
-
// While we can get a reference to the fake document
|
|
89
|
-
// during SSR, it doesn't have getBoundingClientRect.
|
|
90
|
-
if (!this._platform.isBrowser) {
|
|
91
|
-
return { top: 0, left: 0 };
|
|
92
|
-
}
|
|
93
|
-
// The top-left-corner of the viewport is determined by the scroll position of the document
|
|
94
|
-
// body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about
|
|
95
|
-
// whether `document.body` or `document.documentElement` is the scrolled element, so reading
|
|
96
|
-
// `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of
|
|
97
|
-
// `document.documentElement` works consistently, where the `top` and `left` values will
|
|
98
|
-
// equal negative the scroll position.
|
|
99
|
-
const document = this._document;
|
|
100
|
-
const window = this._getWindow();
|
|
101
|
-
const documentElement = document.documentElement;
|
|
102
|
-
const documentRect = documentElement.getBoundingClientRect();
|
|
103
|
-
const top = -documentRect.top ||
|
|
104
|
-
document.body.scrollTop ||
|
|
105
|
-
window.scrollY ||
|
|
106
|
-
documentElement.scrollTop ||
|
|
107
|
-
0;
|
|
108
|
-
const left = -documentRect.left ||
|
|
109
|
-
document.body.scrollLeft ||
|
|
110
|
-
window.scrollX ||
|
|
111
|
-
documentElement.scrollLeft ||
|
|
112
|
-
0;
|
|
113
|
-
return { top, left };
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Returns a stream that emits whenever the size of the viewport changes.
|
|
117
|
-
* This stream emits outside of the Angular zone.
|
|
118
|
-
* @param throttleTime Time in milliseconds to throttle the stream.
|
|
119
|
-
*/
|
|
120
|
-
change(throttleTime = DEFAULT_RESIZE_TIME) {
|
|
121
|
-
return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;
|
|
122
|
-
}
|
|
123
|
-
/** Use defaultView of injected document if available or fallback to global window reference */
|
|
124
|
-
_getWindow() {
|
|
125
|
-
return this._document.defaultView || window;
|
|
126
|
-
}
|
|
127
|
-
/** Updates the cached viewport size. */
|
|
128
|
-
_updateViewportSize() {
|
|
129
|
-
const window = this._getWindow();
|
|
130
|
-
this._viewportSize = this._platform.isBrowser
|
|
131
|
-
? { width: window.innerWidth, height: window.innerHeight }
|
|
132
|
-
: { width: 0, height: 0 };
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
ViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
136
|
-
ViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ViewportRuler, providedIn: 'root' });
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ViewportRuler, decorators: [{
|
|
138
|
-
type: Injectable,
|
|
139
|
-
args: [{ providedIn: 'root' }]
|
|
140
|
-
}], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
141
|
-
type: Optional
|
|
142
|
-
}, {
|
|
143
|
-
type: Inject,
|
|
144
|
-
args: [DOCUMENT]
|
|
145
|
-
}] }]; } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtcnVsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3Njcm9sbGluZy92aWV3cG9ydC1ydWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQUV6QywyREFBMkQ7QUFDM0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBUXRDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBZXhCLFlBQ1UsU0FBbUIsRUFDM0IsTUFBYyxFQUNnQixRQUFhO1FBRm5DLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFaN0Isd0NBQXdDO1FBQ3ZCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO1FBRWhELDZFQUE2RTtRQUNyRSxvQkFBZSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBVUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFFMUIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFFakMsdUZBQXVGO2dCQUN2Riw4RUFB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QUR6QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7MEJBbUIzQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7YXVkaXRUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKiogVGltZSBpbiBtcyB0byB0aHJvdHRsZSB0aGUgcmVzaXplIGV2ZW50cyBieSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVTSVpFX1RJTUUgPSAyMDtcblxuLyoqIE9iamVjdCB0aGF0IGhvbGRzIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHZpZXdwb3J0IGluIGVhY2ggZGlyZWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydFNjcm9sbFBvc2l0aW9uIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTaW1wbGUgdXRpbGl0eSBmb3IgZ2V0dGluZyB0aGUgYm91bmRzIG9mIHRoZSBicm93c2VyIHZpZXdwb3J0LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFJ1bGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqIENhY2hlZCB2aWV3cG9ydCBkaW1lbnNpb25zLiAqL1xuICBwcml2YXRlIF92aWV3cG9ydFNpemU6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0gfCBudWxsO1xuXG4gIC8qKiBTdHJlYW0gb2Ygdmlld3BvcnQgY2hhbmdlIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlID0gbmV3IFN1YmplY3Q8RXZlbnQ+KCk7XG5cbiAgLyoqIEV2ZW50IGxpc3RlbmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGhhbmRsZSB0aGUgdmlld3BvcnQgY2hhbmdlIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSBfY2hhbmdlTGlzdGVuZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgdGhpcy5fY2hhbmdlLm5leHQoZXZlbnQpO1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIHJlZmVyZW5jZSBjb3JyZWN0IGRvY3VtZW50L3dpbmRvdyAqL1xuICBwcm90ZWN0ZWQgX2RvY3VtZW50OiBEb2N1bWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IGFueSxcbiAgKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcblxuICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLl9nZXRXaW5kb3coKTtcblxuICAgICAgICAvLyBOb3RlIHRoYXQgYmluZCB0aGUgZXZlbnRzIG91cnNlbHZlcywgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBSeEpTJ3NcbiAgICAgICAgLy8gYGZyb21FdmVudGAgc28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoYXQgdGhleSdyZSBib3VuZCBvdXRzaWRlIG9mIHRoZSBOZ1pvbmUuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9jaGFuZ2VMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHRoaXMuX2NoYW5nZUxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBwb3NpdGlvbiBzbyB0aGF0IHRoZSB2aWV3cG9ydCBpcyByZS1tZWFzdXJlZCBuZXh0IHRpbWUgaXQgaXMgcmVxdWlyZWQuXG4gICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHN1YnNjcmlwdGlvbiwgYmVjYXVzZSBpdCBpcyBjb21wbGV0ZWQgb24gZGVzdHJveS5cbiAgICAgIHRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgpID0+ICh0aGlzLl92aWV3cG9ydFNpemUgPSBudWxsKSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLl9nZXRXaW5kb3coKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9jaGFuZ2VMaXN0ZW5lcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLl9jaGFuZ2VMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdmlld3BvcnQncyB3aWR0aCBhbmQgaGVpZ2h0LiAqL1xuICBnZXRWaWV3cG9ydFNpemUoKTogUmVhZG9ubHk8e3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfT4ge1xuICAgIGlmICghdGhpcy5fdmlld3BvcnRTaXplKSB7XG4gICAgICB0aGlzLl91cGRhdGVWaWV3cG9ydFNpemUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXQgPSB7d2lkdGg6IHRoaXMuX3ZpZXdwb3J0U2l6ZSEud2lkdGgsIGhlaWdodDogdGhpcy5fdmlld3BvcnRTaXplIS5oZWlnaHR9O1xuXG4gICAgLy8gSWYgd2UncmUgbm90IG9uIGEgYnJvd3NlciwgZG9uJ3QgY2FjaGUgdGhlIHNpemUgc2luY2UgaXQnbGwgYmUgbW9ja2VkIG91dCBhbnl3YXkuXG4gICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHRoaXMuX3ZpZXdwb3J0U2l6ZSA9IG51bGwhO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICAvKiogR2V0cyBhIENsaWVudFJlY3QgZm9yIHRoZSB2aWV3cG9ydCdzIGJvdW5kcy4gKi9cbiAgZ2V0Vmlld3BvcnRSZWN0KCkge1xuICAgIC8vIFVzZSB0aGUgZG9jdW1lbnQgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3QgcmF0aGVyIHRoYW4gdGhlIHdpbmRvdyBzY3JvbGwgcHJvcGVydGllc1xuICAgIC8vIChlLmcuIHBhZ2VZT2Zmc2V0LCBzY3JvbGxZKSBkdWUgdG8gaW4gaXNzdWUgaW4gQ2hyb21lIGFuZCBJRSB3aGVyZSB3aW5kb3cgc2Nyb2xsXG4gICAgLy8gcHJvcGVydGllcyBhbmQgY2xpZW50IGNvb3JkaW5hdGVzIChib3VuZGluZ0NsaWVudFJlY3QsIGNsaWVudFgvWSwgZXRjLikgYXJlIGluIGRpZmZlcmVudFxuICAgIC8vIGNvbmNlcHR1YWwgdmlld3BvcnRzLiBVbmRlciBtb3N0IGNpcmN1bXN0YW5jZXMgdGhlc2Ugdmlld3BvcnRzIGFyZSBlcXVpdmFsZW50LCBidXQgdGhleVxuICAgIC8vIGNhbiBkaXNhZ3JlZSB3aGVuIHRoZSBwYWdlIGlzIHBpbmNoLXpvb21lZCAob24gZGV2aWNlcyB0aGF0IHN1cHBvcnQgdG91Y2gpLlxuICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00ODkyMDYjYzRcbiAgICAvLyBXZSB1c2UgdGhlIGRvY3VtZW50RWxlbWVudCBpbnN0ZWFkIG9mIHRoZSBib2R5IGJlY2F1c2UsIGJ5IGRlZmF1bHQgKHdpdGhvdXQgYSBjc3MgcmVzZXQpXG4gICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGdpdmUgdGhlIGRvY3VtZW50IGJvZHkgYW4gOHB4IG1hcmdpbiwgd2hpY2ggaXMgbm90IGluY2x1ZGVkIGluXG4gICAgLy8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuXG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogc2Nyb2xsUG9zaXRpb24udG9wLFxuICAgICAgbGVmdDogc2Nyb2xsUG9zaXRpb24ubGVmdCxcbiAgICAgIGJvdHRvbTogc2Nyb2xsUG9zaXRpb24udG9wICsgaGVpZ2h0LFxuICAgICAgcmlnaHQ6IHNjcm9sbFBvc2l0aW9uLmxlZnQgKyB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIHdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvKiogR2V0cyB0aGUgKHRvcCwgbGVmdCkgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSB2aWV3cG9ydC4gKi9cbiAgZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpOiBWaWV3cG9ydFNjcm9sbFBvc2l0aW9uIHtcbiAgICAvLyBXaGlsZSB3ZSBjYW4gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBmYWtlIGRvY3VtZW50XG4gICAgLy8gZHVyaW5nIFNTUiwgaXQgZG9lc24ndCBoYXZlIGdldEJvdW5kaW5nQ2xpZW50UmVjdC5cbiAgICBpZiAoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuIHt0b3A6IDAsIGxlZnQ6IDB9O1xuICAgIH1cblxuICAgIC8vIFRoZSB0b3AtbGVmdC1jb3JuZXIgb2YgdGhlIHZpZXdwb3J0IGlzIGRldGVybWluZWQgYnkgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAvLyBib2R5LCBub3JtYWxseSBqdXN0IChzY3JvbGxMZWZ0LCBzY3JvbGxUb3ApLiBIb3dldmVyLCBDaHJvbWUgYW5kIEZpcmVmb3ggZGlzYWdyZWUgYWJvdXRcbiAgICAvLyB3aGV0aGVyIGBkb2N1bWVudC5ib2R5YCBvciBgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50YCBpcyB0aGUgc2Nyb2xsZWQgZWxlbWVudCwgc28gcmVhZGluZ1xuICAgIC8vIGBzY3JvbGxUb3BgIGFuZCBgc2Nyb2xsTGVmdGAgaXMgaW5jb25zaXN0ZW50LiBIb3dldmVyLCB1c2luZyB0aGUgYm91bmRpbmcgcmVjdCBvZlxuICAgIC8vIGBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRgIHdvcmtzIGNvbnNpc3RlbnRseSwgd2hlcmUgdGhlIGB0b3BgIGFuZCBgbGVmdGAgdmFsdWVzIHdpbGxcbiAgICAvLyBlcXVhbCBuZWdhdGl2ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLlxuICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy5fZG9jdW1lbnQ7XG4gICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG4gICAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ITtcbiAgICBjb25zdCBkb2N1bWVudFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCB0b3AgPVxuICAgICAgLWRvY3VtZW50UmVjdC50b3AgfHxcbiAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8XG4gICAgICB3aW5kb3cuc2Nyb2xsWSB8fFxuICAgICAgZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fFxuICAgICAgMDtcblxuICAgIGNvbnN0IGxlZnQgPVxuICAgICAgLWRvY3VtZW50UmVjdC5sZWZ0IHx8XG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgfHxcbiAgICAgIHdpbmRvdy5zY3JvbGxYIHx8XG4gICAgICBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fFxuICAgICAgMDtcblxuICAgIHJldHVybiB7dG9wLCBsZWZ0fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyZWFtIHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0IGNoYW5nZXMuXG4gICAqIFRoaXMgc3RyZWFtIGVtaXRzIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICogQHBhcmFtIHRocm90dGxlVGltZSBUaW1lIGluIG1pbGxpc2Vjb25kcyB0byB0aHJvdHRsZSB0aGUgc3RyZWFtLlxuICAgKi9cbiAgY2hhbmdlKHRocm90dGxlVGltZTogbnVtYmVyID0gREVGQVVMVF9SRVNJWkVfVElNRSk6IE9ic2VydmFibGU8RXZlbnQ+IHtcbiAgICByZXR1cm4gdGhyb3R0bGVUaW1lID4gMCA/IHRoaXMuX2NoYW5nZS5waXBlKGF1ZGl0VGltZSh0aHJvdHRsZVRpbWUpKSA6IHRoaXMuX2NoYW5nZTtcbiAgfVxuXG4gIC8qKiBVc2UgZGVmYXVsdFZpZXcgb2YgaW5qZWN0ZWQgZG9jdW1lbnQgaWYgYXZhaWxhYmxlIG9yIGZhbGxiYWNrIHRvIGdsb2JhbCB3aW5kb3cgcmVmZXJlbmNlICovXG4gIHByaXZhdGUgX2dldFdpbmRvdygpOiBXaW5kb3cge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIH1cblxuICAvKiogVXBkYXRlcyB0aGUgY2FjaGVkIHZpZXdwb3J0IHNpemUuICovXG4gIHByaXZhdGUgX3VwZGF0ZVZpZXdwb3J0U2l6ZSgpIHtcbiAgICBjb25zdCB3aW5kb3cgPSB0aGlzLl9nZXRXaW5kb3coKTtcbiAgICB0aGlzLl92aWV3cG9ydFNpemUgPSB0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJcbiAgICAgID8ge3dpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHR9XG4gICAgICA6IHt3aWR0aDogMCwgaGVpZ2h0OiAwfTtcbiAgfVxufVxuIl19
|
|
@@ -1,298 +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 { ArrayDataSource, isDataSource, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, } from '@kato-lee/cdk/collections';
|
|
9
|
-
import { Directive, Inject, Input, IterableDiffers, NgZone, SkipSelf, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
10
|
-
import { coerceNumberProperty } from '@kato-lee/cdk/coercion';
|
|
11
|
-
import { Subject, of as observableOf, isObservable } from 'rxjs';
|
|
12
|
-
import { pairwise, shareReplay, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
|
13
|
-
import { CdkVirtualScrollViewport } from './virtual-scroll-viewport';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "./virtual-scroll-viewport";
|
|
16
|
-
import * as i2 from "@kato-lee/cdk/collections";
|
|
17
|
-
/** Helper to extract the offset of a DOM Node in a certain direction. */
|
|
18
|
-
function getOffset(orientation, direction, node) {
|
|
19
|
-
const el = node;
|
|
20
|
-
if (!el.getBoundingClientRect) {
|
|
21
|
-
return 0;
|
|
22
|
-
}
|
|
23
|
-
const rect = el.getBoundingClientRect();
|
|
24
|
-
if (orientation === 'horizontal') {
|
|
25
|
-
return direction === 'start' ? rect.left : rect.right;
|
|
26
|
-
}
|
|
27
|
-
return direction === 'start' ? rect.top : rect.bottom;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling
|
|
31
|
-
* container.
|
|
32
|
-
*/
|
|
33
|
-
export class CdkVirtualForOf {
|
|
34
|
-
constructor(
|
|
35
|
-
/** The view container to add items to. */
|
|
36
|
-
_viewContainerRef,
|
|
37
|
-
/** The template to use when stamping out new items. */
|
|
38
|
-
_template,
|
|
39
|
-
/** The set of available differs. */
|
|
40
|
-
_differs,
|
|
41
|
-
/** The strategy used to render items in the virtual scroll viewport. */
|
|
42
|
-
_viewRepeater,
|
|
43
|
-
/** The virtual scrolling viewport that these items are being rendered in. */
|
|
44
|
-
_viewport, ngZone) {
|
|
45
|
-
this._viewContainerRef = _viewContainerRef;
|
|
46
|
-
this._template = _template;
|
|
47
|
-
this._differs = _differs;
|
|
48
|
-
this._viewRepeater = _viewRepeater;
|
|
49
|
-
this._viewport = _viewport;
|
|
50
|
-
/** Emits when the rendered view of the data changes. */
|
|
51
|
-
this.viewChange = new Subject();
|
|
52
|
-
/** Subject that emits when a new DataSource instance is given. */
|
|
53
|
-
this._dataSourceChanges = new Subject();
|
|
54
|
-
/** Emits whenever the data in the current DataSource changes. */
|
|
55
|
-
this.dataStream = this._dataSourceChanges.pipe(
|
|
56
|
-
// Start off with null `DataSource`.
|
|
57
|
-
startWith(null),
|
|
58
|
-
// Bundle up the previous and current data sources so we can work with both.
|
|
59
|
-
pairwise(),
|
|
60
|
-
// Use `_changeDataSource` to disconnect from the previous data source and connect to the
|
|
61
|
-
// new one, passing back a stream of data changes which we run through `switchMap` to give
|
|
62
|
-
// us a data stream that emits the latest data from whatever the current `DataSource` is.
|
|
63
|
-
switchMap(([prev, cur]) => this._changeDataSource(prev, cur)),
|
|
64
|
-
// Replay the last emitted data when someone subscribes.
|
|
65
|
-
shareReplay(1));
|
|
66
|
-
/** The differ used to calculate changes to the data. */
|
|
67
|
-
this._differ = null;
|
|
68
|
-
/** Whether the rendered data should be updated during the next ngDoCheck cycle. */
|
|
69
|
-
this._needsUpdate = false;
|
|
70
|
-
this._destroyed = new Subject();
|
|
71
|
-
this.dataStream.subscribe(data => {
|
|
72
|
-
this._data = data;
|
|
73
|
-
this._onRenderedDataChange();
|
|
74
|
-
});
|
|
75
|
-
this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {
|
|
76
|
-
this._renderedRange = range;
|
|
77
|
-
if (this.viewChange.observers.length) {
|
|
78
|
-
ngZone.run(() => this.viewChange.next(this._renderedRange));
|
|
79
|
-
}
|
|
80
|
-
this._onRenderedDataChange();
|
|
81
|
-
});
|
|
82
|
-
this._viewport.attach(this);
|
|
83
|
-
}
|
|
84
|
-
/** The DataSource to display. */
|
|
85
|
-
get cdkVirtualForOf() {
|
|
86
|
-
return this._cdkVirtualForOf;
|
|
87
|
-
}
|
|
88
|
-
set cdkVirtualForOf(value) {
|
|
89
|
-
this._cdkVirtualForOf = value;
|
|
90
|
-
if (isDataSource(value)) {
|
|
91
|
-
this._dataSourceChanges.next(value);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
// If value is an an NgIterable, convert it to an array.
|
|
95
|
-
this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and
|
|
100
|
-
* the item and produces a value to be used as the item's identity when tracking changes.
|
|
101
|
-
*/
|
|
102
|
-
get cdkVirtualForTrackBy() {
|
|
103
|
-
return this._cdkVirtualForTrackBy;
|
|
104
|
-
}
|
|
105
|
-
set cdkVirtualForTrackBy(fn) {
|
|
106
|
-
this._needsUpdate = true;
|
|
107
|
-
this._cdkVirtualForTrackBy = fn
|
|
108
|
-
? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)
|
|
109
|
-
: undefined;
|
|
110
|
-
}
|
|
111
|
-
/** The template used to stamp out new elements. */
|
|
112
|
-
set cdkVirtualForTemplate(value) {
|
|
113
|
-
if (value) {
|
|
114
|
-
this._needsUpdate = true;
|
|
115
|
-
this._template = value;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* The size of the cache used to store templates that are not being used for re-use later.
|
|
120
|
-
* Setting the cache size to `0` will disable caching. Defaults to 20 templates.
|
|
121
|
-
*/
|
|
122
|
-
get cdkVirtualForTemplateCacheSize() {
|
|
123
|
-
return this._viewRepeater.viewCacheSize;
|
|
124
|
-
}
|
|
125
|
-
set cdkVirtualForTemplateCacheSize(size) {
|
|
126
|
-
this._viewRepeater.viewCacheSize = coerceNumberProperty(size);
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Measures the combined size (width for horizontal orientation, height for vertical) of all items
|
|
130
|
-
* in the specified range. Throws an error if the range includes items that are not currently
|
|
131
|
-
* rendered.
|
|
132
|
-
*/
|
|
133
|
-
measureRangeSize(range, orientation) {
|
|
134
|
-
if (range.start >= range.end) {
|
|
135
|
-
return 0;
|
|
136
|
-
}
|
|
137
|
-
if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&
|
|
138
|
-
(typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
139
|
-
throw Error(`Error: attempted to measure an item that isn't rendered.`);
|
|
140
|
-
}
|
|
141
|
-
// The index into the list of rendered views for the first item in the range.
|
|
142
|
-
const renderedStartIndex = range.start - this._renderedRange.start;
|
|
143
|
-
// The length of the range we're measuring.
|
|
144
|
-
const rangeLen = range.end - range.start;
|
|
145
|
-
// Loop over all the views, find the first and land node and compute the size by subtracting
|
|
146
|
-
// the top of the first node from the bottom of the last one.
|
|
147
|
-
let firstNode;
|
|
148
|
-
let lastNode;
|
|
149
|
-
// Find the first node by starting from the beginning and going forwards.
|
|
150
|
-
for (let i = 0; i < rangeLen; i++) {
|
|
151
|
-
const view = this._viewContainerRef.get(i + renderedStartIndex);
|
|
152
|
-
if (view && view.rootNodes.length) {
|
|
153
|
-
firstNode = lastNode = view.rootNodes[0];
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Find the last node by starting from the end and going backwards.
|
|
158
|
-
for (let i = rangeLen - 1; i > -1; i--) {
|
|
159
|
-
const view = this._viewContainerRef.get(i + renderedStartIndex);
|
|
160
|
-
if (view && view.rootNodes.length) {
|
|
161
|
-
lastNode = view.rootNodes[view.rootNodes.length - 1];
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return firstNode && lastNode
|
|
166
|
-
? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)
|
|
167
|
-
: 0;
|
|
168
|
-
}
|
|
169
|
-
ngDoCheck() {
|
|
170
|
-
if (this._differ && this._needsUpdate) {
|
|
171
|
-
// TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of
|
|
172
|
-
// this list being rendered (can use simpler algorithm) vs needs update due to data actually
|
|
173
|
-
// changing (need to do this diff).
|
|
174
|
-
const changes = this._differ.diff(this._renderedItems);
|
|
175
|
-
if (!changes) {
|
|
176
|
-
this._updateContext();
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
this._applyChanges(changes);
|
|
180
|
-
}
|
|
181
|
-
this._needsUpdate = false;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
ngOnDestroy() {
|
|
185
|
-
this._viewport.detach();
|
|
186
|
-
this._dataSourceChanges.next(undefined);
|
|
187
|
-
this._dataSourceChanges.complete();
|
|
188
|
-
this.viewChange.complete();
|
|
189
|
-
this._destroyed.next();
|
|
190
|
-
this._destroyed.complete();
|
|
191
|
-
this._viewRepeater.detach();
|
|
192
|
-
}
|
|
193
|
-
/** React to scroll state changes in the viewport. */
|
|
194
|
-
_onRenderedDataChange() {
|
|
195
|
-
if (!this._renderedRange) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);
|
|
199
|
-
if (!this._differ) {
|
|
200
|
-
// Use a wrapper function for the `trackBy` so any new values are
|
|
201
|
-
// picked up automatically without having to recreate the differ.
|
|
202
|
-
this._differ = this._differs.find(this._renderedItems).create((index, item) => {
|
|
203
|
-
return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
this._needsUpdate = true;
|
|
207
|
-
}
|
|
208
|
-
/** Swap out one `DataSource` for another. */
|
|
209
|
-
_changeDataSource(oldDs, newDs) {
|
|
210
|
-
if (oldDs) {
|
|
211
|
-
oldDs.disconnect(this);
|
|
212
|
-
}
|
|
213
|
-
this._needsUpdate = true;
|
|
214
|
-
return newDs ? newDs.connect(this) : observableOf();
|
|
215
|
-
}
|
|
216
|
-
/** Update the `CdkVirtualForOfContext` for all views. */
|
|
217
|
-
_updateContext() {
|
|
218
|
-
const count = this._data.length;
|
|
219
|
-
let i = this._viewContainerRef.length;
|
|
220
|
-
while (i--) {
|
|
221
|
-
const view = this._viewContainerRef.get(i);
|
|
222
|
-
view.context.index = this._renderedRange.start + i;
|
|
223
|
-
view.context.count = count;
|
|
224
|
-
this._updateComputedContextProperties(view.context);
|
|
225
|
-
view.detectChanges();
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
/** Apply changes to the DOM. */
|
|
229
|
-
_applyChanges(changes) {
|
|
230
|
-
this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);
|
|
231
|
-
// Update $implicit for any items that had an identity change.
|
|
232
|
-
changes.forEachIdentityChange((record) => {
|
|
233
|
-
const view = this._viewContainerRef.get(record.currentIndex);
|
|
234
|
-
view.context.$implicit = record.item;
|
|
235
|
-
});
|
|
236
|
-
// Update the context variables on all items.
|
|
237
|
-
const count = this._data.length;
|
|
238
|
-
let i = this._viewContainerRef.length;
|
|
239
|
-
while (i--) {
|
|
240
|
-
const view = this._viewContainerRef.get(i);
|
|
241
|
-
view.context.index = this._renderedRange.start + i;
|
|
242
|
-
view.context.count = count;
|
|
243
|
-
this._updateComputedContextProperties(view.context);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
/** Update the computed properties on the `CdkVirtualForOfContext`. */
|
|
247
|
-
_updateComputedContextProperties(context) {
|
|
248
|
-
context.first = context.index === 0;
|
|
249
|
-
context.last = context.index === context.count - 1;
|
|
250
|
-
context.even = context.index % 2 === 0;
|
|
251
|
-
context.odd = !context.even;
|
|
252
|
-
}
|
|
253
|
-
_getEmbeddedViewArgs(record, index) {
|
|
254
|
-
// Note that it's important that we insert the item directly at the proper index,
|
|
255
|
-
// rather than inserting it and the moving it in place, because if there's a directive
|
|
256
|
-
// on the same node that injects the `ViewContainerRef`, Angular will insert another
|
|
257
|
-
// comment node which can throw off the move when it's being repeated for all items.
|
|
258
|
-
return {
|
|
259
|
-
templateRef: this._template,
|
|
260
|
-
context: {
|
|
261
|
-
$implicit: record.item,
|
|
262
|
-
// It's guaranteed that the iterable is not "undefined" or "null" because we only
|
|
263
|
-
// generate views for elements if the "cdkVirtualForOf" iterable has elements.
|
|
264
|
-
cdkVirtualForOf: this._cdkVirtualForOf,
|
|
265
|
-
index: -1,
|
|
266
|
-
count: -1,
|
|
267
|
-
first: false,
|
|
268
|
-
last: false,
|
|
269
|
-
odd: false,
|
|
270
|
-
even: false,
|
|
271
|
-
},
|
|
272
|
-
index,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
CdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: i1.CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
277
|
-
CdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: { cdkVirtualForOf: "cdkVirtualForOf", cdkVirtualForTrackBy: "cdkVirtualForTrackBy", cdkVirtualForTemplate: "cdkVirtualForTemplate", cdkVirtualForTemplateCacheSize: "cdkVirtualForTemplateCacheSize" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });
|
|
278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkVirtualForOf, decorators: [{
|
|
279
|
-
type: Directive,
|
|
280
|
-
args: [{
|
|
281
|
-
selector: '[cdkVirtualFor][cdkVirtualForOf]',
|
|
282
|
-
providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],
|
|
283
|
-
}]
|
|
284
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2._RecycleViewRepeaterStrategy, decorators: [{
|
|
285
|
-
type: Inject,
|
|
286
|
-
args: [_VIEW_REPEATER_STRATEGY]
|
|
287
|
-
}] }, { type: i1.CdkVirtualScrollViewport, decorators: [{
|
|
288
|
-
type: SkipSelf
|
|
289
|
-
}] }, { type: i0.NgZone }]; }, propDecorators: { cdkVirtualForOf: [{
|
|
290
|
-
type: Input
|
|
291
|
-
}], cdkVirtualForTrackBy: [{
|
|
292
|
-
type: Input
|
|
293
|
-
}], cdkVirtualForTemplate: [{
|
|
294
|
-
type: Input
|
|
295
|
-
}], cdkVirtualForTemplateCacheSize: [{
|
|
296
|
-
type: Input
|
|
297
|
-
}] } });
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1mb3Itb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3Njcm9sbGluZy92aXJ0dWFsLWZvci1vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsZUFBZSxFQUlmLFlBQVksRUFDWiw0QkFBNEIsRUFDNUIsdUJBQXVCLEdBRXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLFNBQVMsRUFHVCxNQUFNLEVBQ04sS0FBSyxFQUlMLGVBQWUsRUFFZixNQUFNLEVBRU4sUUFBUSxFQUNSLFdBQVcsRUFFWCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG9CQUFvQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFhLE9BQU8sRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBc0JuRSx5RUFBeUU7QUFDekUsU0FBUyxTQUFTLENBQUMsV0FBc0MsRUFBRSxTQUEwQixFQUFFLElBQVU7SUFDL0YsTUFBTSxFQUFFLEdBQUcsSUFBZSxDQUFDO0lBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUU7UUFDN0IsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRXhDLElBQUksV0FBVyxLQUFLLFlBQVksRUFBRTtRQUNoQyxPQUFPLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDdkQ7SUFFRCxPQUFPLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxlQUFlO0lBZ0cxQjtJQUNFLDBDQUEwQztJQUNsQyxpQkFBbUM7SUFDM0MsdURBQXVEO0lBQy9DLFNBQWlEO0lBQ3pELG9DQUFvQztJQUM1QixRQUF5QjtJQUNqQyx3RUFBd0U7SUFFaEUsYUFBNEU7SUFDcEYsNkVBQTZFO0lBQ3pELFNBQW1DLEVBQ3ZELE1BQWM7UUFWTixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBRW5DLGNBQVMsR0FBVCxTQUFTLENBQXdDO1FBRWpELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBR3pCLGtCQUFhLEdBQWIsYUFBYSxDQUErRDtRQUVoRSxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQXhHekQsd0RBQXdEO1FBQy9DLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBYSxDQUFDO1FBRS9DLGtFQUFrRTtRQUNqRCx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQTBEbkUsaUVBQWlFO1FBQ3hELGVBQVUsR0FBNkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUk7UUFDMUUsb0NBQW9DO1FBQ3BDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDZiw0RUFBNEU7UUFDNUUsUUFBUSxFQUFFO1FBQ1YseUZBQXlGO1FBQ3pGLDBGQUEwRjtRQUMxRix5RkFBeUY7UUFDekYsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0Qsd0RBQXdEO1FBQ3hELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRUYsd0RBQXdEO1FBQ2hELFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBV2pELG1GQUFtRjtRQUMzRSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVaLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBZ0JoRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDN0Q7WUFDRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFqSEQsaUNBQWlDO0lBQ2pDLElBQ0ksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxlQUFlLENBQUMsS0FBeUU7UUFDM0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO2FBQU07WUFDTCx3REFBd0Q7WUFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDMUIsSUFBSSxlQUFlLENBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQzlFLENBQUM7U0FDSDtJQUNILENBQUM7SUFJRDs7O09BR0c7SUFDSCxJQUNJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxFQUFrQztRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRTtZQUM3QixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztZQUMxRixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFHRCxtREFBbUQ7SUFDbkQsSUFDSSxxQkFBcUIsQ0FBQyxLQUE2QztRQUNyRSxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksOEJBQThCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUNELElBQUksOEJBQThCLENBQUMsSUFBaUI7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQTZERDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBZ0IsRUFBRSxXQUFzQztRQUN2RSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUM1QixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFDRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztZQUNoRixDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsRUFDL0M7WUFDQSxNQUFNLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsNkVBQTZFO1FBQzdFLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNuRSwyQ0FBMkM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXpDLDRGQUE0RjtRQUM1Riw2REFBNkQ7UUFDN0QsSUFBSSxTQUFrQyxDQUFDO1FBQ3ZDLElBQUksUUFBaUMsQ0FBQztRQUV0Qyx5RUFBeUU7UUFDekUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FFdEQsQ0FBQztZQUNULElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxTQUFTLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE1BQU07YUFDUDtTQUNGO1FBRUQsbUVBQW1FO1FBQ25FLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBRXRELENBQUM7WUFDVCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDakMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU07YUFDUDtTQUNGO1FBRUQsT0FBTyxTQUFTLElBQUksUUFBUTtZQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLDZGQUE2RjtZQUM3Riw0RkFBNEY7WUFDNUYsbUNBQW1DO1lBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdCO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFVLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQscURBQXFEO0lBQzdDLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsaUVBQWlFO1lBQ2pFLGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQzVFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkYsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCw2Q0FBNkM7SUFDckMsaUJBQWlCLENBQ3ZCLEtBQTJCLEVBQzNCLEtBQTJCO1FBRTNCLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELGNBQWM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUN0QyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQStDLENBQUM7WUFDekYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxnQ0FBZ0M7SUFDeEIsYUFBYSxDQUFDLE9BQTJCO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUM3QixPQUFPLEVBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixDQUNFLE1BQStCLEVBQy9CLHNCQUFxQyxFQUNyQyxZQUEyQixFQUMzQixFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxZQUFhLENBQUMsRUFDckQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QixDQUFDO1FBRUYsOERBQThEO1FBQzlELE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE1BQStCLEVBQUUsRUFBRTtZQUNoRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFhLENBRTNELENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsNkNBQTZDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDdEMsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUErQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxzRUFBc0U7SUFDOUQsZ0NBQWdDLENBQUMsT0FBb0M7UUFDM0UsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLG9CQUFvQixDQUMxQixNQUErQixFQUMvQixLQUFhO1FBRWIsaUZBQWlGO1FBQ2pGLHNGQUFzRjtRQUN0RixvRkFBb0Y7UUFDcEYsb0ZBQW9GO1FBQ3BGLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDM0IsT0FBTyxFQUFFO2dCQUNQLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDdEIsaUZBQWlGO2dCQUNqRiw4RUFBOEU7Z0JBQzlFLGVBQWUsRUFBRSxJQUFJLENBQUMsZ0JBQWlCO2dCQUN2QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsSUFBSSxFQUFFLEtBQUs7YUFDWjtZQUNELEtBQUs7U0FDTixDQUFDO0lBQ0osQ0FBQzs7NEdBdFRVLGVBQWUsNEdBd0doQix1QkFBdUI7Z0dBeEd0QixlQUFlLDJRQUZmLENBQUMsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFDLENBQUM7MkZBRTVFLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsU0FBUyxFQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFDLENBQUM7aUJBQ3hGOzswQkF5R0ksTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUc5QixRQUFRO2lFQWhHUCxlQUFlO3NCQURsQixLQUFLO2dCQXVCRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBY0YscUJBQXFCO3NCQUR4QixLQUFLO2dCQWFGLDhCQUE4QjtzQkFEakMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBBcnJheURhdGFTb3VyY2UsXG4gIENvbGxlY3Rpb25WaWV3ZXIsXG4gIERhdGFTb3VyY2UsXG4gIExpc3RSYW5nZSxcbiAgaXNEYXRhU291cmNlLFxuICBfUmVjeWNsZVZpZXdSZXBlYXRlclN0cmF0ZWd5LFxuICBfVklFV19SRVBFQVRFUl9TVFJBVEVHWSxcbiAgX1ZpZXdSZXBlYXRlckl0ZW1JbnNlcnRBcmdzLFxufSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBEb0NoZWNrLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLFxuICBJdGVyYWJsZUNoYW5nZXMsXG4gIEl0ZXJhYmxlRGlmZmVyLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE5nSXRlcmFibGUsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NvZXJjZU51bWJlclByb3BlcnR5LCBOdW1iZXJJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBpc09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtwYWlyd2lzZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFJlcGVhdGVyfSBmcm9tICcuL3ZpcnR1YWwtc2Nyb2xsLXJlcGVhdGVyJztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tICcuL3ZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0JztcblxuLyoqIFRoZSBjb250ZXh0IGZvciBhbiBpdGVtIHJlbmRlcmVkIGJ5IGBDZGtWaXJ0dWFsRm9yT2ZgICovXG5leHBvcnQgdHlwZSBDZGtWaXJ0dWFsRm9yT2ZDb250ZXh0PFQ+ID0ge1xuICAvKiogVGhlIGl0ZW0gdmFsdWUuICovXG4gICRpbXBsaWNpdDogVDtcbiAgLyoqIFRoZSBEYXRhU291cmNlLCBPYnNlcnZhYmxlLCBvciBOZ0l0ZXJhYmxlIHRoYXQgd2FzIHBhc3NlZCB0byAqY2RrVmlydHVhbEZvci4gKi9cbiAgY2RrVmlydHVhbEZvck9mOiBEYXRhU291cmNlPFQ+IHwgT2JzZXJ2YWJsZTxUW10+IHwgTmdJdGVyYWJsZTxUPjtcbiAgLyoqIFRoZSBpbmRleCBvZiB0aGUgaXRlbSBpbiB0aGUgRGF0YVNvdXJjZS4gKi9cbiAgaW5kZXg6IG51bWJlcjtcbiAgLyoqIFRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIERhdGFTb3VyY2UuICovXG4gIGNvdW50OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIERhdGFTb3VyY2UuICovXG4gIGZpcnN0OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGlzIGlzIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIERhdGFTb3VyY2UuICovXG4gIGxhc3Q6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBpbmRleCBpcyBldmVuLiAqL1xuICBldmVuOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgaW5kZXggaXMgb2RkLiAqL1xuICBvZGQ6IGJvb2xlYW47XG59O1xuXG4vKiogSGVscGVyIHRvIGV4dHJhY3QgdGhlIG9mZnNldCBvZiBhIERPTSBOb2RlIGluIGEgY2VydGFpbiBkaXJlY3Rpb24uICovXG5mdW5jdGlvbiBnZXRPZmZzZXQob3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcsIGRpcmVjdGlvbjogJ3N0YXJ0JyB8ICdlbmQnLCBub2RlOiBOb2RlKSB7XG4gIGNvbnN0IGVsID0gbm9kZSBhcyBFbGVtZW50O1xuICBpZiAoIWVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBpZiAob3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdzdGFydCcgPyByZWN0LmxlZnQgOiByZWN0LnJpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JyA/IHJlY3QudG9wIDogcmVjdC5ib3R0b207XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgc2ltaWxhciB0byBgbmdGb3JPZmAgdG8gYmUgdXNlZCBmb3IgcmVuZGVyaW5nIGRhdGEgaW5zaWRlIGEgdmlydHVhbCBzY3JvbGxpbmdcbiAqIGNvbnRhaW5lci5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nka1ZpcnR1YWxGb3JdW2Nka1ZpcnR1YWxGb3JPZl0nLFxuICBwcm92aWRlcnM6IFt7cHJvdmlkZTogX1ZJRVdfUkVQRUFURVJfU1RSQVRFR1ksIHVzZUNsYXNzOiBfUmVjeWNsZVZpZXdSZXBlYXRlclN0cmF0ZWd5fV0sXG59KVxuZXhwb3J0IGNsYXNzIENka1ZpcnR1YWxGb3JPZjxUPlxuICBpbXBsZW1lbnRzIENka1ZpcnR1YWxTY3JvbGxSZXBlYXRlcjxUPiwgQ29sbGVjdGlvblZpZXdlciwgRG9DaGVjaywgT25EZXN0cm95XG57XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSByZW5kZXJlZCB2aWV3IG9mIHRoZSBkYXRhIGNoYW5nZXMuICovXG4gIHJlYWRvbmx5IHZpZXdDaGFuZ2UgPSBuZXcgU3ViamVjdDxMaXN0UmFuZ2U+KCk7XG5cbiAgLyoqIFN1YmplY3QgdGhhdCBlbWl0cyB3aGVuIGEgbmV3IERhdGFTb3VyY2UgaW5zdGFuY2UgaXMgZ2l2ZW4uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFTb3VyY2VDaGFuZ2VzID0gbmV3IFN1YmplY3Q8RGF0YVNvdXJjZTxUPj4oKTtcblxuICAvKiogVGhlIERhdGFTb3VyY2UgdG8gZGlzcGxheS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGNka1ZpcnR1YWxGb3JPZigpOiBEYXRhU291cmNlPFQ+IHwgT2JzZXJ2YWJsZTxUW10+IHwgTmdJdGVyYWJsZTxUPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jZGtWaXJ0dWFsRm9yT2Y7XG4gIH1cbiAgc2V0IGNka1ZpcnR1YWxGb3JPZih2YWx1ZTogRGF0YVNvdXJjZTxUPiB8IE9ic2VydmFibGU8VFtdPiB8IE5nSXRlcmFibGU8VD4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY2RrVmlydHVhbEZvck9mID0gdmFsdWU7XG4gICAgaWYgKGlzRGF0YVNvdXJjZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB2YWx1ZSBpcyBhbiBhbiBOZ0l0ZXJhYmxlLCBjb252ZXJ0IGl0IHRvIGFuIGFycmF5LlxuICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dChcbiAgICAgICAgbmV3IEFycmF5RGF0YVNvdXJjZTxUPihpc09ic2VydmFibGUodmFsdWUpID8gdmFsdWUgOiBBcnJheS5mcm9tKHZhbHVlIHx8IFtdKSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIF9jZGtWaXJ0dWFsRm9yT2Y6IERhdGFTb3VyY2U8VD4gfCBPYnNlcnZhYmxlPFRbXT4gfCBOZ0l0ZXJhYmxlPFQ+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGBUcmFja0J5RnVuY3Rpb25gIHRvIHVzZSBmb3IgdHJhY2tpbmcgY2hhbmdlcy4gVGhlIGBUcmFja0J5RnVuY3Rpb25gIHRha2VzIHRoZSBpbmRleCBhbmRcbiAgICogdGhlIGl0ZW0gYW5kIHByb2R1Y2VzIGEgdmFsdWUgdG8gYmUgdXNlZCBhcyB0aGUgaXRlbSdzIGlkZW50aXR5IHdoZW4gdHJhY2tpbmcgY2hhbmdlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjZGtWaXJ0dWFsRm9yVHJhY2tCeSgpOiBUcmFja0J5RnVuY3Rpb248VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jZGtWaXJ0dWFsRm9yVHJhY2tCeTtcbiAgfVxuICBzZXQgY2RrVmlydHVhbEZvclRyYWNrQnkoZm46IFRyYWNrQnlGdW5jdGlvbjxUPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX25lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB0aGlzLl9jZGtWaXJ0dWFsRm9yVHJhY2tCeSA9IGZuXG4gICAgICA/IChpbmRleCwgaXRlbSkgPT4gZm4oaW5kZXggKyAodGhpcy5fcmVuZGVyZWRSYW5nZSA/IHRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQgOiAwKSwgaXRlbSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG4gIHByaXZhdGUgX2Nka1ZpcnR1YWxGb3JUcmFja0J5OiBUcmFja0J5RnVuY3Rpb248VD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHN0YW1wIG91dCBuZXcgZWxlbWVudHMuICovXG4gIEBJbnB1dCgpXG4gIHNldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPENka1ZpcnR1YWxGb3JPZkNvbnRleHQ8VD4+KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICB0aGlzLl90ZW1wbGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY2FjaGUgdXNlZCB0byBzdG9yZSB0ZW1wbGF0ZXMgdGhhdCBhcmUgbm90IGJlaW5nIHVzZWQgZm9yIHJlLXVzZSBsYXRlci5cbiAgICogU2V0dGluZyB0aGUgY2FjaGUgc2l6ZSB0byBgMGAgd2lsbCBkaXNhYmxlIGNhY2hpbmcuIERlZmF1bHRzIHRvIDIwIHRlbXBsYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld1JlcGVhdGVyLnZpZXdDYWNoZVNpemU7XG4gIH1cbiAgc2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZShzaXplOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3ZpZXdSZXBlYXRlci52aWV3Q2FjaGVTaXplID0gY29lcmNlTnVtYmVyUHJvcGVydHkoc2l6ZSk7XG4gIH1cblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGRhdGEgaW4gdGhlIGN1cnJlbnQgRGF0YVNvdXJjZSBjaGFuZ2VzLiAqL1xuICByZWFkb25seSBkYXRhU3RyZWFtOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFRbXT4gPSB0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5waXBlKFxuICAgIC8vIFN0YXJ0IG9mZiB3aXRoIG51bGwgYERhdGFTb3VyY2VgLlxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAvLyBCdW5kbGUgdXAgdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50IGRhdGEgc291cmNlcyBzbyB3ZSBjYW4gd29yayB3aXRoIGJvdGguXG4gICAgcGFpcndpc2UoKSxcbiAgICAvLyBVc2UgYF9jaGFuZ2VEYXRhU291cmNlYCB0byBkaXNjb25uZWN0IGZyb20gdGhlIHByZXZpb3VzIGRhdGEgc291cmNlIGFuZCBjb25uZWN0IHRvIHRoZVxuICAgIC8vIG5ldyBvbmUsIHBhc3NpbmcgYmFjayBhIHN0cmVhbSBvZiBkYXRhIGNoYW5nZXMgd2hpY2ggd2UgcnVuIHRocm91Z2ggYHN3aXRjaE1hcGAgdG8gZ2l2ZVxuICAgIC8vIHVzIGEgZGF0YSBzdHJlYW0gdGhhdCBlbWl0cyB0aGUgbGF0ZXN0IGRhdGEgZnJvbSB3aGF0ZXZlciB0aGUgY3VycmVudCBgRGF0YVNvdXJjZWAgaXMuXG4gICAgc3dpdGNoTWFwKChbcHJldiwgY3VyXSkgPT4gdGhpcy5fY2hhbmdlRGF0YVNvdXJjZShwcmV2LCBjdXIpKSxcbiAgICAvLyBSZXBsYXkgdGhlIGxhc3QgZW1pdHRlZCBkYXRhIHdoZW4gc29tZW9uZSBzdWJzY3JpYmVzLlxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApO1xuXG4gIC8qKiBUaGUgZGlmZmVyIHVzZWQgdG8gY2FsY3VsYXRlIGNoYW5nZXMgdG8gdGhlIGRhdGEuICovXG4gIHByaXZhdGUgX2RpZmZlcjogSXRlcmFibGVEaWZmZXI8VD4gfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIG1vc3QgcmVjZW50IGRhdGEgZW1pdHRlZCBmcm9tIHRoZSBEYXRhU291cmNlLiAqL1xuICBwcml2YXRlIF9kYXRhOiByZWFkb25seSBUW107XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgcmVuZGVyZWQgaXRlbXMuICovXG4gIHByaXZhdGUgX3JlbmRlcmVkSXRlbXM6IFRbXTtcblxuICAvKiogVGhlIGN1cnJlbnRseSByZW5kZXJlZCByYW5nZSBvZiBpbmRpY2VzLiAqL1xuICBwcml2YXRlIF9yZW5kZXJlZFJhbmdlOiBMaXN0UmFuZ2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHJlbmRlcmVkIGRhdGEgc2hvdWxkIGJlIHVwZGF0ZWQgZHVyaW5nIHRoZSBuZXh0IG5nRG9DaGVjayBjeWNsZS4gKi9cbiAgcHJpdmF0ZSBfbmVlZHNVcGRhdGUgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUaGUgdmlldyBjb250YWluZXIgdG8gYWRkIGl0ZW1zIHRvLiAqL1xuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgLyoqIFRoZSB0ZW1wbGF0ZSB0byB1c2Ugd2hlbiBzdGFtcGluZyBvdXQgbmV3IGl0ZW1zLiAqL1xuICAgIHByaXZhdGUgX3RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxDZGtWaXJ0dWFsRm9yT2ZDb250ZXh0PFQ+PixcbiAgICAvKiogVGhlIHNldCBvZiBhdmFpbGFibGUgZGlmZmVycy4gKi9cbiAgICBwcml2YXRlIF9kaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgLyoqIFRoZSBzdHJhdGVneSB1c2VkIHRvIHJlbmRlciBpdGVtcyBpbiB0aGUgdmlydHVhbCBzY3JvbGwgdmlld3BvcnQuICovXG4gICAgQEluamVjdChfVklFV19SRVBFQVRFUl9TVFJBVEVHWSlcbiAgICBwcml2YXRlIF92aWV3UmVwZWF0ZXI6IF9SZWN5Y2xlVmlld1JlcGVhdGVyU3RyYXRlZ3k8VCwgVCwgQ2RrVmlydHVhbEZvck9mQ29udGV4dDxUPj4sXG4gICAgLyoqIFRoZSB2aXJ0dWFsIHNjcm9sbGluZyB2aWV3cG9ydCB0aGF0IHRoZXNlIGl0ZW1zIGFyZSBiZWluZyByZW5kZXJlZCBpbi4gKi9cbiAgICBAU2tpcFNlbGYoKSBwcml2YXRlIF92aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICAgIG5nWm9uZTogTmdab25lLFxuICApIHtcbiAgICB0aGlzLmRhdGFTdHJlYW0uc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLl9vblJlbmRlcmVkRGF0YUNoYW5nZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuX3ZpZXdwb3J0LnJlbmRlcmVkUmFuZ2VTdHJlYW0ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKHJhbmdlID0+IHtcbiAgICAgIHRoaXMuX3JlbmRlcmVkUmFuZ2UgPSByYW5nZTtcbiAgICAgIGlmICh0aGlzLnZpZXdDaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICBuZ1pvbmUucnVuKCgpID0+IHRoaXMudmlld0NoYW5nZS5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2UpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5fdmlld3BvcnQuYXR0YWNoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lYXN1cmVzIHRoZSBjb21iaW5lZCBzaXplICh3aWR0aCBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvbiwgaGVpZ2h0IGZvciB2ZXJ0aWNhbCkgb2YgYWxsIGl0ZW1zXG4gICAqIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2UuIFRocm93cyBhbiBlcnJvciBpZiB0aGUgcmFuZ2UgaW5jbHVkZXMgaXRlbXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseVxuICAgKiByZW5kZXJlZC5cbiAgICovXG4gIG1lYXN1cmVSYW5nZVNpemUocmFuZ2U6IExpc3RSYW5nZSwgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcpOiBudW1iZXIge1xuICAgIGlmIChyYW5nZS5zdGFydCA+PSByYW5nZS5lbmQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAocmFuZ2Uuc3RhcnQgPCB0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0IHx8IHJhbmdlLmVuZCA+IHRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSAmJlxuICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSlcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBFcnJvcjogYXR0ZW1wdGVkIHRvIG1lYXN1cmUgYW4gaXRlbSB0aGF0IGlzbid0IHJlbmRlcmVkLmApO1xuICAgIH1cblxuICAgIC8vIFRoZSBpbmRleCBpbnRvIHRoZSBsaXN0IG9mIHJlbmRlcmVkIHZpZXdzIGZvciB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcmFuZ2UuXG4gICAgY29uc3QgcmVuZGVyZWRTdGFydEluZGV4ID0gcmFuZ2Uuc3RhcnQgLSB0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0O1xuICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIHdlJ3JlIG1lYXN1cmluZy5cbiAgICBjb25zdCByYW5nZUxlbiA9IHJhbmdlLmVuZCAtIHJhbmdlLnN0YXJ0O1xuXG4gICAgLy8gTG9vcCBvdmVyIGFsbCB0aGUgdmlld3MsIGZpbmQgdGhlIGZpcnN0IGFuZCBsYW5kIG5vZGUgYW5kIGNvbXB1dGUgdGhlIHNpemUgYnkgc3VidHJhY3RpbmdcbiAgICAvLyB0aGUgdG9wIG9mIHRoZSBmaXJzdCBub2RlIGZyb20gdGhlIGJvdHRvbSBvZiB0aGUgbGFzdCBvbmUuXG4gICAgbGV0IGZpcnN0Tm9kZTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGxhc3ROb2RlOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAgIC8vIEZpbmQgdGhlIGZpcnN0IG5vZGUgYnkgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBnb2luZyBmb3J3YXJkcy5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlTGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldChpICsgcmVuZGVyZWRTdGFydEluZGV4KSBhcyBFbWJlZGRlZFZpZXdSZWY8XG4gICAgICAgIENka1ZpcnR1YWxGb3JPZkNvbnRleHQ8VD5cbiAgICAgID4gfCBudWxsO1xuICAgICAgaWYgKHZpZXcgJiYgdmlldy5yb290Tm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpcnN0Tm9kZSA9IGxhc3ROb2RlID0gdmlldy5yb290Tm9kZXNbMF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGxhc3Qgbm9kZSBieSBzdGFydGluZyBmcm9tIHRoZSBlbmQgYW5kIGdvaW5nIGJhY2t3YXJkcy5cbiAgICBmb3IgKGxldCBpID0gcmFuZ2VMZW4gLSAxOyBpID4gLTE7IGktLSkge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KGkgKyByZW5kZXJlZFN0YXJ0SW5kZXgpIGFzIEVtYmVkZGVkVmlld1JlZjxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mQ29udGV4dDxUPlxuICAgICAgPiB8IG51bGw7XG4gICAgICBpZiAodmlldyAmJiB2aWV3LnJvb3ROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgbGFzdE5vZGUgPSB2aWV3LnJvb3ROb2Rlc1t2aWV3LnJvb3ROb2Rlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpcnN0Tm9kZSAmJiBsYXN0Tm9kZVxuICAgICAgPyBnZXRPZmZzZXQob3JpZW50YXRpb24sICdlbmQnLCBsYXN0Tm9kZSkgLSBnZXRPZmZzZXQob3JpZW50YXRpb24sICdzdGFydCcsIGZpcnN0Tm9kZSlcbiAgICAgIDogMDtcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5fZGlmZmVyICYmIHRoaXMuX25lZWRzVXBkYXRlKSB7XG4gICAgICAvLyBUT0RPKG1tYWxlcmJhKTogV2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgbmVlZHMgdXBkYXRlIGR1ZSB0byBzY3JvbGxpbmcgYW5kIGEgbmV3IHBvcnRpb24gb2ZcbiAgICAgIC8vIHRoaXMgbGlzdCBiZWluZyByZW5kZXJlZCAoY2FuIHVzZSBzaW1wbGVyIGFsZ29yaXRobSkgdnMgbmVlZHMgdXBkYXRlIGR1ZSB0byBkYXRhIGFjdHVhbGx5XG4gICAgICAvLyBjaGFuZ2luZyAobmVlZCB0byBkbyB0aGlzIGRpZmYpLlxuICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX3JlbmRlcmVkSXRlbXMpO1xuICAgICAgaWYgKCFjaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRleHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25lZWRzVXBkYXRlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fdmlld3BvcnQuZGV0YWNoKCk7XG5cbiAgICB0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KHVuZGVmaW5lZCEpO1xuICAgIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy52aWV3Q2hhbmdlLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3ZpZXdSZXBlYXRlci5kZXRhY2goKTtcbiAgfVxuXG4gIC8qKiBSZWFjdCB0byBzY3JvbGwgc3RhdGUgY2hhbmdlcyBpbiB0aGUgdmlld3BvcnQuICovXG4gIHByaXZhdGUgX29uUmVuZGVyZWREYXRhQ2hhbmdlKCkge1xuICAgIGlmICghdGhpcy5fcmVuZGVyZWRSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZW5kZXJlZEl0ZW1zID0gdGhpcy5fZGF0YS5zbGljZSh0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LCB0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCk7XG4gICAgaWYgKCF0aGlzLl9kaWZmZXIpIHtcbiAgICAgIC8vIFVzZSBhIHdyYXBwZXIgZnVuY3Rpb24gZm9yIHRoZSBgdHJhY2tCeWAgc28gYW55IG5ldyB2YWx1ZXMgYXJlXG4gICAgICAvLyBwaWNrZWQgdXAgYXV0b21hdGljYWxseSB3aXRob3V0IGhhdmluZyB0byByZWNyZWF0ZSB0aGUgZGlmZmVyLlxuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKHRoaXMuX3JlbmRlcmVkSXRlbXMpLmNyZWF0ZSgoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2RrVmlydHVhbEZvclRyYWNrQnkgPyB0aGlzLmNka1ZpcnR1YWxGb3JUcmFja0J5KGluZGV4LCBpdGVtKSA6IGl0ZW07XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fbmVlZHNVcGRhdGUgPSB0cnVlO1xuICB9XG5cbiAgLyoqIFN3YXAgb3V0IG9uZSBgRGF0YVNvdXJjZWAgZm9yIGFub3RoZXIuICovXG4gIHByaXZhdGUgX2NoYW5nZURhdGFTb3VyY2UoXG4gICAgb2xkRHM6IERhdGFTb3VyY2U8VD4gfCBudWxsLFxuICAgIG5ld0RzOiBEYXRhU291cmNlPFQ+IHwgbnVsbCxcbiAgKTogT2JzZXJ2YWJsZTxyZWFkb25seSBUW10+IHtcbiAgICBpZiAob2xkRHMpIHtcbiAgICAgIG9sZERzLmRpc2Nvbm5lY3QodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIHJldHVybiBuZXdEcyA/IG5ld0RzLmNvbm5lY3QodGhpcykgOiBvYnNlcnZhYmxlT2YoKTtcbiAgfVxuXG4gIC8qKiBVcGRhdGUgdGhlIGBDZGtWaXJ0dWFsRm9yT2ZDb250ZXh0YCBmb3IgYWxsIHZpZXdzLiAqL1xuICBwcml2YXRlIF91cGRhdGVDb250ZXh0KCkge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5fZGF0YS5sZW5ndGg7XG4gICAgbGV0IGkgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQoaSkgYXMgRW1iZWRkZWRWaWV3UmVmPENka1ZpcnR1YWxGb3JPZkNvbnRleHQ8VD4+O1xuICAgICAgdmlldy5jb250ZXh0LmluZGV4ID0gdGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCArIGk7XG4gICAgICB2aWV3LmNvbnRleHQuY291bnQgPSBjb3VudDtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModmlldy5jb250ZXh0KTtcbiAgICAgIHZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBseSBjaGFuZ2VzIHRvIHRoZSBET00uICovXG4gIHByaXZhdGUgX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBJdGVyYWJsZUNoYW5nZXM8VD4pIHtcbiAgICB0aGlzLl92aWV3UmVwZWF0ZXIuYXBwbHlDaGFuZ2VzKFxuICAgICAgY2hhbmdlcyxcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAoXG4gICAgICAgIHJlY29yZDogSXRlcmFibGVDaGFuZ2VSZWNvcmQ8VD4sXG4gICAgICAgIF9hZGp1c3RlZFByZXZpb3VzSW5kZXg6IG51bWJlciB8IG51bGwsXG4gICAgICAgIGN1cnJlbnRJbmRleDogbnVtYmVyIHwgbnVsbCxcbiAgICAgICkgPT4gdGhpcy5fZ2V0RW1iZWRkZWRWaWV3QXJncyhyZWNvcmQsIGN1cnJlbnRJbmRleCEpLFxuICAgICAgcmVjb3JkID0+IHJlY29yZC5pdGVtLFxuICAgICk7XG5cbiAgICAvLyBVcGRhdGUgJGltcGxpY2l0IGZvciBhbnkgaXRlbXMgdGhhdCBoYWQgYW4gaWRlbnRpdHkgY2hhbmdlLlxuICAgIGNoYW5nZXMuZm9yRWFjaElkZW50aXR5Q2hhbmdlKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPFQ+KSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQocmVjb3JkLmN1cnJlbnRJbmRleCEpIGFzIEVtYmVkZGVkVmlld1JlZjxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mQ29udGV4dDxUPlxuICAgICAgPjtcbiAgICAgIHZpZXcuY29udGV4dC4kaW1wbGljaXQgPSByZWNvcmQuaXRlbTtcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgY29udGV4dCB2YXJpYWJsZXMgb24gYWxsIGl0ZW1zLlxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5fZGF0YS5sZW5ndGg7XG4gICAgbGV0IGkgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQoaSkgYXMgRW1iZWRkZWRWaWV3UmVmPENka1ZpcnR1YWxGb3JPZkNvbnRleHQ8VD4+O1xuICAgICAgdmlldy5jb250ZXh0LmluZGV4ID0gdGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCArIGk7XG4gICAgICB2aWV3LmNvbnRleHQuY291bnQgPSBjb3VudDtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModmlldy5jb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvKiogVXBkYXRlIHRoZSBjb21wdXRlZCBwcm9wZXJ0aWVzIG9uIHRoZSBgQ2RrVmlydHVhbEZvck9mQ29udGV4dGAuICovXG4gIHByaXZhdGUgX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXMoY29udGV4dDogQ2RrVmlydHVhbEZvck9mQ29udGV4dDxhbnk+KSB7XG4gICAgY29udGV4dC5maXJzdCA9IGNvbnRleHQuaW5kZXggPT09IDA7XG4gICAgY29udGV4dC5sYXN0ID0gY29udGV4dC5pbmRleCA9PT0gY29udGV4dC5jb3VudCAtIDE7XG4gICAgY29udGV4dC5ldmVuID0gY29udGV4dC5pbmRleCAlIDIgPT09IDA7XG4gICAgY29udGV4dC5vZGQgPSAhY29udGV4dC5ldmVuO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RW1iZWRkZWRWaWV3QXJncyhcbiAgICByZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPFQ+LFxuICAgIGluZGV4OiBudW1iZXIsXG4gICk6IF9WaWV3UmVwZWF0ZXJJdGVtSW5zZXJ0QXJnczxDZGtWaXJ0dWFsRm9yT2ZDb250ZXh0PFQ+PiB7XG4gICAgLy8gTm90ZSB0aGF0IGl0J3MgaW1wb3J0YW50IHRoYXQgd2UgaW5zZXJ0IHRoZSBpdGVtIGRpcmVjdGx5IGF0IHRoZSBwcm9wZXIgaW5kZXgsXG4gICAgLy8gcmF0aGVyIHRoYW4gaW5zZXJ0aW5nIGl0IGFuZCB0aGUgbW92aW5nIGl0IGluIHBsYWNlLCBiZWNhdXNlIGlmIHRoZXJlJ3MgYSBkaXJlY3RpdmVcbiAgICAvLyBvbiB0aGUgc2FtZSBub2RlIHRoYXQgaW5qZWN0cyB0aGUgYFZpZXdDb250YWluZXJSZWZgLCBBbmd1bGFyIHdpbGwgaW5zZXJ0IGFub3RoZXJcbiAgICAvLyBjb21tZW50IG5vZGUgd2hpY2ggY2FuIHRocm93IG9mZiB0aGUgbW92ZSB3aGVuIGl0J3MgYmVpbmcgcmVwZWF0ZWQgZm9yIGFsbCBpdGVtcy5cbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGVSZWY6IHRoaXMuX3RlbXBsYXRlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICAkaW1wbGljaXQ6IHJlY29yZC5pdGVtLFxuICAgICAgICAvLyBJdCdzIGd1YXJhbnRlZWQgdGhhdCB0aGUgaXRlcmFibGUgaXMgbm90IFwidW5kZWZpbmVkXCIgb3IgXCJudWxsXCIgYmVjYXVzZSB3ZSBvbmx5XG4gICAgICAgIC8vIGdlbmVyYXRlIHZpZXdzIGZvciBlbGVtZW50cyBpZiB0aGUgXCJjZGtWaXJ0dWFsRm9yT2ZcIiBpdGVyYWJsZSBoYXMgZWxlbWVudHMuXG4gICAgICAgIGNka1ZpcnR1YWxGb3JPZjogdGhpcy5fY2RrVmlydHVhbEZvck9mISxcbiAgICAgICAgaW5kZXg6IC0xLFxuICAgICAgICBjb3VudDogLTEsXG4gICAgICAgIGZpcnN0OiBmYWxzZSxcbiAgICAgICAgbGFzdDogZmFsc2UsXG4gICAgICAgIG9kZDogZmFsc2UsXG4gICAgICAgIGV2ZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluZGV4LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +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
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtcmVwZWF0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3Njcm9sbGluZy92aXJ0dWFsLXNjcm9sbC1yZXBlYXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TGlzdFJhbmdlfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuXG4vKipcbiAqIEFuIGl0ZW0gdG8gYmUgcmVwZWF0ZWQgYnkgdGhlIFZpcnR1YWxTY3JvbGxWaWV3cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1ZpcnR1YWxTY3JvbGxSZXBlYXRlcjxUPiB7XG4gIHJlYWRvbmx5IGRhdGFTdHJlYW06IE9ic2VydmFibGU8cmVhZG9ubHkgVFtdPjtcbiAgbWVhc3VyZVJhbmdlU2l6ZShyYW5nZTogTGlzdFJhbmdlLCBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyk6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,11 +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 { InjectionToken } from '@angular/core';
|
|
9
|
-
/** The injection token used to specify the virtual scrolling strategy. */
|
|
10
|
-
export const VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3Njcm9sbGluZy92aXJ0dWFsLXNjcm9sbC1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSTdDLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQseUJBQXlCLENBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJy4vdmlydHVhbC1zY3JvbGwtdmlld3BvcnQnO1xuXG4vKiogVGhlIGluamVjdGlvbiB0b2tlbiB1c2VkIHRvIHNwZWNpZnkgdGhlIHZpcnR1YWwgc2Nyb2xsaW5nIHN0cmF0ZWd5LiAqL1xuZXhwb3J0IGNvbnN0IFZJUlRVQUxfU0NST0xMX1NUUkFURUdZID0gbmV3IEluamVjdGlvblRva2VuPFZpcnR1YWxTY3JvbGxTdHJhdGVneT4oXG4gICdWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWScsXG4pO1xuXG4vKiogQSBzdHJhdGVneSB0aGF0IGRpY3RhdGVzIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSByZW5kZXJlZCBpbiB0aGUgdmlld3BvcnQuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxTY3JvbGxTdHJhdGVneSB7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCBjaGFuZ2VzLiAqL1xuICBzY3JvbGxlZEluZGV4Q2hhbmdlOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgc2Nyb2xsIHN0cmF0ZWd5IHRvIGEgdmlld3BvcnQuXG4gICAqIEBwYXJhbSB2aWV3cG9ydCBUaGUgdmlld3BvcnQgdG8gYXR0YWNoIHRoaXMgc3RyYXRlZ3kgdG8uXG4gICAqL1xuICBhdHRhY2godmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCk6IHZvaWQ7XG5cbiAgLyoqIERldGFjaGVzIHRoaXMgc2Nyb2xsIHN0cmF0ZWd5IGZyb20gdGhlIGN1cnJlbnRseSBhdHRhY2hlZCB2aWV3cG9ydC4gKi9cbiAgZGV0YWNoKCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIHRoZSB2aWV3cG9ydCBpcyBzY3JvbGxlZCAoZGVib3VuY2VkIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSkuICovXG4gIG9uQ29udGVudFNjcm9sbGVkKCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgY2hhbmdlcy4gKi9cbiAgb25EYXRhTGVuZ3RoQ2hhbmdlZCgpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiB0aGUgcmFuZ2Ugb2YgaXRlbXMgcmVuZGVyZWQgaW4gdGhlIERPTSBoYXMgY2hhbmdlZC4gKi9cbiAgb25Db250ZW50UmVuZGVyZWQoKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIG9mZnNldCBvZiB0aGUgcmVuZGVyZWQgaXRlbXMgY2hhbmdlZC4gKi9cbiAgb25SZW5kZXJlZE9mZnNldENoYW5nZWQoKTogdm9pZDtcblxuICAvKipcbiAgICogU2Nyb2xsIHRvIHRoZSBvZmZzZXQgZm9yIHRoZSBnaXZlbiBpbmRleC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBzY3JvbGwgdG8uXG4gICAqIEBwYXJhbSBiZWhhdmlvciBUaGUgU2Nyb2xsQmVoYXZpb3IgdG8gdXNlIHdoZW4gc2Nyb2xsaW5nLlxuICAgKi9cbiAgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyLCBiZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IpOiB2b2lkO1xufVxuIl19
|