@angular/cdk 2.0.0-beta.10 → 2.0.0-beta.11

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.
Files changed (170) hide show
  1. package/a11y/package.json +2 -2
  2. package/a11y/typings/aria-describer.d.ts +51 -0
  3. package/a11y/typings/aria-reference.d.ts +15 -0
  4. package/a11y/typings/focus-monitor.d.ts +106 -0
  5. package/a11y/typings/index.metadata.json +1 -1
  6. package/a11y/typings/public_api.d.ts +5 -3
  7. package/bidi/package.json +2 -2
  8. package/bundles/cdk-a11y.umd.js +639 -25
  9. package/bundles/cdk-a11y.umd.js.map +1 -1
  10. package/bundles/cdk-a11y.umd.min.js +9 -0
  11. package/bundles/cdk-a11y.umd.min.js.map +1 -0
  12. package/bundles/cdk-bidi.umd.min.js +9 -0
  13. package/bundles/cdk-bidi.umd.min.js.map +1 -0
  14. package/bundles/cdk-coercion.umd.min.js +9 -0
  15. package/bundles/cdk-coercion.umd.min.js.map +1 -0
  16. package/bundles/cdk-collections.umd.min.js +9 -0
  17. package/bundles/cdk-collections.umd.min.js.map +1 -0
  18. package/bundles/cdk-keycodes.umd.min.js +9 -0
  19. package/bundles/cdk-keycodes.umd.min.js.map +1 -0
  20. package/bundles/cdk-observers.umd.min.js +9 -0
  21. package/bundles/cdk-observers.umd.min.js.map +1 -0
  22. package/bundles/cdk-overlay.umd.js +49 -75
  23. package/bundles/cdk-overlay.umd.js.map +1 -1
  24. package/bundles/cdk-overlay.umd.min.js +9 -0
  25. package/bundles/cdk-overlay.umd.min.js.map +1 -0
  26. package/bundles/cdk-platform.umd.min.js +9 -0
  27. package/bundles/cdk-platform.umd.min.js.map +1 -0
  28. package/bundles/cdk-portal.umd.min.js +9 -0
  29. package/bundles/cdk-portal.umd.min.js.map +1 -0
  30. package/bundles/cdk-rxjs.umd.js.map +1 -1
  31. package/bundles/cdk-rxjs.umd.min.js +9 -0
  32. package/bundles/cdk-rxjs.umd.min.js.map +1 -0
  33. package/bundles/cdk-scrolling.umd.min.js +9 -0
  34. package/bundles/cdk-scrolling.umd.min.js.map +1 -0
  35. package/bundles/cdk-stepper.umd.js +460 -0
  36. package/bundles/cdk-stepper.umd.js.map +1 -0
  37. package/bundles/cdk-stepper.umd.min.js +9 -0
  38. package/bundles/cdk-stepper.umd.min.js.map +1 -0
  39. package/bundles/cdk-table.umd.js +8 -8
  40. package/bundles/cdk-table.umd.js.map +1 -1
  41. package/bundles/cdk-table.umd.min.js +9 -0
  42. package/bundles/cdk-table.umd.min.js.map +1 -0
  43. package/bundles/cdk.umd.js +1 -1
  44. package/bundles/cdk.umd.js.map +1 -1
  45. package/bundles/cdk.umd.min.js +9 -0
  46. package/bundles/cdk.umd.min.js.map +1 -0
  47. package/coercion/package.json +2 -2
  48. package/collections/package.json +2 -2
  49. package/collections/typings/selection.d.ts +3 -3
  50. package/{@angular/cdk → esm2015}/a11y.js +617 -17
  51. package/esm2015/a11y.js.map +1 -0
  52. package/{@angular/cdk → esm2015}/bidi.js +0 -0
  53. package/{@angular/cdk → esm2015}/bidi.js.map +0 -0
  54. package/{@angular → esm2015}/cdk.js +1 -1
  55. package/{@angular → esm2015}/cdk.js.map +1 -1
  56. package/{@angular/cdk → esm2015}/coercion.js +0 -0
  57. package/{@angular/cdk → esm2015}/coercion.js.map +0 -0
  58. package/{@angular/cdk → esm2015}/collections.js +0 -0
  59. package/{@angular/cdk → esm2015}/collections.js.map +0 -0
  60. package/{@angular/cdk → esm2015}/keycodes.js +0 -0
  61. package/{@angular/cdk → esm2015}/keycodes.js.map +0 -0
  62. package/{@angular/cdk → esm2015}/observers.js +0 -0
  63. package/{@angular/cdk → esm2015}/observers.js.map +0 -0
  64. package/{@angular/cdk → esm2015}/overlay.js +44 -66
  65. package/esm2015/overlay.js.map +1 -0
  66. package/{@angular/cdk → esm2015}/platform.js +0 -0
  67. package/{@angular/cdk → esm2015}/platform.js.map +0 -0
  68. package/{@angular/cdk → esm2015}/portal.js +0 -0
  69. package/{@angular/cdk → esm2015}/portal.js.map +0 -0
  70. package/{@angular/cdk → esm2015}/rxjs.js +0 -0
  71. package/esm2015/rxjs.js.map +1 -0
  72. package/{@angular/cdk → esm2015}/scrolling.js +0 -0
  73. package/{@angular/cdk → esm2015}/scrolling.js.map +0 -0
  74. package/esm2015/stepper.js +418 -0
  75. package/esm2015/stepper.js.map +1 -0
  76. package/{@angular/cdk → esm2015}/table.js +8 -8
  77. package/esm2015/table.js.map +1 -0
  78. package/{@angular/cdk → esm5}/a11y.es5.js +622 -17
  79. package/esm5/a11y.es5.js.map +1 -0
  80. package/{@angular/cdk → esm5}/bidi.es5.js +0 -0
  81. package/{@angular/cdk → esm5}/bidi.es5.js.map +0 -0
  82. package/{@angular → esm5}/cdk.es5.js +1 -1
  83. package/{@angular → esm5}/cdk.es5.js.map +1 -1
  84. package/{@angular/cdk → esm5}/coercion.es5.js +0 -0
  85. package/{@angular/cdk → esm5}/coercion.es5.js.map +0 -0
  86. package/{@angular/cdk → esm5}/collections.es5.js +0 -0
  87. package/{@angular/cdk → esm5}/collections.es5.js.map +0 -0
  88. package/{@angular/cdk → esm5}/keycodes.es5.js +0 -0
  89. package/{@angular/cdk → esm5}/keycodes.es5.js.map +0 -0
  90. package/{@angular/cdk → esm5}/observers.es5.js +0 -0
  91. package/{@angular/cdk → esm5}/observers.es5.js.map +0 -0
  92. package/{@angular/cdk → esm5}/overlay.es5.js +46 -71
  93. package/esm5/overlay.es5.js.map +1 -0
  94. package/{@angular/cdk → esm5}/platform.es5.js +0 -0
  95. package/{@angular/cdk → esm5}/platform.es5.js.map +0 -0
  96. package/{@angular/cdk → esm5}/portal.es5.js +0 -0
  97. package/{@angular/cdk → esm5}/portal.es5.js.map +0 -0
  98. package/{@angular/cdk → esm5}/rxjs.es5.js +0 -0
  99. package/esm5/rxjs.es5.js.map +1 -0
  100. package/{@angular/cdk → esm5}/scrolling.es5.js +0 -0
  101. package/{@angular/cdk → esm5}/scrolling.es5.js.map +0 -0
  102. package/esm5/stepper.es5.js +451 -0
  103. package/esm5/stepper.es5.js.map +1 -0
  104. package/{@angular/cdk → esm5}/table.es5.js +8 -8
  105. package/esm5/table.es5.js.map +1 -0
  106. package/keycodes/package.json +2 -2
  107. package/observers/package.json +2 -2
  108. package/overlay/package.json +2 -2
  109. package/overlay/typings/index.metadata.json +1 -1
  110. package/overlay/typings/{overlay-state.d.ts → overlay-config.d.ts} +5 -7
  111. package/overlay/typings/overlay-container.d.ts +1 -6
  112. package/overlay/typings/overlay-ref.d.ts +3 -3
  113. package/overlay/typings/overlay.d.ts +2 -2
  114. package/overlay/typings/position/connected-position-strategy.d.ts +1 -3
  115. package/overlay/typings/public_api.d.ts +1 -1
  116. package/overlay/typings/scroll/reposition-scroll-strategy.d.ts +1 -1
  117. package/package.json +5 -5
  118. package/platform/package.json +2 -2
  119. package/portal/package.json +2 -2
  120. package/portal/typings/portal-injector.d.ts +19 -0
  121. package/rxjs/package.json +2 -2
  122. package/rxjs/typings/rx-chain.d.ts +1 -1
  123. package/rxjs/typings/rx-operators.d.ts +1 -1
  124. package/scrolling/package.json +2 -2
  125. package/stepper/index.d.ts +8 -0
  126. package/stepper/index.metadata.json +11 -0
  127. package/stepper/package.json +7 -0
  128. package/stepper/typings/index.d.ts +4 -0
  129. package/stepper/typings/index.metadata.json +1 -0
  130. package/stepper/typings/public_api.d.ts +5 -0
  131. package/stepper/typings/step-label.d.ts +12 -0
  132. package/stepper/typings/stepper-button.d.ts +11 -0
  133. package/stepper/typings/stepper.d.ts +93 -0
  134. package/stepper.d.ts +8 -0
  135. package/stepper.metadata.json +11 -0
  136. package/table/package.json +2 -2
  137. package/table/typings/index.metadata.json +1 -1
  138. package/typings/a11y/aria-describer.d.ts +51 -0
  139. package/typings/a11y/aria-reference.d.ts +15 -0
  140. package/typings/a11y/focus-monitor.d.ts +106 -0
  141. package/typings/a11y/index.metadata.json +1 -1
  142. package/typings/a11y/public_api.d.ts +5 -3
  143. package/typings/collections/selection.d.ts +3 -3
  144. package/typings/index.metadata.json +1 -1
  145. package/typings/overlay/index.metadata.json +1 -1
  146. package/typings/overlay/{overlay-state.d.ts → overlay-config.d.ts} +5 -7
  147. package/typings/overlay/overlay-container.d.ts +1 -6
  148. package/typings/overlay/overlay-ref.d.ts +3 -3
  149. package/typings/overlay/overlay.d.ts +2 -2
  150. package/typings/overlay/position/connected-position-strategy.d.ts +1 -3
  151. package/typings/overlay/public_api.d.ts +1 -1
  152. package/typings/overlay/scroll/reposition-scroll-strategy.d.ts +1 -1
  153. package/typings/portal/portal-injector.d.ts +19 -0
  154. package/typings/rxjs/rx-chain.d.ts +1 -1
  155. package/typings/rxjs/rx-operators.d.ts +1 -1
  156. package/typings/stepper/index.d.ts +4 -0
  157. package/typings/stepper/index.metadata.json +1 -0
  158. package/typings/stepper/public_api.d.ts +5 -0
  159. package/typings/stepper/step-label.d.ts +12 -0
  160. package/typings/stepper/stepper-button.d.ts +11 -0
  161. package/typings/stepper/stepper.d.ts +93 -0
  162. package/typings/table/index.metadata.json +1 -1
  163. package/@angular/cdk/a11y.es5.js.map +0 -1
  164. package/@angular/cdk/a11y.js.map +0 -1
  165. package/@angular/cdk/overlay.es5.js.map +0 -1
  166. package/@angular/cdk/overlay.js.map +0 -1
  167. package/@angular/cdk/rxjs.es5.js.map +0 -1
  168. package/@angular/cdk/rxjs.js.map +0 -1
  169. package/@angular/cdk/table.es5.js.map +0 -1
  170. package/@angular/cdk/table.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"a11y.es5.js","sources":["../../../src/cdk/a11y/index.ts","../../../src/cdk/a11y/public_api.ts","../../../src/cdk/a11y/focus-key-manager.ts","../../../src/cdk/a11y/activedescendant-key-manager.ts","../../../src/cdk/a11y/list-key-manager.ts","../../../src/cdk/a11y/fake-mousedown.ts","../../../src/cdk/a11y/live-announcer.ts","../../../src/cdk/a11y/focus-trap.ts","../../../src/cdk/a11y/interactivity-checker.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {A11yModule,LIVE_ANNOUNCER_ELEMENT_TOKEN,AriaLivePoliteness,LiveAnnouncer,LIVE_ANNOUNCER_PROVIDER_FACTORY,LIVE_ANNOUNCER_PROVIDER,isFakeMousedownFromScreenReader,FocusTrap,FocusTrapFactory,FocusTrapDeprecatedDirective,FocusTrapDirective,InteractivityChecker,ListKeyManagerOption,ListKeyManager,Highlightable,ActiveDescendantKeyManager,FocusableOption,FocusKeyManager} from './public_api';\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 {NgModule} from '@angular/core';\nimport {FocusTrapDirective, FocusTrapDeprecatedDirective, 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';\nexport class A11yModule {static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [CommonModule, PlatformModule],\n declarations: [FocusTrapDirective, FocusTrapDeprecatedDirective],\n exports: [FocusTrapDirective, FocusTrapDeprecatedDirective],\n providers: [InteractivityChecker, FocusTrapFactory, LIVE_ANNOUNCER_PROVIDER]\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 {LIVE_ANNOUNCER_ELEMENT_TOKEN,AriaLivePoliteness,LiveAnnouncer,LIVE_ANNOUNCER_PROVIDER_FACTORY,LIVE_ANNOUNCER_PROVIDER} from './live-announcer';\nexport {isFakeMousedownFromScreenReader} from './fake-mousedown';\nexport {FocusTrap,FocusTrapFactory,FocusTrapDeprecatedDirective,FocusTrapDirective} from './focus-trap';\nexport {InteractivityChecker} from './interactivity-checker';\nexport {ListKeyManagerOption,ListKeyManager} from './list-key-manager';\nexport {Highlightable,ActiveDescendantKeyManager} from './activedescendant-key-manager';\nexport {FocusableOption,FocusKeyManager} from './focus-key-manager';\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 * @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;\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 if (this._typeaheadSubscription) {\n this._typeaheadSubscription.unsubscribe();\n }\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/**\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 {\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).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"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"a11y.js","sources":["../../../src/cdk/a11y/index.ts","../../../src/cdk/a11y/public_api.ts","../../../src/cdk/a11y/focus-key-manager.ts","../../../src/cdk/a11y/activedescendant-key-manager.ts","../../../src/cdk/a11y/list-key-manager.ts","../../../src/cdk/a11y/fake-mousedown.ts","../../../src/cdk/a11y/live-announcer.ts","../../../src/cdk/a11y/focus-trap.ts","../../../src/cdk/a11y/interactivity-checker.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {A11yModule,LIVE_ANNOUNCER_ELEMENT_TOKEN,AriaLivePoliteness,LiveAnnouncer,LIVE_ANNOUNCER_PROVIDER_FACTORY,LIVE_ANNOUNCER_PROVIDER,isFakeMousedownFromScreenReader,FocusTrap,FocusTrapFactory,FocusTrapDeprecatedDirective,FocusTrapDirective,InteractivityChecker,ListKeyManagerOption,ListKeyManager,Highlightable,ActiveDescendantKeyManager,FocusableOption,FocusKeyManager} from './public_api';\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 {NgModule} from '@angular/core';\nimport {FocusTrapDirective, FocusTrapDeprecatedDirective, 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';\nexport class A11yModule {static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [CommonModule, PlatformModule],\n declarations: [FocusTrapDirective, FocusTrapDeprecatedDirective],\n exports: [FocusTrapDirective, FocusTrapDeprecatedDirective],\n providers: [InteractivityChecker, FocusTrapFactory, LIVE_ANNOUNCER_PROVIDER]\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 {LIVE_ANNOUNCER_ELEMENT_TOKEN,AriaLivePoliteness,LiveAnnouncer,LIVE_ANNOUNCER_PROVIDER_FACTORY,LIVE_ANNOUNCER_PROVIDER} from './live-announcer';\nexport {isFakeMousedownFromScreenReader} from './fake-mousedown';\nexport {FocusTrap,FocusTrapFactory,FocusTrapDeprecatedDirective,FocusTrapDirective} from './focus-trap';\nexport {InteractivityChecker} from './interactivity-checker';\nexport {ListKeyManagerOption,ListKeyManager} from './list-key-manager';\nexport {Highlightable,ActiveDescendantKeyManager} from './activedescendant-key-manager';\nexport {FocusableOption,FocusKeyManager} from './focus-key-manager';\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 * @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;\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 if (this._typeaheadSubscription) {\n this._typeaheadSubscription.unsubscribe();\n }\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/**\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 {\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).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"],"names":[],"mappings":"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"}