@angular/cdk 2.0.0-beta.11 → 2.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_a11y.scss +23 -0
- package/_overlay.scss +93 -0
- package/a11y/index.metadata.json +2 -1
- package/a11y/typings/a11y-module.d.ts +2 -0
- package/a11y/typings/focus-monitor.d.ts +1 -1
- package/a11y/typings/index.d.ts +1 -1
- package/a11y/typings/index.metadata.json +1 -1
- package/a11y/typings/{public_api.d.ts → public-api.d.ts} +8 -2
- package/a11y-prebuilt.css +1 -0
- package/a11y.metadata.json +2 -1
- package/bidi/index.metadata.json +2 -1
- package/bidi/typings/bidi-module.d.ts +2 -0
- package/bidi/typings/index.d.ts +1 -1
- package/bidi/typings/index.metadata.json +1 -1
- package/bidi/typings/public-api.d.ts +10 -0
- package/bidi.metadata.json +2 -1
- package/bundles/cdk-a11y.umd.js +1368 -1357
- package/bundles/cdk-a11y.umd.js.map +1 -1
- package/bundles/cdk-a11y.umd.min.js +2 -2
- package/bundles/cdk-a11y.umd.min.js.map +1 -1
- package/bundles/cdk-bidi.umd.js +42 -40
- package/bundles/cdk-bidi.umd.js.map +1 -1
- package/bundles/cdk-bidi.umd.min.js +2 -2
- package/bundles/cdk-bidi.umd.min.js.map +1 -1
- package/bundles/cdk-coercion.umd.js +12 -0
- package/bundles/cdk-coercion.umd.js.map +1 -1
- package/bundles/cdk-coercion.umd.min.js +2 -2
- package/bundles/cdk-coercion.umd.min.js.map +1 -1
- package/bundles/cdk-collections.umd.js +113 -11
- package/bundles/cdk-collections.umd.js.map +1 -1
- package/bundles/cdk-collections.umd.min.js +2 -2
- package/bundles/cdk-collections.umd.min.js.map +1 -1
- package/bundles/cdk-keycodes.umd.js.map +1 -1
- package/bundles/cdk-keycodes.umd.min.js +1 -1
- package/bundles/cdk-keycodes.umd.min.js.map +1 -1
- package/bundles/cdk-layout.umd.js +235 -0
- package/bundles/cdk-layout.umd.js.map +1 -0
- package/bundles/cdk-layout.umd.min.js +9 -0
- package/bundles/cdk-layout.umd.min.js.map +1 -0
- package/bundles/cdk-observers.umd.js +41 -40
- package/bundles/cdk-observers.umd.js.map +1 -1
- package/bundles/cdk-observers.umd.min.js +2 -2
- package/bundles/cdk-observers.umd.min.js.map +1 -1
- package/bundles/cdk-overlay.umd.js +306 -265
- package/bundles/cdk-overlay.umd.js.map +1 -1
- package/bundles/cdk-overlay.umd.min.js +2 -2
- package/bundles/cdk-overlay.umd.min.js.map +1 -1
- package/bundles/cdk-platform.umd.js +19 -17
- package/bundles/cdk-platform.umd.js.map +1 -1
- package/bundles/cdk-platform.umd.min.js +2 -2
- package/bundles/cdk-platform.umd.min.js.map +1 -1
- package/bundles/cdk-portal.umd.js +71 -37
- package/bundles/cdk-portal.umd.js.map +1 -1
- package/bundles/cdk-portal.umd.min.js +2 -2
- package/bundles/cdk-portal.umd.min.js.map +1 -1
- package/bundles/cdk-rxjs.umd.js +13 -4
- package/bundles/cdk-rxjs.umd.js.map +1 -1
- package/bundles/cdk-rxjs.umd.min.js +2 -2
- package/bundles/cdk-rxjs.umd.min.js.map +1 -1
- package/bundles/cdk-scrolling.umd.js +89 -54
- package/bundles/cdk-scrolling.umd.js.map +1 -1
- package/bundles/cdk-scrolling.umd.min.js +2 -2
- package/bundles/cdk-scrolling.umd.min.js.map +1 -1
- package/bundles/cdk-stepper.umd.js +115 -90
- package/bundles/cdk-stepper.umd.js.map +1 -1
- package/bundles/cdk-stepper.umd.min.js +2 -2
- package/bundles/cdk-stepper.umd.min.js.map +1 -1
- package/bundles/cdk-table.umd.js +261 -218
- package/bundles/cdk-table.umd.js.map +1 -1
- package/bundles/cdk-table.umd.min.js +2 -2
- package/bundles/cdk-table.umd.min.js.map +1 -1
- package/bundles/cdk.umd.js +1 -1
- package/bundles/cdk.umd.js.map +1 -1
- package/bundles/cdk.umd.min.js +2 -2
- package/bundles/cdk.umd.min.js.map +1 -1
- package/cdk.metadata.json +2 -1
- package/coercion/index.metadata.json +2 -1
- package/coercion/typings/array.d.ts +9 -0
- package/coercion/typings/index.d.ts +1 -1
- package/coercion/typings/index.metadata.json +1 -1
- package/{typings/coercion/public_api.d.ts → coercion/typings/public-api.d.ts} +1 -0
- package/coercion.metadata.json +2 -1
- package/collections/index.metadata.json +2 -1
- package/collections/typings/index.d.ts +2 -1
- package/collections/typings/index.metadata.json +1 -1
- package/{typings/collections/public_api.d.ts → collections/typings/public-api.d.ts} +1 -0
- package/collections/typings/selection.d.ts +13 -3
- package/collections/typings/unique-selection-dispatcher.d.ts +40 -0
- package/collections.metadata.json +2 -1
- package/esm2015/a11y.js +1252 -1250
- package/esm2015/a11y.js.map +1 -1
- package/esm2015/bidi.js +1 -1
- package/esm2015/bidi.js.map +1 -1
- package/esm2015/cdk.js +1 -1
- package/esm2015/cdk.js.map +1 -1
- package/esm2015/coercion.js +11 -1
- package/esm2015/coercion.js.map +1 -1
- package/esm2015/collections.js +93 -8
- package/esm2015/collections.js.map +1 -1
- package/esm2015/keycodes.js.map +1 -1
- package/esm2015/layout.js +226 -0
- package/esm2015/layout.js.map +1 -0
- package/esm2015/observers.js +8 -7
- package/esm2015/observers.js.map +1 -1
- package/esm2015/overlay.js +157 -136
- package/esm2015/overlay.js.map +1 -1
- package/esm2015/platform.js +1 -1
- package/esm2015/platform.js.map +1 -1
- package/esm2015/portal.js +30 -1
- package/esm2015/portal.js.map +1 -1
- package/esm2015/rxjs.js +5 -1
- package/esm2015/rxjs.js.map +1 -1
- package/esm2015/scrolling.js +39 -8
- package/esm2015/scrolling.js.map +1 -1
- package/esm2015/stepper.js +27 -5
- package/esm2015/stepper.js.map +1 -1
- package/esm2015/table.js +68 -29
- package/esm2015/table.js.map +1 -1
- package/esm5/a11y.es5.js +1372 -1357
- package/esm5/a11y.es5.js.map +1 -1
- package/esm5/bidi.es5.js +45 -40
- package/esm5/bidi.es5.js.map +1 -1
- package/esm5/cdk.es5.js +4 -1
- package/esm5/cdk.es5.js.map +1 -1
- package/esm5/coercion.es5.js +14 -1
- package/esm5/coercion.es5.js.map +1 -1
- package/esm5/collections.es5.js +110 -8
- package/esm5/collections.es5.js.map +1 -1
- package/esm5/keycodes.es5.js +2 -0
- package/esm5/keycodes.es5.js.map +1 -1
- package/esm5/layout.es5.js +234 -0
- package/esm5/layout.es5.js.map +1 -0
- package/esm5/observers.es5.js +44 -40
- package/esm5/observers.es5.js.map +1 -1
- package/esm5/overlay.es5.js +304 -259
- package/esm5/overlay.es5.js.map +1 -1
- package/esm5/platform.es5.js +22 -17
- package/esm5/platform.es5.js.map +1 -1
- package/esm5/portal.es5.js +81 -44
- package/esm5/portal.es5.js.map +1 -1
- package/esm5/rxjs.es5.js +12 -1
- package/esm5/rxjs.es5.js.map +1 -1
- package/esm5/scrolling.es5.js +89 -51
- package/esm5/scrolling.es5.js.map +1 -1
- package/esm5/stepper.es5.js +119 -91
- package/esm5/stepper.es5.js.map +1 -1
- package/esm5/table.es5.js +265 -218
- package/esm5/table.es5.js.map +1 -1
- package/keycodes/index.metadata.json +2 -1
- package/keycodes/typings/index.d.ts +1 -1
- package/keycodes/typings/{public_api.d.ts → public-api.d.ts} +0 -0
- package/keycodes.metadata.json +2 -1
- package/layout/index.d.ts +8 -0
- package/layout/index.metadata.json +12 -0
- package/layout/package.json +7 -0
- package/layout/typings/breakpoints-observer.d.ts +37 -0
- package/layout/typings/breakpoints.d.ts +18 -0
- package/layout/typings/index.d.ts +4 -0
- package/layout/typings/index.metadata.json +1 -0
- package/layout/typings/media-matcher.d.ts +15 -0
- package/layout/typings/public-api.d.ts +5 -0
- package/layout.d.ts +8 -0
- package/layout.metadata.json +12 -0
- package/observers/index.metadata.json +2 -1
- package/observers/typings/index.d.ts +1 -1
- package/observers/typings/index.metadata.json +1 -1
- package/observers/typings/observe-content.d.ts +3 -3
- package/observers/typings/{public_api.d.ts → public-api.d.ts} +0 -0
- package/observers.metadata.json +2 -1
- package/overlay/index.metadata.json +2 -1
- package/overlay/typings/index.d.ts +2 -2
- package/overlay/typings/index.metadata.json +1 -1
- package/overlay/typings/overlay-config.d.ts +1 -1
- package/overlay/typings/overlay-directives.d.ts +3 -3
- package/overlay/typings/overlay-module.d.ts +11 -0
- package/overlay/typings/overlay-ref.d.ts +6 -6
- package/overlay/typings/overlay.d.ts +2 -2
- package/overlay/typings/position/connected-position-strategy.d.ts +5 -0
- package/overlay/typings/position/position-strategy.d.ts +2 -0
- package/overlay/typings/{public_api.d.ts → public-api.d.ts} +1 -4
- package/overlay/typings/scroll/scroll-strategy.d.ts +1 -1
- package/overlay-prebuilt.css +1 -0
- package/overlay.metadata.json +2 -1
- package/package.json +3 -3
- package/platform/index.metadata.json +2 -1
- package/platform/typings/index.d.ts +1 -1
- package/platform/typings/index.metadata.json +1 -1
- package/platform/typings/platform-module.d.ts +2 -0
- package/platform/typings/public-api.d.ts +10 -0
- package/platform.metadata.json +2 -1
- package/portal/index.metadata.json +2 -1
- package/portal/typings/index.d.ts +1 -1
- package/portal/typings/index.metadata.json +1 -1
- package/portal/typings/{public_api.d.ts → public-api.d.ts} +1 -0
- package/portal.metadata.json +2 -1
- package/rxjs/index.metadata.json +2 -1
- package/rxjs/typings/index.d.ts +1 -1
- package/rxjs/typings/index.metadata.json +1 -1
- package/rxjs/typings/{public_api.d.ts → public-api.d.ts} +0 -0
- package/rxjs/typings/rx-operators.d.ts +7 -0
- package/rxjs.metadata.json +2 -1
- package/scrolling/index.metadata.json +2 -1
- package/scrolling/typings/index.d.ts +1 -1
- package/scrolling/typings/index.metadata.json +1 -1
- package/scrolling/typings/public-api.d.ts +11 -0
- package/scrolling/typings/scrolling-module.d.ts +2 -0
- package/scrolling/typings/viewport-ruler.d.ts +20 -6
- package/scrolling.metadata.json +2 -1
- package/stepper/index.metadata.json +2 -1
- package/stepper/typings/index.d.ts +1 -1
- package/stepper/typings/index.metadata.json +1 -1
- package/stepper/typings/public-api.d.ts +11 -0
- package/stepper/typings/stepper-module.d.ts +2 -0
- package/stepper/typings/stepper.d.ts +8 -4
- package/stepper.metadata.json +2 -1
- package/table/index.metadata.json +2 -1
- package/table/typings/index.d.ts +1 -1
- package/table/typings/index.metadata.json +1 -1
- package/table/typings/public-api.d.ts +13 -0
- package/table/typings/row.d.ts +11 -3
- package/table/typings/table-errors.d.ts +10 -0
- package/table/typings/table-module.d.ts +2 -0
- package/table/typings/table.d.ts +17 -8
- package/table.metadata.json +2 -1
- package/typings/a11y/a11y-module.d.ts +2 -0
- package/typings/a11y/focus-monitor.d.ts +1 -1
- package/typings/a11y/index.d.ts +1 -1
- package/typings/a11y/index.metadata.json +1 -1
- package/typings/a11y/{public_api.d.ts → public-api.d.ts} +8 -2
- package/typings/bidi/bidi-module.d.ts +2 -0
- package/typings/bidi/index.d.ts +1 -1
- package/typings/bidi/index.metadata.json +1 -1
- package/typings/bidi/public-api.d.ts +10 -0
- package/typings/coercion/array.d.ts +9 -0
- package/typings/coercion/index.d.ts +1 -1
- package/typings/coercion/index.metadata.json +1 -1
- package/{coercion/typings/public_api.d.ts → typings/coercion/public-api.d.ts} +1 -0
- package/typings/collections/index.d.ts +2 -1
- package/typings/collections/index.metadata.json +1 -1
- package/{collections/typings/public_api.d.ts → typings/collections/public-api.d.ts} +1 -0
- package/typings/collections/selection.d.ts +13 -3
- package/typings/collections/unique-selection-dispatcher.d.ts +40 -0
- package/typings/index.d.ts +1 -1
- package/typings/index.metadata.json +1 -1
- package/typings/keycodes/index.d.ts +1 -1
- package/typings/keycodes/{public_api.d.ts → public-api.d.ts} +0 -0
- package/typings/layout/breakpoints-observer.d.ts +37 -0
- package/typings/layout/breakpoints.d.ts +18 -0
- package/typings/layout/index.d.ts +4 -0
- package/typings/layout/index.metadata.json +1 -0
- package/typings/layout/media-matcher.d.ts +15 -0
- package/typings/layout/public-api.d.ts +5 -0
- package/typings/observers/index.d.ts +1 -1
- package/typings/observers/index.metadata.json +1 -1
- package/typings/observers/observe-content.d.ts +3 -3
- package/typings/observers/{public_api.d.ts → public-api.d.ts} +0 -0
- package/typings/overlay/index.d.ts +2 -2
- package/typings/overlay/index.metadata.json +1 -1
- package/typings/overlay/overlay-config.d.ts +1 -1
- package/typings/overlay/overlay-directives.d.ts +3 -3
- package/typings/overlay/overlay-module.d.ts +11 -0
- package/typings/overlay/overlay-ref.d.ts +6 -6
- package/typings/overlay/overlay.d.ts +2 -2
- package/typings/overlay/position/connected-position-strategy.d.ts +5 -0
- package/typings/overlay/position/position-strategy.d.ts +2 -0
- package/typings/overlay/{public_api.d.ts → public-api.d.ts} +1 -4
- package/typings/overlay/scroll/scroll-strategy.d.ts +1 -1
- package/typings/platform/index.d.ts +1 -1
- package/typings/platform/index.metadata.json +1 -1
- package/typings/platform/platform-module.d.ts +2 -0
- package/typings/platform/public-api.d.ts +10 -0
- package/typings/portal/index.d.ts +1 -1
- package/typings/portal/index.metadata.json +1 -1
- package/typings/portal/{public_api.d.ts → public-api.d.ts} +1 -0
- package/typings/{public_api.d.ts → public-api.d.ts} +0 -0
- package/typings/rxjs/index.d.ts +1 -1
- package/typings/rxjs/index.metadata.json +1 -1
- package/typings/rxjs/{public_api.d.ts → public-api.d.ts} +0 -0
- package/typings/rxjs/rx-operators.d.ts +7 -0
- package/typings/scrolling/index.d.ts +1 -1
- package/typings/scrolling/index.metadata.json +1 -1
- package/typings/scrolling/public-api.d.ts +11 -0
- package/typings/scrolling/scrolling-module.d.ts +2 -0
- package/typings/scrolling/viewport-ruler.d.ts +20 -6
- package/typings/stepper/index.d.ts +1 -1
- package/typings/stepper/index.metadata.json +1 -1
- package/typings/stepper/public-api.d.ts +11 -0
- package/typings/stepper/stepper-module.d.ts +2 -0
- package/typings/stepper/stepper.d.ts +8 -4
- package/typings/table/index.d.ts +1 -1
- package/typings/table/index.metadata.json +1 -1
- package/typings/table/public-api.d.ts +13 -0
- package/typings/table/row.d.ts +11 -3
- package/typings/table/table-errors.d.ts +10 -0
- package/typings/table/table-module.d.ts +2 -0
- package/typings/table/table.d.ts +17 -8
- package/bidi/typings/public_api.d.ts +0 -4
- package/platform/typings/public_api.d.ts +0 -4
- package/scrolling/typings/public_api.d.ts +0 -5
- package/stepper/typings/public_api.d.ts +0 -5
- package/table/typings/public_api.d.ts +0 -7
- package/typings/bidi/public_api.d.ts +0 -4
- package/typings/platform/public_api.d.ts +0 -4
- package/typings/scrolling/public_api.d.ts +0 -5
- package/typings/stepper/public_api.d.ts +0 -5
- package/typings/table/public_api.d.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdk-a11y.umd.js","sources":["../../src/cdk/a11y/public_api.ts","../../src/cdk/a11y/focus-key-manager.ts","../../src/cdk/a11y/fake-mousedown.ts","../../src/cdk/a11y/activedescendant-key-manager.ts","../../src/cdk/a11y/list-key-manager.ts","../../src/cdk/a11y/focus-monitor.ts","../../src/cdk/a11y/aria-describer.ts","../../src/cdk/a11y/aria-reference.ts","../../src/cdk/a11y/live-announcer.ts","../../src/cdk/a11y/focus-trap.ts","../../src/cdk/a11y/interactivity-checker.ts","../../node_modules/tslib/tslib.es6.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {NgModule} from '@angular/core';\nimport {FocusTrapDeprecatedDirective, FocusTrapDirective, FocusTrapFactory} from './focus-trap';\nimport {LIVE_ANNOUNCER_PROVIDER} from './live-announcer';\nimport {InteractivityChecker} from './interactivity-checker';\nimport {CommonModule} from '@angular/common';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {AriaDescriber, ARIA_DESCRIBER_PROVIDER} from './aria-describer';\nimport {CdkMonitorFocus, FOCUS_MONITOR_PROVIDER} from './focus-monitor';\nexport class A11yModule {static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [CommonModule, PlatformModule],\n declarations: [FocusTrapDirective, FocusTrapDeprecatedDirective, CdkMonitorFocus],\n exports: [FocusTrapDirective, FocusTrapDeprecatedDirective, CdkMonitorFocus],\n providers: [\n InteractivityChecker,\n FocusTrapFactory,\n AriaDescriber,\n LIVE_ANNOUNCER_PROVIDER,\n ARIA_DESCRIBER_PROVIDER,\n FOCUS_MONITOR_PROVIDER,\n ]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction A11yModule_tsickle_Closure_declarations() {\n/** @type {?} */\nA11yModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nA11yModule.ctorParameters;\n}\n\n\nexport {Highlightable,ActiveDescendantKeyManager} from './activedescendant-key-manager';\nexport {RegisteredMessage,MESSAGES_CONTAINER_ID,CDK_DESCRIBEDBY_ID_PREFIX,CDK_DESCRIBEDBY_HOST_ATTRIBUTE,AriaDescriber,ARIA_DESCRIBER_PROVIDER_FACTORY,ARIA_DESCRIBER_PROVIDER} from './aria-describer';\nexport {isFakeMousedownFromScreenReader} from './fake-mousedown';\nexport {FocusableOption,FocusKeyManager} from './focus-key-manager';\nexport {FocusTrap,FocusTrapFactory,FocusTrapDeprecatedDirective,FocusTrapDirective} from './focus-trap';\nexport {InteractivityChecker} from './interactivity-checker';\nexport {ListKeyManagerOption,ListKeyManager} from './list-key-manager';\nexport {LIVE_ANNOUNCER_ELEMENT_TOKEN,AriaLivePoliteness,LiveAnnouncer,LIVE_ANNOUNCER_PROVIDER_FACTORY,LIVE_ANNOUNCER_PROVIDER} from './live-announcer';\nexport {TOUCH_BUFFER_MS,FocusOrigin,FocusMonitor,CdkMonitorFocus,FOCUS_MONITOR_PROVIDER_FACTORY,FOCUS_MONITOR_PROVIDER} from './focus-monitor';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ListKeyManager, ListKeyManagerOption} from './list-key-manager';\n\n/**\n * This is the interface for focusable items (used by the FocusKeyManager).\n * Each item must know how to focus itself, whether or not it is currently disabled\n * and be able to supply it's label.\n */\nexport interface FocusableOption extends ListKeyManagerOption {\n focus(): void;\n}\nexport class FocusKeyManager<T> extends ListKeyManager<FocusableOption & T> {\n/**\n * This method sets the active item to the item at the specified index.\n * It also adds focuses the newly active item.\n * @param {?} index\n * @return {?}\n */\nsetActiveItem(index: number): void {\n super.setActiveItem(index);\n\n if (this.activeItem) {\n this.activeItem.focus();\n }\n }\n}\n","\n/**\n * Screenreaders will often fire fake mousedown events when a focusable element\n * is activated using the keyboard. We can typically distinguish between these faked\n * mousedown events and real mousedown events using the \"buttons\" property. While\n * real mousedowns will indicate the mouse button that was pressed (e.g. \"1\" for\n * the left mouse button), faked mousedowns will usually set the property value to 0.\n * @param {?} event\n * @return {?}\n */\nexport function isFakeMousedownFromScreenReader(event: MouseEvent): boolean {\n return event.buttons === 0;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ListKeyManager, ListKeyManagerOption} from './list-key-manager';\n\n/**\n * This is the interface for highlightable items (used by the ActiveDescendantKeyManager).\n * Each item must know how to style itself as active or inactive and whether or not it is\n * currently disabled.\n */\nexport interface Highlightable extends ListKeyManagerOption {\n setActiveStyles(): void;\n setInactiveStyles(): void;\n}\nexport class ActiveDescendantKeyManager<T> extends ListKeyManager<Highlightable & T> {\n/**\n * This method sets the active item to the item at the specified index.\n * It also adds active styles to the newly active item and removes active\n * styles from the previously active item.\n * @param {?} index\n * @return {?}\n */\nsetActiveItem(index: number): void {\n Promise.resolve().then(() => {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n });\n }\n\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {QueryList} from '@angular/core';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\nimport {UP_ARROW, DOWN_ARROW, TAB, A, Z, ZERO, NINE} from '@angular/cdk/keycodes';\nimport {RxChain, debounceTime, filter, map, doOperator} from '@angular/cdk/rxjs';\n\n/**\n * This interface is for items that can be passed to a ListKeyManager.\n */\nexport interface ListKeyManagerOption {\n disabled?: boolean;\n getLabel?(): string;\n}\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nexport class ListKeyManager<T extends ListKeyManagerOption> {\nprivate _activeItemIndex = -1;\nprivate _activeItem: T;\nprivate _wrap = false;\nprivate _letterKeyStream = new Subject<string>();\nprivate _typeaheadSubscription = Subscription.EMPTY;\nprivate _pressedLetters: string[] = [];\n/**\n * @param {?} _items\n */\nconstructor(private _items: QueryList<T>) { }\n/**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\ntabOut: Subject<void> = new Subject<void>();\n/**\n * Turns on wrapping mode, which ensures that the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @return {?}\n */\nwithWrap(): this {\n this._wrap = true;\n return this;\n }\n/**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param {?=} debounceInterval Time to wait after the last keystroke before setting the active item.\n * @return {?}\n */\nwithTypeAhead(debounceInterval = 200): this {\n if (this._items.length && this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n\n this._typeaheadSubscription.unsubscribe();\n\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = RxChain.from(this._letterKeyStream)\n .call(doOperator, keyCode => this._pressedLetters.push(keyCode))\n .call(debounceTime, debounceInterval)\n .call(filter, () => this._pressedLetters.length > 0)\n .call(map, () => this._pressedLetters.join(''))\n .subscribe(inputString => {\n const /** @type {?} */ items = this._items.toArray();\n\n for (let /** @type {?} */ i = 0; i < items.length; i++) {\n if ( /** @type {?} */((items[i].getLabel))().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(i);\n break;\n }\n }\n\n this._pressedLetters = [];\n });\n\n return this;\n }\n/**\n * Sets the active item to the item at the index specified.\n * @param {?} index The index of the item to be set as active.\n * @return {?}\n */\nsetActiveItem(index: number): void {\n this._activeItemIndex = index;\n this._activeItem = this._items.toArray()[index];\n }\n/**\n * Sets the active item depending on the key event passed in.\n * @param {?} event Keyboard event to be used for determining which element should be active.\n * @return {?}\n */\nonKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case DOWN_ARROW: this.setNextItemActive(); break;\n case UP_ARROW: this.setPreviousItemActive(); break;\n case TAB: this.tabOut.next(); return;\n default:\n const /** @type {?} */ keyCode = event.keyCode;\n\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n } else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n this._pressedLetters = [];\n event.preventDefault();\n }\n/**\n * Index of the currently active item.\n * @return {?}\n */\nget activeItemIndex(): number | null {\n return this._activeItemIndex;\n }\n/**\n * The active item.\n * @return {?}\n */\nget activeItem(): T | null {\n return this._activeItem;\n }\n/**\n * Sets the active item to the first enabled item in the list.\n * @return {?}\n */\nsetFirstItemActive(): void {\n this._setActiveItemByIndex(0, 1);\n }\n/**\n * Sets the active item to the last enabled item in the list.\n * @return {?}\n */\nsetLastItemActive(): void {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n/**\n * Sets the active item to the next enabled item in the list.\n * @return {?}\n */\nsetNextItemActive(): void {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n/**\n * Sets the active item to a previous enabled item in the list.\n * @return {?}\n */\nsetPreviousItemActive(): void {\n this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n/**\n * Allows setting of the activeItemIndex without any other effects.\n * @param {?} index The new activeItemIndex.\n * @return {?}\n */\nupdateActiveItemIndex(index: number) {\n this._activeItemIndex = index;\n }\n/**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n * @param {?} delta\n * @param {?=} items\n * @return {?}\n */\nprivate _setActiveItemByDelta(delta: number, items = this._items.toArray()): void {\n this._wrap ? this._setActiveInWrapMode(delta, items)\n : this._setActiveInDefaultMode(delta, items);\n }\n/**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n * @param {?} delta\n * @param {?} items\n * @return {?}\n */\nprivate _setActiveInWrapMode(delta: number, items: T[]): void {\n // when active item would leave menu, wrap to beginning or end\n this._activeItemIndex =\n (this._activeItemIndex + delta + items.length) % items.length;\n\n // skip all disabled menu items recursively until an enabled one is reached\n if (items[this._activeItemIndex].disabled) {\n this._setActiveInWrapMode(delta, items);\n } else {\n this.setActiveItem(this._activeItemIndex);\n }\n }\n/**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n * @param {?} delta\n * @param {?} items\n * @return {?}\n */\nprivate _setActiveInDefaultMode(delta: number, items: T[]): void {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta, items);\n }\n/**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n * @param {?} index\n * @param {?} fallbackDelta\n * @param {?=} items\n * @return {?}\n */\nprivate _setActiveItemByIndex(index: number, fallbackDelta: number,\n items = this._items.toArray()): void {\n if (!items[index]) { return; }\n while (items[index].disabled) {\n index += fallbackDelta;\n if (!items[index]) { return; }\n }\n this.setActiveItem(index);\n }\n}\n\nfunction ListKeyManager_tsickle_Closure_declarations() {\n/** @type {?} */\nListKeyManager.prototype._activeItemIndex;\n/** @type {?} */\nListKeyManager.prototype._activeItem;\n/** @type {?} */\nListKeyManager.prototype._wrap;\n/** @type {?} */\nListKeyManager.prototype._letterKeyStream;\n/** @type {?} */\nListKeyManager.prototype._typeaheadSubscription;\n/** @type {?} */\nListKeyManager.prototype._pressedLetters;\n/**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n * @type {?}\n */\nListKeyManager.prototype.tabOut;\n/** @type {?} */\nListKeyManager.prototype._items;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\nimport {of as observableOf} from 'rxjs/observable/of';\n\n\n// This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n// that a value of around 650ms seems appropriate.\nexport const /** @type {?} */ TOUCH_BUFFER_MS = 650;\n\n\nexport type FocusOrigin = 'touch' | 'mouse' | 'keyboard' | 'program' | null;\n\n\ntype MonitoredElementInfo = {\n unlisten: Function,\n checkChildren: boolean,\n renderer: Renderer2,\n subject: Subject<FocusOrigin>\n};\n/**\n * Monitors mouse and keyboard events to determine the cause of focus events.\n */\nexport class FocusMonitor {\n/**\n * The focus origin that the next focus event is a result of.\n */\nprivate _origin: FocusOrigin = null;\n/**\n * The FocusOrigin of the last focus event tracked by the FocusMonitor.\n */\nprivate _lastFocusOrigin: FocusOrigin;\n/**\n * Whether the window has just been focused.\n */\nprivate _windowFocused = false;\n/**\n * The target of the last touch event.\n */\nprivate _lastTouchTarget: EventTarget | null;\n/**\n * The timeout id of the touch timeout, used to cancel timeout later.\n */\nprivate _touchTimeout: number;\n/**\n * Weak map of elements being monitored to their info.\n */\nprivate _elementInfo = new WeakMap<Element, MonitoredElementInfo>();\n/**\n * @param {?} _ngZone\n * @param {?} _platform\n */\nconstructor(private _ngZone: NgZone,\nprivate _platform: Platform) {\n this._ngZone.runOutsideAngular(() => this._registerDocumentEvents());\n }\n/**\n * Monitors focus on an element and applies appropriate CSS classes.\n * @param {?} element The element to monitor\n * @param {?} renderer The renderer to use to apply CSS classes to the element.\n * @param {?} checkChildren Whether to count the element as focused when its children are focused.\n * @return {?} An observable that emits when the focus state of the element changes.\n * When the element is blurred, null will be emitted.\n */\nmonitor(\n element: HTMLElement,\n renderer: Renderer2,\n checkChildren: boolean): Observable<FocusOrigin> {\n // Do nothing if we're not on the browser platform.\n if (!this._platform.isBrowser) {\n return observableOf(null);\n }\n // Check if we're already monitoring this element.\n if (this._elementInfo.has(element)) {\n let /** @type {?} */ cachedInfo = this._elementInfo.get(element); /** @type {?} */((\n cachedInfo)).checkChildren = checkChildren;\n return /** @type {?} */(( cachedInfo)).subject.asObservable();\n }\n\n // Create monitored element info.\n let /** @type {?} */ info: MonitoredElementInfo = {\n unlisten: () => {},\n checkChildren: checkChildren,\n renderer: renderer,\n subject: new Subject<FocusOrigin>()\n };\n this._elementInfo.set(element, info);\n\n // Start listening. We need to listen in capture phase since focus events don't bubble.\n let /** @type {?} */ focusListener = (event: FocusEvent) => this._onFocus(event, element);\n let /** @type {?} */ blurListener = (event: FocusEvent) => this._onBlur(event, element);\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('focus', focusListener, true);\n element.addEventListener('blur', blurListener, true);\n });\n\n // Create an unlisten function for later.\n info.unlisten = () => {\n element.removeEventListener('focus', focusListener, true);\n element.removeEventListener('blur', blurListener, true);\n };\n\n return info.subject.asObservable();\n }\n/**\n * Stops monitoring an element and removes all focus classes.\n * @param {?} element The element to stop monitoring.\n * @return {?}\n */\nstopMonitoring(element: HTMLElement): void {\n let /** @type {?} */ elementInfo = this._elementInfo.get(element);\n\n if (elementInfo) {\n elementInfo.unlisten();\n elementInfo.subject.complete();\n\n this._setClasses(element);\n this._elementInfo.delete(element);\n }\n }\n/**\n * Focuses the element via the specified focus origin.\n * @param {?} element The element to focus.\n * @param {?} origin The focus origin.\n * @return {?}\n */\nfocusVia(element: HTMLElement, origin: FocusOrigin): void {\n this._setOriginForCurrentEventQueue(origin);\n element.focus();\n }\n/**\n * Register necessary event listeners on the document and window.\n * @return {?}\n */\nprivate _registerDocumentEvents() {\n // Do nothing if we're not on the browser platform.\n if (!this._platform.isBrowser) {\n return;\n }\n\n // Note: we listen to events in the capture phase so we can detect them even if the user stops\n // propagation.\n\n // On keydown record the origin and clear any touch event that may be in progress.\n document.addEventListener('keydown', () => {\n this._lastTouchTarget = null;\n this._setOriginForCurrentEventQueue('keyboard');\n }, true);\n\n // On mousedown record the origin only if there is not touch target, since a mousedown can\n // happen as a result of a touch event.\n document.addEventListener('mousedown', () => {\n if (!this._lastTouchTarget) {\n this._setOriginForCurrentEventQueue('mouse');\n }\n }, true);\n\n // When the touchstart event fires the focus event is not yet in the event queue. This means\n // we can't rely on the trick used above (setting timeout of 0ms). Instead we wait 650ms to\n // see if a focus happens.\n document.addEventListener('touchstart', (event: Event) => {\n if (this._touchTimeout != null) {\n clearTimeout(this._touchTimeout);\n }\n this._lastTouchTarget = event.target;\n this._touchTimeout = setTimeout(() => this._lastTouchTarget = null, TOUCH_BUFFER_MS);\n }, true);\n\n // Make a note of when the window regains focus, so we can restore the origin info for the\n // focused element.\n window.addEventListener('focus', () => {\n this._windowFocused = true;\n setTimeout(() => this._windowFocused = false, 0);\n });\n }\n/**\n * Sets the focus classes on the element based on the given focus origin.\n * @param {?} element The element to update the classes on.\n * @param {?=} origin The focus origin.\n * @return {?}\n */\nprivate _setClasses(element: HTMLElement, origin?: FocusOrigin): void {\n const /** @type {?} */ elementInfo = this._elementInfo.get(element);\n\n if (elementInfo) {\n const /** @type {?} */ toggleClass = (className: string, shouldSet: boolean) => {\n shouldSet ? elementInfo.renderer.addClass(element, className) :\n elementInfo.renderer.removeClass(element, className);\n };\n\n toggleClass('cdk-focused', !!origin);\n toggleClass('cdk-touch-focused', origin === 'touch');\n toggleClass('cdk-keyboard-focused', origin === 'keyboard');\n toggleClass('cdk-mouse-focused', origin === 'mouse');\n toggleClass('cdk-program-focused', origin === 'program');\n }\n }\n/**\n * Sets the origin and schedules an async function to clear it at the end of the event queue.\n * @param {?} origin The origin to set.\n * @return {?}\n */\nprivate _setOriginForCurrentEventQueue(origin: FocusOrigin): void {\n this._origin = origin;\n setTimeout(() => this._origin = null, 0);\n }\n/**\n * Checks whether the given focus event was caused by a touchstart event.\n * @param {?} event The focus event to check.\n * @return {?} Whether the event was caused by a touch.\n */\nprivate _wasCausedByTouch(event: FocusEvent): boolean {\n // Note(mmalerba): This implementation is not quite perfect, there is a small edge case.\n // Consider the following dom structure:\n //\n // <div #parent tabindex=\"0\" cdkFocusClasses>\n // <div #child (click)=\"#parent.focus()\"></div>\n // </div>\n //\n // If the user touches the #child element and the #parent is programmatically focused as a\n // result, this code will still consider it to have been caused by the touch event and will\n // apply the cdk-touch-focused class rather than the cdk-program-focused class. This is a\n // relatively small edge-case that can be worked around by using\n // focusVia(parentEl, renderer, 'program') to focus the parent element.\n //\n // If we decide that we absolutely must handle this case correctly, we can do so by listening\n // for the first focus event after the touchstart, and then the first blur event after that\n // focus event. When that blur event fires we know that whatever follows is not a result of the\n // touchstart.\n let /** @type {?} */ focusTarget = event.target;\n return this._lastTouchTarget instanceof Node && focusTarget instanceof Node &&\n (focusTarget === this._lastTouchTarget || focusTarget.contains(this._lastTouchTarget));\n }\n/**\n * Handles focus events on a registered element.\n * @param {?} event The focus event.\n * @param {?} element The monitored element.\n * @return {?}\n */\nprivate _onFocus(event: FocusEvent, element: HTMLElement) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const /** @type {?} */ elementInfo = this._elementInfo.get(element);\n if (!elementInfo || (!elementInfo.checkChildren && element !== event.target)) {\n return;\n }\n\n // If we couldn't detect a cause for the focus event, it's due to one of three reasons:\n // 1) The window has just regained focus, in which case we want to restore the focused state of\n // the element from before the window blurred.\n // 2) It was caused by a touch event, in which case we mark the origin as 'touch'.\n // 3) The element was programmatically focused, in which case we should mark the origin as\n // 'program'.\n if (!this._origin) {\n if (this._windowFocused && this._lastFocusOrigin) {\n this._origin = this._lastFocusOrigin;\n } else if (this._wasCausedByTouch(event)) {\n this._origin = 'touch';\n } else {\n this._origin = 'program';\n }\n }\n\n this._setClasses(element, this._origin);\n elementInfo.subject.next(this._origin);\n this._lastFocusOrigin = this._origin;\n this._origin = null;\n }\n/**\n * Handles blur events on a registered element.\n * @param {?} event The blur event.\n * @param {?} element The monitored element.\n * @return {?}\n */\n_onBlur(event: FocusEvent, element: HTMLElement) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const /** @type {?} */ elementInfo = this._elementInfo.get(element);\n\n if (!elementInfo || (elementInfo.checkChildren && event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n\n this._setClasses(element);\n elementInfo.subject.next(null);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n{type: Platform, },\n];\n}\n\nfunction FocusMonitor_tsickle_Closure_declarations() {\n/** @type {?} */\nFocusMonitor.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nFocusMonitor.ctorParameters;\n/**\n * The focus origin that the next focus event is a result of.\n * @type {?}\n */\nFocusMonitor.prototype._origin;\n/**\n * The FocusOrigin of the last focus event tracked by the FocusMonitor.\n * @type {?}\n */\nFocusMonitor.prototype._lastFocusOrigin;\n/**\n * Whether the window has just been focused.\n * @type {?}\n */\nFocusMonitor.prototype._windowFocused;\n/**\n * The target of the last touch event.\n * @type {?}\n */\nFocusMonitor.prototype._lastTouchTarget;\n/**\n * The timeout id of the touch timeout, used to cancel timeout later.\n * @type {?}\n */\nFocusMonitor.prototype._touchTimeout;\n/**\n * Weak map of elements being monitored to their info.\n * @type {?}\n */\nFocusMonitor.prototype._elementInfo;\n/** @type {?} */\nFocusMonitor.prototype._ngZone;\n/** @type {?} */\nFocusMonitor.prototype._platform;\n}\n\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n * \n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nexport class CdkMonitorFocus implements OnDestroy {\nprivate _monitorSubscription: Subscription;\n cdkFocusChange = new EventEmitter<FocusOrigin>();\n/**\n * @param {?} _elementRef\n * @param {?} _focusMonitor\n * @param {?} renderer\n */\nconstructor(private _elementRef: ElementRef,\nprivate _focusMonitor: FocusMonitor,\n renderer: Renderer2) {\n this._monitorSubscription = this._focusMonitor.monitor(\n this._elementRef.nativeElement, renderer,\n this._elementRef.nativeElement.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => this.cdkFocusChange.emit(origin));\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n this._monitorSubscription.unsubscribe();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Directive, args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ElementRef, },\n{type: FocusMonitor, },\n{type: Renderer2, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'cdkFocusChange': [{ type: Output },],\n};\n}\n\nfunction CdkMonitorFocus_tsickle_Closure_declarations() {\n/** @type {?} */\nCdkMonitorFocus.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nCdkMonitorFocus.ctorParameters;\n/** @type {?} */\nCdkMonitorFocus.propDecorators;\n/** @type {?} */\nCdkMonitorFocus.prototype._monitorSubscription;\n/** @type {?} */\nCdkMonitorFocus.prototype.cdkFocusChange;\n/** @type {?} */\nCdkMonitorFocus.prototype._elementRef;\n/** @type {?} */\nCdkMonitorFocus.prototype._focusMonitor;\n}\n\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} ngZone\n * @param {?} platform\n * @return {?}\n */\nexport function FOCUS_MONITOR_PROVIDER_FACTORY(\n parentDispatcher: FocusMonitor, ngZone: NgZone, platform: Platform) {\n return parentDispatcher || new FocusMonitor(ngZone, platform);\n}\n/**\n * \\@docs-private\n */\nexport const FOCUS_MONITOR_PROVIDER = {\n // If there is already a FocusMonitor available, use that. Otherwise, provide a new one.\n provide: FocusMonitor,\n deps: [[new Optional(), new SkipSelf(), FocusMonitor], NgZone, Platform],\n useFactory: FOCUS_MONITOR_PROVIDER_FACTORY\n};\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable, Optional, SkipSelf} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {addAriaReferencedId, getAriaReferenceIds, removeAriaReferencedId} from './aria-reference';\n\n/**\n * Interface used to register message elements and keep a count of how many registrations have\n * the same message and the reference to the message element used for the aria-describedby.\n */\nexport interface RegisteredMessage {\n messageElement: Element;\n referenceCount: number;\n}\n/**\n * ID used for the body container where all messages are appended.\n */\nexport const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n */\nexport const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n */\nexport const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/**\n * Global incremental identifier for each registered message element.\n */\nlet nextId = 0;\n/**\n * Global map of all registered message elements that have been placed into the document.\n */\nconst messageRegistry = new Map<string, RegisteredMessage>();\n/**\n * Container for all registered messages.\n */\nlet messagesContainer: HTMLElement | null = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n * \\@docs-private\n */\nexport class AriaDescriber {\n/**\n * @param {?} _platform\n */\nconstructor(private _platform: Platform) { }\n/**\n * Adds to the host element an aria-describedby reference to a hidden element that contains\n * the message. If the same message has already been registered, then it will reuse the created\n * message element.\n * @param {?} hostElement\n * @param {?} message\n * @return {?}\n */\ndescribe(hostElement: Element, message: string) {\n if (!this._platform.isBrowser || !message.trim()) { return; }\n\n if (!messageRegistry.has(message)) {\n createMessageElement(message);\n }\n\n if (!isElementDescribedByMessage(hostElement, message)) {\n addMessageReference(hostElement, message);\n }\n }\n/**\n * Removes the host element's aria-describedby reference to the message element.\n * @param {?} hostElement\n * @param {?} message\n * @return {?}\n */\nremoveDescription(hostElement: Element, message: string) {\n if (!this._platform.isBrowser || !message.trim()) {\n return;\n }\n\n if (isElementDescribedByMessage(hostElement, message)) {\n removeMessageReference(hostElement, message);\n }\n\n const /** @type {?} */ registeredMessage = messageRegistry.get(message);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n deleteMessageElement(message);\n }\n\n if (messagesContainer && messagesContainer.childNodes.length === 0) {\n deleteMessagesContainer();\n }\n }\n/**\n * Unregisters all created message elements and removes the message container.\n * @return {?}\n */\nngOnDestroy() {\n if (!this._platform.isBrowser) { return; }\n\n const /** @type {?} */ describedElements = document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n for (let /** @type {?} */ i = 0; i < describedElements.length; i++) {\n removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n\n if (messagesContainer) {\n deleteMessagesContainer();\n }\n\n messageRegistry.clear();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Platform, },\n];\n}\n\nfunction AriaDescriber_tsickle_Closure_declarations() {\n/** @type {?} */\nAriaDescriber.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nAriaDescriber.ctorParameters;\n/** @type {?} */\nAriaDescriber.prototype._platform;\n}\n\n/**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n * @param {?} message\n * @return {?}\n */\nfunction createMessageElement(message: string) {\n const /** @type {?} */ messageElement = document.createElement('div');\n messageElement.setAttribute('id', `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`);\n messageElement.appendChild( /** @type {?} */((document.createTextNode(message))));\n\n if (!messagesContainer) { createMessagesContainer(); } /** @type {?} */((\n messagesContainer)).appendChild(messageElement);\n\n messageRegistry.set(message, {messageElement, referenceCount: 0});\n}\n/**\n * Deletes the message element from the global messages container.\n * @param {?} message\n * @return {?}\n */\nfunction deleteMessageElement(message: string) {\n const /** @type {?} */ registeredMessage = messageRegistry.get(message);\n const /** @type {?} */ messageElement = registeredMessage && registeredMessage.messageElement;\n if (messagesContainer && messageElement) {\n messagesContainer.removeChild(messageElement);\n }\n messageRegistry.delete(message);\n}\n/**\n * Creates the global container for all aria-describedby messages.\n * @return {?}\n */\nfunction createMessagesContainer() {\n messagesContainer = document.createElement('div');\n\n messagesContainer.setAttribute('id', MESSAGES_CONTAINER_ID);\n messagesContainer.setAttribute('aria-hidden', 'true');\n messagesContainer.style.display = 'none';\n document.body.appendChild(messagesContainer);\n}\n/**\n * Deletes the global messages container.\n * @return {?}\n */\nfunction deleteMessagesContainer() {\n document.body.removeChild( /** @type {?} */((messagesContainer)));\n messagesContainer = null;\n}\n/**\n * Removes all cdk-describedby messages that are hosted through the element.\n * @param {?} element\n * @return {?}\n */\nfunction removeCdkDescribedByReferenceIds(element: Element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const /** @type {?} */ originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby')\n .filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n}\n/**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n * @param {?} element\n * @param {?} message\n * @return {?}\n */\nfunction addMessageReference(element: Element, message: string) {\n const /** @type {?} */ registeredMessage = /** @type {?} */(( messageRegistry.get(message)));\n\n // Add the aria-describedby reference and set the describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n\n registeredMessage.referenceCount++;\n}\n/**\n * Removes a message reference from the element using aria-describedby and decrements the registered\n * message's reference count.\n * @param {?} element\n * @param {?} message\n * @return {?}\n */\nfunction removeMessageReference(element: Element, message: string) {\n const /** @type {?} */ registeredMessage = /** @type {?} */(( messageRegistry.get(message)));\n registeredMessage.referenceCount--;\n\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n}\n/**\n * Returns true if the element has been described by the provided message ID.\n * @param {?} element\n * @param {?} message\n * @return {?}\n */\nfunction isElementDescribedByMessage(element: Element, message: string): boolean {\n const /** @type {?} */ referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const /** @type {?} */ registeredMessage = messageRegistry.get(message);\n const /** @type {?} */ messageId = registeredMessage && registeredMessage.messageElement.id;\n\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n}\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} platform\n * @return {?}\n */\nexport function ARIA_DESCRIBER_PROVIDER_FACTORY(\n parentDispatcher: AriaDescriber, platform: Platform) {\n return parentDispatcher || new AriaDescriber(platform);\n}\n/**\n * \\@docs-private\n */\nexport const ARIA_DESCRIBER_PROVIDER = {\n // If there is already an AriaDescriber available, use that. Otherwise, provide a new one.\n provide: AriaDescriber,\n deps: [\n [new Optional(), new SkipSelf(), AriaDescriber],\n Platform\n ],\n useFactory: ARIA_DESCRIBER_PROVIDER_FACTORY\n};\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","\n/**\n * IDs are deliminated by an empty space, as per the spec.\n */\nconst ID_DELIMINATOR = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n * @param {?} el\n * @param {?} attr\n * @param {?} id\n * @return {?}\n */\nexport function addAriaReferencedId(el: Element, attr: string, id: string) {\n const /** @type {?} */ ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) { return; }\n ids.push(id.trim());\n\n el.setAttribute(attr, ids.join(ID_DELIMINATOR));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n * @param {?} el\n * @param {?} attr\n * @param {?} id\n * @return {?}\n */\nexport function removeAriaReferencedId(el: Element, attr: string, id: string) {\n const /** @type {?} */ ids = getAriaReferenceIds(el, attr);\n const /** @type {?} */ filteredIds = ids.filter(val => val != id.trim());\n\n el.setAttribute(attr, filteredIds.join(ID_DELIMINATOR));\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n * @param {?} el\n * @param {?} attr\n * @return {?}\n */\nexport function getAriaReferenceIds(el: Element, attr: string): string[] {\n // Get string array of all individual ids (whitespace deliminated) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {\n Injectable,\n InjectionToken,\n Optional,\n Inject,\n SkipSelf,\n OnDestroy,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n\nexport const /** @type {?} */ LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken<HTMLElement>('liveAnnouncerElement');\n\n/** Possible politeness levels. */\nexport type AriaLivePoliteness = 'off' | 'polite' | 'assertive';\nexport class LiveAnnouncer implements OnDestroy {\nprivate _liveElement: Element;\n/**\n * @param {?} elementToken\n * @param {?} platform\n */\nconstructor(\n elementToken: any,\n platform: Platform) {\n // Only do anything if we're on the browser platform.\n if (platform.isBrowser) {\n // We inject the live element as `any` because the constructor signature cannot reference\n // browser globals (HTMLElement) on non-browser environments, since having a class decorator\n // causes TypeScript to preserve the constructor signature types.\n this._liveElement = elementToken || this._createLiveElement();\n }\n }\n/**\n * Announces a message to screenreaders.\n * @param {?} message Message to be announced to the screenreader\n * @param {?=} politeness The politeness of the announcer element\n * @return {?}\n */\nannounce(message: string, politeness: AriaLivePoliteness = 'polite'): void {\n this._liveElement.textContent = '';\n\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n setTimeout(() => this._liveElement.textContent = message, 100);\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n if (this._liveElement && this._liveElement.parentNode) {\n this._liveElement.parentNode.removeChild(this._liveElement);\n }\n }\n/**\n * @return {?}\n */\nprivate _createLiveElement(): Element {\n let /** @type {?} */ liveEl = document.createElement('div');\n\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n\n document.body.appendChild(liveEl);\n\n return liveEl;\n }\n\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LIVE_ANNOUNCER_ELEMENT_TOKEN, ] }, ]},\n{type: Platform, },\n];\n}\n\nfunction LiveAnnouncer_tsickle_Closure_declarations() {\n/** @type {?} */\nLiveAnnouncer.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nLiveAnnouncer.ctorParameters;\n/** @type {?} */\nLiveAnnouncer.prototype._liveElement;\n}\n\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} liveElement\n * @param {?} platform\n * @return {?}\n */\nexport function LIVE_ANNOUNCER_PROVIDER_FACTORY(\n parentDispatcher: LiveAnnouncer, liveElement: any, platform: Platform) {\n return parentDispatcher || new LiveAnnouncer(liveElement, platform);\n}\n/**\n * \\@docs-private\n */\nexport const LIVE_ANNOUNCER_PROVIDER = {\n // If there is already a LiveAnnouncer available, use that. Otherwise, provide a new one.\n provide: LiveAnnouncer,\n deps: [\n [new Optional(), new SkipSelf(), LiveAnnouncer],\n [new Optional(), new Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN)],\n Platform,\n ],\n useFactory: LIVE_ANNOUNCER_PROVIDER_FACTORY\n};\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n AfterContentInit,\n Injectable,\n} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {first} from '@angular/cdk/rxjs';\nimport {InteractivityChecker} from './interactivity-checker';\n/**\n * Class that allows for trapping focus within a DOM element.\n * \n * NOTE: This class currently uses a very simple (naive) approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like tabIndex > 0, flex `order`, and shadow roots can cause to two to misalign.\n * This will be replaced with a more intelligent solution before the library is considered stable.\n */\nexport class FocusTrap {\nprivate _startAnchor: HTMLElement | null;\nprivate _endAnchor: HTMLElement | null;\n/**\n * Whether the focus trap is active.\n * @return {?}\n */\nget enabled(): boolean { return this._enabled; }\n/**\n * @param {?} val\n * @return {?}\n */\nset enabled(val: boolean) {\n this._enabled = val;\n\n if (this._startAnchor && this._endAnchor) {\n this._startAnchor.tabIndex = this._endAnchor.tabIndex = this._enabled ? 0 : -1;\n }\n }\nprivate _enabled: boolean = true;\n/**\n * @param {?} _element\n * @param {?} _platform\n * @param {?} _checker\n * @param {?} _ngZone\n * @param {?=} deferAnchors\n */\nconstructor(\nprivate _element: HTMLElement,\nprivate _platform: Platform,\nprivate _checker: InteractivityChecker,\nprivate _ngZone: NgZone,\n deferAnchors = false) {\n\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n/**\n * Destroys the focus trap by cleaning up the anchors.\n * @return {?}\n */\ndestroy() {\n if (this._startAnchor && this._startAnchor.parentNode) {\n this._startAnchor.parentNode.removeChild(this._startAnchor);\n }\n\n if (this._endAnchor && this._endAnchor.parentNode) {\n this._endAnchor.parentNode.removeChild(this._endAnchor);\n }\n\n this._startAnchor = this._endAnchor = null;\n }\n/**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @return {?}\n */\nattachAnchors(): void {\n // If we're not on the browser, there can be no focus to trap.\n if (!this._platform.isBrowser) {\n return;\n }\n\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n }\n\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n }\n\n this._ngZone.runOutsideAngular(() => { /** @type {?} */((\n this._startAnchor)).addEventListener('focus', () => {\n this.focusLastTabbableElement();\n }); /** @type {?} */((\n\n this._endAnchor)).addEventListener('focus', () => {\n this.focusFirstTabbableElement();\n });\n\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore( /** @type {?} */((this._startAnchor)), this._element);\n this._element.parentNode.insertBefore( /** @type {?} */((this._endAnchor)), this._element.nextSibling);\n }\n });\n }\n/**\n * Waits for the zone to stabilize, then either focuses the first element that the\n * user specified, or the first tabbable element.\n * @return {?} Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfuly.\n */\nfocusInitialElementWhenReady(): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement()));\n });\n }\n/**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @return {?} Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfuly.\n */\nfocusFirstTabbableElementWhenReady(): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement()));\n });\n }\n/**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @return {?} Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfuly.\n */\nfocusLastTabbableElementWhenReady(): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement()));\n });\n }\n/**\n * Get the specified boundary element of the trapped region.\n * @param {?} bound The boundary to get (start or end of trapped region).\n * @return {?} The boundary element.\n */\nprivate _getRegionBoundary(bound: 'start' | 'end'): HTMLElement | null {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n let /** @type {?} */ markers = /** @type {?} */(( this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` +\n `[cdk-focus-${bound}]`) as NodeListOf<HTMLElement>));\n\n for (let /** @type {?} */ i = 0; i < markers.length; i++) {\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}',` +\n ` use 'cdk-focus-region-${bound}' instead.`, markers[i]);\n }\n }\n\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length ?\n markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n }\n/**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @return {?} Returns whether focus was moved successfuly.\n */\nfocusInitialElement(): boolean {\n const /** @type {?} */ redirectToElement = /** @type {?} */(( this._element.querySelector('[cdk-focus-initial]') as HTMLElement));\n\n if (redirectToElement) {\n redirectToElement.focus();\n return true;\n }\n\n return this.focusFirstTabbableElement();\n }\n/**\n * Focuses the first tabbable element within the focus trap region.\n * @return {?} Returns whether focus was moved successfuly.\n */\nfocusFirstTabbableElement(): boolean {\n const /** @type {?} */ redirectToElement = this._getRegionBoundary('start');\n\n if (redirectToElement) {\n redirectToElement.focus();\n }\n\n return !!redirectToElement;\n }\n/**\n * Focuses the last tabbable element within the focus trap region.\n * @return {?} Returns whether focus was moved successfuly.\n */\nfocusLastTabbableElement(): boolean {\n const /** @type {?} */ redirectToElement = this._getRegionBoundary('end');\n\n if (redirectToElement) {\n redirectToElement.focus();\n }\n\n return !!redirectToElement;\n }\n/**\n * Get the first tabbable element from a DOM subtree (inclusive).\n * @param {?} root\n * @return {?}\n */\nprivate _getFirstTabbableElement(root: HTMLElement): HTMLElement | null {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n let /** @type {?} */ children = root.children || root.childNodes;\n\n for (let /** @type {?} */ i = 0; i < children.length; i++) {\n let /** @type {?} */ tabbableChild = children[i].nodeType === Node.ELEMENT_NODE ?\n this._getFirstTabbableElement( /** @type {?} */((children[i] as HTMLElement))) :\n null;\n\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n\n return null;\n }\n/**\n * Get the last tabbable element from a DOM subtree (inclusive).\n * @param {?} root\n * @return {?}\n */\nprivate _getLastTabbableElement(root: HTMLElement): HTMLElement | null {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n\n // Iterate in reverse DOM order.\n let /** @type {?} */ children = root.children || root.childNodes;\n\n for (let /** @type {?} */ i = children.length - 1; i >= 0; i--) {\n let /** @type {?} */ tabbableChild = children[i].nodeType === Node.ELEMENT_NODE ?\n this._getLastTabbableElement( /** @type {?} */((children[i] as HTMLElement))) :\n null;\n\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n\n return null;\n }\n/**\n * Creates an anchor element.\n * @return {?}\n */\nprivate _createAnchor(): HTMLElement {\n let /** @type {?} */ anchor = document.createElement('div');\n anchor.tabIndex = this._enabled ? 0 : -1;\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n return anchor;\n }\n/**\n * Executes a function when the zone is stable.\n * @param {?} fn\n * @return {?}\n */\nprivate _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n first.call(this._ngZone.onStable.asObservable()).subscribe(fn);\n }\n }\n}\n\nfunction FocusTrap_tsickle_Closure_declarations() {\n/** @type {?} */\nFocusTrap.prototype._startAnchor;\n/** @type {?} */\nFocusTrap.prototype._endAnchor;\n/** @type {?} */\nFocusTrap.prototype._enabled;\n/** @type {?} */\nFocusTrap.prototype._element;\n/** @type {?} */\nFocusTrap.prototype._platform;\n/** @type {?} */\nFocusTrap.prototype._checker;\n/** @type {?} */\nFocusTrap.prototype._ngZone;\n}\n\n/**\n * Factory that allows easy instantiation of focus traps.\n */\nexport class FocusTrapFactory {\n/**\n * @param {?} _checker\n * @param {?} _platform\n * @param {?} _ngZone\n */\nconstructor(\nprivate _checker: InteractivityChecker,\nprivate _platform: Platform,\nprivate _ngZone: NgZone) { }\n/**\n * @param {?} element\n * @param {?=} deferAnchors\n * @return {?}\n */\ncreate(element: HTMLElement, deferAnchors = false): FocusTrap {\n return new FocusTrap(element, this._platform, this._checker, this._ngZone, deferAnchors);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: InteractivityChecker, },\n{type: Platform, },\n{type: NgZone, },\n];\n}\n\nfunction FocusTrapFactory_tsickle_Closure_declarations() {\n/** @type {?} */\nFocusTrapFactory.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nFocusTrapFactory.ctorParameters;\n/** @type {?} */\nFocusTrapFactory.prototype._checker;\n/** @type {?} */\nFocusTrapFactory.prototype._platform;\n/** @type {?} */\nFocusTrapFactory.prototype._ngZone;\n}\n\n/**\n * Directive for trapping focus within a region.\n * @deprecated\n */\nexport class FocusTrapDeprecatedDirective implements OnDestroy, AfterContentInit {\n focusTrap: FocusTrap;\n/**\n * Whether the focus trap is active.\n * @return {?}\n */\nget disabled(): boolean { return !this.focusTrap.enabled; }\n/**\n * @param {?} val\n * @return {?}\n */\nset disabled(val: boolean) {\n this.focusTrap.enabled = !coerceBooleanProperty(val);\n }\n/**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n */\nconstructor(private _elementRef: ElementRef,\nprivate _focusTrapFactory: FocusTrapFactory) {\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n this.focusTrap.destroy();\n }\n/**\n * @return {?}\n */\nngAfterContentInit() {\n this.focusTrap.attachAnchors();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Directive, args: [{\n selector: 'cdk-focus-trap',\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ElementRef, },\n{type: FocusTrapFactory, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'disabled': [{ type: Input },],\n};\n}\n\nfunction FocusTrapDeprecatedDirective_tsickle_Closure_declarations() {\n/** @type {?} */\nFocusTrapDeprecatedDirective.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nFocusTrapDeprecatedDirective.ctorParameters;\n/** @type {?} */\nFocusTrapDeprecatedDirective.propDecorators;\n/** @type {?} */\nFocusTrapDeprecatedDirective.prototype.focusTrap;\n/** @type {?} */\nFocusTrapDeprecatedDirective.prototype._elementRef;\n/** @type {?} */\nFocusTrapDeprecatedDirective.prototype._focusTrapFactory;\n}\n\n/**\n * Directive for trapping focus within a region.\n */\nexport class FocusTrapDirective implements OnDestroy, AfterContentInit {\n focusTrap: FocusTrap;\n/**\n * Whether the focus trap is active.\n * @return {?}\n */\nget enabled(): boolean { return this.focusTrap.enabled; }\n/**\n * @param {?} value\n * @return {?}\n */\nset enabled(value: boolean) { this.focusTrap.enabled = coerceBooleanProperty(value); }\n/**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n */\nconstructor(private _elementRef: ElementRef,\nprivate _focusTrapFactory: FocusTrapFactory) {\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n this.focusTrap.destroy();\n }\n/**\n * @return {?}\n */\nngAfterContentInit() {\n this.focusTrap.attachAnchors();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Directive, args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ElementRef, },\n{type: FocusTrapFactory, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'enabled': [{ type: Input, args: ['cdkTrapFocus', ] },],\n};\n}\n\nfunction FocusTrapDirective_tsickle_Closure_declarations() {\n/** @type {?} */\nFocusTrapDirective.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nFocusTrapDirective.ctorParameters;\n/** @type {?} */\nFocusTrapDirective.propDecorators;\n/** @type {?} */\nFocusTrapDirective.prototype.focusTrap;\n/** @type {?} */\nFocusTrapDirective.prototype._elementRef;\n/** @type {?} */\nFocusTrapDirective.prototype._focusTrapFactory;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nexport class InteractivityChecker {\n/**\n * @param {?} _platform\n */\nconstructor(private _platform: Platform) {}\n/**\n * Gets whether an element is disabled.\n * \n * @param {?} element Element to be checked.\n * @return {?} Whether the element is disabled.\n */\nisDisabled(element: HTMLElement): boolean {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n/**\n * Gets whether an element is visible for the purposes of interactivity.\n * \n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n * \n * @param {?} element\n * @return {?} Whether the element is visible.\n */\nisVisible(element: HTMLElement): boolean {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n/**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n * \n * @param {?} element Element to be checked.\n * @return {?} Whether the element is tabbable.\n */\nisTabbable(element: HTMLElement): boolean {\n // Nothing is tabbable on the the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n\n let /** @type {?} */ frameElement = /** @type {?} */(( getWindow(element).frameElement as HTMLElement));\n\n if (frameElement) {\n\n let /** @type {?} */ frameType = frameElement && frameElement.nodeName.toLowerCase();\n\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n\n // Webkit and Blink consider anything inside of an <object> element as non-tabbable.\n if ((this._platform.BLINK || this._platform.WEBKIT) && frameType === 'object') {\n return false;\n }\n\n // Webkit and Blink disable tabbing to an element inside of an invisible frame.\n if ((this._platform.BLINK || this._platform.WEBKIT) && !this.isVisible(frameElement)) {\n return false;\n }\n\n }\n\n let /** @type {?} */ nodeName = element.nodeName.toLowerCase();\n let /** @type {?} */ tabIndexValue = getTabIndexValue(element);\n\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n\n if (nodeName === 'iframe') {\n // The frames may be tabbable depending on content, but it's not possibly to reliably\n // investigate the content of the frames.\n return false;\n }\n\n if (nodeName === 'audio') {\n if (!element.hasAttribute('controls')) {\n // By default an <audio> element without the controls enabled is not tabbable.\n return false;\n } else if (this._platform.BLINK) {\n // In Blink <audio controls> elements are always tabbable.\n return true;\n }\n }\n\n if (nodeName === 'video') {\n if (!element.hasAttribute('controls') && this._platform.TRIDENT) {\n // In Trident a <video> element without the controls enabled is not tabbable.\n return false;\n } else if (this._platform.BLINK || this._platform.FIREFOX) {\n // In Chrome and Firefox <video controls> elements are always tabbable.\n return true;\n }\n }\n\n if (nodeName === 'object' && (this._platform.BLINK || this._platform.WEBKIT)) {\n // In all Blink and WebKit based browsers <object> elements are never tabbable.\n return false;\n }\n\n // In iOS the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n\n return element.tabIndex >= 0;\n }\n/**\n * Gets whether an element can be focused by the user.\n * \n * @param {?} element Element to be checked.\n * @return {?} Whether the element is focusable.\n */\nisFocusable(element: HTMLElement): boolean {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return isPotentiallyFocusable(element) && !this.isDisabled(element) && this.isVisible(element);\n }\n\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Platform, },\n];\n}\n\nfunction InteractivityChecker_tsickle_Closure_declarations() {\n/** @type {?} */\nInteractivityChecker.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nInteractivityChecker.ctorParameters;\n/** @type {?} */\nInteractivityChecker.prototype._platform;\n}\n\n/**\n * Checks whether the specified element has any geometry / rectangles.\n * @param {?} element\n * @return {?}\n */\nfunction hasGeometry(element: HTMLElement): boolean {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n}\n/**\n * Gets whether an element's\n * @param {?} element\n * @return {?}\n */\nfunction isNativeFormElement(element: Node) {\n let /** @type {?} */ nodeName = element.nodeName.toLowerCase();\n return nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea';\n}\n/**\n * Gets whether an element is an <input type=\"hidden\">.\n * @param {?} element\n * @return {?}\n */\nfunction isHiddenInput(element: HTMLElement): boolean {\n return isInputElement(element) && element.type == 'hidden';\n}\n/**\n * Gets whether an element is an anchor that has an href attribute.\n * @param {?} element\n * @return {?}\n */\nfunction isAnchorWithHref(element: HTMLElement): boolean {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/**\n * Gets whether an element is an input element.\n * @param {?} element\n * @return {?}\n */\nfunction isInputElement(element: HTMLElement): element is HTMLInputElement {\n return element.nodeName.toLowerCase() == 'input';\n}\n/**\n * Gets whether an element is an anchor element.\n * @param {?} element\n * @return {?}\n */\nfunction isAnchorElement(element: HTMLElement): element is HTMLAnchorElement {\n return element.nodeName.toLowerCase() == 'a';\n}\n/**\n * Gets whether an element has a valid tabindex.\n * @param {?} element\n * @return {?}\n */\nfunction hasValidTabIndex(element: HTMLElement): boolean {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n\n let /** @type {?} */ tabIndex = element.getAttribute('tabindex');\n\n // IE11 parses tabindex=\"\" as the value \"-32768\"\n if (tabIndex == '-32768') {\n return false;\n }\n\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n * @param {?} element\n * @return {?}\n */\nfunction getTabIndexValue(element: HTMLElement): number | null {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const /** @type {?} */ tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/**\n * Checks whether the specified element is potentially tabbable on iOS\n * @param {?} element\n * @return {?}\n */\nfunction isPotentiallyTabbableIOS(element: HTMLElement): boolean {\n let /** @type {?} */ nodeName = element.nodeName.toLowerCase();\n let /** @type {?} */ inputType = nodeName === 'input' && ( /** @type {?} */((element as HTMLInputElement))).type;\n\n return inputType === 'text'\n || inputType === 'password'\n || nodeName === 'select'\n || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n * @param {?} element\n * @return {?}\n */\nfunction isPotentiallyFocusable(element: HTMLElement): boolean {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n\n return isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element);\n}\n/**\n * Gets the parent window of a DOM node with regards of being inside of an iframe.\n * @param {?} node\n * @return {?}\n */\nfunction getWindow(node: HTMLElement): Window {\n return node.ownerDocument.defaultView || window;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}"],"names":["tslib_1.__extends","A","Z","ZERO","NINE","DOWN_ARROW","map","filter","debounceTime","doOperator","Subject","Renderer2","EventEmitter","Platform","Injectable","of","Optional","SkipSelf","Inject","InjectionToken","Directive","coerceBooleanProperty","ElementRef","NgZone"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cdk-a11y.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","cdk/a11y.es5.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { A, DOWN_ARROW, NINE, TAB, UP_ARROW, Z, ZERO } from '@angular/cdk/keycodes';\nimport { RxChain, debounceTime, doOperator, filter, first, map } from '@angular/cdk/rxjs';\nimport { Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Input, NgModule, NgZone, Optional, Output, Renderer2, SkipSelf } from '@angular/core';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { of } from 'rxjs/observable/of';\nimport { CommonModule } from '@angular/common';\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nvar ListKeyManager = (function () {\n /**\n * @param {?} _items\n */\n function ListKeyManager(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n }\n /**\n * Turns on wrapping mode, which ensures that the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @return {?}\n */\n ListKeyManager.prototype.withWrap = function () {\n this._wrap = true;\n return this;\n };\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param {?=} debounceInterval Time to wait after the last keystroke before setting the active item.\n * @return {?}\n */\n ListKeyManager.prototype.withTypeAhead = function (debounceInterval) {\n var _this = this;\n if (debounceInterval === void 0) { debounceInterval = 200; }\n if (this._items.length && this._items.some(function (item) { return typeof item.getLabel !== 'function'; })) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = RxChain.from(this._letterKeyStream)\n .call(doOperator, function (keyCode) { return _this._pressedLetters.push(keyCode); })\n .call(debounceTime, debounceInterval)\n .call(filter, function () { return _this._pressedLetters.length > 0; })\n .call(map, function () { return _this._pressedLetters.join(''); })\n .subscribe(function (inputString) {\n var /** @type {?} */ items = _this._items.toArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (var /** @type {?} */ i = 1; i < items.length + 1; i++) {\n var /** @type {?} */ index = (_this._activeItemIndex + i) % items.length;\n var /** @type {?} */ item = items[index];\n if (!item.disabled && ((item.getLabel))().toUpperCase().trim().indexOf(inputString) === 0) {\n _this.setActiveItem(index);\n break;\n }\n }\n _this._pressedLetters = [];\n });\n return this;\n };\n /**\n * Sets the active item to the item at the index specified.\n * @param {?} index The index of the item to be set as active.\n * @return {?}\n */\n ListKeyManager.prototype.setActiveItem = function (index) {\n this._activeItemIndex = index;\n this._activeItem = this._items.toArray()[index];\n };\n /**\n * Sets the active item depending on the key event passed in.\n * @param {?} event Keyboard event to be used for determining which element should be active.\n * @return {?}\n */\n ListKeyManager.prototype.onKeydown = function (event) {\n switch (event.keyCode) {\n case DOWN_ARROW:\n this.setNextItemActive();\n break;\n case UP_ARROW:\n this.setPreviousItemActive();\n break;\n case TAB:\n this.tabOut.next();\n return;\n default:\n var /** @type {?} */ keyCode = event.keyCode;\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n };\n Object.defineProperty(ListKeyManager.prototype, \"activeItemIndex\", {\n /**\n * Index of the currently active item.\n * @return {?}\n */\n get: function () {\n return this._activeItemIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ListKeyManager.prototype, \"activeItem\", {\n /**\n * The active item.\n * @return {?}\n */\n get: function () {\n return this._activeItem;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the active item to the first enabled item in the list.\n * @return {?}\n */\n ListKeyManager.prototype.setFirstItemActive = function () {\n this._setActiveItemByIndex(0, 1);\n };\n /**\n * Sets the active item to the last enabled item in the list.\n * @return {?}\n */\n ListKeyManager.prototype.setLastItemActive = function () {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n };\n /**\n * Sets the active item to the next enabled item in the list.\n * @return {?}\n */\n ListKeyManager.prototype.setNextItemActive = function () {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n };\n /**\n * Sets the active item to a previous enabled item in the list.\n * @return {?}\n */\n ListKeyManager.prototype.setPreviousItemActive = function () {\n this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n };\n /**\n * Allows setting of the activeItemIndex without any other effects.\n * @param {?} index The new activeItemIndex.\n * @return {?}\n */\n ListKeyManager.prototype.updateActiveItemIndex = function (index) {\n this._activeItemIndex = index;\n };\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n * @param {?} delta\n * @param {?=} items\n * @return {?}\n */\n ListKeyManager.prototype._setActiveItemByDelta = function (delta, items) {\n if (items === void 0) { items = this._items.toArray(); }\n this._wrap ? this._setActiveInWrapMode(delta, items)\n : this._setActiveInDefaultMode(delta, items);\n };\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n * @param {?} delta\n * @param {?} items\n * @return {?}\n */\n ListKeyManager.prototype._setActiveInWrapMode = function (delta, items) {\n // when active item would leave menu, wrap to beginning or end\n this._activeItemIndex =\n (this._activeItemIndex + delta + items.length) % items.length;\n // skip all disabled menu items recursively until an enabled one is reached\n if (items[this._activeItemIndex].disabled) {\n this._setActiveInWrapMode(delta, items);\n }\n else {\n this.setActiveItem(this._activeItemIndex);\n }\n };\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n * @param {?} delta\n * @param {?} items\n * @return {?}\n */\n ListKeyManager.prototype._setActiveInDefaultMode = function (delta, items) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta, items);\n };\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n * @param {?} index\n * @param {?} fallbackDelta\n * @param {?=} items\n * @return {?}\n */\n ListKeyManager.prototype._setActiveItemByIndex = function (index, fallbackDelta, items) {\n if (items === void 0) { items = this._items.toArray(); }\n if (!items[index]) {\n return;\n }\n while (items[index].disabled) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n };\n return ListKeyManager;\n}());\n\nvar ActiveDescendantKeyManager = (function (_super) {\n __extends(ActiveDescendantKeyManager, _super);\n function ActiveDescendantKeyManager() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * This method sets the active item to the item at the specified index.\n * It also adds active styles to the newly active item and removes active\n * styles from the previously active item.\n * @param {?} index\n * @return {?}\n */\n ActiveDescendantKeyManager.prototype.setActiveItem = function (index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n _super.prototype.setActiveItem.call(this, index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n };\n return ActiveDescendantKeyManager;\n}(ListKeyManager));\n\n/**\n * IDs are deliminated by an empty space, as per the spec.\n */\nvar ID_DELIMINATOR = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n * @param {?} el\n * @param {?} attr\n * @param {?} id\n * @return {?}\n */\nfunction addAriaReferencedId(el, attr, id) {\n var /** @type {?} */ ids = getAriaReferenceIds(el, attr);\n if (ids.some(function (existingId) { return existingId.trim() == id.trim(); })) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMINATOR));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n * @param {?} el\n * @param {?} attr\n * @param {?} id\n * @return {?}\n */\nfunction removeAriaReferencedId(el, attr, id) {\n var /** @type {?} */ ids = getAriaReferenceIds(el, attr);\n var /** @type {?} */ filteredIds = ids.filter(function (val) { return val != id.trim(); });\n el.setAttribute(attr, filteredIds.join(ID_DELIMINATOR));\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n * @param {?} el\n * @param {?} attr\n * @return {?}\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace deliminated) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * ID used for the body container where all messages are appended.\n */\nvar MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n */\nvar CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n */\nvar CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/**\n * Global incremental identifier for each registered message element.\n */\nvar nextId = 0;\n/**\n * Global map of all registered message elements that have been placed into the document.\n */\nvar messageRegistry = new Map();\n/**\n * Container for all registered messages.\n */\nvar messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n * \\@docs-private\n */\nvar AriaDescriber = (function () {\n /**\n * @param {?} _platform\n */\n function AriaDescriber(_platform) {\n this._platform = _platform;\n }\n /**\n * Adds to the host element an aria-describedby reference to a hidden element that contains\n * the message. If the same message has already been registered, then it will reuse the created\n * message element.\n * @param {?} hostElement\n * @param {?} message\n * @return {?}\n */\n AriaDescriber.prototype.describe = function (hostElement, message) {\n if (!this._platform.isBrowser || !message.trim()) {\n return;\n }\n if (!messageRegistry.has(message)) {\n createMessageElement(message);\n }\n if (!isElementDescribedByMessage(hostElement, message)) {\n addMessageReference(hostElement, message);\n }\n };\n /**\n * Removes the host element's aria-describedby reference to the message element.\n * @param {?} hostElement\n * @param {?} message\n * @return {?}\n */\n AriaDescriber.prototype.removeDescription = function (hostElement, message) {\n if (!this._platform.isBrowser || !message.trim()) {\n return;\n }\n if (isElementDescribedByMessage(hostElement, message)) {\n removeMessageReference(hostElement, message);\n }\n var /** @type {?} */ registeredMessage = messageRegistry.get(message);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n deleteMessageElement(message);\n }\n if (messagesContainer && messagesContainer.childNodes.length === 0) {\n deleteMessagesContainer();\n }\n };\n /**\n * Unregisters all created message elements and removes the message container.\n * @return {?}\n */\n AriaDescriber.prototype.ngOnDestroy = function () {\n if (!this._platform.isBrowser) {\n return;\n }\n var /** @type {?} */ describedElements = document.querySelectorAll(\"[\" + CDK_DESCRIBEDBY_HOST_ATTRIBUTE + \"]\");\n for (var /** @type {?} */ i = 0; i < describedElements.length; i++) {\n removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n if (messagesContainer) {\n deleteMessagesContainer();\n }\n messageRegistry.clear();\n };\n AriaDescriber.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n AriaDescriber.ctorParameters = function () { return [\n { type: Platform, },\n ]; };\n return AriaDescriber;\n}());\n/**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n * @param {?} message\n * @return {?}\n */\nfunction createMessageElement(message) {\n var /** @type {?} */ messageElement = document.createElement('div');\n messageElement.setAttribute('id', CDK_DESCRIBEDBY_ID_PREFIX + \"-\" + nextId++);\n messageElement.appendChild(/** @type {?} */ ((document.createTextNode(message))));\n if (!messagesContainer) {\n createMessagesContainer();\n } /** @type {?} */\n ((messagesContainer)).appendChild(messageElement);\n messageRegistry.set(message, { messageElement: messageElement, referenceCount: 0 });\n}\n/**\n * Deletes the message element from the global messages container.\n * @param {?} message\n * @return {?}\n */\nfunction deleteMessageElement(message) {\n var /** @type {?} */ registeredMessage = messageRegistry.get(message);\n var /** @type {?} */ messageElement = registeredMessage && registeredMessage.messageElement;\n if (messagesContainer && messageElement) {\n messagesContainer.removeChild(messageElement);\n }\n messageRegistry.delete(message);\n}\n/**\n * Creates the global container for all aria-describedby messages.\n * @return {?}\n */\nfunction createMessagesContainer() {\n messagesContainer = document.createElement('div');\n messagesContainer.setAttribute('id', MESSAGES_CONTAINER_ID);\n messagesContainer.setAttribute('aria-hidden', 'true');\n messagesContainer.style.display = 'none';\n document.body.appendChild(messagesContainer);\n}\n/**\n * Deletes the global messages container.\n * @return {?}\n */\nfunction deleteMessagesContainer() {\n document.body.removeChild(/** @type {?} */ ((messagesContainer)));\n messagesContainer = null;\n}\n/**\n * Removes all cdk-describedby messages that are hosted through the element.\n * @param {?} element\n * @return {?}\n */\nfunction removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n var /** @type {?} */ originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby')\n .filter(function (id) { return id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0; });\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n}\n/**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n * @param {?} element\n * @param {?} message\n * @return {?}\n */\nfunction addMessageReference(element, message) {\n var /** @type {?} */ registeredMessage = ((messageRegistry.get(message)));\n // Add the aria-describedby reference and set the describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n registeredMessage.referenceCount++;\n}\n/**\n * Removes a message reference from the element using aria-describedby and decrements the registered\n * message's reference count.\n * @param {?} element\n * @param {?} message\n * @return {?}\n */\nfunction removeMessageReference(element, message) {\n var /** @type {?} */ registeredMessage = ((messageRegistry.get(message)));\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n}\n/**\n * Returns true if the element has been described by the provided message ID.\n * @param {?} element\n * @param {?} message\n * @return {?}\n */\nfunction isElementDescribedByMessage(element, message) {\n var /** @type {?} */ referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n var /** @type {?} */ registeredMessage = messageRegistry.get(message);\n var /** @type {?} */ messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n}\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} platform\n * @return {?}\n */\nfunction ARIA_DESCRIBER_PROVIDER_FACTORY(parentDispatcher, platform) {\n return parentDispatcher || new AriaDescriber(platform);\n}\n/**\n * \\@docs-private\n */\nvar ARIA_DESCRIBER_PROVIDER = {\n // If there is already an AriaDescriber available, use that. Otherwise, provide a new one.\n provide: AriaDescriber,\n deps: [\n [new Optional(), new SkipSelf(), AriaDescriber],\n Platform\n ],\n useFactory: ARIA_DESCRIBER_PROVIDER_FACTORY\n};\n\n/**\n * Screenreaders will often fire fake mousedown events when a focusable element\n * is activated using the keyboard. We can typically distinguish between these faked\n * mousedown events and real mousedown events using the \"buttons\" property. While\n * real mousedowns will indicate the mouse button that was pressed (e.g. \"1\" for\n * the left mouse button), faked mousedowns will usually set the property value to 0.\n * @param {?} event\n * @return {?}\n */\nfunction isFakeMousedownFromScreenReader(event) {\n return event.buttons === 0;\n}\n\nvar FocusKeyManager = (function (_super) {\n __extends(FocusKeyManager, _super);\n function FocusKeyManager() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * This method sets the active item to the item at the specified index.\n * It also adds focuses the newly active item.\n * @param {?} index\n * @return {?}\n */\n FocusKeyManager.prototype.setActiveItem = function (index) {\n _super.prototype.setActiveItem.call(this, index);\n if (this.activeItem) {\n this.activeItem.focus();\n }\n };\n return FocusKeyManager;\n}(ListKeyManager));\n\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nvar InteractivityChecker = (function () {\n /**\n * @param {?} _platform\n */\n function InteractivityChecker(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param {?} element Element to be checked.\n * @return {?} Whether the element is disabled.\n */\n InteractivityChecker.prototype.isDisabled = function (element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n };\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @param {?} element\n * @return {?} Whether the element is visible.\n */\n InteractivityChecker.prototype.isVisible = function (element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n };\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param {?} element Element to be checked.\n * @return {?} Whether the element is tabbable.\n */\n InteractivityChecker.prototype.isTabbable = function (element) {\n // Nothing is tabbable on the the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n var /** @type {?} */ frameElement = (getWindow(element).frameElement);\n if (frameElement) {\n var /** @type {?} */ frameType = frameElement && frameElement.nodeName.toLowerCase();\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Webkit and Blink consider anything inside of an <object> element as non-tabbable.\n if ((this._platform.BLINK || this._platform.WEBKIT) && frameType === 'object') {\n return false;\n }\n // Webkit and Blink disable tabbing to an element inside of an invisible frame.\n if ((this._platform.BLINK || this._platform.WEBKIT) && !this.isVisible(frameElement)) {\n return false;\n }\n }\n var /** @type {?} */ nodeName = element.nodeName.toLowerCase();\n var /** @type {?} */ tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe') {\n // The frames may be tabbable depending on content, but it's not possibly to reliably\n // investigate the content of the frames.\n return false;\n }\n if (nodeName === 'audio') {\n if (!element.hasAttribute('controls')) {\n // By default an <audio> element without the controls enabled is not tabbable.\n return false;\n }\n else if (this._platform.BLINK) {\n // In Blink <audio controls> elements are always tabbable.\n return true;\n }\n }\n if (nodeName === 'video') {\n if (!element.hasAttribute('controls') && this._platform.TRIDENT) {\n // In Trident a <video> element without the controls enabled is not tabbable.\n return false;\n }\n else if (this._platform.BLINK || this._platform.FIREFOX) {\n // In Chrome and Firefox <video controls> elements are always tabbable.\n return true;\n }\n }\n if (nodeName === 'object' && (this._platform.BLINK || this._platform.WEBKIT)) {\n // In all Blink and WebKit based browsers <object> elements are never tabbable.\n return false;\n }\n // In iOS the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n return element.tabIndex >= 0;\n };\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param {?} element Element to be checked.\n * @return {?} Whether the element is focusable.\n */\n InteractivityChecker.prototype.isFocusable = function (element) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return isPotentiallyFocusable(element) && !this.isDisabled(element) && this.isVisible(element);\n };\n InteractivityChecker.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n InteractivityChecker.ctorParameters = function () { return [\n { type: Platform, },\n ]; };\n return InteractivityChecker;\n}());\n/**\n * Checks whether the specified element has any geometry / rectangles.\n * @param {?} element\n * @return {?}\n */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n}\n/**\n * Gets whether an element's\n * @param {?} element\n * @return {?}\n */\nfunction isNativeFormElement(element) {\n var /** @type {?} */ nodeName = element.nodeName.toLowerCase();\n return nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea';\n}\n/**\n * Gets whether an element is an <input type=\"hidden\">.\n * @param {?} element\n * @return {?}\n */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/**\n * Gets whether an element is an anchor that has an href attribute.\n * @param {?} element\n * @return {?}\n */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/**\n * Gets whether an element is an input element.\n * @param {?} element\n * @return {?}\n */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/**\n * Gets whether an element is an anchor element.\n * @param {?} element\n * @return {?}\n */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/**\n * Gets whether an element has a valid tabindex.\n * @param {?} element\n * @return {?}\n */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n var /** @type {?} */ tabIndex = element.getAttribute('tabindex');\n // IE11 parses tabindex=\"\" as the value \"-32768\"\n if (tabIndex == '-32768') {\n return false;\n }\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n * @param {?} element\n * @return {?}\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n var /** @type {?} */ tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/**\n * Checks whether the specified element is potentially tabbable on iOS\n * @param {?} element\n * @return {?}\n */\nfunction isPotentiallyTabbableIOS(element) {\n var /** @type {?} */ nodeName = element.nodeName.toLowerCase();\n var /** @type {?} */ inputType = nodeName === 'input' && ((element)).type;\n return inputType === 'text'\n || inputType === 'password'\n || nodeName === 'select'\n || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n * @param {?} element\n * @return {?}\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element);\n}\n/**\n * Gets the parent window of a DOM node with regards of being inside of an iframe.\n * @param {?} node\n * @return {?}\n */\nfunction getWindow(node) {\n return node.ownerDocument.defaultView || window;\n}\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * NOTE: This class currently uses a very simple (naive) approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like tabIndex > 0, flex `order`, and shadow roots can cause to two to misalign.\n * This will be replaced with a more intelligent solution before the library is considered stable.\n */\nvar FocusTrap = (function () {\n /**\n * @param {?} _element\n * @param {?} _platform\n * @param {?} _checker\n * @param {?} _ngZone\n * @param {?=} deferAnchors\n */\n function FocusTrap(_element, _platform, _checker, _ngZone, deferAnchors) {\n if (deferAnchors === void 0) { deferAnchors = false; }\n this._element = _element;\n this._platform = _platform;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n Object.defineProperty(FocusTrap.prototype, \"enabled\", {\n /**\n * Whether the focus trap is active.\n * @return {?}\n */\n get: function () { return this._enabled; },\n /**\n * @param {?} val\n * @return {?}\n */\n set: function (val) {\n this._enabled = val;\n if (this._startAnchor && this._endAnchor) {\n this._startAnchor.tabIndex = this._endAnchor.tabIndex = this._enabled ? 0 : -1;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Destroys the focus trap by cleaning up the anchors.\n * @return {?}\n */\n FocusTrap.prototype.destroy = function () {\n if (this._startAnchor && this._startAnchor.parentNode) {\n this._startAnchor.parentNode.removeChild(this._startAnchor);\n }\n if (this._endAnchor && this._endAnchor.parentNode) {\n this._endAnchor.parentNode.removeChild(this._endAnchor);\n }\n this._startAnchor = this._endAnchor = null;\n };\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @return {?}\n */\n FocusTrap.prototype.attachAnchors = function () {\n var _this = this;\n // If we're not on the browser, there can be no focus to trap.\n if (!this._platform.isBrowser) {\n return;\n }\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n }\n this._ngZone.runOutsideAngular(function () {\n ((_this._startAnchor)).addEventListener('focus', function () {\n _this.focusLastTabbableElement();\n }); /** @type {?} */\n ((_this._endAnchor)).addEventListener('focus', function () {\n _this.focusFirstTabbableElement();\n });\n if (_this._element.parentNode) {\n _this._element.parentNode.insertBefore(/** @type {?} */ ((_this._startAnchor)), _this._element);\n _this._element.parentNode.insertBefore(/** @type {?} */ ((_this._endAnchor)), _this._element.nextSibling);\n }\n });\n };\n /**\n * Waits for the zone to stabilize, then either focuses the first element that the\n * user specified, or the first tabbable element.\n * @return {?} Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfuly.\n */\n FocusTrap.prototype.focusInitialElementWhenReady = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this._executeOnStable(function () { return resolve(_this.focusInitialElement()); });\n });\n };\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @return {?} Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfuly.\n */\n FocusTrap.prototype.focusFirstTabbableElementWhenReady = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this._executeOnStable(function () { return resolve(_this.focusFirstTabbableElement()); });\n });\n };\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @return {?} Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfuly.\n */\n FocusTrap.prototype.focusLastTabbableElementWhenReady = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this._executeOnStable(function () { return resolve(_this.focusLastTabbableElement()); });\n });\n };\n /**\n * Get the specified boundary element of the trapped region.\n * @param {?} bound The boundary to get (start or end of trapped region).\n * @return {?} The boundary element.\n */\n FocusTrap.prototype._getRegionBoundary = function (bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n var /** @type {?} */ markers = (this._element.querySelectorAll(\"[cdk-focus-region-\" + bound + \"], \" +\n (\"[cdk-focus-\" + bound + \"]\")));\n for (var /** @type {?} */ i = 0; i < markers.length; i++) {\n if (markers[i].hasAttribute(\"cdk-focus-\" + bound)) {\n console.warn(\"Found use of deprecated attribute 'cdk-focus-\" + bound + \"',\" +\n (\" use 'cdk-focus-region-\" + bound + \"' instead.\"), markers[i]);\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length ?\n markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n };\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @return {?} Returns whether focus was moved successfuly.\n */\n FocusTrap.prototype.focusInitialElement = function () {\n var /** @type {?} */ redirectToElement = (this._element.querySelector('[cdk-focus-initial]'));\n if (redirectToElement) {\n redirectToElement.focus();\n return true;\n }\n return this.focusFirstTabbableElement();\n };\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @return {?} Returns whether focus was moved successfuly.\n */\n FocusTrap.prototype.focusFirstTabbableElement = function () {\n var /** @type {?} */ redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus();\n }\n return !!redirectToElement;\n };\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @return {?} Returns whether focus was moved successfuly.\n */\n FocusTrap.prototype.focusLastTabbableElement = function () {\n var /** @type {?} */ redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus();\n }\n return !!redirectToElement;\n };\n /**\n * Get the first tabbable element from a DOM subtree (inclusive).\n * @param {?} root\n * @return {?}\n */\n FocusTrap.prototype._getFirstTabbableElement = function (root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n var /** @type {?} */ children = root.children || root.childNodes;\n for (var /** @type {?} */ i = 0; i < children.length; i++) {\n var /** @type {?} */ tabbableChild = children[i].nodeType === Node.ELEMENT_NODE ?\n this._getFirstTabbableElement(/** @type {?} */ (children[i])) :\n null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n };\n /**\n * Get the last tabbable element from a DOM subtree (inclusive).\n * @param {?} root\n * @return {?}\n */\n FocusTrap.prototype._getLastTabbableElement = function (root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n var /** @type {?} */ children = root.children || root.childNodes;\n for (var /** @type {?} */ i = children.length - 1; i >= 0; i--) {\n var /** @type {?} */ tabbableChild = children[i].nodeType === Node.ELEMENT_NODE ?\n this._getLastTabbableElement(/** @type {?} */ (children[i])) :\n null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n };\n /**\n * Creates an anchor element.\n * @return {?}\n */\n FocusTrap.prototype._createAnchor = function () {\n var /** @type {?} */ anchor = document.createElement('div');\n anchor.tabIndex = this._enabled ? 0 : -1;\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n return anchor;\n };\n /**\n * Executes a function when the zone is stable.\n * @param {?} fn\n * @return {?}\n */\n FocusTrap.prototype._executeOnStable = function (fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n first.call(this._ngZone.onStable.asObservable()).subscribe(fn);\n }\n };\n return FocusTrap;\n}());\n/**\n * Factory that allows easy instantiation of focus traps.\n */\nvar FocusTrapFactory = (function () {\n /**\n * @param {?} _checker\n * @param {?} _platform\n * @param {?} _ngZone\n */\n function FocusTrapFactory(_checker, _platform, _ngZone) {\n this._checker = _checker;\n this._platform = _platform;\n this._ngZone = _ngZone;\n }\n /**\n * @param {?} element\n * @param {?=} deferAnchors\n * @return {?}\n */\n FocusTrapFactory.prototype.create = function (element, deferAnchors) {\n if (deferAnchors === void 0) { deferAnchors = false; }\n return new FocusTrap(element, this._platform, this._checker, this._ngZone, deferAnchors);\n };\n FocusTrapFactory.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n FocusTrapFactory.ctorParameters = function () { return [\n { type: InteractivityChecker, },\n { type: Platform, },\n { type: NgZone, },\n ]; };\n return FocusTrapFactory;\n}());\n/**\n * Directive for trapping focus within a region.\n * @deprecated\n */\nvar FocusTrapDeprecatedDirective = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n */\n function FocusTrapDeprecatedDirective(_elementRef, _focusTrapFactory) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n Object.defineProperty(FocusTrapDeprecatedDirective.prototype, \"disabled\", {\n /**\n * Whether the focus trap is active.\n * @return {?}\n */\n get: function () { return !this.focusTrap.enabled; },\n /**\n * @param {?} val\n * @return {?}\n */\n set: function (val) {\n this.focusTrap.enabled = !coerceBooleanProperty(val);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n FocusTrapDeprecatedDirective.prototype.ngOnDestroy = function () {\n this.focusTrap.destroy();\n };\n /**\n * @return {?}\n */\n FocusTrapDeprecatedDirective.prototype.ngAfterContentInit = function () {\n this.focusTrap.attachAnchors();\n };\n FocusTrapDeprecatedDirective.decorators = [\n { type: Directive, args: [{\n selector: 'cdk-focus-trap',\n },] },\n ];\n /**\n * @nocollapse\n */\n FocusTrapDeprecatedDirective.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n ]; };\n FocusTrapDeprecatedDirective.propDecorators = {\n 'disabled': [{ type: Input },],\n };\n return FocusTrapDeprecatedDirective;\n}());\n/**\n * Directive for trapping focus within a region.\n */\nvar FocusTrapDirective = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n */\n function FocusTrapDirective(_elementRef, _focusTrapFactory) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n Object.defineProperty(FocusTrapDirective.prototype, \"enabled\", {\n /**\n * Whether the focus trap is active.\n * @return {?}\n */\n get: function () { return this.focusTrap.enabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this.focusTrap.enabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n FocusTrapDirective.prototype.ngOnDestroy = function () {\n this.focusTrap.destroy();\n };\n /**\n * @return {?}\n */\n FocusTrapDirective.prototype.ngAfterContentInit = function () {\n this.focusTrap.attachAnchors();\n };\n FocusTrapDirective.decorators = [\n { type: Directive, args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n },] },\n ];\n /**\n * @nocollapse\n */\n FocusTrapDirective.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n ]; };\n FocusTrapDirective.propDecorators = {\n 'enabled': [{ type: Input, args: ['cdkTrapFocus',] },],\n };\n return FocusTrapDirective;\n}());\n\nvar LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement');\nvar LiveAnnouncer = (function () {\n /**\n * @param {?} elementToken\n * @param {?} platform\n */\n function LiveAnnouncer(elementToken, platform) {\n // Only do anything if we're on the browser platform.\n if (platform.isBrowser) {\n // We inject the live element as `any` because the constructor signature cannot reference\n // browser globals (HTMLElement) on non-browser environments, since having a class decorator\n // causes TypeScript to preserve the constructor signature types.\n this._liveElement = elementToken || this._createLiveElement();\n }\n }\n /**\n * Announces a message to screenreaders.\n * @param {?} message Message to be announced to the screenreader\n * @param {?=} politeness The politeness of the announcer element\n * @return {?}\n */\n LiveAnnouncer.prototype.announce = function (message, politeness) {\n var _this = this;\n if (politeness === void 0) { politeness = 'polite'; }\n this._liveElement.textContent = '';\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n setTimeout(function () { return _this._liveElement.textContent = message; }, 100);\n };\n /**\n * @return {?}\n */\n LiveAnnouncer.prototype.ngOnDestroy = function () {\n if (this._liveElement && this._liveElement.parentNode) {\n this._liveElement.parentNode.removeChild(this._liveElement);\n }\n };\n /**\n * @return {?}\n */\n LiveAnnouncer.prototype._createLiveElement = function () {\n var /** @type {?} */ liveEl = document.createElement('div');\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n document.body.appendChild(liveEl);\n return liveEl;\n };\n LiveAnnouncer.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n LiveAnnouncer.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LIVE_ANNOUNCER_ELEMENT_TOKEN,] },] },\n { type: Platform, },\n ]; };\n return LiveAnnouncer;\n}());\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} liveElement\n * @param {?} platform\n * @return {?}\n */\nfunction LIVE_ANNOUNCER_PROVIDER_FACTORY(parentDispatcher, liveElement, platform) {\n return parentDispatcher || new LiveAnnouncer(liveElement, platform);\n}\n/**\n * \\@docs-private\n */\nvar LIVE_ANNOUNCER_PROVIDER = {\n // If there is already a LiveAnnouncer available, use that. Otherwise, provide a new one.\n provide: LiveAnnouncer,\n deps: [\n [new Optional(), new SkipSelf(), LiveAnnouncer],\n [new Optional(), new Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN)],\n Platform,\n ],\n useFactory: LIVE_ANNOUNCER_PROVIDER_FACTORY\n};\n\n// This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n// that a value of around 650ms seems appropriate.\nvar TOUCH_BUFFER_MS = 650;\n/**\n * Monitors mouse and keyboard events to determine the cause of focus events.\n */\nvar FocusMonitor = (function () {\n /**\n * @param {?} _ngZone\n * @param {?} _platform\n */\n function FocusMonitor(_ngZone, _platform) {\n var _this = this;\n this._ngZone = _ngZone;\n this._platform = _platform;\n /**\n * The focus origin that the next focus event is a result of.\n */\n this._origin = null;\n /**\n * Whether the window has just been focused.\n */\n this._windowFocused = false;\n /**\n * Weak map of elements being monitored to their info.\n */\n this._elementInfo = new WeakMap();\n this._ngZone.runOutsideAngular(function () { return _this._registerDocumentEvents(); });\n }\n /**\n * Monitors focus on an element and applies appropriate CSS classes.\n * @param {?} element The element to monitor\n * @param {?} renderer The renderer to use to apply CSS classes to the element.\n * @param {?} checkChildren Whether to count the element as focused when its children are focused.\n * @return {?} An observable that emits when the focus state of the element changes.\n * When the element is blurred, null will be emitted.\n */\n FocusMonitor.prototype.monitor = function (element, renderer, checkChildren) {\n var _this = this;\n // Do nothing if we're not on the browser platform.\n if (!this._platform.isBrowser) {\n return of(null);\n }\n // Check if we're already monitoring this element.\n if (this._elementInfo.has(element)) {\n var /** @type {?} */ cachedInfo = this._elementInfo.get(element); /** @type {?} */\n ((cachedInfo)).checkChildren = checkChildren;\n return ((cachedInfo)).subject.asObservable();\n }\n // Create monitored element info.\n var /** @type {?} */ info = {\n unlisten: function () { },\n checkChildren: checkChildren,\n renderer: renderer,\n subject: new Subject()\n };\n this._elementInfo.set(element, info);\n // Start listening. We need to listen in capture phase since focus events don't bubble.\n var /** @type {?} */ focusListener = function (event) { return _this._onFocus(event, element); };\n var /** @type {?} */ blurListener = function (event) { return _this._onBlur(event, element); };\n this._ngZone.runOutsideAngular(function () {\n element.addEventListener('focus', focusListener, true);\n element.addEventListener('blur', blurListener, true);\n });\n // Create an unlisten function for later.\n info.unlisten = function () {\n element.removeEventListener('focus', focusListener, true);\n element.removeEventListener('blur', blurListener, true);\n };\n return info.subject.asObservable();\n };\n /**\n * Stops monitoring an element and removes all focus classes.\n * @param {?} element The element to stop monitoring.\n * @return {?}\n */\n FocusMonitor.prototype.stopMonitoring = function (element) {\n var /** @type {?} */ elementInfo = this._elementInfo.get(element);\n if (elementInfo) {\n elementInfo.unlisten();\n elementInfo.subject.complete();\n this._setClasses(element);\n this._elementInfo.delete(element);\n }\n };\n /**\n * Focuses the element via the specified focus origin.\n * @param {?} element The element to focus.\n * @param {?} origin The focus origin.\n * @return {?}\n */\n FocusMonitor.prototype.focusVia = function (element, origin) {\n this._setOriginForCurrentEventQueue(origin);\n element.focus();\n };\n /**\n * Register necessary event listeners on the document and window.\n * @return {?}\n */\n FocusMonitor.prototype._registerDocumentEvents = function () {\n var _this = this;\n // Do nothing if we're not on the browser platform.\n if (!this._platform.isBrowser) {\n return;\n }\n // Note: we listen to events in the capture phase so we can detect them even if the user stops\n // propagation.\n // On keydown record the origin and clear any touch event that may be in progress.\n document.addEventListener('keydown', function () {\n _this._lastTouchTarget = null;\n _this._setOriginForCurrentEventQueue('keyboard');\n }, true);\n // On mousedown record the origin only if there is not touch target, since a mousedown can\n // happen as a result of a touch event.\n document.addEventListener('mousedown', function () {\n if (!_this._lastTouchTarget) {\n _this._setOriginForCurrentEventQueue('mouse');\n }\n }, true);\n // When the touchstart event fires the focus event is not yet in the event queue. This means\n // we can't rely on the trick used above (setting timeout of 0ms). Instead we wait 650ms to\n // see if a focus happens.\n document.addEventListener('touchstart', function (event) {\n if (_this._touchTimeout != null) {\n clearTimeout(_this._touchTimeout);\n }\n _this._lastTouchTarget = event.target;\n _this._touchTimeout = setTimeout(function () { return _this._lastTouchTarget = null; }, TOUCH_BUFFER_MS);\n }, true);\n // Make a note of when the window regains focus, so we can restore the origin info for the\n // focused element.\n window.addEventListener('focus', function () {\n _this._windowFocused = true;\n setTimeout(function () { return _this._windowFocused = false; }, 0);\n });\n };\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param {?} element The element to update the classes on.\n * @param {?=} origin The focus origin.\n * @return {?}\n */\n FocusMonitor.prototype._setClasses = function (element, origin) {\n var /** @type {?} */ elementInfo = this._elementInfo.get(element);\n if (elementInfo) {\n var /** @type {?} */ toggleClass = function (className, shouldSet) {\n shouldSet ? elementInfo.renderer.addClass(element, className) :\n elementInfo.renderer.removeClass(element, className);\n };\n toggleClass('cdk-focused', !!origin);\n toggleClass('cdk-touch-focused', origin === 'touch');\n toggleClass('cdk-keyboard-focused', origin === 'keyboard');\n toggleClass('cdk-mouse-focused', origin === 'mouse');\n toggleClass('cdk-program-focused', origin === 'program');\n }\n };\n /**\n * Sets the origin and schedules an async function to clear it at the end of the event queue.\n * @param {?} origin The origin to set.\n * @return {?}\n */\n FocusMonitor.prototype._setOriginForCurrentEventQueue = function (origin) {\n var _this = this;\n this._origin = origin;\n setTimeout(function () { return _this._origin = null; }, 0);\n };\n /**\n * Checks whether the given focus event was caused by a touchstart event.\n * @param {?} event The focus event to check.\n * @return {?} Whether the event was caused by a touch.\n */\n FocusMonitor.prototype._wasCausedByTouch = function (event) {\n // Note(mmalerba): This implementation is not quite perfect, there is a small edge case.\n // Consider the following dom structure:\n //\n // <div #parent tabindex=\"0\" cdkFocusClasses>\n // <div #child (click)=\"#parent.focus()\"></div>\n // </div>\n //\n // If the user touches the #child element and the #parent is programmatically focused as a\n // result, this code will still consider it to have been caused by the touch event and will\n // apply the cdk-touch-focused class rather than the cdk-program-focused class. This is a\n // relatively small edge-case that can be worked around by using\n // focusVia(parentEl, renderer, 'program') to focus the parent element.\n //\n // If we decide that we absolutely must handle this case correctly, we can do so by listening\n // for the first focus event after the touchstart, and then the first blur event after that\n // focus event. When that blur event fires we know that whatever follows is not a result of the\n // touchstart.\n var /** @type {?} */ focusTarget = event.target;\n return this._lastTouchTarget instanceof Node && focusTarget instanceof Node &&\n (focusTarget === this._lastTouchTarget || focusTarget.contains(this._lastTouchTarget));\n };\n /**\n * Handles focus events on a registered element.\n * @param {?} event The focus event.\n * @param {?} element The monitored element.\n * @return {?}\n */\n FocusMonitor.prototype._onFocus = function (event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n var /** @type {?} */ elementInfo = this._elementInfo.get(element);\n if (!elementInfo || (!elementInfo.checkChildren && element !== event.target)) {\n return;\n }\n // If we couldn't detect a cause for the focus event, it's due to one of three reasons:\n // 1) The window has just regained focus, in which case we want to restore the focused state of\n // the element from before the window blurred.\n // 2) It was caused by a touch event, in which case we mark the origin as 'touch'.\n // 3) The element was programmatically focused, in which case we should mark the origin as\n // 'program'.\n if (!this._origin) {\n if (this._windowFocused && this._lastFocusOrigin) {\n this._origin = this._lastFocusOrigin;\n }\n else if (this._wasCausedByTouch(event)) {\n this._origin = 'touch';\n }\n else {\n this._origin = 'program';\n }\n }\n this._setClasses(element, this._origin);\n elementInfo.subject.next(this._origin);\n this._lastFocusOrigin = this._origin;\n this._origin = null;\n };\n /**\n * Handles blur events on a registered element.\n * @param {?} event The blur event.\n * @param {?} element The monitored element.\n * @return {?}\n */\n FocusMonitor.prototype._onBlur = function (event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n var /** @type {?} */ elementInfo = this._elementInfo.get(element);\n if (!elementInfo || (elementInfo.checkChildren && event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n elementInfo.subject.next(null);\n };\n FocusMonitor.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n FocusMonitor.ctorParameters = function () { return [\n { type: NgZone, },\n { type: Platform, },\n ]; };\n return FocusMonitor;\n}());\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nvar CdkMonitorFocus = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _focusMonitor\n * @param {?} renderer\n */\n function CdkMonitorFocus(_elementRef, _focusMonitor, renderer) {\n var _this = this;\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this.cdkFocusChange = new EventEmitter();\n this._monitorSubscription = this._focusMonitor.monitor(this._elementRef.nativeElement, renderer, this._elementRef.nativeElement.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(function (origin) { return _this.cdkFocusChange.emit(origin); });\n }\n /**\n * @return {?}\n */\n CdkMonitorFocus.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n this._monitorSubscription.unsubscribe();\n };\n CdkMonitorFocus.decorators = [\n { type: Directive, args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n },] },\n ];\n /**\n * @nocollapse\n */\n CdkMonitorFocus.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusMonitor, },\n { type: Renderer2, },\n ]; };\n CdkMonitorFocus.propDecorators = {\n 'cdkFocusChange': [{ type: Output },],\n };\n return CdkMonitorFocus;\n}());\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} ngZone\n * @param {?} platform\n * @return {?}\n */\nfunction FOCUS_MONITOR_PROVIDER_FACTORY(parentDispatcher, ngZone, platform) {\n return parentDispatcher || new FocusMonitor(ngZone, platform);\n}\n/**\n * \\@docs-private\n */\nvar FOCUS_MONITOR_PROVIDER = {\n // If there is already a FocusMonitor available, use that. Otherwise, provide a new one.\n provide: FocusMonitor,\n deps: [[new Optional(), new SkipSelf(), FocusMonitor], NgZone, Platform],\n useFactory: FOCUS_MONITOR_PROVIDER_FACTORY\n};\n\nvar A11yModule = (function () {\n function A11yModule() {\n }\n A11yModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, PlatformModule],\n declarations: [FocusTrapDirective, FocusTrapDeprecatedDirective, CdkMonitorFocus],\n exports: [FocusTrapDirective, FocusTrapDeprecatedDirective, CdkMonitorFocus],\n providers: [\n InteractivityChecker,\n FocusTrapFactory,\n AriaDescriber,\n LIVE_ANNOUNCER_PROVIDER,\n ARIA_DESCRIBER_PROVIDER,\n FOCUS_MONITOR_PROVIDER,\n ]\n },] },\n ];\n /**\n * @nocollapse\n */\n A11yModule.ctorParameters = function () { return []; };\n return A11yModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActiveDescendantKeyManager, MESSAGES_CONTAINER_ID, CDK_DESCRIBEDBY_ID_PREFIX, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, AriaDescriber, ARIA_DESCRIBER_PROVIDER_FACTORY, ARIA_DESCRIBER_PROVIDER, isFakeMousedownFromScreenReader, FocusKeyManager, FocusTrap, FocusTrapFactory, FocusTrapDeprecatedDirective, FocusTrapDirective, InteractivityChecker, ListKeyManager, LIVE_ANNOUNCER_ELEMENT_TOKEN, LiveAnnouncer, LIVE_ANNOUNCER_PROVIDER_FACTORY, LIVE_ANNOUNCER_PROVIDER, TOUCH_BUFFER_MS, FocusMonitor, CdkMonitorFocus, FOCUS_MONITOR_PROVIDER_FACTORY, FOCUS_MONITOR_PROVIDER, A11yModule };\n//# sourceMappingURL=a11y.es5.js.map\n"],"names":["Subject","Subscription","RxChain","doOperator","debounceTime","filter","map","DOWN_ARROW","UP_ARROW","TAB","A","Z","ZERO","NINE","Injectable","Platform","Optional","SkipSelf","first","NgZone","coerceBooleanProperty","Directive","ElementRef","Input","InjectionToken","Inject","of","EventEmitter","Renderer2","Output","NgModule","CommonModule","PlatformModule"],"mappings":"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"}
|