@angular/cdk 14.0.0-next.7 → 14.0.0-rc.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 (473) hide show
  1. package/a11y/_index.scss +11 -0
  2. package/a11y/index.d.ts +1119 -5
  3. package/a11y-prebuilt.css +1 -1
  4. package/accordion/index.d.ts +108 -6
  5. package/bidi/index.d.ts +77 -5
  6. package/clipboard/index.d.ts +112 -5
  7. package/coercion/index.d.ts +64 -5
  8. package/collections/index.d.ts +348 -5
  9. package/dialog/index.d.ts +410 -0
  10. package/drag-drop/index.d.ts +1456 -5
  11. package/esm2020/a11y/a11y-module.mjs +5 -5
  12. package/esm2020/a11y/aria-describer/aria-describer.mjs +4 -4
  13. package/esm2020/a11y/focus-monitor/focus-monitor.mjs +16 -14
  14. package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +4 -4
  15. package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +4 -4
  16. package/esm2020/a11y/focus-trap/focus-trap.mjs +7 -7
  17. package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +10 -10
  18. package/esm2020/a11y/input-modality/input-modality-detector.mjs +4 -4
  19. package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +4 -4
  20. package/esm2020/a11y/live-announcer/live-announcer.mjs +22 -17
  21. package/esm2020/accordion/accordion-item.mjs +4 -4
  22. package/esm2020/accordion/accordion-module.mjs +5 -5
  23. package/esm2020/accordion/accordion.mjs +4 -4
  24. package/esm2020/bidi/bidi-module.mjs +5 -5
  25. package/esm2020/bidi/dir.mjs +4 -4
  26. package/esm2020/bidi/directionality.mjs +4 -4
  27. package/esm2020/clipboard/clipboard-module.mjs +5 -5
  28. package/esm2020/clipboard/clipboard.mjs +4 -4
  29. package/esm2020/clipboard/copy-to-clipboard.mjs +4 -4
  30. package/esm2020/collections/dispose-view-repeater-strategy.mjs +4 -4
  31. package/esm2020/collections/recycle-view-repeater-strategy.mjs +4 -4
  32. package/esm2020/collections/unique-selection-dispatcher.mjs +4 -4
  33. package/esm2020/dialog/dialog-config.mjs +63 -0
  34. package/esm2020/dialog/dialog-container.mjs +278 -0
  35. package/esm2020/dialog/dialog-injectors.mjs +26 -0
  36. package/esm2020/dialog/dialog-module.mjs +42 -0
  37. package/esm2020/dialog/dialog-ref.mjs +76 -0
  38. package/esm2020/dialog/dialog.mjs +298 -0
  39. package/esm2020/dialog/dialog_public_index.mjs +5 -0
  40. package/esm2020/dialog/index.mjs +9 -0
  41. package/esm2020/dialog/public-api.mjs +14 -0
  42. package/esm2020/drag-drop/directives/drag-handle.mjs +4 -4
  43. package/esm2020/drag-drop/directives/drag-placeholder.mjs +4 -4
  44. package/esm2020/drag-drop/directives/drag-preview.mjs +4 -4
  45. package/esm2020/drag-drop/directives/drag.mjs +11 -4
  46. package/esm2020/drag-drop/directives/drop-list-group.mjs +4 -4
  47. package/esm2020/drag-drop/directives/drop-list.mjs +4 -4
  48. package/esm2020/drag-drop/drag-drop-module.mjs +5 -5
  49. package/esm2020/drag-drop/drag-drop-registry.mjs +4 -4
  50. package/esm2020/drag-drop/drag-drop.mjs +4 -4
  51. package/esm2020/drag-drop/drop-list-ref.mjs +23 -23
  52. package/esm2020/layout/breakpoints-observer.mjs +4 -4
  53. package/esm2020/layout/layout-module.mjs +5 -5
  54. package/esm2020/layout/media-matcher.mjs +4 -4
  55. package/esm2020/menu/context-menu-trigger.mjs +229 -0
  56. package/esm2020/menu/index.mjs +9 -0
  57. package/esm2020/menu/menu-aim.mjs +204 -0
  58. package/esm2020/menu/menu-bar.mjs +159 -0
  59. package/esm2020/menu/menu-base.mjs +203 -0
  60. package/esm2020/menu/menu-errors.mjs +22 -0
  61. package/esm2020/menu/menu-group.mjs +30 -0
  62. package/esm2020/menu/menu-interface.mjs +11 -0
  63. package/esm2020/menu/menu-item-checkbox.mjs +48 -0
  64. package/esm2020/menu/menu-item-radio.mjs +114 -0
  65. package/esm2020/menu/menu-item-selectable.mjs +42 -0
  66. package/esm2020/menu/menu-item.mjs +289 -0
  67. package/esm2020/menu/menu-module.mjs +62 -0
  68. package/esm2020/menu/menu-stack.mjs +156 -0
  69. package/esm2020/menu/menu-trigger-base.mjs +114 -0
  70. package/esm2020/menu/menu-trigger.mjs +304 -0
  71. package/esm2020/menu/menu.mjs +168 -0
  72. package/esm2020/menu/menu_public_index.mjs +5 -0
  73. package/esm2020/menu/pointer-focus-tracker.mjs +51 -0
  74. package/esm2020/menu/public-api.mjs +24 -0
  75. package/esm2020/observers/observe-content.mjs +14 -14
  76. package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +4 -4
  77. package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +4 -4
  78. package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +4 -4
  79. package/esm2020/overlay/fullscreen-overlay-container.mjs +4 -4
  80. package/esm2020/overlay/overlay-container.mjs +4 -4
  81. package/esm2020/overlay/overlay-directives.mjs +7 -7
  82. package/esm2020/overlay/overlay-module.mjs +5 -5
  83. package/esm2020/overlay/overlay-ref.mjs +14 -5
  84. package/esm2020/overlay/overlay.mjs +14 -8
  85. package/esm2020/overlay/position/flexible-connected-position-strategy.mjs +13 -1
  86. package/esm2020/overlay/position/overlay-position-builder.mjs +4 -4
  87. package/esm2020/overlay/public-api.mjs +2 -2
  88. package/esm2020/overlay/scroll/scroll-strategy-options.mjs +4 -4
  89. package/esm2020/platform/features/scrolling.mjs +4 -4
  90. package/esm2020/platform/platform-module.mjs +5 -5
  91. package/esm2020/platform/platform.mjs +4 -4
  92. package/esm2020/portal/dom-portal-outlet.mjs +26 -4
  93. package/esm2020/portal/portal-directives.mjs +17 -17
  94. package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +4 -4
  95. package/esm2020/scrolling/scroll-dispatcher.mjs +4 -4
  96. package/esm2020/scrolling/scrollable.mjs +9 -9
  97. package/esm2020/scrolling/scrolling-module.mjs +9 -9
  98. package/esm2020/scrolling/viewport-ruler.mjs +4 -4
  99. package/esm2020/scrolling/virtual-for-of.mjs +7 -5
  100. package/esm2020/scrolling/virtual-scroll-viewport.mjs +6 -6
  101. package/esm2020/stepper/step-header.mjs +4 -4
  102. package/esm2020/stepper/step-label.mjs +4 -4
  103. package/esm2020/stepper/stepper-button.mjs +7 -7
  104. package/esm2020/stepper/stepper-module.mjs +5 -5
  105. package/esm2020/stepper/stepper.mjs +7 -7
  106. package/esm2020/table/cell.mjs +22 -22
  107. package/esm2020/table/coalesced-style-scheduler.mjs +4 -4
  108. package/esm2020/table/row.mjs +28 -28
  109. package/esm2020/table/table-module.mjs +5 -5
  110. package/esm2020/table/table.mjs +22 -22
  111. package/esm2020/table/text-column.mjs +5 -5
  112. package/esm2020/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +1 -1
  113. package/esm2020/testing/test-element.mjs +1 -1
  114. package/esm2020/testing/testbed/fake-events/type-in-element.mjs +2 -2
  115. package/esm2020/text-field/autofill.mjs +7 -7
  116. package/esm2020/text-field/autosize.mjs +4 -4
  117. package/esm2020/text-field/text-field-module.mjs +5 -5
  118. package/esm2020/tree/nested-node.mjs +4 -4
  119. package/esm2020/tree/node.mjs +4 -4
  120. package/esm2020/tree/outlet.mjs +4 -4
  121. package/esm2020/tree/padding.mjs +4 -4
  122. package/esm2020/tree/toggle.mjs +4 -4
  123. package/esm2020/tree/tree-module.mjs +5 -5
  124. package/esm2020/tree/tree.mjs +7 -7
  125. package/esm2020/version.mjs +1 -1
  126. package/fesm2015/a11y.mjs +71 -64
  127. package/fesm2015/a11y.mjs.map +1 -1
  128. package/fesm2015/accordion.mjs +10 -10
  129. package/fesm2015/accordion.mjs.map +1 -1
  130. package/fesm2015/bidi.mjs +10 -10
  131. package/fesm2015/bidi.mjs.map +1 -1
  132. package/fesm2015/cdk.mjs +1 -1
  133. package/fesm2015/cdk.mjs.map +1 -1
  134. package/fesm2015/clipboard.mjs +10 -10
  135. package/fesm2015/clipboard.mjs.map +1 -1
  136. package/fesm2015/collections.mjs +9 -9
  137. package/fesm2015/collections.mjs.map +1 -1
  138. package/fesm2015/dialog.mjs +780 -0
  139. package/fesm2015/dialog.mjs.map +1 -0
  140. package/fesm2015/drag-drop.mjs +57 -50
  141. package/fesm2015/drag-drop.mjs.map +1 -1
  142. package/fesm2015/layout.mjs +10 -10
  143. package/fesm2015/layout.mjs.map +1 -1
  144. package/fesm2015/menu.mjs +2135 -0
  145. package/fesm2015/menu.mjs.map +1 -0
  146. package/fesm2015/observers.mjs +13 -13
  147. package/fesm2015/observers.mjs.map +1 -1
  148. package/fesm2015/overlay.mjs +70 -43
  149. package/fesm2015/overlay.mjs.map +1 -1
  150. package/fesm2015/platform.mjs +10 -10
  151. package/fesm2015/platform.mjs.map +1 -1
  152. package/fesm2015/portal.mjs +41 -20
  153. package/fesm2015/portal.mjs.map +1 -1
  154. package/fesm2015/scrolling.mjs +36 -34
  155. package/fesm2015/scrolling.mjs.map +1 -1
  156. package/fesm2015/stepper.mjs +22 -22
  157. package/fesm2015/stepper.mjs.map +1 -1
  158. package/fesm2015/table.mjs +80 -80
  159. package/fesm2015/table.mjs.map +1 -1
  160. package/fesm2015/testing/selenium-webdriver.mjs.map +1 -1
  161. package/fesm2015/testing/testbed.mjs +1 -1
  162. package/fesm2015/testing/testbed.mjs.map +1 -1
  163. package/fesm2015/testing.mjs.map +1 -1
  164. package/fesm2015/text-field.mjs +13 -13
  165. package/fesm2015/text-field.mjs.map +1 -1
  166. package/fesm2015/tree.mjs +25 -25
  167. package/fesm2015/tree.mjs.map +1 -1
  168. package/fesm2020/a11y.mjs +70 -63
  169. package/fesm2020/a11y.mjs.map +1 -1
  170. package/fesm2020/accordion.mjs +10 -10
  171. package/fesm2020/accordion.mjs.map +1 -1
  172. package/fesm2020/bidi.mjs +10 -10
  173. package/fesm2020/bidi.mjs.map +1 -1
  174. package/fesm2020/cdk.mjs +1 -1
  175. package/fesm2020/cdk.mjs.map +1 -1
  176. package/fesm2020/clipboard.mjs +10 -10
  177. package/fesm2020/clipboard.mjs.map +1 -1
  178. package/fesm2020/collections.mjs +9 -9
  179. package/fesm2020/collections.mjs.map +1 -1
  180. package/fesm2020/dialog.mjs +784 -0
  181. package/fesm2020/dialog.mjs.map +1 -0
  182. package/fesm2020/drag-drop.mjs +57 -50
  183. package/fesm2020/drag-drop.mjs.map +1 -1
  184. package/fesm2020/layout.mjs +10 -10
  185. package/fesm2020/layout.mjs.map +1 -1
  186. package/fesm2020/menu.mjs +2108 -0
  187. package/fesm2020/menu.mjs.map +1 -0
  188. package/fesm2020/observers.mjs +13 -13
  189. package/fesm2020/observers.mjs.map +1 -1
  190. package/fesm2020/overlay.mjs +70 -43
  191. package/fesm2020/overlay.mjs.map +1 -1
  192. package/fesm2020/platform.mjs +10 -10
  193. package/fesm2020/platform.mjs.map +1 -1
  194. package/fesm2020/portal.mjs +41 -20
  195. package/fesm2020/portal.mjs.map +1 -1
  196. package/fesm2020/scrolling.mjs +36 -34
  197. package/fesm2020/scrolling.mjs.map +1 -1
  198. package/fesm2020/stepper.mjs +22 -22
  199. package/fesm2020/stepper.mjs.map +1 -1
  200. package/fesm2020/table.mjs +80 -80
  201. package/fesm2020/table.mjs.map +1 -1
  202. package/fesm2020/testing/selenium-webdriver.mjs.map +1 -1
  203. package/fesm2020/testing/testbed.mjs +1 -1
  204. package/fesm2020/testing/testbed.mjs.map +1 -1
  205. package/fesm2020/testing.mjs.map +1 -1
  206. package/fesm2020/text-field.mjs +13 -13
  207. package/fesm2020/text-field.mjs.map +1 -1
  208. package/fesm2020/tree.mjs +25 -25
  209. package/fesm2020/tree.mjs.map +1 -1
  210. package/index.d.ts +6 -8
  211. package/keycodes/index.d.ts +247 -6
  212. package/layout/index.d.ts +91 -8
  213. package/menu/index.d.ts +992 -0
  214. package/observers/index.d.ts +89 -6
  215. package/overlay/_index.scss +4 -0
  216. package/overlay/index.d.ts +1202 -5
  217. package/overlay-prebuilt.css +1 -1
  218. package/package.json +34 -18
  219. package/platform/index.d.ts +104 -6
  220. package/portal/index.d.ts +325 -5
  221. package/schematics/collection.json +2 -1
  222. package/schematics/ng-add/index.js +1 -1
  223. package/schematics/ng-add/index.mjs +1 -1
  224. package/schematics/ng-update/data/constructor-checks.js +3 -3
  225. package/schematics/ng-update/data/constructor-checks.mjs +3 -3
  226. package/schematics/utils/build-component.js +2 -2
  227. package/schematics/utils/build-component.mjs +2 -2
  228. package/schematics/utils/get-project.d.ts +1 -1
  229. package/schematics/utils/get-project.js +7 -2
  230. package/schematics/utils/get-project.mjs +7 -2
  231. package/schematics/utils/schematic-options.js +2 -2
  232. package/schematics/utils/schematic-options.mjs +2 -2
  233. package/scrolling/index.d.ts +647 -6
  234. package/stepper/index.d.ts +328 -6
  235. package/table/index.d.ts +1172 -5
  236. package/testing/index.d.ts +726 -5
  237. package/testing/selenium-webdriver/index.d.ts +134 -8
  238. package/testing/testbed/index.d.ts +161 -8
  239. package/text-field/index.d.ts +175 -6
  240. package/text-field-prebuilt.css +1 -1
  241. package/tree/index.d.ts +498 -6
  242. package/a11y/a11y-module.d.ts +0 -12
  243. package/a11y/a11y_public_index.d.ts +0 -4
  244. package/a11y/aria-describer/aria-describer.d.ts +0 -101
  245. package/a11y/aria-describer/aria-reference.d.ts +0 -22
  246. package/a11y/fake-event-detection.d.ts +0 -11
  247. package/a11y/focus-monitor/focus-monitor.d.ts +0 -209
  248. package/a11y/focus-trap/configurable-focus-trap-config.d.ts +0 -16
  249. package/a11y/focus-trap/configurable-focus-trap-factory.d.ts +0 -30
  250. package/a11y/focus-trap/configurable-focus-trap.d.ts +0 -33
  251. package/a11y/focus-trap/event-listener-inert-strategy.d.ts +0 -29
  252. package/a11y/focus-trap/focus-trap-inert-strategy.d.ts +0 -21
  253. package/a11y/focus-trap/focus-trap-manager.d.ts +0 -26
  254. package/a11y/focus-trap/focus-trap.d.ts +0 -163
  255. package/a11y/high-contrast-mode/high-contrast-mode-detector.d.ts +0 -48
  256. package/a11y/input-modality/input-modality-detector.d.ts +0 -99
  257. package/a11y/interactivity-checker/interactivity-checker.d.ts +0 -60
  258. package/a11y/key-manager/activedescendant-key-manager.d.ts +0 -35
  259. package/a11y/key-manager/focus-key-manager.d.ts +0 -37
  260. package/a11y/key-manager/list-key-manager.d.ts +0 -152
  261. package/a11y/live-announcer/live-announcer-tokens.d.ts +0 -22
  262. package/a11y/live-announcer/live-announcer.d.ts +0 -83
  263. package/a11y/package.json +0 -9
  264. package/a11y/public-api.d.ts +0 -25
  265. package/accordion/accordion-item.d.ts +0 -59
  266. package/accordion/accordion-module.d.ts +0 -8
  267. package/accordion/accordion.d.ts +0 -40
  268. package/accordion/accordion_public_index.d.ts +0 -4
  269. package/accordion/package.json +0 -9
  270. package/accordion/public-api.d.ts +0 -10
  271. package/bidi/bidi-module.d.ts +0 -7
  272. package/bidi/bidi_public_index.d.ts +0 -4
  273. package/bidi/dir-document-token.d.ts +0 -26
  274. package/bidi/dir.d.ts +0 -36
  275. package/bidi/directionality.d.ts +0 -26
  276. package/bidi/package.json +0 -9
  277. package/bidi/public-api.d.ts +0 -11
  278. package/clipboard/clipboard-module.d.ts +0 -7
  279. package/clipboard/clipboard.d.ts +0 -28
  280. package/clipboard/clipboard_public_index.d.ts +0 -4
  281. package/clipboard/copy-to-clipboard.d.ts +0 -49
  282. package/clipboard/package.json +0 -9
  283. package/clipboard/pending-copy.d.ts +0 -29
  284. package/clipboard/public-api.d.ts +0 -11
  285. package/coercion/array.d.ts +0 -10
  286. package/coercion/boolean-property.d.ts +0 -14
  287. package/coercion/css-pixel-value.d.ts +0 -9
  288. package/coercion/element.d.ts +0 -13
  289. package/coercion/number-property.d.ts +0 -20
  290. package/coercion/package.json +0 -9
  291. package/coercion/public-api.d.ts +0 -13
  292. package/coercion/string-array.d.ts +0 -25
  293. package/collections/array-data-source.d.ts +0 -16
  294. package/collections/collection-viewer.d.ts +0 -24
  295. package/collections/collections_public_index.d.ts +0 -4
  296. package/collections/data-source.d.ts +0 -30
  297. package/collections/dispose-view-repeater-strategy.d.ts +0 -22
  298. package/collections/package.json +0 -9
  299. package/collections/public-api.d.ts +0 -16
  300. package/collections/recycle-view-repeater-strategy.d.ts +0 -54
  301. package/collections/selection-model.d.ts +0 -95
  302. package/collections/tree-adapter.d.ts +0 -26
  303. package/collections/unique-selection-dispatcher.d.ts +0 -36
  304. package/collections/view-repeater.d.ts +0 -92
  305. package/drag-drop/client-rect.d.ts +0 -38
  306. package/drag-drop/clone-node.d.ts +0 -9
  307. package/drag-drop/directives/assertions.d.ts +0 -13
  308. package/drag-drop/directives/config.d.ts +0 -43
  309. package/drag-drop/directives/drag-handle.d.ts +0 -33
  310. package/drag-drop/directives/drag-placeholder.d.ts +0 -27
  311. package/drag-drop/directives/drag-preview.d.ts +0 -32
  312. package/drag-drop/directives/drag.d.ts +0 -160
  313. package/drag-drop/directives/drop-list-group.d.ts +0 -33
  314. package/drag-drop/directives/drop-list.d.ts +0 -123
  315. package/drag-drop/drag-drop-module.d.ts +0 -13
  316. package/drag-drop/drag-drop-registry.d.ts +0 -89
  317. package/drag-drop/drag-drop.d.ts +0 -36
  318. package/drag-drop/drag-drop_public_index.d.ts +0 -4
  319. package/drag-drop/drag-events.d.ts +0 -124
  320. package/drag-drop/drag-parent.d.ts +0 -15
  321. package/drag-drop/drag-ref.d.ts +0 -448
  322. package/drag-drop/drag-styling.d.ts +0 -42
  323. package/drag-drop/drag-utils.d.ts +0 -32
  324. package/drag-drop/drop-list-ref.d.ts +0 -312
  325. package/drag-drop/package.json +0 -9
  326. package/drag-drop/parent-position-tracker.d.ts +0 -39
  327. package/drag-drop/public-api.d.ts +0 -22
  328. package/drag-drop/transition-duration.d.ts +0 -9
  329. package/keycodes/keycodes.d.ts +0 -126
  330. package/keycodes/keycodes_public_index.d.ts +0 -4
  331. package/keycodes/modifiers.d.ts +0 -14
  332. package/keycodes/package.json +0 -9
  333. package/keycodes/public-api.d.ts +0 -9
  334. package/layout/breakpoints-observer.d.ts +0 -45
  335. package/layout/breakpoints.d.ts +0 -23
  336. package/layout/layout-module.d.ts +0 -6
  337. package/layout/layout_public_index.d.ts +0 -4
  338. package/layout/media-matcher.d.ts +0 -18
  339. package/layout/package.json +0 -9
  340. package/layout/public-api.d.ts +0 -11
  341. package/observers/observe-content.d.ts +0 -87
  342. package/observers/observers_public_index.d.ts +0 -4
  343. package/observers/package.json +0 -9
  344. package/observers/public-api.d.ts +0 -8
  345. package/overlay/dispatchers/base-overlay-dispatcher.d.ts +0 -24
  346. package/overlay/dispatchers/index.d.ts +0 -9
  347. package/overlay/dispatchers/overlay-keyboard-dispatcher.d.ts +0 -24
  348. package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +0 -32
  349. package/overlay/fullscreen-overlay-container.d.ts +0 -35
  350. package/overlay/overlay-config.d.ts +0 -47
  351. package/overlay/overlay-container.d.ts +0 -25
  352. package/overlay/overlay-directives.d.ts +0 -148
  353. package/overlay/overlay-module.d.ts +0 -10
  354. package/overlay/overlay-ref.d.ts +0 -144
  355. package/overlay/overlay-reference.d.ts +0 -38
  356. package/overlay/overlay.d.ts +0 -75
  357. package/overlay/overlay_public_index.d.ts +0 -4
  358. package/overlay/package.json +0 -9
  359. package/overlay/position/connected-position.d.ts +0 -102
  360. package/overlay/position/flexible-connected-position-strategy.d.ts +0 -280
  361. package/overlay/position/global-position-strategy.d.ts +0 -99
  362. package/overlay/position/overlay-position-builder.d.ts +0 -32
  363. package/overlay/position/position-strategy.d.ts +0 -19
  364. package/overlay/position/scroll-clip.d.ts +0 -26
  365. package/overlay/public-api.d.ts +0 -23
  366. package/overlay/scroll/block-scroll-strategy.d.ts +0 -27
  367. package/overlay/scroll/close-scroll-strategy.d.ts +0 -40
  368. package/overlay/scroll/index.d.ts +0 -14
  369. package/overlay/scroll/noop-scroll-strategy.d.ts +0 -17
  370. package/overlay/scroll/reposition-scroll-strategy.d.ts +0 -39
  371. package/overlay/scroll/scroll-strategy-options.d.ts +0 -44
  372. package/overlay/scroll/scroll-strategy.d.ts +0 -25
  373. package/platform/features/input-types.d.ts +0 -9
  374. package/platform/features/passive-listeners.d.ts +0 -19
  375. package/platform/features/scrolling.d.ts +0 -32
  376. package/platform/features/shadow-dom.d.ts +0 -18
  377. package/platform/features/test-environment.d.ts +0 -9
  378. package/platform/package.json +0 -9
  379. package/platform/platform-module.d.ts +0 -6
  380. package/platform/platform.d.ts +0 -29
  381. package/platform/platform_public_index.d.ts +0 -4
  382. package/platform/public-api.d.ts +0 -14
  383. package/portal/dom-portal-outlet.d.ts +0 -60
  384. package/portal/package.json +0 -9
  385. package/portal/portal-directives.d.ts +0 -99
  386. package/portal/portal-errors.d.ts +0 -37
  387. package/portal/portal-injector.d.ts +0 -21
  388. package/portal/portal.d.ts +0 -140
  389. package/portal/portal_public_index.d.ts +0 -4
  390. package/portal/public-api.d.ts +0 -11
  391. package/public-api.d.ts +0 -8
  392. package/scrolling/fixed-size-virtual-scroll.d.ts +0 -97
  393. package/scrolling/package.json +0 -9
  394. package/scrolling/public-api.d.ts +0 -16
  395. package/scrolling/scroll-dispatcher.d.ts +0 -71
  396. package/scrolling/scrollable.d.ts +0 -85
  397. package/scrolling/scrolling-module.d.ts +0 -19
  398. package/scrolling/scrolling_public_index.d.ts +0 -4
  399. package/scrolling/viewport-ruler.d.ts +0 -63
  400. package/scrolling/virtual-for-of.d.ts +0 -117
  401. package/scrolling/virtual-scroll-repeater.d.ts +0 -16
  402. package/scrolling/virtual-scroll-strategy.d.ts +0 -38
  403. package/scrolling/virtual-scroll-viewport.d.ts +0 -147
  404. package/stepper/package.json +0 -9
  405. package/stepper/public-api.d.ts +0 -12
  406. package/stepper/step-header.d.ts +0 -18
  407. package/stepper/step-label.d.ts +0 -15
  408. package/stepper/stepper-button.d.ts +0 -20
  409. package/stepper/stepper-module.d.ts +0 -11
  410. package/stepper/stepper.d.ts +0 -233
  411. package/stepper/stepper_public_index.d.ts +0 -4
  412. package/table/can-stick.d.ts +0 -34
  413. package/table/cell.d.ts +0 -126
  414. package/table/coalesced-style-scheduler.d.ts +0 -46
  415. package/table/package.json +0 -9
  416. package/table/public-api.d.ts +0 -19
  417. package/table/row.d.ts +0 -175
  418. package/table/sticky-position-listener.d.ts +0 -31
  419. package/table/sticky-styler.d.ts +0 -126
  420. package/table/table-errors.d.ts +0 -48
  421. package/table/table-module.d.ts +0 -11
  422. package/table/table.d.ts +0 -494
  423. package/table/table_public_index.d.ts +0 -4
  424. package/table/text-column.d.ts +0 -73
  425. package/table/tokens.d.ts +0 -25
  426. package/testing/change-detection.d.ts +0 -83
  427. package/testing/component-harness.d.ts +0 -426
  428. package/testing/element-dimensions.d.ts +0 -16
  429. package/testing/harness-environment.d.ts +0 -62
  430. package/testing/package.json +0 -9
  431. package/testing/public-api.d.ts +0 -14
  432. package/testing/selenium-webdriver/package.json +0 -9
  433. package/testing/selenium-webdriver/public-api.d.ts +0 -9
  434. package/testing/selenium-webdriver/selenium-web-driver-element.d.ts +0 -91
  435. package/testing/selenium-webdriver/selenium-web-driver-harness-environment.d.ts +0 -66
  436. package/testing/selenium-webdriver/selenium-webdriver-keys.d.ts +0 -46
  437. package/testing/test-element-errors.d.ts +0 -12
  438. package/testing/test-element.d.ts +0 -135
  439. package/testing/testbed/fake-events/dispatch-events.d.ts +0 -39
  440. package/testing/testbed/fake-events/element-focus.d.ts +0 -18
  441. package/testing/testbed/fake-events/event-objects.d.ts +0 -39
  442. package/testing/testbed/fake-events/index.d.ts +0 -11
  443. package/testing/testbed/fake-events/type-in-element.d.ts +0 -41
  444. package/testing/testbed/package.json +0 -9
  445. package/testing/testbed/proxy-zone-types.d.ts +0 -29
  446. package/testing/testbed/public-api.d.ts +0 -9
  447. package/testing/testbed/task-state-zone-interceptor.d.ts +0 -37
  448. package/testing/testbed/testbed-harness-environment.d.ts +0 -64
  449. package/testing/testbed/unit-test-element.d.ts +0 -98
  450. package/testing/testbed/zone-types.d.ts +0 -22
  451. package/testing/text-filtering.d.ts +0 -13
  452. package/text-field/autofill.d.ts +0 -66
  453. package/text-field/autosize.d.ts +0 -95
  454. package/text-field/package.json +0 -9
  455. package/text-field/public-api.d.ts +0 -10
  456. package/text-field/text-field-module.d.ts +0 -8
  457. package/text-field/text-field_public_index.d.ts +0 -4
  458. package/tree/control/base-tree-control.d.ts +0 -54
  459. package/tree/control/flat-tree-control.d.ts +0 -34
  460. package/tree/control/nested-tree-control.d.ts +0 -31
  461. package/tree/control/tree-control.d.ts +0 -49
  462. package/tree/nested-node.d.ts +0 -38
  463. package/tree/node.d.ts +0 -40
  464. package/tree/outlet.d.ts +0 -26
  465. package/tree/package.json +0 -9
  466. package/tree/padding.d.ts +0 -60
  467. package/tree/public-api.d.ts +0 -19
  468. package/tree/toggle.d.ts +0 -25
  469. package/tree/tree-errors.d.ts +0 -32
  470. package/tree/tree-module.d.ts +0 -12
  471. package/tree/tree.d.ts +0 -128
  472. package/tree/tree_public_index.d.ts +0 -4
  473. package/version.d.ts +0 -10
@@ -0,0 +1,304 @@
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 { Directive, ElementRef, Inject, Injector, NgZone, Optional, ViewContainerRef, } from '@angular/core';
9
+ import { Directionality } from '@angular/cdk/bidi';
10
+ import { Overlay, OverlayConfig, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, } from '@angular/cdk/overlay';
11
+ import { DOWN_ARROW, ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';
12
+ import { fromEvent } from 'rxjs';
13
+ import { filter, takeUntil } from 'rxjs/operators';
14
+ import { CDK_MENU } from './menu-interface';
15
+ import { MENU_STACK, MenuStack, PARENT_OR_NEW_MENU_STACK_PROVIDER } from './menu-stack';
16
+ import { MENU_AIM } from './menu-aim';
17
+ import { CdkMenuTriggerBase, MENU_TRIGGER } from './menu-trigger-base';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/cdk/overlay";
20
+ import * as i2 from "@angular/cdk/bidi";
21
+ import * as i3 from "./menu-stack";
22
+ /**
23
+ * A directive that turns its host element into a trigger for a popup menu.
24
+ * It can be combined with cdkMenuItem to create sub-menus. If the element is in a top level
25
+ * MenuBar it will open the menu on click, or if a sibling is already opened it will open on hover.
26
+ * If it is inside of a Menu it will open the attached Submenu on hover regardless of its sibling
27
+ * state.
28
+ */
29
+ export class CdkMenuTrigger extends CdkMenuTriggerBase {
30
+ constructor(
31
+ /** The DI injector for this component. */
32
+ injector,
33
+ /** The host element. */
34
+ _elementRef,
35
+ /** The view container ref for this component. */
36
+ viewContainerRef,
37
+ /** The CDK overlay service. */
38
+ _overlay,
39
+ /** The Angular zone. */
40
+ _ngZone,
41
+ /** The menu stack this trigger belongs to. */
42
+ menuStack,
43
+ /** The parent menu this trigger belongs to. */
44
+ _parentMenu,
45
+ /** The menu aim service used by this menu. */
46
+ _menuAim,
47
+ /** The directionality of the page. */
48
+ _directionality) {
49
+ super(injector, viewContainerRef, menuStack);
50
+ this._elementRef = _elementRef;
51
+ this._overlay = _overlay;
52
+ this._ngZone = _ngZone;
53
+ this._parentMenu = _parentMenu;
54
+ this._menuAim = _menuAim;
55
+ this._directionality = _directionality;
56
+ this._registerCloseHandler();
57
+ this._subscribeToMenuStackClosed();
58
+ this._subscribeToMouseEnter();
59
+ this._subscribeToMenuStackHasFocus();
60
+ }
61
+ /** Toggle the attached menu. */
62
+ toggle() {
63
+ this.isOpen() ? this.close() : this.open();
64
+ }
65
+ /** Open the attached menu. */
66
+ open() {
67
+ if (!this.isOpen()) {
68
+ this.opened.next();
69
+ this.overlayRef = this.overlayRef || this._overlay.create(this._getOverlayConfig());
70
+ this.overlayRef.attach(this.getMenuContentPortal());
71
+ this._subscribeToOutsideClicks();
72
+ }
73
+ }
74
+ /** Close the opened menu. */
75
+ close() {
76
+ if (this.isOpen()) {
77
+ this.closed.next();
78
+ this.overlayRef.detach();
79
+ }
80
+ this._closeSiblingTriggers();
81
+ }
82
+ /**
83
+ * Get a reference to the rendered Menu if the Menu is open and rendered in the DOM.
84
+ */
85
+ getMenu() {
86
+ return this.childMenu;
87
+ }
88
+ /**
89
+ * Handles keyboard events for the menu item.
90
+ * @param event The keyboard event to handle
91
+ */
92
+ _toggleOnKeydown(event) {
93
+ const isParentVertical = this._parentMenu?.orientation === 'vertical';
94
+ const keyCode = event.keyCode;
95
+ switch (keyCode) {
96
+ case SPACE:
97
+ case ENTER:
98
+ if (!hasModifierKey(event)) {
99
+ event.preventDefault();
100
+ this.toggle();
101
+ this.childMenu?.focusFirstItem('keyboard');
102
+ }
103
+ break;
104
+ case RIGHT_ARROW:
105
+ if (!hasModifierKey(event)) {
106
+ if (this._parentMenu && isParentVertical && this._directionality?.value !== 'rtl') {
107
+ event.preventDefault();
108
+ this.open();
109
+ this.childMenu?.focusFirstItem('keyboard');
110
+ }
111
+ }
112
+ break;
113
+ case LEFT_ARROW:
114
+ if (!hasModifierKey(event)) {
115
+ if (this._parentMenu && isParentVertical && this._directionality?.value === 'rtl') {
116
+ event.preventDefault();
117
+ this.open();
118
+ this.childMenu?.focusFirstItem('keyboard');
119
+ }
120
+ }
121
+ break;
122
+ case DOWN_ARROW:
123
+ case UP_ARROW:
124
+ if (!hasModifierKey(event)) {
125
+ if (!isParentVertical) {
126
+ event.preventDefault();
127
+ this.open();
128
+ keyCode === DOWN_ARROW
129
+ ? this.childMenu?.focusFirstItem('keyboard')
130
+ : this.childMenu?.focusLastItem('keyboard');
131
+ }
132
+ }
133
+ break;
134
+ }
135
+ }
136
+ /**
137
+ * Sets whether the trigger's menu stack has focus.
138
+ * @param hasFocus Whether the menu stack has focus.
139
+ */
140
+ _setHasFocus(hasFocus) {
141
+ if (!this._parentMenu) {
142
+ this.menuStack.setHasFocus(hasFocus);
143
+ }
144
+ }
145
+ /**
146
+ * Subscribe to the mouseenter events and close any sibling menu items if this element is moused
147
+ * into.
148
+ */
149
+ _subscribeToMouseEnter() {
150
+ // Closes any sibling menu items and opens the menu associated with this trigger.
151
+ const toggleMenus = () => this._ngZone.run(() => {
152
+ this._closeSiblingTriggers();
153
+ this.open();
154
+ });
155
+ this._ngZone.runOutsideAngular(() => {
156
+ fromEvent(this._elementRef.nativeElement, 'mouseenter')
157
+ .pipe(filter(() => !this.menuStack.isEmpty() && !this.isOpen()), takeUntil(this.destroyed))
158
+ .subscribe(() => {
159
+ if (this._menuAim) {
160
+ this._menuAim.toggle(toggleMenus);
161
+ }
162
+ else {
163
+ toggleMenus();
164
+ }
165
+ });
166
+ });
167
+ }
168
+ /** Close out any sibling menu trigger menus. */
169
+ _closeSiblingTriggers() {
170
+ if (this._parentMenu) {
171
+ // If nothing was removed from the stack and the last element is not the parent item
172
+ // that means that the parent menu is a menu bar since we don't put the menu bar on the
173
+ // stack
174
+ const isParentMenuBar = !this.menuStack.closeSubMenuOf(this._parentMenu) &&
175
+ this.menuStack.peek() !== this._parentMenu;
176
+ if (isParentMenuBar) {
177
+ this.menuStack.closeAll();
178
+ }
179
+ }
180
+ else {
181
+ this.menuStack.closeAll();
182
+ }
183
+ }
184
+ /** Get the configuration object used to create the overlay. */
185
+ _getOverlayConfig() {
186
+ return new OverlayConfig({
187
+ positionStrategy: this._getOverlayPositionStrategy(),
188
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
189
+ direction: this._directionality,
190
+ });
191
+ }
192
+ /** Build the position strategy for the overlay which specifies where to place the menu. */
193
+ _getOverlayPositionStrategy() {
194
+ return this._overlay
195
+ .position()
196
+ .flexibleConnectedTo(this._elementRef)
197
+ .withLockedPosition()
198
+ .withGrowAfterOpen()
199
+ .withPositions(this._getOverlayPositions());
200
+ }
201
+ /** Get the preferred positions for the opened menu relative to the menu item. */
202
+ _getOverlayPositions() {
203
+ return (this.menuPosition ??
204
+ (!this._parentMenu || this._parentMenu.orientation === 'horizontal'
205
+ ? STANDARD_DROPDOWN_BELOW_POSITIONS
206
+ : STANDARD_DROPDOWN_ADJACENT_POSITIONS));
207
+ }
208
+ /**
209
+ * Subscribe to the MenuStack close events if this is a standalone trigger and close out the menu
210
+ * this triggers when requested.
211
+ */
212
+ _registerCloseHandler() {
213
+ if (!this._parentMenu) {
214
+ this.menuStack.closed.pipe(takeUntil(this.destroyed)).subscribe(({ item }) => {
215
+ if (item === this.childMenu) {
216
+ this.close();
217
+ }
218
+ });
219
+ }
220
+ }
221
+ /**
222
+ * Subscribe to the overlays outside pointer events stream and handle closing out the stack if a
223
+ * click occurs outside the menus.
224
+ */
225
+ _subscribeToOutsideClicks() {
226
+ if (this.overlayRef) {
227
+ this.overlayRef
228
+ .outsidePointerEvents()
229
+ .pipe(filter(e => e.target != this._elementRef.nativeElement &&
230
+ !this._elementRef.nativeElement.contains(e.target)), takeUntil(this.stopOutsideClicksListener))
231
+ .subscribe(event => {
232
+ if (!this.isElementInsideMenuStack(event.target)) {
233
+ this.menuStack.closeAll();
234
+ }
235
+ else {
236
+ this._closeSiblingTriggers();
237
+ }
238
+ });
239
+ }
240
+ }
241
+ /** Subscribe to the MenuStack hasFocus events. */
242
+ _subscribeToMenuStackHasFocus() {
243
+ if (!this._parentMenu) {
244
+ this.menuStack.hasFocus.pipe(takeUntil(this.destroyed)).subscribe(hasFocus => {
245
+ if (!hasFocus) {
246
+ this.menuStack.closeAll();
247
+ }
248
+ });
249
+ }
250
+ }
251
+ /** Subscribe to the MenuStack closed events. */
252
+ _subscribeToMenuStackClosed() {
253
+ if (!this._parentMenu) {
254
+ this.menuStack.closed.subscribe(({ focusParentTrigger }) => {
255
+ if (focusParentTrigger && !this.menuStack.length()) {
256
+ this._elementRef.nativeElement.focus();
257
+ }
258
+ });
259
+ }
260
+ }
261
+ }
262
+ CdkMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.16", ngImport: i0, type: CdkMenuTrigger, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.Overlay }, { token: i0.NgZone }, { token: MENU_STACK }, { token: CDK_MENU, optional: true }, { token: MENU_AIM, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
263
+ CdkMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0-next.16", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkMenuPosition", "menuPosition"] }, outputs: { opened: "cdkMenuOpened", closed: "cdkMenuClosed" }, host: { attributes: { "aria-haspopup": "menu" }, listeners: { "focusin": "_setHasFocus(true)", "focusout": "_setHasFocus(false)", "keydown": "_toggleOnKeydown($event)", "click": "toggle()" }, properties: { "attr.aria-expanded": "isOpen()" }, classAttribute: "cdk-menu-trigger" }, providers: [
264
+ { provide: MENU_TRIGGER, useExisting: CdkMenuTrigger },
265
+ PARENT_OR_NEW_MENU_STACK_PROVIDER,
266
+ ], exportAs: ["cdkMenuTriggerFor"], usesInheritance: true, ngImport: i0 });
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.16", ngImport: i0, type: CdkMenuTrigger, decorators: [{
268
+ type: Directive,
269
+ args: [{
270
+ selector: '[cdkMenuTriggerFor]',
271
+ exportAs: 'cdkMenuTriggerFor',
272
+ host: {
273
+ 'class': 'cdk-menu-trigger',
274
+ 'aria-haspopup': 'menu',
275
+ '[attr.aria-expanded]': 'isOpen()',
276
+ '(focusin)': '_setHasFocus(true)',
277
+ '(focusout)': '_setHasFocus(false)',
278
+ '(keydown)': '_toggleOnKeydown($event)',
279
+ '(click)': 'toggle()',
280
+ },
281
+ inputs: ['menuTemplateRef: cdkMenuTriggerFor', 'menuPosition: cdkMenuPosition'],
282
+ outputs: ['opened: cdkMenuOpened', 'closed: cdkMenuClosed'],
283
+ providers: [
284
+ { provide: MENU_TRIGGER, useExisting: CdkMenuTrigger },
285
+ PARENT_OR_NEW_MENU_STACK_PROVIDER,
286
+ ],
287
+ }]
288
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.Overlay }, { type: i0.NgZone }, { type: i3.MenuStack, decorators: [{
289
+ type: Inject,
290
+ args: [MENU_STACK]
291
+ }] }, { type: undefined, decorators: [{
292
+ type: Optional
293
+ }, {
294
+ type: Inject,
295
+ args: [CDK_MENU]
296
+ }] }, { type: undefined, decorators: [{
297
+ type: Optional
298
+ }, {
299
+ type: Inject,
300
+ args: [MENU_AIM]
301
+ }] }, { type: i2.Directionality, decorators: [{
302
+ type: Optional
303
+ }] }]; } });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9tZW51L21lbnUtdHJpZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFFTixRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBR0wsT0FBTyxFQUNQLGFBQWEsRUFDYixvQ0FBb0MsRUFDcEMsaUNBQWlDLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsY0FBYyxFQUNkLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUNBQWlDLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEYsT0FBTyxFQUFDLFFBQVEsRUFBVSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBRXJFOzs7Ozs7R0FNRztBQW9CSCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQUNwRDtJQUNFLDBDQUEwQztJQUMxQyxRQUFrQjtJQUNsQix3QkFBd0I7SUFDUCxXQUFvQztJQUNyRCxpREFBaUQ7SUFD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TUFBTTsyQkFBQyxRQUFROzswQkFFM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFROzswQkFFM0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1xuICBDb25uZWN0ZWRQb3NpdGlvbixcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICBPdmVybGF5LFxuICBPdmVybGF5Q29uZmlnLFxuICBTVEFOREFSRF9EUk9QRE9XTl9BREpBQ0VOVF9QT1NJVElPTlMsXG4gIFNUQU5EQVJEX0RST1BET1dOX0JFTE9XX1BPU0lUSU9OUyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgRE9XTl9BUlJPVyxcbiAgRU5URVIsXG4gIGhhc01vZGlmaWVyS2V5LFxuICBMRUZUX0FSUk9XLFxuICBSSUdIVF9BUlJPVyxcbiAgU1BBQ0UsXG4gIFVQX0FSUk9XLFxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDREtfTUVOVSwgTWVudX0gZnJvbSAnLi9tZW51LWludGVyZmFjZSc7XG5pbXBvcnQge01FTlVfU1RBQ0ssIE1lbnVTdGFjaywgUEFSRU5UX09SX05FV19NRU5VX1NUQUNLX1BST1ZJREVSfSBmcm9tICcuL21lbnUtc3RhY2snO1xuaW1wb3J0IHtNRU5VX0FJTSwgTWVudUFpbX0gZnJvbSAnLi9tZW51LWFpbSc7XG5pbXBvcnQge0Nka01lbnVUcmlnZ2VyQmFzZSwgTUVOVV9UUklHR0VSfSBmcm9tICcuL21lbnUtdHJpZ2dlci1iYXNlJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHR1cm5zIGl0cyBob3N0IGVsZW1lbnQgaW50byBhIHRyaWdnZXIgZm9yIGEgcG9wdXAgbWVudS5cbiAqIEl0IGNhbiBiZSBjb21iaW5lZCB3aXRoIGNka01lbnVJdGVtIHRvIGNyZWF0ZSBzdWItbWVudXMuIElmIHRoZSBlbGVtZW50IGlzIGluIGEgdG9wIGxldmVsXG4gKiBNZW51QmFyIGl0IHdpbGwgb3BlbiB0aGUgbWVudSBvbiBjbGljaywgb3IgaWYgYSBzaWJsaW5nIGlzIGFscmVhZHkgb3BlbmVkIGl0IHdpbGwgb3BlbiBvbiBob3Zlci5cbiAqIElmIGl0IGlzIGluc2lkZSBvZiBhIE1lbnUgaXQgd2lsbCBvcGVuIHRoZSBhdHRhY2hlZCBTdWJtZW51IG9uIGhvdmVyIHJlZ2FyZGxlc3Mgb2YgaXRzIHNpYmxpbmdcbiAqIHN0YXRlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrTWVudVRyaWdnZXJGb3JdJyxcbiAgZXhwb3J0QXM6ICdjZGtNZW51VHJpZ2dlckZvcicsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnY2RrLW1lbnUtdHJpZ2dlcicsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbWVudScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzT3BlbigpJyxcbiAgICAnKGZvY3VzaW4pJzogJ19zZXRIYXNGb2N1cyh0cnVlKScsXG4gICAgJyhmb2N1c291dCknOiAnX3NldEhhc0ZvY3VzKGZhbHNlKScsXG4gICAgJyhrZXlkb3duKSc6ICdfdG9nZ2xlT25LZXlkb3duKCRldmVudCknLFxuICAgICcoY2xpY2spJzogJ3RvZ2dsZSgpJyxcbiAgfSxcbiAgaW5wdXRzOiBbJ21lbnVUZW1wbGF0ZVJlZjogY2RrTWVudVRyaWdnZXJGb3InLCAnbWVudVBvc2l0aW9uOiBjZGtNZW51UG9zaXRpb24nXSxcbiAgb3V0cHV0czogWydvcGVuZWQ6IGNka01lbnVPcGVuZWQnLCAnY2xvc2VkOiBjZGtNZW51Q2xvc2VkJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBNRU5VX1RSSUdHRVIsIHVzZUV4aXN0aW5nOiBDZGtNZW51VHJpZ2dlcn0sXG4gICAgUEFSRU5UX09SX05FV19NRU5VX1NUQUNLX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtNZW51VHJpZ2dlciBleHRlbmRzIENka01lbnVUcmlnZ2VyQmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUaGUgREkgaW5qZWN0b3IgZm9yIHRoaXMgY29tcG9uZW50LiAqL1xuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAvKiogVGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAvKiogVGhlIHZpZXcgY29udGFpbmVyIHJlZiBmb3IgdGhpcyBjb21wb25lbnQuICovXG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAvKiogVGhlIENESyBvdmVybGF5IHNlcnZpY2UuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAvKiogVGhlIEFuZ3VsYXIgem9uZS4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAvKiogVGhlIG1lbnUgc3RhY2sgdGhpcyB0cmlnZ2VyIGJlbG9uZ3MgdG8uICovXG4gICAgQEluamVjdChNRU5VX1NUQUNLKSBtZW51U3RhY2s6IE1lbnVTdGFjayxcbiAgICAvKiogVGhlIHBhcmVudCBtZW51IHRoaXMgdHJpZ2dlciBiZWxvbmdzIHRvLiAqL1xuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ0RLX01FTlUpIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudE1lbnU/OiBNZW51LFxuICAgIC8qKiBUaGUgbWVudSBhaW0gc2VydmljZSB1c2VkIGJ5IHRoaXMgbWVudS4gKi9cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1FTlVfQUlNKSBwcml2YXRlIHJlYWRvbmx5IF9tZW51QWltPzogTWVudUFpbSxcbiAgICAvKiogVGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBwYWdlLiAqL1xuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2RpcmVjdGlvbmFsaXR5PzogRGlyZWN0aW9uYWxpdHksXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCB2aWV3Q29udGFpbmVyUmVmLCBtZW51U3RhY2spO1xuICAgIHRoaXMuX3JlZ2lzdGVyQ2xvc2VIYW5kbGVyKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9NZW51U3RhY2tDbG9zZWQoKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb01vdXNlRW50ZXIoKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb01lbnVTdGFja0hhc0ZvY3VzKCk7XG4gIH1cblxuICAvKiogVG9nZ2xlIHRoZSBhdHRhY2hlZCBtZW51LiAqL1xuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW4oKSA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgLyoqIE9wZW4gdGhlIGF0dGFjaGVkIG1lbnUuICovXG4gIG9wZW4oKSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLm9wZW5lZC5uZXh0KCk7XG5cbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheVJlZiB8fCB0aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLmdldE1lbnVDb250ZW50UG9ydGFsKCkpO1xuICAgICAgdGhpcy5fc3Vic2NyaWJlVG9PdXRzaWRlQ2xpY2tzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlIHRoZSBvcGVuZWQgbWVudS4gKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2VkLm5leHQoKTtcblxuICAgICAgdGhpcy5vdmVybGF5UmVmIS5kZXRhY2goKTtcbiAgICB9XG4gICAgdGhpcy5fY2xvc2VTaWJsaW5nVHJpZ2dlcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlbmRlcmVkIE1lbnUgaWYgdGhlIE1lbnUgaXMgb3BlbiBhbmQgcmVuZGVyZWQgaW4gdGhlIERPTS5cbiAgICovXG4gIGdldE1lbnUoKTogTWVudSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRNZW51O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIGZvciB0aGUgbWVudSBpdGVtLlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAgX3RvZ2dsZU9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlzUGFyZW50VmVydGljYWwgPSB0aGlzLl9wYXJlbnRNZW51Py5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICBjYXNlIEVOVEVSOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICB0aGlzLmNoaWxkTWVudT8uZm9jdXNGaXJzdEl0ZW0oJ2tleWJvYXJkJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1lbnUgJiYgaXNQYXJlbnRWZXJ0aWNhbCAmJiB0aGlzLl9kaXJlY3Rpb25hbGl0eT8udmFsdWUgIT09ICdydGwnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTWVudT8uZm9jdXNGaXJzdEl0ZW0oJ2tleWJvYXJkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1lbnUgJiYgaXNQYXJlbnRWZXJ0aWNhbCAmJiB0aGlzLl9kaXJlY3Rpb25hbGl0eT8udmFsdWUgPT09ICdydGwnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTWVudT8uZm9jdXNGaXJzdEl0ZW0oJ2tleWJvYXJkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICBjYXNlIFVQX0FSUk9XOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGlmICghaXNQYXJlbnRWZXJ0aWNhbCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAga2V5Q29kZSA9PT0gRE9XTl9BUlJPV1xuICAgICAgICAgICAgICA/IHRoaXMuY2hpbGRNZW51Py5mb2N1c0ZpcnN0SXRlbSgna2V5Ym9hcmQnKVxuICAgICAgICAgICAgICA6IHRoaXMuY2hpbGRNZW51Py5mb2N1c0xhc3RJdGVtKCdrZXlib2FyZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB3aGV0aGVyIHRoZSB0cmlnZ2VyJ3MgbWVudSBzdGFjayBoYXMgZm9jdXMuXG4gICAqIEBwYXJhbSBoYXNGb2N1cyBXaGV0aGVyIHRoZSBtZW51IHN0YWNrIGhhcyBmb2N1cy5cbiAgICovXG4gIF9zZXRIYXNGb2N1cyhoYXNGb2N1czogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5fcGFyZW50TWVudSkge1xuICAgICAgdGhpcy5tZW51U3RhY2suc2V0SGFzRm9jdXMoaGFzRm9jdXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIG1vdXNlZW50ZXIgZXZlbnRzIGFuZCBjbG9zZSBhbnkgc2libGluZyBtZW51IGl0ZW1zIGlmIHRoaXMgZWxlbWVudCBpcyBtb3VzZWRcbiAgICogaW50by5cbiAgICovXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvTW91c2VFbnRlcigpIHtcbiAgICAvLyBDbG9zZXMgYW55IHNpYmxpbmcgbWVudSBpdGVtcyBhbmQgb3BlbnMgdGhlIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdHJpZ2dlci5cbiAgICBjb25zdCB0b2dnbGVNZW51cyA9ICgpID0+XG4gICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2xvc2VTaWJsaW5nVHJpZ2dlcnMoKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5tZW51U3RhY2suaXNFbXB0eSgpICYmICF0aGlzLmlzT3BlbigpKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9tZW51QWltKSB7XG4gICAgICAgICAgICB0aGlzLl9tZW51QWltLnRvZ2dsZSh0b2dnbGVNZW51cyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZ2dsZU1lbnVzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBDbG9zZSBvdXQgYW55IHNpYmxpbmcgbWVudSB0cmlnZ2VyIG1lbnVzLiAqL1xuICBwcml2YXRlIF9jbG9zZVNpYmxpbmdUcmlnZ2VycygpIHtcbiAgICBpZiAodGhpcy5fcGFyZW50TWVudSkge1xuICAgICAgLy8gSWYgbm90aGluZyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjayBhbmQgdGhlIGxhc3QgZWxlbWVudCBpcyBub3QgdGhlIHBhcmVudCBpdGVtXG4gICAgICAvLyB0aGF0IG1lYW5zIHRoYXQgdGhlIHBhcmVudCBtZW51IGlzIGEgbWVudSBiYXIgc2luY2Ugd2UgZG9uJ3QgcHV0IHRoZSBtZW51IGJhciBvbiB0aGVcbiAgICAgIC8vIHN0YWNrXG4gICAgICBjb25zdCBpc1BhcmVudE1lbnVCYXIgPVxuICAgICAgICAhdGhpcy5tZW51U3RhY2suY2xvc2VTdWJNZW51T2YodGhpcy5fcGFyZW50TWVudSkgJiZcbiAgICAgICAgdGhpcy5tZW51U3RhY2sucGVlaygpICE9PSB0aGlzLl9wYXJlbnRNZW51O1xuXG4gICAgICBpZiAoaXNQYXJlbnRNZW51QmFyKSB7XG4gICAgICAgIHRoaXMubWVudVN0YWNrLmNsb3NlQWxsKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVudVN0YWNrLmNsb3NlQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldCB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgdXNlZCB0byBjcmVhdGUgdGhlIG92ZXJsYXkuICovXG4gIHByaXZhdGUgX2dldE92ZXJsYXlDb25maWcoKSB7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KCksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyZWN0aW9uYWxpdHksXG4gICAgfSk7XG4gIH1cblxuICAvKiogQnVpbGQgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IGZvciB0aGUgb3ZlcmxheSB3aGljaCBzcGVjaWZpZXMgd2hlcmUgdG8gcGxhY2UgdGhlIG1lbnUuICovXG4gIHByaXZhdGUgX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50UmVmKVxuICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAud2l0aEdyb3dBZnRlck9wZW4oKVxuICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9ucygpKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIHByZWZlcnJlZCBwb3NpdGlvbnMgZm9yIHRoZSBvcGVuZWQgbWVudSByZWxhdGl2ZSB0byB0aGUgbWVudSBpdGVtLiAqL1xuICBwcml2YXRlIF9nZXRPdmVybGF5UG9zaXRpb25zKCk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1lbnVQb3NpdGlvbiA/P1xuICAgICAgKCF0aGlzLl9wYXJlbnRNZW51IHx8IHRoaXMuX3BhcmVudE1lbnUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJ1xuICAgICAgICA/IFNUQU5EQVJEX0RST1BET1dOX0JFTE9XX1BPU0lUSU9OU1xuICAgICAgICA6IFNUQU5EQVJEX0RST1BET1dOX0FESkFDRU5UX1BPU0lUSU9OUylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgTWVudVN0YWNrIGNsb3NlIGV2ZW50cyBpZiB0aGlzIGlzIGEgc3RhbmRhbG9uZSB0cmlnZ2VyIGFuZCBjbG9zZSBvdXQgdGhlIG1lbnVcbiAgICogdGhpcyB0cmlnZ2VycyB3aGVuIHJlcXVlc3RlZC5cbiAgICovXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ2xvc2VIYW5kbGVyKCkge1xuICAgIGlmICghdGhpcy5fcGFyZW50TWVudSkge1xuICAgICAgdGhpcy5tZW51U3RhY2suY2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh7aXRlbX0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuY2hpbGRNZW51KSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBvdmVybGF5cyBvdXRzaWRlIHBvaW50ZXIgZXZlbnRzIHN0cmVhbSBhbmQgaGFuZGxlIGNsb3Npbmcgb3V0IHRoZSBzdGFjayBpZiBhXG4gICAqIGNsaWNrIG9jY3VycyBvdXRzaWRlIHRoZSBtZW51cy5cbiAgICovXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvT3V0c2lkZUNsaWNrcygpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgLm91dHNpZGVQb2ludGVyRXZlbnRzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgZSA9PlxuICAgICAgICAgICAgICBlLnRhcmdldCAhPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCBhcyBFbGVtZW50KSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN0b3BPdXRzaWRlQ2xpY2tzTGlzdGVuZXIpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pc0VsZW1lbnRJbnNpZGVNZW51U3RhY2soZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVTdGFjay5jbG9zZUFsbCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZVNpYmxpbmdUcmlnZ2VycygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN1YnNjcmliZSB0byB0aGUgTWVudVN0YWNrIGhhc0ZvY3VzIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9NZW51U3RhY2tIYXNGb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuX3BhcmVudE1lbnUpIHtcbiAgICAgIHRoaXMubWVudVN0YWNrLmhhc0ZvY3VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKGhhc0ZvY3VzID0+IHtcbiAgICAgICAgaWYgKCFoYXNGb2N1cykge1xuICAgICAgICAgIHRoaXMubWVudVN0YWNrLmNsb3NlQWxsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdWJzY3JpYmUgdG8gdGhlIE1lbnVTdGFjayBjbG9zZWQgZXZlbnRzLiAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb01lbnVTdGFja0Nsb3NlZCgpIHtcbiAgICBpZiAoIXRoaXMuX3BhcmVudE1lbnUpIHtcbiAgICAgIHRoaXMubWVudVN0YWNrLmNsb3NlZC5zdWJzY3JpYmUoKHtmb2N1c1BhcmVudFRyaWdnZXJ9KSA9PiB7XG4gICAgICAgIGlmIChmb2N1c1BhcmVudFRyaWdnZXIgJiYgIXRoaXMubWVudVN0YWNrLmxlbmd0aCgpKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,168 @@
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 { Directive, ElementRef, EventEmitter, Inject, NgZone, Optional, Output, Self, } from '@angular/core';
9
+ import { ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, TAB } from '@angular/cdk/keycodes';
10
+ import { Directionality } from '@angular/cdk/bidi';
11
+ import { takeUntil } from 'rxjs/operators';
12
+ import { CdkMenuGroup } from './menu-group';
13
+ import { CDK_MENU } from './menu-interface';
14
+ import { MENU_STACK, MenuStack, PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER, } from './menu-stack';
15
+ import { MENU_AIM } from './menu-aim';
16
+ import { MENU_TRIGGER, CdkMenuTriggerBase } from './menu-trigger-base';
17
+ import { CdkMenuBase } from './menu-base';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/cdk/bidi";
20
+ import * as i2 from "./menu-stack";
21
+ import * as i3 from "./menu-trigger-base";
22
+ /**
23
+ * Directive which configures the element as a Menu which should contain child elements marked as
24
+ * CdkMenuItem or CdkMenuGroup. Sets the appropriate role and aria-attributes for a menu and
25
+ * contains accessible keyboard and mouse handling logic.
26
+ *
27
+ * It also acts as a RadioGroup for elements marked with role `menuitemradio`.
28
+ */
29
+ export class CdkMenu extends CdkMenuBase {
30
+ constructor(
31
+ /** The host element. */
32
+ elementRef,
33
+ /** The Angular zone. */
34
+ ngZone,
35
+ /** The menu stack this menu is part of. */
36
+ menuStack,
37
+ /** The trigger that opened this menu. */
38
+ _parentTrigger,
39
+ /** The menu aim service used by this menu. */
40
+ menuAim,
41
+ /** The directionality of the page. */
42
+ dir) {
43
+ super(elementRef, ngZone, menuStack, menuAim, dir);
44
+ this._parentTrigger = _parentTrigger;
45
+ /** Event emitted when the menu is closed. */
46
+ this.closed = new EventEmitter();
47
+ /** The direction items in the menu flow. */
48
+ this.orientation = 'vertical';
49
+ /** Whether the menu is displayed inline (i.e. always present vs a conditional popup that the user triggers with a trigger element). */
50
+ this.isInline = !this._parentTrigger;
51
+ this.destroyed.subscribe(this.closed);
52
+ this._parentTrigger?.registerChildMenu(this);
53
+ }
54
+ ngAfterContentInit() {
55
+ super.ngAfterContentInit();
56
+ this._subscribeToMenuStackEmptied();
57
+ }
58
+ ngOnDestroy() {
59
+ super.ngOnDestroy();
60
+ this.closed.complete();
61
+ }
62
+ /**
63
+ * Handle keyboard events for the Menu.
64
+ * @param event The keyboard event to be handled.
65
+ */
66
+ _handleKeyEvent(event) {
67
+ const keyManager = this.keyManager;
68
+ switch (event.keyCode) {
69
+ case LEFT_ARROW:
70
+ case RIGHT_ARROW:
71
+ if (!hasModifierKey(event)) {
72
+ event.preventDefault();
73
+ keyManager.setFocusOrigin('keyboard');
74
+ keyManager.onKeydown(event);
75
+ }
76
+ break;
77
+ case ESCAPE:
78
+ if (!hasModifierKey(event)) {
79
+ event.preventDefault();
80
+ this.menuStack.close(this, {
81
+ focusNextOnEmpty: 2 /* FocusNext.currentItem */,
82
+ focusParentTrigger: true,
83
+ });
84
+ }
85
+ break;
86
+ case TAB:
87
+ if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {
88
+ this.menuStack.closeAll({ focusParentTrigger: true });
89
+ }
90
+ break;
91
+ default:
92
+ keyManager.onKeydown(event);
93
+ }
94
+ }
95
+ /**
96
+ * Set focus the either the current, previous or next item based on the FocusNext event.
97
+ * @param focusNext The element to focus.
98
+ */
99
+ _toggleMenuFocus(focusNext) {
100
+ const keyManager = this.keyManager;
101
+ switch (focusNext) {
102
+ case 0 /* FocusNext.nextItem */:
103
+ keyManager.setFocusOrigin('keyboard');
104
+ keyManager.setNextItemActive();
105
+ break;
106
+ case 1 /* FocusNext.previousItem */:
107
+ keyManager.setFocusOrigin('keyboard');
108
+ keyManager.setPreviousItemActive();
109
+ break;
110
+ case 2 /* FocusNext.currentItem */:
111
+ if (keyManager.activeItem) {
112
+ keyManager.setFocusOrigin('keyboard');
113
+ keyManager.setActiveItem(keyManager.activeItem);
114
+ }
115
+ break;
116
+ }
117
+ }
118
+ /** Subscribe to the MenuStack emptied events. */
119
+ _subscribeToMenuStackEmptied() {
120
+ this.menuStack.emptied
121
+ .pipe(takeUntil(this.destroyed))
122
+ .subscribe(event => this._toggleMenuFocus(event));
123
+ }
124
+ }
125
+ CdkMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.16", ngImport: i0, type: CdkMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MENU_STACK }, { token: MENU_TRIGGER, optional: true }, { token: MENU_AIM, optional: true, self: true }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
126
+ CdkMenu.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0-next.16", type: CdkMenu, selector: "[cdkMenu]", outputs: { closed: "closed" }, host: { attributes: { "role": "menu" }, listeners: { "keydown": "_handleKeyEvent($event)" }, properties: { "class.cdk-menu-inline": "isInline" }, classAttribute: "cdk-menu" }, providers: [
127
+ { provide: CdkMenuGroup, useExisting: CdkMenu },
128
+ { provide: CDK_MENU, useExisting: CdkMenu },
129
+ PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),
130
+ ], exportAs: ["cdkMenu"], usesInheritance: true, ngImport: i0 });
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.16", ngImport: i0, type: CdkMenu, decorators: [{
132
+ type: Directive,
133
+ args: [{
134
+ selector: '[cdkMenu]',
135
+ exportAs: 'cdkMenu',
136
+ host: {
137
+ 'role': 'menu',
138
+ 'class': 'cdk-menu',
139
+ '[class.cdk-menu-inline]': 'isInline',
140
+ '(keydown)': '_handleKeyEvent($event)',
141
+ },
142
+ providers: [
143
+ { provide: CdkMenuGroup, useExisting: CdkMenu },
144
+ { provide: CDK_MENU, useExisting: CdkMenu },
145
+ PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),
146
+ ],
147
+ }]
148
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.MenuStack, decorators: [{
149
+ type: Inject,
150
+ args: [MENU_STACK]
151
+ }] }, { type: i3.CdkMenuTriggerBase, decorators: [{
152
+ type: Optional
153
+ }, {
154
+ type: Inject,
155
+ args: [MENU_TRIGGER]
156
+ }] }, { type: undefined, decorators: [{
157
+ type: Self
158
+ }, {
159
+ type: Optional
160
+ }, {
161
+ type: Inject,
162
+ args: [MENU_AIM]
163
+ }] }, { type: i1.Directionality, decorators: [{
164
+ type: Optional
165
+ }] }]; }, propDecorators: { closed: [{
166
+ type: Output
167
+ }] } });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvbWVudS9tZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0YsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBRUwsVUFBVSxFQUNWLFNBQVMsRUFDVCx3Q0FBd0MsR0FDekMsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFFBQVEsRUFBVSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFFeEM7Ozs7OztHQU1HO0FBZ0JILE1BQU0sT0FBTyxPQUFRLFNBQVEsV0FBVztJQVV0QztJQUNFLHdCQUF3QjtJQUN4QixVQUFtQztJQUNuQyx3QkFBd0I7SUFDeEIsTUFBYztJQUNkLDJDQUEyQztJQUN2QixTQUFvQjtJQUN4Qyx5Q0FBeUM7SUFDQyxjQUFtQztJQUM3RSw4Q0FBOEM7SUFDUixPQUFpQjtJQUN2RCxzQ0FBc0M7SUFDMUIsR0FB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b29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VTQ0FQRSwgaGFzTW9kaWZpZXJLZXksIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBUQUJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDZGtNZW51R3JvdXB9IGZyb20gJy4vbWVudS1ncm91cCc7XG5pbXBvcnQge0NES19NRU5VfSBmcm9tICcuL21lbnUtaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEZvY3VzTmV4dCxcbiAgTUVOVV9TVEFDSyxcbiAgTWVudVN0YWNrLFxuICBQQVJFTlRfT1JfTkVXX0lOTElORV9NRU5VX1NUQUNLX1BST1ZJREVSLFxufSBmcm9tICcuL21lbnUtc3RhY2snO1xuaW1wb3J0IHtNRU5VX0FJTSwgTWVudUFpbX0gZnJvbSAnLi9tZW51LWFpbSc7XG5pbXBvcnQge01FTlVfVFJJR0dFUiwgQ2RrTWVudVRyaWdnZXJCYXNlfSBmcm9tICcuL21lbnUtdHJpZ2dlci1iYXNlJztcbmltcG9ydCB7Q2RrTWVudUJhc2V9IGZyb20gJy4vbWVudS1iYXNlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgd2hpY2ggY29uZmlndXJlcyB0aGUgZWxlbWVudCBhcyBhIE1lbnUgd2hpY2ggc2hvdWxkIGNvbnRhaW4gY2hpbGQgZWxlbWVudHMgbWFya2VkIGFzXG4gKiBDZGtNZW51SXRlbSBvciBDZGtNZW51R3JvdXAuIFNldHMgdGhlIGFwcHJvcHJpYXRlIHJvbGUgYW5kIGFyaWEtYXR0cmlidXRlcyBmb3IgYSBtZW51IGFuZFxuICogY29udGFpbnMgYWNjZXNzaWJsZSBrZXlib2FyZCBhbmQgbW91c2UgaGFuZGxpbmcgbG9naWMuXG4gKlxuICogSXQgYWxzbyBhY3RzIGFzIGEgUmFkaW9Hcm91cCBmb3IgZWxlbWVudHMgbWFya2VkIHdpdGggcm9sZSBgbWVudWl0ZW1yYWRpb2AuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjZGtNZW51XScsXG4gIGV4cG9ydEFzOiAnY2RrTWVudScsXG4gIGhvc3Q6IHtcbiAgICAncm9sZSc6ICdtZW51JyxcbiAgICAnY2xhc3MnOiAnY2RrLW1lbnUnLFxuICAgICdbY2xhc3MuY2RrLW1lbnUtaW5saW5lXSc6ICdpc0lubGluZScsXG4gICAgJyhrZXlkb3duKSc6ICdfaGFuZGxlS2V5RXZlbnQoJGV2ZW50KScsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBDZGtNZW51R3JvdXAsIHVzZUV4aXN0aW5nOiBDZGtNZW51fSxcbiAgICB7cHJvdmlkZTogQ0RLX01FTlUsIHVzZUV4aXN0aW5nOiBDZGtNZW51fSxcbiAgICBQQVJFTlRfT1JfTkVXX0lOTElORV9NRU5VX1NUQUNLX1BST1ZJREVSKCd2ZXJ0aWNhbCcpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtNZW51IGV4dGVuZHMgQ2RrTWVudUJhc2UgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBUaGUgZGlyZWN0aW9uIGl0ZW1zIGluIHRoZSBtZW51IGZsb3cuICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJztcblxuICAvKiogV2hldGhlciB0aGUgbWVudSBpcyBkaXNwbGF5ZWQgaW5saW5lIChpLmUuIGFsd2F5cyBwcmVzZW50IHZzIGEgY29uZGl0aW9uYWwgcG9wdXAgdGhhdCB0aGUgdXNlciB0cmlnZ2VycyB3aXRoIGEgdHJpZ2dlciBlbGVtZW50KS4gKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgaXNJbmxpbmUgPSAhdGhpcy5fcGFyZW50VHJpZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogVGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAvKiogVGhlIEFuZ3VsYXIgem9uZS4gKi9cbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAvKiogVGhlIG1lbnUgc3RhY2sgdGhpcyBtZW51IGlzIHBhcnQgb2YuICovXG4gICAgQEluamVjdChNRU5VX1NUQUNLKSBtZW51U3RhY2s6IE1lbnVTdGFjayxcbiAgICAvKiogVGhlIHRyaWdnZXIgdGhhdCBvcGVuZWQgdGhpcyBtZW51LiAqL1xuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9UUklHR0VSKSBwcml2YXRlIF9wYXJlbnRUcmlnZ2VyPzogQ2RrTWVudVRyaWdnZXJCYXNlLFxuICAgIC8qKiBUaGUgbWVudSBhaW0gc2VydmljZSB1c2VkIGJ5IHRoaXMgbWVudS4gKi9cbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9BSU0pIG1lbnVBaW0/OiBNZW51QWltLFxuICAgIC8qKiBUaGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIHBhZ2UuICovXG4gICAgQE9wdGlvbmFsKCkgZGlyPzogRGlyZWN0aW9uYWxpdHksXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIG5nWm9uZSwgbWVudVN0YWNrLCBtZW51QWltLCBkaXIpO1xuICAgIHRoaXMuZGVzdHJveWVkLnN1YnNjcmliZSh0aGlzLmNsb3NlZCk7XG4gICAgdGhpcy5fcGFyZW50VHJpZ2dlcj8ucmVnaXN0ZXJDaGlsZE1lbnUodGhpcyk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9NZW51U3RhY2tFbXB0aWVkKCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGtleWJvYXJkIGV2ZW50cyBmb3IgdGhlIE1lbnUuXG4gICAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gYmUgaGFuZGxlZC5cbiAgICovXG4gIF9oYW5kbGVLZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleU1hbmFnZXIgPSB0aGlzLmtleU1hbmFnZXI7XG4gICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAga2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbigna2V5Ym9hcmQnKTtcbiAgICAgICAgICBrZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgRVNDQVBFOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5tZW51U3RhY2suY2xvc2UodGhpcywge1xuICAgICAgICAgICAgZm9jdXNOZXh0T25FbXB0eTogRm9jdXNOZXh0LmN1cnJlbnRJdGVtLFxuICAgICAgICAgICAgZm9jdXNQYXJlbnRUcmlnZ2VyOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFRBQjpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCwgJ2FsdEtleScsICdtZXRhS2V5JywgJ2N0cmxLZXknKSkge1xuICAgICAgICAgIHRoaXMubWVudVN0YWNrLmNsb3NlQWxsKHtmb2N1c1BhcmVudFRyaWdnZXI6IHRydWV9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAga2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZm9jdXMgdGhlIGVpdGhlciB0aGUgY3VycmVudCwgcHJldmlvdXMgb3IgbmV4dCBpdGVtIGJhc2VkIG9uIHRoZSBGb2N1c05leHQgZXZlbnQuXG4gICAqIEBwYXJhbSBmb2N1c05leHQgVGhlIGVsZW1lbnQgdG8gZm9jdXMuXG4gICAqL1xuICBwcml2YXRlIF90b2dnbGVNZW51Rm9jdXMoZm9jdXNOZXh0OiBGb2N1c05leHQgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBrZXlNYW5hZ2VyID0gdGhpcy5rZXlNYW5hZ2VyO1xuICAgIHN3aXRjaCAoZm9jdXNOZXh0KSB7XG4gICAgICBjYXNlIEZvY3VzTmV4dC5uZXh0SXRlbTpcbiAgICAgICAga2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbigna2V5Ym9hcmQnKTtcbiAgICAgICAga2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBGb2N1c05leHQucHJldmlvdXNJdGVtOlxuICAgICAgICBrZXlNYW5hZ2VyLnNldEZvY3VzT3JpZ2luKCdrZXlib2FyZCcpO1xuICAgICAgICBrZXlNYW5hZ2VyLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBGb2N1c05leHQuY3VycmVudEl0ZW06XG4gICAgICAgIGlmIChrZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICBrZXlNYW5hZ2VyLnNldEZvY3VzT3JpZ2luKCdrZXlib2FyZCcpO1xuICAgICAgICAgIGtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShrZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdWJzY3JpYmUgdG8gdGhlIE1lbnVTdGFjayBlbXB0aWVkIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9NZW51U3RhY2tFbXB0aWVkKCkge1xuICAgIHRoaXMubWVudVN0YWNrLmVtcHRpZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuX3RvZ2dsZU1lbnVGb2N1cyhldmVudCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudV9wdWJsaWNfaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL21lbnUvbWVudV9wdWJsaWNfaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,51 @@
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 { defer, fromEvent, Subject } from 'rxjs';
9
+ import { mapTo, mergeAll, mergeMap, startWith, takeUntil } from 'rxjs/operators';
10
+ /**
11
+ * PointerFocusTracker keeps track of the currently active item under mouse focus. It also has
12
+ * observables which emit when the users mouse enters and leaves a tracked element.
13
+ */
14
+ export class PointerFocusTracker {
15
+ constructor(
16
+ /** The list of items being tracked. */
17
+ _items) {
18
+ this._items = _items;
19
+ /** Emits when an element is moused into. */
20
+ this.entered = this._getItemPointerEntries();
21
+ /** Emits when an element is moused out. */
22
+ this.exited = this._getItemPointerExits();
23
+ /** Emits when this is destroyed. */
24
+ this._destroyed = new Subject();
25
+ this.entered.subscribe(element => (this.activeElement = element));
26
+ this.exited.subscribe(() => {
27
+ this.previousElement = this.activeElement;
28
+ this.activeElement = undefined;
29
+ });
30
+ }
31
+ /** Stop the managers listeners. */
32
+ destroy() {
33
+ this._destroyed.next();
34
+ this._destroyed.complete();
35
+ }
36
+ /**
37
+ * Gets a stream of pointer (mouse) entries into the given items.
38
+ * This should typically run outside the Angular zone.
39
+ */
40
+ _getItemPointerEntries() {
41
+ return defer(() => this._items.changes.pipe(startWith(this._items), mergeMap((list) => list.map(element => fromEvent(element._elementRef.nativeElement, 'mouseenter').pipe(mapTo(element), takeUntil(this._items.changes)))), mergeAll()));
42
+ }
43
+ /**
44
+ * Gets a stream of pointer (mouse) exits out of the given items.
45
+ * This should typically run outside the Angular zone.
46
+ */
47
+ _getItemPointerExits() {
48
+ return defer(() => this._items.changes.pipe(startWith(this._items), mergeMap((list) => list.map(element => fromEvent(element._elementRef.nativeElement, 'mouseout').pipe(mapTo(element), takeUntil(this._items.changes)))), mergeAll()));
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci1mb2N1cy10cmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9tZW51L3BvaW50ZXItZm9jdXMtdHJhY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFHSCxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVEvRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QjtJQUNFLHVDQUF1QztJQUN0QixNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBakJ2Qyw0Q0FBNEM7UUFDbkMsWUFBTyxHQUFrQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVoRSwyQ0FBMkM7UUFDbEMsV0FBTSxHQUFrQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQVE3RCxvQ0FBb0M7UUFDbkIsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBTXpELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsT0FBTztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0JBQXNCO1FBQzVCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ3RCLFFBQVEsQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQzdELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFDZCxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDL0IsQ0FDRixDQUNGLEVBQ0QsUUFBUSxFQUFFLENBQ1gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLG9CQUFvQjtRQUMxQixPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUN0QixRQUFRLENBQUMsQ0FBQyxJQUFrQixFQUFFLEVBQUUsQ0FDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNqQixTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQ2QsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQy9CLENBQ0YsQ0FDRixFQUNELFFBQVEsRUFBRSxDQUNYLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0VsZW1lbnRSZWYsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlZmVyLCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXBUbywgbWVyZ2VBbGwsIG1lcmdlTWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogSXRlbSB0byB0cmFjayBmb3IgbW91c2UgZm9jdXMgZXZlbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2N1c2FibGVFbGVtZW50IHtcbiAgLyoqIEEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRvIGJlIHRyYWNrZWQuICovXG4gIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pjtcbn1cblxuLyoqXG4gKiBQb2ludGVyRm9jdXNUcmFja2VyIGtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGl0ZW0gdW5kZXIgbW91c2UgZm9jdXMuIEl0IGFsc28gaGFzXG4gKiBvYnNlcnZhYmxlcyB3aGljaCBlbWl0IHdoZW4gdGhlIHVzZXJzIG1vdXNlIGVudGVycyBhbmQgbGVhdmVzIGEgdHJhY2tlZCBlbGVtZW50LlxuICovXG5leHBvcnQgY2xhc3MgUG9pbnRlckZvY3VzVHJhY2tlcjxUIGV4dGVuZHMgRm9jdXNhYmxlRWxlbWVudD4ge1xuICAvKiogRW1pdHMgd2hlbiBhbiBlbGVtZW50IGlzIG1vdXNlZCBpbnRvLiAqL1xuICByZWFkb25seSBlbnRlcmVkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fZ2V0SXRlbVBvaW50ZXJFbnRyaWVzKCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYW4gZWxlbWVudCBpcyBtb3VzZWQgb3V0LiAqL1xuICByZWFkb25seSBleGl0ZWQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLl9nZXRJdGVtUG9pbnRlckV4aXRzKCk7XG5cbiAgLyoqIFRoZSBlbGVtZW50IGN1cnJlbnRseSB1bmRlciBtb3VzZSBmb2N1cy4gKi9cbiAgYWN0aXZlRWxlbWVudD86IFQ7XG5cbiAgLyoqIFRoZSBlbGVtZW50IHByZXZpb3VzbHkgdW5kZXIgbW91c2UgZm9jdXMuICovXG4gIHByZXZpb3VzRWxlbWVudD86IFQ7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhpcyBpcyBkZXN0cm95ZWQuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFRoZSBsaXN0IG9mIGl0ZW1zIGJlaW5nIHRyYWNrZWQuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXM6IFF1ZXJ5TGlzdDxUPixcbiAgKSB7XG4gICAgdGhpcy5lbnRlcmVkLnN1YnNjcmliZShlbGVtZW50ID0+ICh0aGlzLmFjdGl2ZUVsZW1lbnQgPSBlbGVtZW50KSk7XG4gICAgdGhpcy5leGl0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucHJldmlvdXNFbGVtZW50ID0gdGhpcy5hY3RpdmVFbGVtZW50O1xuICAgICAgdGhpcy5hY3RpdmVFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFN0b3AgdGhlIG1hbmFnZXJzIGxpc3RlbmVycy4gKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzdHJlYW0gb2YgcG9pbnRlciAobW91c2UpIGVudHJpZXMgaW50byB0aGUgZ2l2ZW4gaXRlbXMuXG4gICAqIFRoaXMgc2hvdWxkIHR5cGljYWxseSBydW4gb3V0c2lkZSB0aGUgQW5ndWxhciB6b25lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0SXRlbVBvaW50ZXJFbnRyaWVzKCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5faXRlbXMuY2hhbmdlcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5faXRlbXMpLFxuICAgICAgICBtZXJnZU1hcCgobGlzdDogUXVlcnlMaXN0PFQ+KSA9PlxuICAgICAgICAgIGxpc3QubWFwKGVsZW1lbnQgPT5cbiAgICAgICAgICAgIGZyb21FdmVudChlbGVtZW50Ll9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJykucGlwZShcbiAgICAgICAgICAgICAgbWFwVG8oZWxlbWVudCksXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9pdGVtcy5jaGFuZ2VzKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgc3RyZWFtIG9mIHBvaW50ZXIgKG1vdXNlKSBleGl0cyBvdXQgb2YgdGhlIGdpdmVuIGl0ZW1zLlxuICAgKiBUaGlzIHNob3VsZCB0eXBpY2FsbHkgcnVuIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICovXG4gIHByaXZhdGUgX2dldEl0ZW1Qb2ludGVyRXhpdHMoKSB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+XG4gICAgICB0aGlzLl9pdGVtcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9pdGVtcyksXG4gICAgICAgIG1lcmdlTWFwKChsaXN0OiBRdWVyeUxpc3Q8VD4pID0+XG4gICAgICAgICAgbGlzdC5tYXAoZWxlbWVudCA9PlxuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlb3V0JykucGlwZShcbiAgICAgICAgICAgICAgbWFwVG8oZWxlbWVudCksXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9pdGVtcy5jaGFuZ2VzKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ export * from './menu-module';
9
+ export * from './menu-bar';
10
+ export * from './menu';
11
+ export * from './menu-base';
12
+ export * from './menu-item';
13
+ export * from './menu-item-checkbox';
14
+ export * from './menu-item-radio';
15
+ export * from './menu-trigger';
16
+ export * from './menu-group';
17
+ export * from './menu-item-selectable';
18
+ export * from './context-menu-trigger';
19
+ export * from './menu-trigger-base';
20
+ export * from './pointer-focus-tracker';
21
+ export * from './menu-stack';
22
+ export * from './menu-interface';
23
+ export * from './menu-aim';
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvbWVudS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL21lbnUtbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1iYXInO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtLWNoZWNrYm94JztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtLXJhZGlvJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS10cmlnZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS1zZWxlY3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC1tZW51LXRyaWdnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LXRyaWdnZXItYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvaW50ZXItZm9jdXMtdHJhY2tlcic7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtc3RhY2snO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtYWltJztcbiJdfQ==