@angular/cdk 12.0.6 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/a11y/focus-monitor/focus-monitor.d.ts +25 -31
  2. package/a11y/index.metadata.json +1 -1
  3. package/a11y/input-modality/input-modality-detector.d.ts +105 -0
  4. package/a11y/public-api.d.ts +1 -0
  5. package/bundles/cdk-a11y.umd.js +296 -157
  6. package/bundles/cdk-a11y.umd.js.map +1 -1
  7. package/bundles/cdk-coercion.umd.js +14 -11
  8. package/bundles/cdk-coercion.umd.js.map +1 -1
  9. package/bundles/cdk-collections.umd.js +14 -11
  10. package/bundles/cdk-collections.umd.js.map +1 -1
  11. package/bundles/cdk-drag-drop.umd.js +14 -11
  12. package/bundles/cdk-drag-drop.umd.js.map +1 -1
  13. package/bundles/cdk-overlay.umd.js +14 -11
  14. package/bundles/cdk-overlay.umd.js.map +1 -1
  15. package/bundles/cdk-portal.umd.js +14 -11
  16. package/bundles/cdk-portal.umd.js.map +1 -1
  17. package/bundles/cdk-scrolling.umd.js +14 -11
  18. package/bundles/cdk-scrolling.umd.js.map +1 -1
  19. package/bundles/cdk-stepper.umd.js +9 -3
  20. package/bundles/cdk-stepper.umd.js.map +1 -1
  21. package/bundles/cdk-table.umd.js +14 -11
  22. package/bundles/cdk-table.umd.js.map +1 -1
  23. package/bundles/cdk-testing-protractor.umd.js +14 -11
  24. package/bundles/cdk-testing-protractor.umd.js.map +1 -1
  25. package/bundles/cdk-testing-selenium-webdriver.umd.js +14 -11
  26. package/bundles/cdk-testing-selenium-webdriver.umd.js.map +1 -1
  27. package/bundles/cdk-testing-testbed.umd.js +26 -17
  28. package/bundles/cdk-testing-testbed.umd.js.map +1 -1
  29. package/bundles/cdk-testing.umd.js +14 -11
  30. package/bundles/cdk-testing.umd.js.map +1 -1
  31. package/bundles/cdk-tree.umd.js +14 -11
  32. package/bundles/cdk-tree.umd.js.map +1 -1
  33. package/bundles/cdk.umd.js +1 -1
  34. package/bundles/cdk.umd.js.map +1 -1
  35. package/esm2015/a11y/focus-monitor/focus-monitor.js +81 -121
  36. package/esm2015/a11y/input-modality/input-modality-detector.js +179 -0
  37. package/esm2015/a11y/public-api.js +2 -1
  38. package/esm2015/stepper/stepper.js +10 -4
  39. package/esm2015/testing/testbed/fake-events/dispatch-events.js +3 -3
  40. package/esm2015/testing/testbed/fake-events/event-objects.js +5 -3
  41. package/esm2015/version.js +1 -1
  42. package/fesm2015/a11y.js +276 -149
  43. package/fesm2015/a11y.js.map +1 -1
  44. package/fesm2015/cdk.js +1 -1
  45. package/fesm2015/cdk.js.map +1 -1
  46. package/fesm2015/stepper.js +9 -3
  47. package/fesm2015/stepper.js.map +1 -1
  48. package/fesm2015/testing/testbed.js +6 -4
  49. package/fesm2015/testing/testbed.js.map +1 -1
  50. package/package.json +2 -2
  51. package/schematics/ng-add/index.js +1 -1
  52. package/schematics/ng-add/index.mjs +1 -1
  53. package/stepper/index.metadata.json +1 -1
  54. package/stepper/stepper.d.ts +2 -1
  55. package/testing/testbed/fake-events/dispatch-events.d.ts +1 -1
  56. package/testing/testbed/fake-events/event-objects.d.ts +1 -1
@@ -8,7 +8,7 @@
8
8
  import { Platform } from '@angular/cdk/platform';
9
9
  import { ElementRef, EventEmitter, InjectionToken, NgZone, OnDestroy, AfterViewInit } from '@angular/core';
10
10
  import { Observable } from 'rxjs';
11
- export declare const TOUCH_BUFFER_MS = 650;
11
+ import { InputModalityDetector } from '../input-modality/input-modality-detector';
12
12
  export declare type FocusOrigin = 'touch' | 'mouse' | 'keyboard' | 'program' | null;
13
13
  /**
14
14
  * Corresponds to the options that can be passed to the native `focus` event.
@@ -28,7 +28,7 @@ export declare const enum FocusMonitorDetectionMode {
28
28
  IMMEDIATE = 0,
29
29
  /**
30
30
  * A focus event's origin is always attributed to the last corresponding
31
- * mousedown, keydown, or touchstart event, no matter how long ago it occured.
31
+ * mousedown, keydown, or touchstart event, no matter how long ago it occurred.
32
32
  */
33
33
  EVENTUAL = 1
34
34
  }
@@ -42,20 +42,22 @@ export declare const FOCUS_MONITOR_DEFAULT_OPTIONS: InjectionToken<FocusMonitorO
42
42
  export declare class FocusMonitor implements OnDestroy {
43
43
  private _ngZone;
44
44
  private _platform;
45
+ private readonly _inputModalityDetector;
45
46
  /** The focus origin that the next focus event is a result of. */
46
47
  private _origin;
47
48
  /** The FocusOrigin of the last focus event tracked by the FocusMonitor. */
48
49
  private _lastFocusOrigin;
49
50
  /** Whether the window has just been focused. */
50
51
  private _windowFocused;
51
- /** The target of the last touch event. */
52
- private _lastTouchTarget;
53
- /** The timeout id of the touch timeout, used to cancel timeout later. */
54
- private _touchTimeoutId;
55
52
  /** The timeout id of the window focus timeout. */
56
53
  private _windowFocusTimeoutId;
57
54
  /** The timeout id of the origin clearing timeout. */
58
55
  private _originTimeoutId;
56
+ /**
57
+ * Whether the origin was determined via a touch interaction. Necessary as properly attributing
58
+ * focus events to touch interactions requires special logic.
59
+ */
60
+ private _originFromTouchInteraction;
59
61
  /** Map of elements being monitored to their info. */
60
62
  private _elementInfo;
61
63
  /** The number of elements currently being monitored. */
@@ -72,21 +74,6 @@ export declare class FocusMonitor implements OnDestroy {
72
74
  * event.
73
75
  */
74
76
  private readonly _detectionMode;
75
- /**
76
- * Event listener for `keydown` events on the document.
77
- * Needs to be an arrow function in order to preserve the context when it gets bound.
78
- */
79
- private _documentKeydownListener;
80
- /**
81
- * Event listener for `mousedown` events on the document.
82
- * Needs to be an arrow function in order to preserve the context when it gets bound.
83
- */
84
- private _documentMousedownListener;
85
- /**
86
- * Event listener for `touchstart` events on the document.
87
- * Needs to be an arrow function in order to preserve the context when it gets bound.
88
- */
89
- private _documentTouchstartListener;
90
77
  /**
91
78
  * Event listener for `focus` events on the window.
92
79
  * Needs to be an arrow function in order to preserve the context when it gets bound.
@@ -94,7 +81,9 @@ export declare class FocusMonitor implements OnDestroy {
94
81
  private _windowFocusListener;
95
82
  /** Used to reference correct document/window */
96
83
  protected _document?: Document;
97
- constructor(_ngZone: NgZone, _platform: Platform,
84
+ /** Subject for stopping our InputModalityDetector subscription. */
85
+ private readonly _stopInputModalityDetector;
86
+ constructor(_ngZone: NgZone, _platform: Platform, _inputModalityDetector: InputModalityDetector,
98
87
  /** @breaking-change 11.0.0 make document required */
99
88
  document: any | null, options: FocusMonitorOptions | null);
100
89
  /**
@@ -149,6 +138,15 @@ export declare class FocusMonitor implements OnDestroy {
149
138
  private _getWindow;
150
139
  private _toggleClass;
151
140
  private _getFocusOrigin;
141
+ /**
142
+ * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a
143
+ * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we
144
+ * handle a focus event following a touch interaction, we need to determine whether (1) the focus
145
+ * event was directly caused by the touch interaction or (2) the focus event was caused by a
146
+ * subsequent programmatic focus call triggered by the touch interaction.
147
+ * @param focusEventTarget The target of the focus event under examination.
148
+ */
149
+ private _shouldBeAttributedToTouch;
152
150
  /**
153
151
  * Sets the focus classes on the element based on the given focus origin.
154
152
  * @param element The element to update the classes on.
@@ -156,17 +154,13 @@ export declare class FocusMonitor implements OnDestroy {
156
154
  */
157
155
  private _setClasses;
158
156
  /**
159
- * Sets the origin and schedules an async function to clear it at the end of the event queue.
160
- * If the detection mode is 'eventual', the origin is never cleared.
157
+ * Updates the focus origin. If we're using immediate detection mode, we schedule an async
158
+ * function to clear the origin at the end of a timeout. The duration of the timeout depends on
159
+ * the origin being set.
161
160
  * @param origin The origin to set.
161
+ * @param isFromInteraction Whether we are setting the origin from an interaction event.
162
162
  */
163
- private _setOriginForCurrentEventQueue;
164
- /**
165
- * Checks whether the given focus event was caused by a touchstart event.
166
- * @param event The focus event to check.
167
- * @returns Whether the event was caused by a touch.
168
- */
169
- private _wasCausedByTouch;
163
+ private _setOrigin;
170
164
  /**
171
165
  * Handles focus events on a registered element.
172
166
  * @param event The focus event.
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"RegisteredMessage":{"__symbolic":"interface"},"MESSAGES_CONTAINER_ID":"cdk-describedby-message-container","CDK_DESCRIBEDBY_ID_PREFIX":"cdk-describedby-message","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"cdk-describedby-host","AriaDescriber":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":53,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":53,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"describe":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"removeDescription":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createMessageElement":[{"__symbolic":"method"}],"_deleteMessageElement":[{"__symbolic":"method"}],"_createMessagesContainer":[{"__symbolic":"method"}],"_deleteMessagesContainer":[{"__symbolic":"method"}],"_removeCdkDescribedByReferenceIds":[{"__symbolic":"method"}],"_addMessageReference":[{"__symbolic":"method"}],"_removeMessageReference":[{"__symbolic":"method"}],"_isElementDescribedByMessage":[{"__symbolic":"method"}],"_canBeDescribed":[{"__symbolic":"method"}],"_isElementNode":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"Highlightable":{"__symbolic":"interface"},"ActiveDescendantKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]}},"FocusableOption":{"__symbolic":"interface"},"FocusKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setFocusOrigin":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]}},"ListKeyManagerOption":{"__symbolic":"interface"},"ListKeyManagerModifierKey":{"__symbolic":"interface"},"ListKeyManager":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"QueryList","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":62,"character":40,"context":{"typeName":"T"},"module":"./key-manager/list-key-manager"}]}]}],"skipPredicate":[{"__symbolic":"method"}],"withWrap":[{"__symbolic":"method"}],"withVerticalOrientation":[{"__symbolic":"method"}],"withHorizontalOrientation":[{"__symbolic":"method"}],"withAllowedModifierKeys":[{"__symbolic":"method"}],"withTypeAhead":[{"__symbolic":"method"}],"withHomeAndEnd":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"isTyping":[{"__symbolic":"method"}],"setFirstItemActive":[{"__symbolic":"method"}],"setLastItemActive":[{"__symbolic":"method"}],"setNextItemActive":[{"__symbolic":"method"}],"setPreviousItemActive":[{"__symbolic":"method"}],"updateActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"_setActiveItemByDelta":[{"__symbolic":"method"}],"_setActiveInWrapMode":[{"__symbolic":"method"}],"_setActiveInDefaultMode":[{"__symbolic":"method"}],"_setActiveItemByIndex":[{"__symbolic":"method"}],"_getItemsArray":[{"__symbolic":"method"}]}},"ConfigurableFocusTrap":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FocusTrap"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":34,"character":14,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/configurable-focus-trap"},{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":36,"character":13},{"__symbolic":"error","message":"Could not resolve type","line":37,"character":15,"context":{"typeName":"Document"},"module":"./focus-trap/configurable-focus-trap"},{"__symbolic":"reference","name":"ɵangular_material_src_cdk_a11y_a11y_a"},{"__symbolic":"reference","name":"FocusTrapInertStrategy"},{"__symbolic":"reference","name":"ConfigurableFocusTrapConfig"}]}],"destroy":[{"__symbolic":"method"}],"_enable":[{"__symbolic":"method"}],"_disable":[{"__symbolic":"method"}]}},"ConfigurableFocusTrapConfig":{"__symbolic":"interface"},"ConfigurableFocusTrapFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":32,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":33,"character":19},"arguments":[{"__symbolic":"reference","name":"FOCUS_TRAP_INERT_STRATEGY"}]}]],"parameters":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":30,"character":23},{"__symbolic":"reference","name":"ɵangular_material_src_cdk_a11y_a11y_a"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"FocusTrapInertStrategy"}]}],"create":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EventListenerFocusTrapInertStrategy":{"__symbolic":"class","members":{"preventFocus":[{"__symbolic":"method"}],"allowFocus":[{"__symbolic":"method"}],"_trapFocus":[{"__symbolic":"method"}]}},"FocusTrap":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":60,"character":23,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/focus-trap"},{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":62,"character":22},{"__symbolic":"error","message":"Could not resolve type","line":63,"character":24,"context":{"typeName":"Document"},"module":"./focus-trap/focus-trap"},null]}],"destroy":[{"__symbolic":"method"}],"attachAnchors":[{"__symbolic":"method"}],"focusInitialElementWhenReady":[{"__symbolic":"method"}],"focusFirstTabbableElementWhenReady":[{"__symbolic":"method"}],"focusLastTabbableElementWhenReady":[{"__symbolic":"method"}],"_getRegionBoundary":[{"__symbolic":"method"}],"focusInitialElement":[{"__symbolic":"method"}],"focusFirstTabbableElement":[{"__symbolic":"method"}],"focusLastTabbableElement":[{"__symbolic":"method"}],"hasAttached":[{"__symbolic":"method"}],"_getFirstTabbableElement":[{"__symbolic":"method"}],"_getLastTabbableElement":[{"__symbolic":"method"}],"_createAnchor":[{"__symbolic":"method"}],"_toggleAnchorTabIndex":[{"__symbolic":"method"}],"toggleAnchors":[{"__symbolic":"method"}],"_executeOnStable":[{"__symbolic":"method"}]}},"FocusTrapFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":360,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":367,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":367,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":62,"character":22},{"__symbolic":"reference","name":"any"}]}],"create":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CdkTrapFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":386,"character":1},"arguments":[{"selector":"[cdkTrapFocus]","exportAs":"cdkTrapFocus"}]}],"members":{"enabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":398,"character":3},"arguments":["cdkTrapFocus"]}]}],"autoCapture":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":406,"character":3},"arguments":["cdkTrapFocusAutoCapture"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":418,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":418,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":412,"character":38,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/focus-trap"}]},{"__symbolic":"reference","name":"FocusTrapFactory"},{"__symbolic":"reference","name":"any"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"_captureFocus":[{"__symbolic":"method"}]}},"FOCUS_TRAP_INERT_STRATEGY":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":6},"arguments":["FOCUS_TRAP_INERT_STRATEGY"]},"FocusTrapInertStrategy":{"__symbolic":"interface"},"IsFocusableConfig":{"__symbolic":"class","members":{}},"InteractivityChecker":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":32,"character":33}]}],"isDisabled":[{"__symbolic":"method"}],"isVisible":[{"__symbolic":"method"}],"isTabbable":[{"__symbolic":"method"}],"isFocusable":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LiveAnnouncer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":36,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":36,"character":19},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN"}]}],null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":38,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":19},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_DEFAULT_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":37,"character":23},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LiveAnnouncerDefaultOptions"}]}],"announce":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createLiveElement":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CdkAriaLive":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":179,"character":1},"arguments":[{"selector":"[cdkAriaLive]","exportAs":"cdkAriaLive"}]}],"members":{"politeness":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":185,"character":3},"arguments":["cdkAriaLive"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":217,"character":35},{"__symbolic":"reference","name":"LiveAnnouncer"},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ContentObserver","line":218,"character":40},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":37,"character":23}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AriaLivePoliteness":{"__symbolic":"interface"},"LIVE_ANNOUNCER_ELEMENT_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":17,"character":8},"arguments":["liveAnnouncerElement",{"providedIn":"root","factory":{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY"}}]},"LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY":{"__symbolic":"function","parameters":[],"value":null},"LiveAnnouncerDefaultOptions":{"__symbolic":"interface"},"LIVE_ANNOUNCER_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":38,"character":8},"arguments":["LIVE_ANNOUNCER_DEFAULT_OPTIONS"]},"TOUCH_BUFFER_MS":650,"FocusOrigin":{"__symbolic":"interface"},"FocusOptions":{"__symbolic":"interface"},"FocusMonitorDetectionMode":{"IMMEDIATE":0,"EVENTUAL":1},"FocusMonitorOptions":{"__symbolic":"interface"},"FOCUS_MONITOR_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":69,"character":8},"arguments":["cdk-focus-monitor-default-options"]},"FocusMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":88,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":196,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":196,"character":19},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":196,"character":26}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":197,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":197,"character":19},"arguments":[{"__symbolic":"reference","name":"FOCUS_MONITOR_DEFAULT_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":193,"character":23},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":194,"character":25},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}],"monitor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"stopMonitoring":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"focusVia":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_getDocument":[{"__symbolic":"method"}],"_getWindow":[{"__symbolic":"method"}],"_toggleClass":[{"__symbolic":"method"}],"_getFocusOrigin":[{"__symbolic":"method"}],"_setClasses":[{"__symbolic":"method"}],"_setOriginForCurrentEventQueue":[{"__symbolic":"method"}],"_wasCausedByTouch":[{"__symbolic":"method"}],"_onFocus":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"_emitOrigin":[{"__symbolic":"method"}],"_registerGlobalListeners":[{"__symbolic":"method"}],"_removeGlobalListeners":[{"__symbolic":"method"}],"_originChanged":[{"__symbolic":"method"}],"_getClosestElementsInfo":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CdkMonitorFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":601,"character":1},"arguments":[{"selector":"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]"}]}],"members":{"cdkFocusChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":606,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":608,"character":46,"context":{"typeName":"HTMLElement"},"module":"./focus-monitor/focus-monitor"}]},{"__symbolic":"reference","name":"FocusMonitor"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"isFakeMousedownFromScreenReader":{"__symbolic":"function","parameters":["event"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"buttons"},"right":0}},"isFakeTouchstartFromScreenReader":{"__symbolic":"function"},"A11yModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":18,"character":12},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ObserversModule","line":18,"character":28}],"declarations":[{"__symbolic":"reference","name":"CdkAriaLive"},{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"CdkMonitorFocus"}],"exports":[{"__symbolic":"reference","name":"CdkAriaLive"},{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"CdkMonitorFocus"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"HighContrastModeDetector"}]}]}},"HighContrastModeDetector":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":40,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":49,"character":44},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":49,"character":51}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":49,"character":33},{"__symbolic":"reference","name":"any"}]}],"getHighContrastMode":[{"__symbolic":"method"}],"_applyBodyHighContrastModeCssClasses":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"HighContrastMode":{"NONE":0,"BLACK_ON_WHITE":1,"WHITE_ON_BLACK":2},"ɵangular_material_src_cdk_a11y_a11y_a":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"register":[{"__symbolic":"method"}],"deregister":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"RegisteredMessage":"./aria-describer/aria-describer","MESSAGES_CONTAINER_ID":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_ID_PREFIX":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"./aria-describer/aria-describer","AriaDescriber":"./aria-describer/aria-describer","Highlightable":"./key-manager/activedescendant-key-manager","ActiveDescendantKeyManager":"./key-manager/activedescendant-key-manager","FocusableOption":"./key-manager/focus-key-manager","FocusKeyManager":"./key-manager/focus-key-manager","ListKeyManagerOption":"./key-manager/list-key-manager","ListKeyManagerModifierKey":"./key-manager/list-key-manager","ListKeyManager":"./key-manager/list-key-manager","ConfigurableFocusTrap":"./focus-trap/configurable-focus-trap","ConfigurableFocusTrapConfig":"./focus-trap/configurable-focus-trap-config","ConfigurableFocusTrapFactory":"./focus-trap/configurable-focus-trap-factory","EventListenerFocusTrapInertStrategy":"./focus-trap/event-listener-inert-strategy","FocusTrap":"./focus-trap/focus-trap","FocusTrapFactory":"./focus-trap/focus-trap","CdkTrapFocus":"./focus-trap/focus-trap","FOCUS_TRAP_INERT_STRATEGY":"./focus-trap/focus-trap-inert-strategy","FocusTrapInertStrategy":"./focus-trap/focus-trap-inert-strategy","IsFocusableConfig":"./interactivity-checker/interactivity-checker","InteractivityChecker":"./interactivity-checker/interactivity-checker","LiveAnnouncer":"./live-announcer/live-announcer","CdkAriaLive":"./live-announcer/live-announcer","AriaLivePoliteness":"./live-announcer/live-announcer-tokens","LIVE_ANNOUNCER_ELEMENT_TOKEN":"./live-announcer/live-announcer-tokens","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY":"./live-announcer/live-announcer-tokens","LiveAnnouncerDefaultOptions":"./live-announcer/live-announcer-tokens","LIVE_ANNOUNCER_DEFAULT_OPTIONS":"./live-announcer/live-announcer-tokens","TOUCH_BUFFER_MS":"./focus-monitor/focus-monitor","FocusOrigin":"./focus-monitor/focus-monitor","FocusOptions":"./focus-monitor/focus-monitor","FocusMonitorDetectionMode":"./focus-monitor/focus-monitor","FocusMonitorOptions":"./focus-monitor/focus-monitor","FOCUS_MONITOR_DEFAULT_OPTIONS":"./focus-monitor/focus-monitor","FocusMonitor":"./focus-monitor/focus-monitor","CdkMonitorFocus":"./focus-monitor/focus-monitor","isFakeMousedownFromScreenReader":"./fake-event-detection","isFakeTouchstartFromScreenReader":"./fake-event-detection","A11yModule":"./a11y-module","HighContrastModeDetector":"./high-contrast-mode/high-contrast-mode-detector","HighContrastMode":"./high-contrast-mode/high-contrast-mode-detector","ɵangular_material_src_cdk_a11y_a11y_a":"./focus-trap/focus-trap-manager"},"importAs":"@angular/cdk/a11y"}
1
+ {"__symbolic":"module","version":4,"metadata":{"RegisteredMessage":{"__symbolic":"interface"},"MESSAGES_CONTAINER_ID":"cdk-describedby-message-container","CDK_DESCRIBEDBY_ID_PREFIX":"cdk-describedby-message","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"cdk-describedby-host","AriaDescriber":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":53,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":53,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"describe":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"removeDescription":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createMessageElement":[{"__symbolic":"method"}],"_deleteMessageElement":[{"__symbolic":"method"}],"_createMessagesContainer":[{"__symbolic":"method"}],"_deleteMessagesContainer":[{"__symbolic":"method"}],"_removeCdkDescribedByReferenceIds":[{"__symbolic":"method"}],"_addMessageReference":[{"__symbolic":"method"}],"_removeMessageReference":[{"__symbolic":"method"}],"_isElementDescribedByMessage":[{"__symbolic":"method"}],"_canBeDescribed":[{"__symbolic":"method"}],"_isElementNode":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"Highlightable":{"__symbolic":"interface"},"ActiveDescendantKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]}},"FocusableOption":{"__symbolic":"interface"},"FocusKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setFocusOrigin":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]}},"ListKeyManagerOption":{"__symbolic":"interface"},"ListKeyManagerModifierKey":{"__symbolic":"interface"},"ListKeyManager":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"QueryList","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":62,"character":40,"context":{"typeName":"T"},"module":"./key-manager/list-key-manager"}]}]}],"skipPredicate":[{"__symbolic":"method"}],"withWrap":[{"__symbolic":"method"}],"withVerticalOrientation":[{"__symbolic":"method"}],"withHorizontalOrientation":[{"__symbolic":"method"}],"withAllowedModifierKeys":[{"__symbolic":"method"}],"withTypeAhead":[{"__symbolic":"method"}],"withHomeAndEnd":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"isTyping":[{"__symbolic":"method"}],"setFirstItemActive":[{"__symbolic":"method"}],"setLastItemActive":[{"__symbolic":"method"}],"setNextItemActive":[{"__symbolic":"method"}],"setPreviousItemActive":[{"__symbolic":"method"}],"updateActiveItem":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"_setActiveItemByDelta":[{"__symbolic":"method"}],"_setActiveInWrapMode":[{"__symbolic":"method"}],"_setActiveInDefaultMode":[{"__symbolic":"method"}],"_setActiveItemByIndex":[{"__symbolic":"method"}],"_getItemsArray":[{"__symbolic":"method"}]}},"ConfigurableFocusTrap":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FocusTrap"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":34,"character":14,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/configurable-focus-trap"},{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":36,"character":13},{"__symbolic":"error","message":"Could not resolve type","line":37,"character":15,"context":{"typeName":"Document"},"module":"./focus-trap/configurable-focus-trap"},{"__symbolic":"reference","name":"ɵangular_material_src_cdk_a11y_a11y_a"},{"__symbolic":"reference","name":"FocusTrapInertStrategy"},{"__symbolic":"reference","name":"ConfigurableFocusTrapConfig"}]}],"destroy":[{"__symbolic":"method"}],"_enable":[{"__symbolic":"method"}],"_disable":[{"__symbolic":"method"}]}},"ConfigurableFocusTrapConfig":{"__symbolic":"interface"},"ConfigurableFocusTrapFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":32,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":33,"character":19},"arguments":[{"__symbolic":"reference","name":"FOCUS_TRAP_INERT_STRATEGY"}]}]],"parameters":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":30,"character":23},{"__symbolic":"reference","name":"ɵangular_material_src_cdk_a11y_a11y_a"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"FocusTrapInertStrategy"}]}],"create":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EventListenerFocusTrapInertStrategy":{"__symbolic":"class","members":{"preventFocus":[{"__symbolic":"method"}],"allowFocus":[{"__symbolic":"method"}],"_trapFocus":[{"__symbolic":"method"}]}},"FocusTrap":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":60,"character":23,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/focus-trap"},{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":62,"character":22},{"__symbolic":"error","message":"Could not resolve type","line":63,"character":24,"context":{"typeName":"Document"},"module":"./focus-trap/focus-trap"},null]}],"destroy":[{"__symbolic":"method"}],"attachAnchors":[{"__symbolic":"method"}],"focusInitialElementWhenReady":[{"__symbolic":"method"}],"focusFirstTabbableElementWhenReady":[{"__symbolic":"method"}],"focusLastTabbableElementWhenReady":[{"__symbolic":"method"}],"_getRegionBoundary":[{"__symbolic":"method"}],"focusInitialElement":[{"__symbolic":"method"}],"focusFirstTabbableElement":[{"__symbolic":"method"}],"focusLastTabbableElement":[{"__symbolic":"method"}],"hasAttached":[{"__symbolic":"method"}],"_getFirstTabbableElement":[{"__symbolic":"method"}],"_getLastTabbableElement":[{"__symbolic":"method"}],"_createAnchor":[{"__symbolic":"method"}],"_toggleAnchorTabIndex":[{"__symbolic":"method"}],"toggleAnchors":[{"__symbolic":"method"}],"_executeOnStable":[{"__symbolic":"method"}]}},"FocusTrapFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":360,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":367,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":367,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":62,"character":22},{"__symbolic":"reference","name":"any"}]}],"create":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CdkTrapFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":386,"character":1},"arguments":[{"selector":"[cdkTrapFocus]","exportAs":"cdkTrapFocus"}]}],"members":{"enabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":398,"character":3},"arguments":["cdkTrapFocus"]}]}],"autoCapture":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":406,"character":3},"arguments":["cdkTrapFocusAutoCapture"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":418,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":418,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":412,"character":38,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/focus-trap"}]},{"__symbolic":"reference","name":"FocusTrapFactory"},{"__symbolic":"reference","name":"any"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"_captureFocus":[{"__symbolic":"method"}]}},"FOCUS_TRAP_INERT_STRATEGY":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":6},"arguments":["FOCUS_TRAP_INERT_STRATEGY"]},"FocusTrapInertStrategy":{"__symbolic":"interface"},"IsFocusableConfig":{"__symbolic":"class","members":{}},"InteractivityChecker":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":32,"character":33}]}],"isDisabled":[{"__symbolic":"method"}],"isVisible":[{"__symbolic":"method"}],"isTabbable":[{"__symbolic":"method"}],"isFocusable":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"InputModality":{"__symbolic":"interface"},"InputModalityDetector":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":89,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":172,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":172,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":173,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":173,"character":19},"arguments":[{"__symbolic":"reference","name":"INPUT_MODALITY_DETECTOR_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":170,"character":34},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":171,"character":14},{"__symbolic":"error","message":"Could not resolve type","line":172,"character":34,"context":{"typeName":"Document"},"module":"./input-modality/input-modality-detector"},{"__symbolic":"reference","name":"any"}]}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"InputModalityDetectorOptions":{"__symbolic":"interface"},"INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS":{"ignoreKeys":[{"__symbolic":"reference","module":"@angular/cdk/keycodes","name":"ALT","line":54,"character":15},{"__symbolic":"reference","module":"@angular/cdk/keycodes","name":"CONTROL","line":54,"character":20},{"__symbolic":"reference","module":"@angular/cdk/keycodes","name":"MAC_META","line":54,"character":29},{"__symbolic":"reference","module":"@angular/cdk/keycodes","name":"META","line":54,"character":39},{"__symbolic":"reference","module":"@angular/cdk/keycodes","name":"SHIFT","line":54,"character":45}]},"INPUT_MODALITY_DETECTOR_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":35,"character":6},"arguments":["cdk-input-modality-detector-options"]},"LiveAnnouncer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":36,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":36,"character":19},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN"}]}],null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":38,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":19},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_DEFAULT_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":37,"character":23},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LiveAnnouncerDefaultOptions"}]}],"announce":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createLiveElement":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CdkAriaLive":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":179,"character":1},"arguments":[{"selector":"[cdkAriaLive]","exportAs":"cdkAriaLive"}]}],"members":{"politeness":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":185,"character":3},"arguments":["cdkAriaLive"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":217,"character":35},{"__symbolic":"reference","name":"LiveAnnouncer"},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ContentObserver","line":218,"character":40},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":37,"character":23}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AriaLivePoliteness":{"__symbolic":"interface"},"LIVE_ANNOUNCER_ELEMENT_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":17,"character":8},"arguments":["liveAnnouncerElement",{"providedIn":"root","factory":{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY"}}]},"LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY":{"__symbolic":"function","parameters":[],"value":null},"LiveAnnouncerDefaultOptions":{"__symbolic":"interface"},"LIVE_ANNOUNCER_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":38,"character":8},"arguments":["LIVE_ANNOUNCER_DEFAULT_OPTIONS"]},"FocusOrigin":{"__symbolic":"interface"},"FocusOptions":{"__symbolic":"interface"},"FocusMonitorDetectionMode":{"IMMEDIATE":0,"EVENTUAL":1},"FocusMonitorOptions":{"__symbolic":"interface"},"FOCUS_MONITOR_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":66,"character":8},"arguments":["cdk-focus-monitor-default-options"]},"FocusMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":85,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":150,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":150,"character":19},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":150,"character":26}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":151,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":151,"character":19},"arguments":[{"__symbolic":"reference","name":"FOCUS_MONITOR_DEFAULT_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":146,"character":23},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":147,"character":25},{"__symbolic":"reference","name":"InputModalityDetector"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}],"monitor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"stopMonitoring":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"focusVia":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_getDocument":[{"__symbolic":"method"}],"_getWindow":[{"__symbolic":"method"}],"_toggleClass":[{"__symbolic":"method"}],"_getFocusOrigin":[{"__symbolic":"method"}],"_shouldBeAttributedToTouch":[{"__symbolic":"method"}],"_setClasses":[{"__symbolic":"method"}],"_setOrigin":[{"__symbolic":"method"}],"_onFocus":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"_emitOrigin":[{"__symbolic":"method"}],"_registerGlobalListeners":[{"__symbolic":"method"}],"_removeGlobalListeners":[{"__symbolic":"method"}],"_originChanged":[{"__symbolic":"method"}],"_getClosestElementsInfo":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CdkMonitorFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":544,"character":1},"arguments":[{"selector":"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]"}]}],"members":{"cdkFocusChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":549,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":551,"character":46,"context":{"typeName":"HTMLElement"},"module":"./focus-monitor/focus-monitor"}]},{"__symbolic":"reference","name":"FocusMonitor"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"isFakeMousedownFromScreenReader":{"__symbolic":"function","parameters":["event"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"buttons"},"right":0}},"isFakeTouchstartFromScreenReader":{"__symbolic":"function"},"A11yModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":18,"character":12},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ObserversModule","line":18,"character":28}],"declarations":[{"__symbolic":"reference","name":"CdkAriaLive"},{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"CdkMonitorFocus"}],"exports":[{"__symbolic":"reference","name":"CdkAriaLive"},{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"CdkMonitorFocus"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"HighContrastModeDetector"}]}]}},"HighContrastModeDetector":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":40,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":49,"character":44},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":49,"character":51}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":49,"character":33},{"__symbolic":"reference","name":"any"}]}],"getHighContrastMode":[{"__symbolic":"method"}],"_applyBodyHighContrastModeCssClasses":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"HighContrastMode":{"NONE":0,"BLACK_ON_WHITE":1,"WHITE_ON_BLACK":2},"ɵangular_material_src_cdk_a11y_a11y_a":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"register":[{"__symbolic":"method"}],"deregister":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"RegisteredMessage":"./aria-describer/aria-describer","MESSAGES_CONTAINER_ID":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_ID_PREFIX":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"./aria-describer/aria-describer","AriaDescriber":"./aria-describer/aria-describer","Highlightable":"./key-manager/activedescendant-key-manager","ActiveDescendantKeyManager":"./key-manager/activedescendant-key-manager","FocusableOption":"./key-manager/focus-key-manager","FocusKeyManager":"./key-manager/focus-key-manager","ListKeyManagerOption":"./key-manager/list-key-manager","ListKeyManagerModifierKey":"./key-manager/list-key-manager","ListKeyManager":"./key-manager/list-key-manager","ConfigurableFocusTrap":"./focus-trap/configurable-focus-trap","ConfigurableFocusTrapConfig":"./focus-trap/configurable-focus-trap-config","ConfigurableFocusTrapFactory":"./focus-trap/configurable-focus-trap-factory","EventListenerFocusTrapInertStrategy":"./focus-trap/event-listener-inert-strategy","FocusTrap":"./focus-trap/focus-trap","FocusTrapFactory":"./focus-trap/focus-trap","CdkTrapFocus":"./focus-trap/focus-trap","FOCUS_TRAP_INERT_STRATEGY":"./focus-trap/focus-trap-inert-strategy","FocusTrapInertStrategy":"./focus-trap/focus-trap-inert-strategy","IsFocusableConfig":"./interactivity-checker/interactivity-checker","InteractivityChecker":"./interactivity-checker/interactivity-checker","InputModality":"./input-modality/input-modality-detector","InputModalityDetector":"./input-modality/input-modality-detector","InputModalityDetectorOptions":"./input-modality/input-modality-detector","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS":"./input-modality/input-modality-detector","INPUT_MODALITY_DETECTOR_OPTIONS":"./input-modality/input-modality-detector","LiveAnnouncer":"./live-announcer/live-announcer","CdkAriaLive":"./live-announcer/live-announcer","AriaLivePoliteness":"./live-announcer/live-announcer-tokens","LIVE_ANNOUNCER_ELEMENT_TOKEN":"./live-announcer/live-announcer-tokens","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY":"./live-announcer/live-announcer-tokens","LiveAnnouncerDefaultOptions":"./live-announcer/live-announcer-tokens","LIVE_ANNOUNCER_DEFAULT_OPTIONS":"./live-announcer/live-announcer-tokens","FocusOrigin":"./focus-monitor/focus-monitor","FocusOptions":"./focus-monitor/focus-monitor","FocusMonitorDetectionMode":"./focus-monitor/focus-monitor","FocusMonitorOptions":"./focus-monitor/focus-monitor","FOCUS_MONITOR_DEFAULT_OPTIONS":"./focus-monitor/focus-monitor","FocusMonitor":"./focus-monitor/focus-monitor","CdkMonitorFocus":"./focus-monitor/focus-monitor","isFakeMousedownFromScreenReader":"./fake-event-detection","isFakeTouchstartFromScreenReader":"./fake-event-detection","A11yModule":"./a11y-module","HighContrastModeDetector":"./high-contrast-mode/high-contrast-mode-detector","HighContrastMode":"./high-contrast-mode/high-contrast-mode-detector","ɵangular_material_src_cdk_a11y_a11y_a":"./focus-trap/focus-trap-manager"},"importAs":"@angular/cdk/a11y"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { InjectionToken, OnDestroy, NgZone } from '@angular/core';
9
+ import { Platform } from '@angular/cdk/platform';
10
+ import { Observable } from 'rxjs';
11
+ /**
12
+ * The input modalities detected by this service. Null is used if the input modality is unknown.
13
+ */
14
+ export declare type InputModality = 'keyboard' | 'mouse' | 'touch' | null;
15
+ /** Options to configure the behavior of the InputModalityDetector. */
16
+ export interface InputModalityDetectorOptions {
17
+ /** Keys to ignore when detecting keyboard input modality. */
18
+ ignoreKeys?: number[];
19
+ }
20
+ /**
21
+ * Injectable options for the InputModalityDetector. These are shallowly merged with the default
22
+ * options.
23
+ */
24
+ export declare const INPUT_MODALITY_DETECTOR_OPTIONS: InjectionToken<InputModalityDetectorOptions>;
25
+ /**
26
+ * Default options for the InputModalityDetector.
27
+ *
28
+ * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect
29
+ * keyboard input modality) for two reasons:
30
+ *
31
+ * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open
32
+ * in new tab', and are thus less representative of actual keyboard interaction.
33
+ * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but
34
+ * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore
35
+ * these keys so as to not update the input modality.
36
+ *
37
+ * Note that we do not by default ignore the right Meta key on Safari because it has the same key
38
+ * code as the ContextMenu key on other browsers. When we switch to using event.key, we can
39
+ * distinguish between the two.
40
+ */
41
+ export declare const INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS: InputModalityDetectorOptions;
42
+ /**
43
+ * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown
44
+ * event to be attributed as mouse and not touch.
45
+ *
46
+ * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found
47
+ * that a value of around 650ms seems appropriate.
48
+ */
49
+ export declare const TOUCH_BUFFER_MS = 650;
50
+ /**
51
+ * Service that detects the user's input modality.
52
+ *
53
+ * This service does not update the input modality when a user navigates with a screen reader
54
+ * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC
55
+ * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not
56
+ * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a
57
+ * screen reader is akin to visually scanning a page, and should not be interpreted as actual user
58
+ * input interaction.
59
+ *
60
+ * When a user is not navigating but *interacting* with a screen reader, this service attempts to
61
+ * update the input modality to keyboard, but in general this service's behavior is largely
62
+ * undefined.
63
+ */
64
+ export declare class InputModalityDetector implements OnDestroy {
65
+ private readonly _platform;
66
+ /** Emits whenever an input modality is detected. */
67
+ readonly modalityDetected: Observable<InputModality>;
68
+ /** Emits when the input modality changes. */
69
+ readonly modalityChanged: Observable<InputModality>;
70
+ /** The most recently detected input modality. */
71
+ get mostRecentModality(): InputModality;
72
+ /**
73
+ * The most recently detected input modality event target. Is null if no input modality has been
74
+ * detected or if the associated event target is null for some unknown reason.
75
+ */
76
+ _mostRecentTarget: HTMLElement | null;
77
+ /** The underlying BehaviorSubject that emits whenever an input modality is detected. */
78
+ private readonly _modality;
79
+ /** Options for this InputModalityDetector. */
80
+ private readonly _options;
81
+ /**
82
+ * The timestamp of the last touch input modality. Used to determine whether mousedown events
83
+ * should be attributed to mouse or touch.
84
+ */
85
+ private _lastTouchMs;
86
+ /**
87
+ * Handles keydown events. Must be an arrow function in order to preserve the context when it gets
88
+ * bound.
89
+ */
90
+ private _onKeydown;
91
+ /**
92
+ * Handles mousedown events. Must be an arrow function in order to preserve the context when it
93
+ * gets bound.
94
+ */
95
+ private _onMousedown;
96
+ /**
97
+ * Handles touchstart events. Must be an arrow function in order to preserve the context when it
98
+ * gets bound.
99
+ */
100
+ private _onTouchstart;
101
+ constructor(_platform: Platform, ngZone: NgZone, document: Document, options?: InputModalityDetectorOptions);
102
+ ngOnDestroy(): void;
103
+ }
104
+ /** Gets the target of an event, accounting for Shadow DOM. */
105
+ export declare function getTarget(event: Event): HTMLElement | null;
@@ -16,6 +16,7 @@ export * from './focus-trap/event-listener-inert-strategy';
16
16
  export * from './focus-trap/focus-trap';
17
17
  export * from './focus-trap/focus-trap-inert-strategy';
18
18
  export * from './interactivity-checker/interactivity-checker';
19
+ export { InputModality, InputModalityDetector, InputModalityDetectorOptions, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, } from './input-modality/input-modality-detector';
19
20
  export * from './live-announcer/live-announcer';
20
21
  export * from './live-announcer/live-announcer-tokens';
21
22
  export * from './focus-monitor/focus-monitor';