@kato-lee/cdk 14.2.7 → 20.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (735) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +8 -8
  3. package/_adev_assets/cdk_drag_drop.json +7215 -0
  4. package/_adev_assets/cdk_testing.json +7605 -0
  5. package/_adev_assets/cdk_testing_protractor.json +1747 -0
  6. package/_adev_assets/cdk_testing_selenium_webdriver.json +1801 -0
  7. package/_adev_assets/cdk_testing_testbed.json +1903 -0
  8. package/_index.scss +8 -8
  9. package/a11y/_index.scss +60 -102
  10. package/a11y/index.d.ts +550 -1212
  11. package/a11y-module.d.d.ts +314 -0
  12. package/a11y-prebuilt.css +1 -1
  13. package/accordion/index.d.ts +92 -140
  14. package/activedescendant-key-manager.d.d.ts +39 -0
  15. package/bidi/index.d.ts +21 -80
  16. package/bidi-module.d.d.ts +57 -0
  17. package/clipboard/index.d.ts +101 -115
  18. package/coercion/index.d.ts +45 -67
  19. package/coercion/private/index.d.ts +9 -0
  20. package/collections/index.d.ts +99 -374
  21. package/data-source.d.d.ts +43 -0
  22. package/dialog/index.d.ts +412 -469
  23. package/drag-drop/index.d.ts +1410 -1614
  24. package/fesm2022/a11y-module.mjs +951 -0
  25. package/fesm2022/a11y-module.mjs.map +1 -0
  26. package/fesm2022/a11y.mjs +538 -0
  27. package/fesm2022/a11y.mjs.map +1 -0
  28. package/fesm2022/accordion.mjs +216 -0
  29. package/fesm2022/accordion.mjs.map +1 -0
  30. package/fesm2022/activedescendant-key-manager.mjs +16 -0
  31. package/fesm2022/activedescendant-key-manager.mjs.map +1 -0
  32. package/fesm2022/array.mjs +6 -0
  33. package/fesm2022/array.mjs.map +1 -0
  34. package/fesm2022/bidi.mjs +78 -0
  35. package/fesm2022/bidi.mjs.map +1 -0
  36. package/fesm2022/breakpoints-observer.mjs +179 -0
  37. package/fesm2022/breakpoints-observer.mjs.map +1 -0
  38. package/fesm2022/cdk.mjs +7 -0
  39. package/fesm2022/cdk.mjs.map +1 -0
  40. package/{fesm2020 → fesm2022}/clipboard.mjs +210 -259
  41. package/fesm2022/clipboard.mjs.map +1 -0
  42. package/fesm2022/coercion/private.mjs +15 -0
  43. package/fesm2022/coercion/private.mjs.map +1 -0
  44. package/fesm2022/coercion.mjs +43 -0
  45. package/fesm2022/coercion.mjs.map +1 -0
  46. package/fesm2022/collections.mjs +8 -0
  47. package/fesm2022/collections.mjs.map +1 -0
  48. package/fesm2022/css-pixel-value.mjs +10 -0
  49. package/fesm2022/css-pixel-value.mjs.map +1 -0
  50. package/fesm2022/data-source.mjs +15 -0
  51. package/fesm2022/data-source.mjs.map +1 -0
  52. package/{fesm2020 → fesm2022}/dialog.mjs +874 -787
  53. package/fesm2022/dialog.mjs.map +1 -0
  54. package/fesm2022/directionality.mjs +77 -0
  55. package/fesm2022/directionality.mjs.map +1 -0
  56. package/fesm2022/dispose-view-repeater-strategy.mjs +44 -0
  57. package/fesm2022/dispose-view-repeater-strategy.mjs.map +1 -0
  58. package/{fesm2020 → fesm2022}/drag-drop.mjs +4477 -3808
  59. package/fesm2022/drag-drop.mjs.map +1 -0
  60. package/fesm2022/element.mjs +29 -0
  61. package/fesm2022/element.mjs.map +1 -0
  62. package/fesm2022/fake-event-detection.mjs +24 -0
  63. package/fesm2022/fake-event-detection.mjs.map +1 -0
  64. package/fesm2022/focus-key-manager.mjs +22 -0
  65. package/fesm2022/focus-key-manager.mjs.map +1 -0
  66. package/fesm2022/focus-monitor.mjs +622 -0
  67. package/fesm2022/focus-monitor.mjs.map +1 -0
  68. package/fesm2022/id-generator.mjs +37 -0
  69. package/fesm2022/id-generator.mjs.map +1 -0
  70. package/fesm2022/keycodes.mjs +15 -0
  71. package/fesm2022/keycodes.mjs.map +1 -0
  72. package/{fesm2015/keycodes.mjs → fesm2022/keycodes2.mjs} +122 -167
  73. package/fesm2022/keycodes2.mjs.map +1 -0
  74. package/fesm2022/layout.mjs +43 -0
  75. package/fesm2022/layout.mjs.map +1 -0
  76. package/fesm2022/list-key-manager.mjs +360 -0
  77. package/fesm2022/list-key-manager.mjs.map +1 -0
  78. package/fesm2022/listbox.mjs +928 -0
  79. package/fesm2022/listbox.mjs.map +1 -0
  80. package/fesm2022/menu.mjs +2001 -0
  81. package/fesm2022/menu.mjs.map +1 -0
  82. package/fesm2022/observers/private.mjs +124 -0
  83. package/fesm2022/observers/private.mjs.map +1 -0
  84. package/fesm2022/observers.mjs +210 -0
  85. package/fesm2022/observers.mjs.map +1 -0
  86. package/{fesm2020/overlay.mjs → fesm2022/overlay-module.mjs} +3062 -3145
  87. package/fesm2022/overlay-module.mjs.map +1 -0
  88. package/fesm2022/overlay.mjs +101 -0
  89. package/fesm2022/overlay.mjs.map +1 -0
  90. package/fesm2022/passive-listeners.mjs +31 -0
  91. package/fesm2022/passive-listeners.mjs.map +1 -0
  92. package/fesm2022/platform.mjs +73 -0
  93. package/fesm2022/platform.mjs.map +1 -0
  94. package/fesm2022/platform2.mjs +77 -0
  95. package/fesm2022/platform2.mjs.map +1 -0
  96. package/{fesm2020 → fesm2022}/portal.mjs +614 -689
  97. package/fesm2022/portal.mjs.map +1 -0
  98. package/fesm2022/private.mjs +19 -0
  99. package/fesm2022/private.mjs.map +1 -0
  100. package/fesm2022/recycle-view-repeater-strategy.mjs +156 -0
  101. package/fesm2022/recycle-view-repeater-strategy.mjs.map +1 -0
  102. package/{fesm2015 → fesm2022}/scrolling.mjs +1472 -1558
  103. package/fesm2022/scrolling.mjs.map +1 -0
  104. package/fesm2022/scrolling2.mjs +99 -0
  105. package/fesm2022/scrolling2.mjs.map +1 -0
  106. package/fesm2022/selection-model.mjs +221 -0
  107. package/fesm2022/selection-model.mjs.map +1 -0
  108. package/fesm2022/shadow-dom.mjs +49 -0
  109. package/fesm2022/shadow-dom.mjs.map +1 -0
  110. package/fesm2022/stepper.mjs +632 -0
  111. package/fesm2022/stepper.mjs.map +1 -0
  112. package/fesm2022/style-loader.mjs +47 -0
  113. package/fesm2022/style-loader.mjs.map +1 -0
  114. package/{fesm2020 → fesm2022}/table.mjs +2511 -2348
  115. package/fesm2022/table.mjs.map +1 -0
  116. package/fesm2022/test-environment.mjs +19 -0
  117. package/fesm2022/test-environment.mjs.map +1 -0
  118. package/fesm2022/testing/selenium-webdriver.mjs +353 -0
  119. package/fesm2022/testing/selenium-webdriver.mjs.map +1 -0
  120. package/fesm2022/testing/testbed.mjs +782 -0
  121. package/fesm2022/testing/testbed.mjs.map +1 -0
  122. package/fesm2022/testing.mjs +950 -0
  123. package/fesm2022/testing.mjs.map +1 -0
  124. package/{fesm2020 → fesm2022}/text-field.mjs +432 -459
  125. package/fesm2022/text-field.mjs.map +1 -0
  126. package/fesm2022/tree-key-manager.mjs +360 -0
  127. package/fesm2022/tree-key-manager.mjs.map +1 -0
  128. package/fesm2022/tree.mjs +1800 -0
  129. package/fesm2022/tree.mjs.map +1 -0
  130. package/fesm2022/typeahead.mjs +88 -0
  131. package/fesm2022/typeahead.mjs.map +1 -0
  132. package/fesm2022/unique-selection-dispatcher.mjs +49 -0
  133. package/fesm2022/unique-selection-dispatcher.mjs.map +1 -0
  134. package/focus-key-manager.d.d.ts +39 -0
  135. package/focus-monitor.d.d.ts +208 -0
  136. package/harness-environment.d.d.ts +944 -0
  137. package/index.d.ts +6 -6
  138. package/keycodes/index.d.ts +129 -249
  139. package/layout/index.d.ts +89 -90
  140. package/list-key-manager.d.d.ts +170 -0
  141. package/listbox/index.d.ts +354 -419
  142. package/menu/index.d.ts +834 -1013
  143. package/number-property.d.d.ts +16 -0
  144. package/observers/index.d.ts +84 -109
  145. package/observers/private/index.d.ts +34 -0
  146. package/overlay/_index-deprecated.scss +13 -13
  147. package/overlay/_index.scss +193 -152
  148. package/overlay/index.d.ts +328 -1343
  149. package/overlay-module.d.d.ts +801 -0
  150. package/overlay-prebuilt.css +1 -1
  151. package/package.json +177 -232
  152. package/platform/index.d.ts +67 -106
  153. package/platform.d.d.ts +33 -0
  154. package/portal/index.d.ts +51 -328
  155. package/portal-directives.d.d.ts +211 -0
  156. package/private/index.d.ts +13 -0
  157. package/schematics/collection.json +18 -0
  158. package/schematics/index.d.ts +14 -0
  159. package/schematics/index.js +37 -0
  160. package/schematics/index.js.map +1 -0
  161. package/schematics/migration.json +15 -0
  162. package/schematics/ng-add/index.d.ts +17 -0
  163. package/schematics/ng-add/index.js +31 -0
  164. package/schematics/ng-add/index.js.map +1 -0
  165. package/schematics/ng-add/schema.d.ts +11 -0
  166. package/schematics/ng-add/schema.js +10 -0
  167. package/schematics/ng-add/schema.js.map +1 -0
  168. package/schematics/ng-add/schema.json +16 -0
  169. package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +53 -0
  170. package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +21 -0
  171. package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +25 -0
  172. package/schematics/ng-generate/drag-drop/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +45 -0
  173. package/schematics/ng-generate/drag-drop/index.d.ts +11 -0
  174. package/schematics/ng-generate/drag-drop/index.js +42 -0
  175. package/schematics/ng-generate/drag-drop/index.js.map +1 -0
  176. package/schematics/ng-generate/drag-drop/schema.d.ts +10 -0
  177. package/schematics/ng-generate/drag-drop/schema.js +10 -0
  178. package/schematics/ng-generate/drag-drop/schema.js.map +1 -0
  179. package/schematics/ng-generate/drag-drop/schema.json +100 -0
  180. package/schematics/ng-update/data/attribute-selectors.d.ts +15 -0
  181. package/schematics/ng-update/data/attribute-selectors.js +12 -0
  182. package/schematics/ng-update/data/attribute-selectors.js.map +1 -0
  183. package/schematics/ng-update/data/class-names.d.ts +15 -0
  184. package/schematics/ng-update/data/class-names.js +12 -0
  185. package/schematics/ng-update/data/class-names.js.map +1 -0
  186. package/schematics/ng-update/data/constructor-checks.d.ts +15 -0
  187. package/schematics/ng-update/data/constructor-checks.js +17 -0
  188. package/schematics/ng-update/data/constructor-checks.js.map +1 -0
  189. package/schematics/ng-update/data/css-selectors.d.ts +27 -0
  190. package/schematics/ng-update/data/css-selectors.js +12 -0
  191. package/schematics/ng-update/data/css-selectors.js.map +1 -0
  192. package/schematics/ng-update/data/css-tokens.d.ts +27 -0
  193. package/schematics/ng-update/data/css-tokens.js +12 -0
  194. package/schematics/ng-update/data/css-tokens.js.map +1 -0
  195. package/schematics/ng-update/data/element-selectors.d.ts +15 -0
  196. package/schematics/ng-update/data/element-selectors.js +12 -0
  197. package/schematics/ng-update/data/element-selectors.js.map +1 -0
  198. package/schematics/ng-update/data/index.d.ts +18 -0
  199. package/schematics/ng-update/data/index.js +35 -0
  200. package/schematics/ng-update/data/index.js.map +1 -0
  201. package/schematics/ng-update/data/input-names.d.ts +22 -0
  202. package/schematics/ng-update/data/input-names.js +12 -0
  203. package/schematics/ng-update/data/input-names.js.map +1 -0
  204. package/schematics/ng-update/data/method-call-checks.d.ts +17 -0
  205. package/schematics/ng-update/data/method-call-checks.js +12 -0
  206. package/schematics/ng-update/data/method-call-checks.js.map +1 -0
  207. package/schematics/ng-update/data/output-names.d.ts +22 -0
  208. package/schematics/ng-update/data/output-names.js +12 -0
  209. package/schematics/ng-update/data/output-names.js.map +1 -0
  210. package/schematics/ng-update/data/property-names.d.ts +20 -0
  211. package/schematics/ng-update/data/property-names.js +12 -0
  212. package/schematics/ng-update/data/property-names.js.map +1 -0
  213. package/schematics/ng-update/data/symbol-removal.d.ts +17 -0
  214. package/schematics/ng-update/data/symbol-removal.js +12 -0
  215. package/schematics/ng-update/data/symbol-removal.js.map +1 -0
  216. package/schematics/ng-update/devkit-file-system.d.ts +30 -0
  217. package/schematics/ng-update/devkit-file-system.js +83 -0
  218. package/schematics/ng-update/devkit-file-system.js.map +1 -0
  219. package/schematics/ng-update/devkit-migration-rule.d.ts +24 -0
  220. package/schematics/ng-update/devkit-migration-rule.js +142 -0
  221. package/schematics/ng-update/devkit-migration-rule.js.map +1 -0
  222. package/schematics/ng-update/devkit-migration.d.ts +35 -0
  223. package/schematics/ng-update/devkit-migration.js +20 -0
  224. package/schematics/ng-update/devkit-migration.js.map +1 -0
  225. package/schematics/ng-update/find-stylesheets.d.ts +16 -0
  226. package/schematics/ng-update/find-stylesheets.js +41 -0
  227. package/schematics/ng-update/find-stylesheets.js.map +1 -0
  228. package/schematics/ng-update/html-parsing/angular.d.ts +15 -0
  229. package/schematics/ng-update/html-parsing/angular.js +51 -0
  230. package/schematics/ng-update/html-parsing/angular.js.map +1 -0
  231. package/schematics/ng-update/html-parsing/elements.d.ts +24 -0
  232. package/schematics/ng-update/html-parsing/elements.js +63 -0
  233. package/schematics/ng-update/html-parsing/elements.js.map +1 -0
  234. package/schematics/ng-update/index.d.ts +10 -0
  235. package/schematics/ng-update/index.js +29 -0
  236. package/schematics/ng-update/index.js.map +1 -0
  237. package/schematics/ng-update/migrations/attribute-selectors.d.ts +26 -0
  238. package/schematics/ng-update/migrations/attribute-selectors.js +71 -0
  239. package/schematics/ng-update/migrations/attribute-selectors.js.map +1 -0
  240. package/schematics/ng-update/migrations/class-inheritance.d.ts +26 -0
  241. package/schematics/ng-update/migrations/class-inheritance.js +58 -0
  242. package/schematics/ng-update/migrations/class-inheritance.js.map +1 -0
  243. package/schematics/ng-update/migrations/class-names.d.ts +32 -0
  244. package/schematics/ng-update/migrations/class-names.js +91 -0
  245. package/schematics/ng-update/migrations/class-names.js.map +1 -0
  246. package/schematics/ng-update/migrations/constructor-signature.d.ts +29 -0
  247. package/schematics/ng-update/migrations/constructor-signature.js +139 -0
  248. package/schematics/ng-update/migrations/constructor-signature.js.map +1 -0
  249. package/schematics/ng-update/migrations/css-selectors.d.ts +26 -0
  250. package/schematics/ng-update/migrations/css-selectors.js +75 -0
  251. package/schematics/ng-update/migrations/css-selectors.js.map +1 -0
  252. package/schematics/ng-update/migrations/css-tokens.d.ts +26 -0
  253. package/schematics/ng-update/migrations/css-tokens.js +83 -0
  254. package/schematics/ng-update/migrations/css-tokens.js.map +1 -0
  255. package/schematics/ng-update/migrations/element-selectors.d.ts +26 -0
  256. package/schematics/ng-update/migrations/element-selectors.js +66 -0
  257. package/schematics/ng-update/migrations/element-selectors.js.map +1 -0
  258. package/schematics/ng-update/migrations/input-names.d.ts +26 -0
  259. package/schematics/ng-update/migrations/input-names.js +59 -0
  260. package/schematics/ng-update/migrations/input-names.js.map +1 -0
  261. package/schematics/ng-update/migrations/method-call-arguments.d.ts +22 -0
  262. package/schematics/ng-update/migrations/method-call-arguments.js +62 -0
  263. package/schematics/ng-update/migrations/method-call-arguments.js.map +1 -0
  264. package/schematics/ng-update/migrations/misc-template.d.ts +18 -0
  265. package/schematics/ng-update/migrations/misc-template.js +25 -0
  266. package/schematics/ng-update/migrations/misc-template.js.map +1 -0
  267. package/schematics/ng-update/migrations/output-names.d.ts +22 -0
  268. package/schematics/ng-update/migrations/output-names.js +46 -0
  269. package/schematics/ng-update/migrations/output-names.js.map +1 -0
  270. package/schematics/ng-update/migrations/property-names.d.ts +22 -0
  271. package/schematics/ng-update/migrations/property-names.js +60 -0
  272. package/schematics/ng-update/migrations/property-names.js.map +1 -0
  273. package/schematics/ng-update/migrations/symbol-removal.d.ts +18 -0
  274. package/schematics/ng-update/migrations/symbol-removal.js +47 -0
  275. package/schematics/ng-update/migrations/symbol-removal.js.map +1 -0
  276. package/schematics/ng-update/public-api.d.ts +19 -0
  277. package/schematics/ng-update/public-api.js +36 -0
  278. package/schematics/ng-update/public-api.js.map +1 -0
  279. package/schematics/ng-update/typescript/base-types.d.ts +10 -0
  280. package/schematics/ng-update/typescript/base-types.js +23 -0
  281. package/schematics/ng-update/typescript/base-types.js.map +1 -0
  282. package/schematics/ng-update/typescript/imports.d.ts +18 -0
  283. package/schematics/ng-update/typescript/imports.js +53 -0
  284. package/schematics/ng-update/typescript/imports.js.map +1 -0
  285. package/schematics/ng-update/typescript/literal.d.ts +18 -0
  286. package/schematics/ng-update/typescript/literal.js +32 -0
  287. package/schematics/ng-update/typescript/literal.js.map +1 -0
  288. package/schematics/ng-update/typescript/module-specifiers.d.ts +16 -0
  289. package/schematics/ng-update/typescript/module-specifiers.js +35 -0
  290. package/schematics/ng-update/typescript/module-specifiers.js.map +1 -0
  291. package/schematics/ng-update/upgrade-data.d.ts +35 -0
  292. package/schematics/ng-update/upgrade-data.js +40 -0
  293. package/schematics/ng-update/upgrade-data.js.map +1 -0
  294. package/schematics/package.json +3 -0
  295. package/schematics/paths.d.ts +11 -0
  296. package/schematics/paths.js +16 -0
  297. package/schematics/paths.js.map +1 -0
  298. package/schematics/update-tool/component-resource-collector.d.ts +44 -0
  299. package/schematics/update-tool/component-resource-collector.js +164 -0
  300. package/schematics/update-tool/component-resource-collector.js.map +1 -0
  301. package/schematics/update-tool/file-system.d.ts +72 -0
  302. package/schematics/update-tool/file-system.js +18 -0
  303. package/schematics/update-tool/file-system.js.map +1 -0
  304. package/schematics/update-tool/index.d.ts +74 -0
  305. package/schematics/update-tool/index.js +172 -0
  306. package/schematics/update-tool/index.js.map +1 -0
  307. package/schematics/update-tool/logger.d.ts +15 -0
  308. package/schematics/update-tool/logger.js +18 -0
  309. package/schematics/update-tool/logger.js.map +1 -0
  310. package/schematics/update-tool/migration.d.ts +87 -0
  311. package/schematics/update-tool/migration.js +70 -0
  312. package/schematics/update-tool/migration.js.map +1 -0
  313. package/schematics/update-tool/public-api.d.ts +16 -0
  314. package/schematics/update-tool/public-api.js +33 -0
  315. package/schematics/update-tool/public-api.js.map +1 -0
  316. package/schematics/update-tool/target-version.d.ts +16 -0
  317. package/schematics/update-tool/target-version.js +27 -0
  318. package/schematics/update-tool/target-version.js.map +1 -0
  319. package/schematics/update-tool/update-recorder.d.ts +13 -0
  320. package/schematics/update-tool/update-recorder.js +10 -0
  321. package/schematics/update-tool/update-recorder.js.map +1 -0
  322. package/schematics/update-tool/utils/decorators.d.ts +22 -0
  323. package/schematics/update-tool/utils/decorators.js +41 -0
  324. package/schematics/update-tool/utils/decorators.js.map +1 -0
  325. package/schematics/update-tool/utils/diagnostics.d.ts +11 -0
  326. package/schematics/update-tool/utils/diagnostics.js +18 -0
  327. package/schematics/update-tool/utils/diagnostics.js.map +1 -0
  328. package/schematics/update-tool/utils/functions.d.ts +14 -0
  329. package/schematics/update-tool/utils/functions.js +20 -0
  330. package/schematics/update-tool/utils/functions.js.map +1 -0
  331. package/schematics/update-tool/utils/imports.d.ts +17 -0
  332. package/schematics/update-tool/utils/imports.js +110 -0
  333. package/schematics/update-tool/utils/imports.js.map +1 -0
  334. package/schematics/update-tool/utils/line-mappings.d.ts +21 -0
  335. package/schematics/update-tool/utils/line-mappings.js +75 -0
  336. package/schematics/update-tool/utils/line-mappings.js.map +1 -0
  337. package/schematics/update-tool/utils/parse-tsconfig.d.ts +18 -0
  338. package/schematics/update-tool/utils/parse-tsconfig.js +45 -0
  339. package/schematics/update-tool/utils/parse-tsconfig.js.map +1 -0
  340. package/schematics/update-tool/utils/property-name.d.ts +18 -0
  341. package/schematics/update-tool/utils/property-name.js +27 -0
  342. package/schematics/update-tool/utils/property-name.js.map +1 -0
  343. package/schematics/update-tool/utils/virtual-host.d.ts +36 -0
  344. package/schematics/update-tool/utils/virtual-host.js +71 -0
  345. package/schematics/update-tool/utils/virtual-host.js.map +1 -0
  346. package/schematics/update-tool/version-changes.d.ts +32 -0
  347. package/schematics/update-tool/version-changes.js +38 -0
  348. package/schematics/update-tool/version-changes.js.map +1 -0
  349. package/schematics/utils/ast/ng-module-imports.d.ts +12 -0
  350. package/schematics/utils/ast/ng-module-imports.js +82 -0
  351. package/schematics/utils/ast/ng-module-imports.js.map +1 -0
  352. package/schematics/utils/ast.d.ts +25 -0
  353. package/schematics/utils/ast.js +79 -0
  354. package/schematics/utils/ast.js.map +1 -0
  355. package/schematics/utils/build-component.d.ts +20 -0
  356. package/schematics/utils/build-component.js +189 -0
  357. package/schematics/utils/build-component.js.map +1 -0
  358. package/schematics/utils/get-project.d.ts +13 -0
  359. package/schematics/utils/get-project.js +28 -0
  360. package/schematics/utils/get-project.js.map +1 -0
  361. package/schematics/utils/html-manipulation.d.ts +15 -0
  362. package/schematics/utils/html-manipulation.js +91 -0
  363. package/schematics/utils/html-manipulation.js.map +1 -0
  364. package/schematics/utils/index.d.ts +19 -0
  365. package/schematics/utils/index.js +36 -0
  366. package/schematics/utils/index.js.map +1 -0
  367. package/schematics/utils/parse5-element.d.ts +12 -0
  368. package/schematics/utils/parse5-element.js +30 -0
  369. package/schematics/utils/parse5-element.js.map +1 -0
  370. package/schematics/utils/project-index-file.d.ts +13 -0
  371. package/schematics/utils/project-index-file.js +43 -0
  372. package/schematics/utils/project-index-file.js.map +1 -0
  373. package/schematics/utils/project-main-file.d.ts +11 -0
  374. package/schematics/utils/project-main-file.js +25 -0
  375. package/schematics/utils/project-main-file.js.map +1 -0
  376. package/schematics/utils/project-style-file.d.ts +13 -0
  377. package/schematics/utils/project-style-file.js +42 -0
  378. package/schematics/utils/project-style-file.js.map +1 -0
  379. package/schematics/utils/project-targets.d.ts +15 -0
  380. package/schematics/utils/project-targets.js +46 -0
  381. package/schematics/utils/project-targets.js.map +1 -0
  382. package/schematics/utils/project-tsconfig-paths.d.ts +14 -0
  383. package/schematics/utils/project-tsconfig-paths.js +46 -0
  384. package/schematics/utils/project-tsconfig-paths.js.map +1 -0
  385. package/schematics/utils/schematic-options.d.ts +20 -0
  386. package/schematics/utils/schematic-options.js +89 -0
  387. package/schematics/utils/schematic-options.js.map +1 -0
  388. package/scrolling/index.d.ts +62 -849
  389. package/scrolling-module.d.d.ts +551 -0
  390. package/selection-model.d.d.ts +112 -0
  391. package/stepper/index.d.ts +236 -419
  392. package/style-loader.d.d.ts +21 -0
  393. package/table/index.d.ts +901 -1483
  394. package/testing/index.d.ts +98 -0
  395. package/testing/selenium-webdriver/index.d.ts +150 -0
  396. package/testing/testbed/index.d.ts +157 -0
  397. package/text-field/_index.scss +89 -89
  398. package/text-field/index.d.ts +154 -203
  399. package/text-field-prebuilt.css +1 -1
  400. package/tree/index.d.ts +720 -593
  401. package/tree-key-manager-strategy.d.d.ts +116 -0
  402. package/unique-selection-dispatcher.d.d.ts +33 -0
  403. package/view-repeater.d.d.ts +88 -0
  404. package/a11y/_index.import.scss +0 -2
  405. package/esm2020/a11y/a11y-module.mjs +0 -32
  406. package/esm2020/a11y/a11y_public_index.mjs +0 -5
  407. package/esm2020/a11y/aria-describer/aria-describer.mjs +0 -232
  408. package/esm2020/a11y/aria-describer/aria-reference.mjs +0 -44
  409. package/esm2020/a11y/fake-event-detection.mjs +0 -31
  410. package/esm2020/a11y/focus-monitor/focus-monitor.mjs +0 -451
  411. package/esm2020/a11y/focus-trap/configurable-focus-trap-config.mjs +0 -9
  412. package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +0 -53
  413. package/esm2020/a11y/focus-trap/configurable-focus-trap.mjs +0 -51
  414. package/esm2020/a11y/focus-trap/event-listener-inert-strategy.mjs +0 -61
  415. package/esm2020/a11y/focus-trap/focus-trap-inert-strategy.mjs +0 -11
  416. package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +0 -53
  417. package/esm2020/a11y/focus-trap/focus-trap.mjs +0 -402
  418. package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +0 -109
  419. package/esm2020/a11y/index.mjs +0 -9
  420. package/esm2020/a11y/input-modality/input-modality-detector.mjs +0 -176
  421. package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +0 -238
  422. package/esm2020/a11y/key-manager/activedescendant-key-manager.mjs +0 -20
  423. package/esm2020/a11y/key-manager/focus-key-manager.mjs +0 -29
  424. package/esm2020/a11y/key-manager/list-key-manager.mjs +0 -321
  425. package/esm2020/a11y/live-announcer/live-announcer-tokens.mjs +0 -19
  426. package/esm2020/a11y/live-announcer/live-announcer.mjs +0 -178
  427. package/esm2020/a11y/public-api.mjs +0 -26
  428. package/esm2020/accordion/accordion-item.mjs +0 -167
  429. package/esm2020/accordion/accordion-module.mjs +0 -24
  430. package/esm2020/accordion/accordion.mjs +0 -70
  431. package/esm2020/accordion/accordion_public_index.mjs +0 -5
  432. package/esm2020/accordion/index.mjs +0 -9
  433. package/esm2020/accordion/public-api.mjs +0 -11
  434. package/esm2020/bidi/bidi-module.mjs +0 -23
  435. package/esm2020/bidi/bidi_public_index.mjs +0 -5
  436. package/esm2020/bidi/dir-document-token.mjs +0 -33
  437. package/esm2020/bidi/dir.mjs +0 -69
  438. package/esm2020/bidi/directionality.mjs +0 -52
  439. package/esm2020/bidi/index.mjs +0 -9
  440. package/esm2020/bidi/public-api.mjs +0 -12
  441. package/esm2020/clipboard/clipboard-module.mjs +0 -23
  442. package/esm2020/clipboard/clipboard.mjs +0 -53
  443. package/esm2020/clipboard/clipboard_public_index.mjs +0 -5
  444. package/esm2020/clipboard/copy-to-clipboard.mjs +0 -99
  445. package/esm2020/clipboard/index.mjs +0 -9
  446. package/esm2020/clipboard/pending-copy.mjs +0 -69
  447. package/esm2020/clipboard/public-api.mjs +0 -12
  448. package/esm2020/coercion/array.mjs +0 -11
  449. package/esm2020/coercion/boolean-property.mjs +0 -12
  450. package/esm2020/coercion/css-pixel-value.mjs +0 -15
  451. package/esm2020/coercion/element.mjs +0 -16
  452. package/esm2020/coercion/index.mjs +0 -9
  453. package/esm2020/coercion/number-property.mjs +0 -21
  454. package/esm2020/coercion/public-api.mjs +0 -14
  455. package/esm2020/coercion/string-array.mjs +0 -38
  456. package/esm2020/collections/array-data-source.mjs +0 -21
  457. package/esm2020/collections/collection-viewer.mjs +0 -9
  458. package/esm2020/collections/collections_public_index.mjs +0 -5
  459. package/esm2020/collections/data-source.mjs +0 -19
  460. package/esm2020/collections/dispose-view-repeater-strategy.mjs +0 -47
  461. package/esm2020/collections/index.mjs +0 -9
  462. package/esm2020/collections/public-api.mjs +0 -17
  463. package/esm2020/collections/recycle-view-repeater-strategy.mjs +0 -128
  464. package/esm2020/collections/selection-model.mjs +0 -216
  465. package/esm2020/collections/tree-adapter.mjs +0 -9
  466. package/esm2020/collections/unique-selection-dispatcher.mjs +0 -55
  467. package/esm2020/collections/view-repeater.mjs +0 -14
  468. package/esm2020/dialog/dialog-config.mjs +0 -63
  469. package/esm2020/dialog/dialog-container.mjs +0 -278
  470. package/esm2020/dialog/dialog-injectors.mjs +0 -26
  471. package/esm2020/dialog/dialog-module.mjs +0 -42
  472. package/esm2020/dialog/dialog-ref.mjs +0 -76
  473. package/esm2020/dialog/dialog.mjs +0 -301
  474. package/esm2020/dialog/dialog_public_index.mjs +0 -5
  475. package/esm2020/dialog/index.mjs +0 -9
  476. package/esm2020/dialog/public-api.mjs +0 -14
  477. package/esm2020/drag-drop/directives/assertions.mjs +0 -18
  478. package/esm2020/drag-drop/directives/config.mjs +0 -14
  479. package/esm2020/drag-drop/directives/drag-handle.mjs +0 -66
  480. package/esm2020/drag-drop/directives/drag-placeholder.mjs +0 -36
  481. package/esm2020/drag-drop/directives/drag-preview.mjs +0 -47
  482. package/esm2020/drag-drop/directives/drag.mjs +0 -487
  483. package/esm2020/drag-drop/directives/drop-list-group.mjs +0 -53
  484. package/esm2020/drag-drop/directives/drop-list.mjs +0 -345
  485. package/esm2020/drag-drop/dom/client-rect.mjs +0 -64
  486. package/esm2020/drag-drop/dom/clone-node.mjs +0 -65
  487. package/esm2020/drag-drop/dom/parent-position-tracker.mjs +0 -76
  488. package/esm2020/drag-drop/dom/styling.mjs +0 -69
  489. package/esm2020/drag-drop/dom/transition-duration.mjs +0 -36
  490. package/esm2020/drag-drop/drag-drop-module.mjs +0 -57
  491. package/esm2020/drag-drop/drag-drop-registry.mjs +0 -231
  492. package/esm2020/drag-drop/drag-drop.mjs +0 -57
  493. package/esm2020/drag-drop/drag-drop_public_index.mjs +0 -5
  494. package/esm2020/drag-drop/drag-events.mjs +0 -9
  495. package/esm2020/drag-drop/drag-parent.mjs +0 -16
  496. package/esm2020/drag-drop/drag-ref.mjs +0 -1146
  497. package/esm2020/drag-drop/drag-utils.mjs +0 -60
  498. package/esm2020/drag-drop/drop-list-ref.mjs +0 -577
  499. package/esm2020/drag-drop/index.mjs +0 -9
  500. package/esm2020/drag-drop/public-api.mjs +0 -23
  501. package/esm2020/drag-drop/sorting/drop-list-sort-strategy.mjs +0 -9
  502. package/esm2020/drag-drop/sorting/single-axis-sort-strategy.mjs +0 -341
  503. package/esm2020/index.mjs +0 -9
  504. package/esm2020/keycodes/index.mjs +0 -9
  505. package/esm2020/keycodes/keycodes.mjs +0 -127
  506. package/esm2020/keycodes/keycodes_public_index.mjs +0 -5
  507. package/esm2020/keycodes/modifiers.mjs +0 -18
  508. package/esm2020/keycodes/public-api.mjs +0 -10
  509. package/esm2020/layout/breakpoints-observer.mjs +0 -105
  510. package/esm2020/layout/breakpoints.mjs +0 -29
  511. package/esm2020/layout/index.mjs +0 -9
  512. package/esm2020/layout/layout-module.mjs +0 -19
  513. package/esm2020/layout/layout_public_index.mjs +0 -5
  514. package/esm2020/layout/media-matcher.mjs +0 -85
  515. package/esm2020/layout/public-api.mjs +0 -12
  516. package/esm2020/listbox/index.mjs +0 -9
  517. package/esm2020/listbox/listbox-module.mjs +0 -24
  518. package/esm2020/listbox/listbox.mjs +0 -872
  519. package/esm2020/listbox/listbox_public_index.mjs +0 -5
  520. package/esm2020/listbox/public-api.mjs +0 -10
  521. package/esm2020/menu/context-menu-trigger.mjs +0 -212
  522. package/esm2020/menu/index.mjs +0 -9
  523. package/esm2020/menu/menu-aim.mjs +0 -203
  524. package/esm2020/menu/menu-bar.mjs +0 -133
  525. package/esm2020/menu/menu-base.mjs +0 -187
  526. package/esm2020/menu/menu-errors.mjs +0 -22
  527. package/esm2020/menu/menu-group.mjs +0 -30
  528. package/esm2020/menu/menu-interface.mjs +0 -11
  529. package/esm2020/menu/menu-item-checkbox.mjs +0 -49
  530. package/esm2020/menu/menu-item-radio.mjs +0 -71
  531. package/esm2020/menu/menu-item-selectable.mjs +0 -42
  532. package/esm2020/menu/menu-item.mjs +0 -267
  533. package/esm2020/menu/menu-module.mjs +0 -62
  534. package/esm2020/menu/menu-stack.mjs +0 -156
  535. package/esm2020/menu/menu-trigger-base.mjs +0 -107
  536. package/esm2020/menu/menu-trigger.mjs +0 -291
  537. package/esm2020/menu/menu.mjs +0 -134
  538. package/esm2020/menu/menu_public_index.mjs +0 -5
  539. package/esm2020/menu/pointer-focus-tracker.mjs +0 -51
  540. package/esm2020/menu/public-api.mjs +0 -24
  541. package/esm2020/observers/index.mjs +0 -9
  542. package/esm2020/observers/observe-content.mjs +0 -187
  543. package/esm2020/observers/observers_public_index.mjs +0 -5
  544. package/esm2020/observers/public-api.mjs +0 -9
  545. package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +0 -52
  546. package/esm2020/overlay/dispatchers/index.mjs +0 -10
  547. package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +0 -81
  548. package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +0 -138
  549. package/esm2020/overlay/fullscreen-overlay-container.mjs +0 -94
  550. package/esm2020/overlay/index.mjs +0 -9
  551. package/esm2020/overlay/overlay-config.mjs +0 -45
  552. package/esm2020/overlay/overlay-container.mjs +0 -81
  553. package/esm2020/overlay/overlay-directives.mjs +0 -427
  554. package/esm2020/overlay/overlay-module.mjs +0 -29
  555. package/esm2020/overlay/overlay-ref.mjs +0 -427
  556. package/esm2020/overlay/overlay-reference.mjs +0 -9
  557. package/esm2020/overlay/overlay.mjs +0 -125
  558. package/esm2020/overlay/overlay_public_index.mjs +0 -5
  559. package/esm2020/overlay/position/connected-position.mjs +0 -88
  560. package/esm2020/overlay/position/flexible-connected-position-strategy.mjs +0 -985
  561. package/esm2020/overlay/position/global-position-strategy.mjs +0 -237
  562. package/esm2020/overlay/position/overlay-position-builder.mjs +0 -50
  563. package/esm2020/overlay/position/position-strategy.mjs +0 -9
  564. package/esm2020/overlay/position/scroll-clip.mjs +0 -40
  565. package/esm2020/overlay/public-api.mjs +0 -22
  566. package/esm2020/overlay/scroll/block-scroll-strategy.mjs +0 -80
  567. package/esm2020/overlay/scroll/close-scroll-strategy.mjs +0 -61
  568. package/esm2020/overlay/scroll/index.mjs +0 -14
  569. package/esm2020/overlay/scroll/noop-scroll-strategy.mjs +0 -17
  570. package/esm2020/overlay/scroll/reposition-scroll-strategy.mjs +0 -61
  571. package/esm2020/overlay/scroll/scroll-strategy-options.mjs +0 -55
  572. package/esm2020/overlay/scroll/scroll-strategy.mjs +0 -14
  573. package/esm2020/platform/features/input-types.mjs +0 -59
  574. package/esm2020/platform/features/passive-listeners.mjs +0 -36
  575. package/esm2020/platform/features/scrolling.mjs +0 -85
  576. package/esm2020/platform/features/shadow-dom.mjs +0 -54
  577. package/esm2020/platform/features/test-environment.mjs +0 -24
  578. package/esm2020/platform/index.mjs +0 -9
  579. package/esm2020/platform/platform-module.mjs +0 -19
  580. package/esm2020/platform/platform.mjs +0 -85
  581. package/esm2020/platform/platform_public_index.mjs +0 -5
  582. package/esm2020/platform/public-api.mjs +0 -15
  583. package/esm2020/portal/dom-portal-outlet.mjs +0 -158
  584. package/esm2020/portal/index.mjs +0 -9
  585. package/esm2020/portal/portal-directives.mjs +0 -246
  586. package/esm2020/portal/portal-errors.mjs +0 -51
  587. package/esm2020/portal/portal-injector.mjs +0 -28
  588. package/esm2020/portal/portal.mjs +0 -188
  589. package/esm2020/portal/portal_public_index.mjs +0 -5
  590. package/esm2020/portal/public-api.mjs +0 -12
  591. package/esm2020/public-api.mjs +0 -9
  592. package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +0 -217
  593. package/esm2020/scrolling/index.mjs +0 -9
  594. package/esm2020/scrolling/public-api.mjs +0 -20
  595. package/esm2020/scrolling/scroll-dispatcher.mjs +0 -163
  596. package/esm2020/scrolling/scrollable.mjs +0 -176
  597. package/esm2020/scrolling/scrolling-module.mjs +0 -67
  598. package/esm2020/scrolling/scrolling_public_index.mjs +0 -5
  599. package/esm2020/scrolling/viewport-ruler.mjs +0 -146
  600. package/esm2020/scrolling/virtual-for-of.mjs +0 -298
  601. package/esm2020/scrolling/virtual-scroll-repeater.mjs +0 -9
  602. package/esm2020/scrolling/virtual-scroll-strategy.mjs +0 -11
  603. package/esm2020/scrolling/virtual-scroll-viewport.mjs +0 -437
  604. package/esm2020/scrolling/virtual-scrollable-element.mjs +0 -41
  605. package/esm2020/scrolling/virtual-scrollable-window.mjs +0 -40
  606. package/esm2020/scrolling/virtual-scrollable.mjs +0 -40
  607. package/esm2020/stepper/index.mjs +0 -9
  608. package/esm2020/stepper/public-api.mjs +0 -13
  609. package/esm2020/stepper/step-header.mjs +0 -30
  610. package/esm2020/stepper/step-label.mjs +0 -23
  611. package/esm2020/stepper/stepper-button.mjs +0 -56
  612. package/esm2020/stepper/stepper-module.mjs +0 -40
  613. package/esm2020/stepper/stepper.mjs +0 -458
  614. package/esm2020/stepper/stepper_public_index.mjs +0 -5
  615. package/esm2020/table/can-stick.mjs +0 -44
  616. package/esm2020/table/cell.mjs +0 -217
  617. package/esm2020/table/coalesced-style-scheduler.mjs +0 -91
  618. package/esm2020/table/index.mjs +0 -9
  619. package/esm2020/table/public-api.mjs +0 -20
  620. package/esm2020/table/row.mjs +0 -262
  621. package/esm2020/table/sticky-position-listener.mjs +0 -11
  622. package/esm2020/table/sticky-styler.mjs +0 -345
  623. package/esm2020/table/table-errors.mjs +0 -67
  624. package/esm2020/table/table-module.mjs +0 -94
  625. package/esm2020/table/table.mjs +0 -1065
  626. package/esm2020/table/table_public_index.mjs +0 -5
  627. package/esm2020/table/text-column.mjs +0 -153
  628. package/esm2020/table/tokens.mjs +0 -16
  629. package/esm2020/text-field/autofill.mjs +0 -113
  630. package/esm2020/text-field/autosize.mjs +0 -309
  631. package/esm2020/text-field/index.mjs +0 -9
  632. package/esm2020/text-field/public-api.mjs +0 -11
  633. package/esm2020/text-field/text-field-module.mjs +0 -24
  634. package/esm2020/text-field/text-field_public_index.mjs +0 -5
  635. package/esm2020/tree/control/base-tree-control.mjs +0 -57
  636. package/esm2020/tree/control/flat-tree-control.mjs +0 -51
  637. package/esm2020/tree/control/nested-tree-control.mjs +0 -58
  638. package/esm2020/tree/control/tree-control.mjs +0 -2
  639. package/esm2020/tree/index.mjs +0 -9
  640. package/esm2020/tree/nested-node.mjs +0 -112
  641. package/esm2020/tree/node.mjs +0 -35
  642. package/esm2020/tree/outlet.mjs +0 -39
  643. package/esm2020/tree/padding.mjs +0 -131
  644. package/esm2020/tree/public-api.mjs +0 -20
  645. package/esm2020/tree/toggle.mjs +0 -50
  646. package/esm2020/tree/tree-errors.mjs +0 -43
  647. package/esm2020/tree/tree-module.mjs +0 -49
  648. package/esm2020/tree/tree.mjs +0 -347
  649. package/esm2020/tree/tree_public_index.mjs +0 -5
  650. package/esm2020/version.mjs +0 -11
  651. package/fesm2015/a11y.mjs +0 -2473
  652. package/fesm2015/a11y.mjs.map +0 -1
  653. package/fesm2015/accordion.mjs +0 -414
  654. package/fesm2015/accordion.mjs.map +0 -1
  655. package/fesm2015/bidi.mjs +0 -194
  656. package/fesm2015/bidi.mjs.map +0 -1
  657. package/fesm2015/cdk.mjs +0 -30
  658. package/fesm2015/cdk.mjs.map +0 -1
  659. package/fesm2015/clipboard.mjs +0 -263
  660. package/fesm2015/clipboard.mjs.map +0 -1
  661. package/fesm2015/coercion.mjs +0 -132
  662. package/fesm2015/coercion.mjs.map +0 -1
  663. package/fesm2015/collections.mjs +0 -519
  664. package/fesm2015/collections.mjs.map +0 -1
  665. package/fesm2015/dialog.mjs +0 -1050
  666. package/fesm2015/dialog.mjs.map +0 -1
  667. package/fesm2015/drag-drop.mjs +0 -3812
  668. package/fesm2015/drag-drop.mjs.map +0 -1
  669. package/fesm2015/keycodes.mjs.map +0 -1
  670. package/fesm2015/layout.mjs +0 -337
  671. package/fesm2015/layout.mjs.map +0 -1
  672. package/fesm2015/listbox.mjs +0 -1200
  673. package/fesm2015/listbox.mjs.map +0 -1
  674. package/fesm2015/menu.mjs +0 -2719
  675. package/fesm2015/menu.mjs.map +0 -1
  676. package/fesm2015/observers.mjs +0 -326
  677. package/fesm2015/observers.mjs.map +0 -1
  678. package/fesm2015/overlay.mjs +0 -3137
  679. package/fesm2015/overlay.mjs.map +0 -1
  680. package/fesm2015/platform.mjs +0 -385
  681. package/fesm2015/platform.mjs.map +0 -1
  682. package/fesm2015/portal.mjs +0 -691
  683. package/fesm2015/portal.mjs.map +0 -1
  684. package/fesm2015/scrolling.mjs.map +0 -1
  685. package/fesm2015/stepper.mjs +0 -989
  686. package/fesm2015/stepper.mjs.map +0 -1
  687. package/fesm2015/table.mjs +0 -2356
  688. package/fesm2015/table.mjs.map +0 -1
  689. package/fesm2015/testing.mjs +0 -833
  690. package/fesm2015/testing.mjs.map +0 -1
  691. package/fesm2015/text-field.mjs +0 -461
  692. package/fesm2015/text-field.mjs.map +0 -1
  693. package/fesm2015/tree.mjs +0 -1303
  694. package/fesm2015/tree.mjs.map +0 -1
  695. package/fesm2020/a11y.mjs +0 -2476
  696. package/fesm2020/a11y.mjs.map +0 -1
  697. package/fesm2020/accordion.mjs +0 -414
  698. package/fesm2020/accordion.mjs.map +0 -1
  699. package/fesm2020/bidi.mjs +0 -192
  700. package/fesm2020/bidi.mjs.map +0 -1
  701. package/fesm2020/cdk.mjs +0 -30
  702. package/fesm2020/cdk.mjs.map +0 -1
  703. package/fesm2020/clipboard.mjs.map +0 -1
  704. package/fesm2020/coercion.mjs +0 -132
  705. package/fesm2020/coercion.mjs.map +0 -1
  706. package/fesm2020/collections.mjs +0 -535
  707. package/fesm2020/collections.mjs.map +0 -1
  708. package/fesm2020/dialog.mjs.map +0 -1
  709. package/fesm2020/drag-drop.mjs.map +0 -1
  710. package/fesm2020/keycodes.mjs +0 -167
  711. package/fesm2020/keycodes.mjs.map +0 -1
  712. package/fesm2020/layout.mjs +0 -337
  713. package/fesm2020/layout.mjs.map +0 -1
  714. package/fesm2020/listbox.mjs +0 -1164
  715. package/fesm2020/listbox.mjs.map +0 -1
  716. package/fesm2020/menu.mjs +0 -2615
  717. package/fesm2020/menu.mjs.map +0 -1
  718. package/fesm2020/observers.mjs +0 -325
  719. package/fesm2020/observers.mjs.map +0 -1
  720. package/fesm2020/overlay.mjs.map +0 -1
  721. package/fesm2020/platform.mjs +0 -383
  722. package/fesm2020/platform.mjs.map +0 -1
  723. package/fesm2020/portal.mjs.map +0 -1
  724. package/fesm2020/scrolling.mjs +0 -1591
  725. package/fesm2020/scrolling.mjs.map +0 -1
  726. package/fesm2020/stepper.mjs +0 -985
  727. package/fesm2020/stepper.mjs.map +0 -1
  728. package/fesm2020/table.mjs.map +0 -1
  729. package/fesm2020/testing.mjs +0 -797
  730. package/fesm2020/testing.mjs.map +0 -1
  731. package/fesm2020/text-field.mjs.map +0 -1
  732. package/fesm2020/tree.mjs +0 -1305
  733. package/fesm2020/tree.mjs.map +0 -1
  734. package/overlay/_index.import.scss +0 -13
  735. package/text-field/_index.import.scss +0 -2
@@ -1,267 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Directive, ElementRef, EventEmitter, inject, InjectFlags, Input, NgZone, Output, } from '@angular/core';
9
- import { coerceBooleanProperty } from '@kato-lee/cdk/coercion';
10
- import { ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@kato-lee/cdk/keycodes';
11
- import { Directionality } from '@kato-lee/cdk/bidi';
12
- import { fromEvent, Subject } from 'rxjs';
13
- import { filter, takeUntil } from 'rxjs/operators';
14
- import { CdkMenuTrigger } from './menu-trigger';
15
- import { CDK_MENU } from './menu-interface';
16
- import { MENU_STACK } from './menu-stack';
17
- import { MENU_AIM } from './menu-aim';
18
- import * as i0 from "@angular/core";
19
- /**
20
- * Directive which provides the ability for an element to be focused and navigated to using the
21
- * keyboard when residing in a CdkMenu, CdkMenuBar, or CdkMenuGroup. It performs user defined
22
- * behavior when clicked.
23
- */
24
- export class CdkMenuItem {
25
- constructor() {
26
- /** The directionality (text direction) of the current page. */
27
- this._dir = inject(Directionality, InjectFlags.Optional);
28
- /** The menu's native DOM host element. */
29
- this._elementRef = inject(ElementRef);
30
- /** The Angular zone. */
31
- this._ngZone = inject(NgZone);
32
- /** The menu aim service used by this menu. */
33
- this._menuAim = inject(MENU_AIM, InjectFlags.Optional);
34
- /** The stack of menus this menu belongs to. */
35
- this._menuStack = inject(MENU_STACK);
36
- /** The parent menu in which this menuitem resides. */
37
- this._parentMenu = inject(CDK_MENU, InjectFlags.Optional);
38
- /** Reference to the CdkMenuItemTrigger directive if one is added to the same element */
39
- this._menuTrigger = inject(CdkMenuTrigger, InjectFlags.Optional | InjectFlags.Self);
40
- this._disabled = false;
41
- /**
42
- * If this MenuItem is a regular MenuItem, outputs when it is triggered by a keyboard or mouse
43
- * event.
44
- */
45
- this.triggered = new EventEmitter();
46
- /** Whether the menu item opens a menu. */
47
- this.hasMenu = !!this._menuTrigger;
48
- /**
49
- * The tabindex for this menu item managed internally and used for implementing roving a
50
- * tab index.
51
- */
52
- this._tabindex = -1;
53
- /** Whether the item should close the menu if triggered by the spacebar. */
54
- this.closeOnSpacebarTrigger = true;
55
- /** Emits when the menu item is destroyed. */
56
- this.destroyed = new Subject();
57
- this._setupMouseEnter();
58
- this._setType();
59
- if (this._isStandaloneItem()) {
60
- this._tabindex = 0;
61
- }
62
- }
63
- /** Whether the CdkMenuItem is disabled - defaults to false */
64
- get disabled() {
65
- return this._disabled;
66
- }
67
- set disabled(value) {
68
- this._disabled = coerceBooleanProperty(value);
69
- }
70
- ngOnDestroy() {
71
- this.destroyed.next();
72
- this.destroyed.complete();
73
- }
74
- /** Place focus on the element. */
75
- focus() {
76
- this._elementRef.nativeElement.focus();
77
- }
78
- /**
79
- * If the menu item is not disabled and the element does not have a menu trigger attached, emit
80
- * on the cdkMenuItemTriggered emitter and close all open menus.
81
- * @param options Options the configure how the item is triggered
82
- * - keepOpen: specifies that the menu should be kept open after triggering the item.
83
- */
84
- trigger(options) {
85
- const { keepOpen } = { ...options };
86
- if (!this.disabled && !this.hasMenu) {
87
- this.triggered.next();
88
- if (!keepOpen) {
89
- this._menuStack.closeAll({ focusParentTrigger: true });
90
- }
91
- }
92
- }
93
- /** Return true if this MenuItem has an attached menu and it is open. */
94
- isMenuOpen() {
95
- return !!this._menuTrigger?.isOpen();
96
- }
97
- /**
98
- * Get a reference to the rendered Menu if the Menu is open and it is visible in the DOM.
99
- * @return the menu if it is open, otherwise undefined.
100
- */
101
- getMenu() {
102
- return this._menuTrigger?.getMenu();
103
- }
104
- /** Get the CdkMenuTrigger associated with this element. */
105
- getMenuTrigger() {
106
- return this._menuTrigger;
107
- }
108
- /** Get the label for this element which is required by the FocusableOption interface. */
109
- getLabel() {
110
- return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';
111
- }
112
- /** Reset the tabindex to -1. */
113
- _resetTabIndex() {
114
- if (!this._isStandaloneItem()) {
115
- this._tabindex = -1;
116
- }
117
- }
118
- /**
119
- * Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element
120
- * is not in a menu bar.
121
- */
122
- _setTabIndex(event) {
123
- if (this.disabled) {
124
- return;
125
- }
126
- // don't set the tabindex if there are no open sibling or parent menus
127
- if (!event || !this._menuStack.isEmpty()) {
128
- this._tabindex = 0;
129
- }
130
- }
131
- /**
132
- * Handles keyboard events for the menu item, specifically either triggering the user defined
133
- * callback or opening/closing the current menu based on whether the left or right arrow key was
134
- * pressed.
135
- * @param event the keyboard event to handle
136
- */
137
- _onKeydown(event) {
138
- switch (event.keyCode) {
139
- case SPACE:
140
- case ENTER:
141
- if (!hasModifierKey(event)) {
142
- this.trigger({ keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger });
143
- }
144
- break;
145
- case RIGHT_ARROW:
146
- if (!hasModifierKey(event)) {
147
- if (this._parentMenu && this._isParentVertical()) {
148
- if (this._dir?.value !== 'rtl') {
149
- this._forwardArrowPressed(event);
150
- }
151
- else {
152
- this._backArrowPressed(event);
153
- }
154
- }
155
- }
156
- break;
157
- case LEFT_ARROW:
158
- if (!hasModifierKey(event)) {
159
- if (this._parentMenu && this._isParentVertical()) {
160
- if (this._dir?.value !== 'rtl') {
161
- this._backArrowPressed(event);
162
- }
163
- else {
164
- this._forwardArrowPressed(event);
165
- }
166
- }
167
- }
168
- break;
169
- }
170
- }
171
- /** Whether this menu item is standalone or within a menu or menu bar. */
172
- _isStandaloneItem() {
173
- return !this._parentMenu;
174
- }
175
- /**
176
- * Handles the user pressing the back arrow key.
177
- * @param event The keyboard event.
178
- */
179
- _backArrowPressed(event) {
180
- const parentMenu = this._parentMenu;
181
- if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {
182
- event.preventDefault();
183
- this._menuStack.close(parentMenu, {
184
- focusNextOnEmpty: this._menuStack.inlineMenuOrientation() === 'horizontal'
185
- ? 1 /* FocusNext.previousItem */
186
- : 2 /* FocusNext.currentItem */,
187
- focusParentTrigger: true,
188
- });
189
- }
190
- }
191
- /**
192
- * Handles the user pressing the forward arrow key.
193
- * @param event The keyboard event.
194
- */
195
- _forwardArrowPressed(event) {
196
- if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {
197
- event.preventDefault();
198
- this._menuStack.closeAll({
199
- focusNextOnEmpty: 0 /* FocusNext.nextItem */,
200
- focusParentTrigger: true,
201
- });
202
- }
203
- }
204
- /**
205
- * Subscribe to the mouseenter events and close any sibling menu items if this element is moused
206
- * into.
207
- */
208
- _setupMouseEnter() {
209
- if (!this._isStandaloneItem()) {
210
- const closeOpenSiblings = () => this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu));
211
- this._ngZone.runOutsideAngular(() => fromEvent(this._elementRef.nativeElement, 'mouseenter')
212
- .pipe(filter(() => !this._menuStack.isEmpty() && !this.hasMenu), takeUntil(this.destroyed))
213
- .subscribe(() => {
214
- if (this._menuAim) {
215
- this._menuAim.toggle(closeOpenSiblings);
216
- }
217
- else {
218
- closeOpenSiblings();
219
- }
220
- }));
221
- }
222
- }
223
- /**
224
- * Return true if the enclosing parent menu is configured in a horizontal orientation, false
225
- * otherwise or if no parent.
226
- */
227
- _isParentVertical() {
228
- return this._parentMenu?.orientation === 'vertical';
229
- }
230
- /** Sets the `type` attribute of the menu item. */
231
- _setType() {
232
- const element = this._elementRef.nativeElement;
233
- if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {
234
- // Prevent form submissions.
235
- element.setAttribute('type', 'button');
236
- }
237
- }
238
- }
239
- CdkMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
240
- CdkMenuItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: CdkMenuItem, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled"], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "trigger()", "keydown": "_onKeydown($event)" }, properties: { "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 });
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkMenuItem, decorators: [{
242
- type: Directive,
243
- args: [{
244
- selector: '[cdkMenuItem]',
245
- exportAs: 'cdkMenuItem',
246
- host: {
247
- 'role': 'menuitem',
248
- 'class': 'cdk-menu-item',
249
- '[tabindex]': '_tabindex',
250
- '[attr.aria-disabled]': 'disabled || null',
251
- '(blur)': '_resetTabIndex()',
252
- '(focus)': '_setTabIndex()',
253
- '(click)': 'trigger()',
254
- '(keydown)': '_onKeydown($event)',
255
- },
256
- }]
257
- }], ctorParameters: function () { return []; }, propDecorators: { disabled: [{
258
- type: Input,
259
- args: ['cdkMenuItemDisabled']
260
- }], typeaheadLabel: [{
261
- type: Input,
262
- args: ['cdkMenuitemTypeaheadLabel']
263
- }], triggered: [{
264
- type: Output,
265
- args: ['cdkMenuItemTriggered']
266
- }] } });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9tZW51L21lbnUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSxPQUFPLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsUUFBUSxFQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFZLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUVuRCxPQUFPLEVBQUMsUUFBUSxFQUFVLE1BQU0sWUFBWSxDQUFDOztBQUU3Qzs7OztHQUlHO0FBZUgsTUFBTSxPQUFPLFdBQVc7SUEyRHRCO1FBMURBLCtEQUErRDtRQUM1QyxTQUFJLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkUsMENBQTBDO1FBQ2pDLGdCQUFXLEdBQTRCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRSx3QkFBd0I7UUFDZCxZQUFPLEdBQUcs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LENBQUMsYUFBYSxDQUFDO1FBRS9DLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xFLDRCQUE0QjtZQUM1QixPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7O3dHQW5RVSxXQUFXOzRGQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFkdkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLElBQUksRUFBRTt3QkFDSixNQUFNLEVBQUUsVUFBVTt3QkFDbEIsT0FBTyxFQUFFLGVBQWU7d0JBQ3hCLFlBQVksRUFBRSxXQUFXO3dCQUN6QixzQkFBc0IsRUFBRSxrQkFBa0I7d0JBQzFDLFFBQVEsRUFBRSxrQkFBa0I7d0JBQzVCLFNBQVMsRUFBRSxnQkFBZ0I7d0JBQzNCLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixXQUFXLEVBQUUsb0JBQW9CO3FCQUNsQztpQkFDRjswRUF5QkssUUFBUTtzQkFEWCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFhUSxjQUFjO3NCQUFqRCxLQUFLO3VCQUFDLDJCQUEyQjtnQkFNTyxTQUFTO3NCQUFqRCxNQUFNO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbmplY3RGbGFncyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7Rm9jdXNhYmxlT3B0aW9ufSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0VOVEVSLCBoYXNNb2RpZmllcktleSwgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFNQQUNFfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtmcm9tRXZlbnQsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDZGtNZW51VHJpZ2dlcn0gZnJvbSAnLi9tZW51LXRyaWdnZXInO1xuaW1wb3J0IHtDREtfTUVOVSwgTWVudX0gZnJvbSAnLi9tZW51LWludGVyZmFjZSc7XG5pbXBvcnQge0ZvY3VzTmV4dCwgTUVOVV9TVEFDS30gZnJvbSAnLi9tZW51LXN0YWNrJztcbmltcG9ydCB7Rm9jdXNhYmxlRWxlbWVudH0gZnJvbSAnLi9wb2ludGVyLWZvY3VzLXRyYWNrZXInO1xuaW1wb3J0IHtNRU5VX0FJTSwgVG9nZ2xlcn0gZnJvbSAnLi9tZW51LWFpbSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHdoaWNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciBhbiBlbGVtZW50IHRvIGJlIGZvY3VzZWQgYW5kIG5hdmlnYXRlZCB0byB1c2luZyB0aGVcbiAqIGtleWJvYXJkIHdoZW4gcmVzaWRpbmcgaW4gYSBDZGtNZW51LCBDZGtNZW51QmFyLCBvciBDZGtNZW51R3JvdXAuIEl0IHBlcmZvcm1zIHVzZXIgZGVmaW5lZFxuICogYmVoYXZpb3Igd2hlbiBjbGlja2VkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrTWVudUl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdjZGtNZW51SXRlbScsXG4gIGhvc3Q6IHtcbiAgICAncm9sZSc6ICdtZW51aXRlbScsXG4gICAgJ2NsYXNzJzogJ2Nkay1tZW51LWl0ZW0nLFxuICAgICdbdGFiaW5kZXhdJzogJ190YWJpbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxuICAgICcoYmx1ciknOiAnX3Jlc2V0VGFiSW5kZXgoKScsXG4gICAgJyhmb2N1cyknOiAnX3NldFRhYkluZGV4KCknLFxuICAgICcoY2xpY2spJzogJ3RyaWdnZXIoKScsXG4gICAgJyhrZXlkb3duKSc6ICdfb25LZXlkb3duKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDZGtNZW51SXRlbSBpbXBsZW1lbnRzIEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNhYmxlRWxlbWVudCwgVG9nZ2xlciwgT25EZXN0cm95IHtcbiAgLyoqIFRoZSBkaXJlY3Rpb25hbGl0eSAodGV4dCBkaXJlY3Rpb24pIG9mIHRoZSBjdXJyZW50IHBhZ2UuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBfZGlyID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5LCBJbmplY3RGbGFncy5PcHRpb25hbCk7XG5cbiAgLyoqIFRoZSBtZW51J3MgbmF0aXZlIERPTSBob3N0IGVsZW1lbnQuICovXG4gIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAvKiogVGhlIEFuZ3VsYXIgem9uZS4gKi9cbiAgcHJvdGVjdGVkIF9uZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAvKiogVGhlIG1lbnUgYWltIHNlcnZpY2UgdXNlZCBieSB0aGlzIG1lbnUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lbnVBaW0gPSBpbmplY3QoTUVOVV9BSU0sIEluamVjdEZsYWdzLk9wdGlvbmFsKTtcblxuICAvKiogVGhlIHN0YWNrIG9mIG1lbnVzIHRoaXMgbWVudSBiZWxvbmdzIHRvLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZW51U3RhY2sgPSBpbmplY3QoTUVOVV9TVEFDSyk7XG5cbiAgLyoqIFRoZSBwYXJlbnQgbWVudSBpbiB3aGljaCB0aGlzIG1lbnVpdGVtIHJlc2lkZXMuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudE1lbnUgPSBpbmplY3QoQ0RLX01FTlUsIEluamVjdEZsYWdzLk9wdGlvbmFsKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBDZGtNZW51SXRlbVRyaWdnZXIgZGlyZWN0aXZlIGlmIG9uZSBpcyBhZGRlZCB0byB0aGUgc2FtZSBlbGVtZW50ICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lbnVUcmlnZ2VyID0gaW5qZWN0KENka01lbnVUcmlnZ2VyLCBJbmplY3RGbGFncy5PcHRpb25hbCB8IEluamVjdEZsYWdzLlNlbGYpO1xuXG4gIC8qKiAgV2hldGhlciB0aGUgQ2RrTWVudUl0ZW0gaXMgZGlzYWJsZWQgLSBkZWZhdWx0cyB0byBmYWxzZSAqL1xuICBASW5wdXQoJ2Nka01lbnVJdGVtRGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHVzZWQgdG8gbG9jYXRlIHRoaXMgaXRlbSBkdXJpbmcgbWVudSB0eXBlYWhlYWQuIElmIG5vdCBzcGVjaWZpZWQsXG4gICAqIHRoZSBgdGV4dENvbnRlbnRgIG9mIHRoZSBpdGVtIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgnY2RrTWVudWl0ZW1UeXBlYWhlYWRMYWJlbCcpIHR5cGVhaGVhZExhYmVsOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIE1lbnVJdGVtIGlzIGEgcmVndWxhciBNZW51SXRlbSwgb3V0cHV0cyB3aGVuIGl0IGlzIHRyaWdnZXJlZCBieSBhIGtleWJvYXJkIG9yIG1vdXNlXG4gICAqIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgnY2RrTWVudUl0ZW1UcmlnZ2VyZWQnKSByZWFkb25seSB0cmlnZ2VyZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKiogV2hldGhlciB0aGUgbWVudSBpdGVtIG9wZW5zIGEgbWVudS4gKi9cbiAgcmVhZG9ubHkgaGFzTWVudSA9ICEhdGhpcy5fbWVudVRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJpbmRleCBmb3IgdGhpcyBtZW51IGl0ZW0gbWFuYWdlZCBpbnRlcm5hbGx5IGFuZCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgcm92aW5nIGFcbiAgICogdGFiIGluZGV4LlxuICAgKi9cbiAgX3RhYmluZGV4OiAwIHwgLTEgPSAtMTtcblxuICAvKiogV2hldGhlciB0aGUgaXRlbSBzaG91bGQgY2xvc2UgdGhlIG1lbnUgaWYgdHJpZ2dlcmVkIGJ5IHRoZSBzcGFjZWJhci4gKi9cbiAgcHJvdGVjdGVkIGNsb3NlT25TcGFjZWJhclRyaWdnZXIgPSB0cnVlO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBtZW51IGl0ZW0gaXMgZGVzdHJveWVkLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9zZXR1cE1vdXNlRW50ZXIoKTtcbiAgICB0aGlzLl9zZXRUeXBlKCk7XG5cbiAgICBpZiAodGhpcy5faXNTdGFuZGFsb25lSXRlbSgpKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IDA7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogUGxhY2UgZm9jdXMgb24gdGhlIGVsZW1lbnQuICovXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtZW51IGl0ZW0gaXMgbm90IGRpc2FibGVkIGFuZCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbWVudSB0cmlnZ2VyIGF0dGFjaGVkLCBlbWl0XG4gICAqIG9uIHRoZSBjZGtNZW51SXRlbVRyaWdnZXJlZCBlbWl0dGVyIGFuZCBjbG9zZSBhbGwgb3BlbiBtZW51cy5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGUgY29uZmlndXJlIGhvdyB0aGUgaXRlbSBpcyB0cmlnZ2VyZWRcbiAgICogICAtIGtlZXBPcGVuOiBzcGVjaWZpZXMgdGhhdCB0aGUgbWVudSBzaG91bGQgYmUga2VwdCBvcGVuIGFmdGVyIHRyaWdnZXJpbmcgdGhlIGl0ZW0uXG4gICAqL1xuICB0cmlnZ2VyKG9wdGlvbnM/OiB7a2VlcE9wZW46IGJvb2xlYW59KSB7XG4gICAgY29uc3Qge2tlZXBPcGVufSA9IHsuLi5vcHRpb25zfTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuaGFzTWVudSkge1xuICAgICAgdGhpcy50cmlnZ2VyZWQubmV4dCgpO1xuICAgICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgICB0aGlzLl9tZW51U3RhY2suY2xvc2VBbGwoe2ZvY3VzUGFyZW50VHJpZ2dlcjogdHJ1ZX0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIE1lbnVJdGVtIGhhcyBhbiBhdHRhY2hlZCBtZW51IGFuZCBpdCBpcyBvcGVuLiAqL1xuICBpc01lbnVPcGVuKCkge1xuICAgIHJldHVybiAhIXRoaXMuX21lbnVUcmlnZ2VyPy5pc09wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlbmRlcmVkIE1lbnUgaWYgdGhlIE1lbnUgaXMgb3BlbiBhbmQgaXQgaXMgdmlzaWJsZSBpbiB0aGUgRE9NLlxuICAgKiBAcmV0dXJuIHRoZSBtZW51IGlmIGl0IGlzIG9wZW4sIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBnZXRNZW51KCk6IE1lbnUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tZW51VHJpZ2dlcj8uZ2V0TWVudSgpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgQ2RrTWVudVRyaWdnZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudC4gKi9cbiAgZ2V0TWVudVRyaWdnZXIoKTogQ2RrTWVudVRyaWdnZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudVRyaWdnZXI7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGVhaGVhZExhYmVsIHx8IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnO1xuICB9XG5cbiAgLyoqIFJlc2V0IHRoZSB0YWJpbmRleCB0byAtMS4gKi9cbiAgX3Jlc2V0VGFiSW5kZXgoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1N0YW5kYWxvbmVJdGVtKCkpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gLTE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGFiIGluZGV4IHRvIDAgaWYgbm90IGRpc2FibGVkIGFuZCBpdCdzIGEgZm9jdXMgZXZlbnQsIG9yIGEgbW91c2UgZW50ZXIgaWYgdGhpcyBlbGVtZW50XG4gICAqIGlzIG5vdCBpbiBhIG1lbnUgYmFyLlxuICAgKi9cbiAgX3NldFRhYkluZGV4KGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZG9uJ3Qgc2V0IHRoZSB0YWJpbmRleCBpZiB0aGVyZSBhcmUgbm8gb3BlbiBzaWJsaW5nIG9yIHBhcmVudCBtZW51c1xuICAgIGlmICghZXZlbnQgfHwgIXRoaXMuX21lbnVTdGFjay5pc0VtcHR5KCkpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgZm9yIHRoZSBtZW51IGl0ZW0sIHNwZWNpZmljYWxseSBlaXRoZXIgdHJpZ2dlcmluZyB0aGUgdXNlciBkZWZpbmVkXG4gICAqIGNhbGxiYWNrIG9yIG9wZW5pbmcvY2xvc2luZyB0aGUgY3VycmVudCBtZW51IGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxlZnQgb3IgcmlnaHQgYXJyb3cga2V5IHdhc1xuICAgKiBwcmVzc2VkLlxuICAgKiBAcGFyYW0gZXZlbnQgdGhlIGtleWJvYXJkIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAgX29uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTUEFDRTpcbiAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyKHtrZWVwT3BlbjogZXZlbnQua2V5Q29kZSA9PT0gU1BBQ0UgJiYgIXRoaXMuY2xvc2VPblNwYWNlYmFyVHJpZ2dlcn0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGlmICh0aGlzLl9wYXJlbnRNZW51ICYmIHRoaXMuX2lzUGFyZW50VmVydGljYWwoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2Rpcj8udmFsdWUgIT09ICdydGwnKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2ZvcndhcmRBcnJvd1ByZXNzZWQoZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fYmFja0Fycm93UHJlc3NlZChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1lbnUgJiYgdGhpcy5faXNQYXJlbnRWZXJ0aWNhbCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGlyPy52YWx1ZSAhPT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5fYmFja0Fycm93UHJlc3NlZChldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl9mb3J3YXJkQXJyb3dQcmVzc2VkKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBtZW51IGl0ZW0gaXMgc3RhbmRhbG9uZSBvciB3aXRoaW4gYSBtZW51IG9yIG1lbnUgYmFyLiAqL1xuICBwcml2YXRlIF9pc1N0YW5kYWxvbmVJdGVtKCkge1xuICAgIHJldHVybiAhdGhpcy5fcGFyZW50TWVudTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB1c2VyIHByZXNzaW5nIHRoZSBiYWNrIGFycm93IGtleS5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudC5cbiAgICovXG4gIHByaXZhdGUgX2JhY2tBcnJvd1ByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBwYXJlbnRNZW51ID0gdGhpcy5fcGFyZW50TWVudSE7XG4gICAgaWYgKHRoaXMuX21lbnVTdGFjay5oYXNJbmxpbmVNZW51KCkgfHwgdGhpcy5fbWVudVN0YWNrLmxlbmd0aCgpID4gMSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuX21lbnVTdGFjay5jbG9zZShwYXJlbnRNZW51LCB7XG4gICAgICAgIGZvY3VzTmV4dE9uRW1wdHk6XG4gICAgICAgICAgdGhpcy5fbWVudVN0YWNrLmlubGluZU1lbnVPcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgICAgID8gRm9jdXNOZXh0LnByZXZpb3VzSXRlbVxuICAgICAgICAgICAgOiBGb2N1c05leHQuY3VycmVudEl0ZW0sXG4gICAgICAgIGZvY3VzUGFyZW50VHJpZ2dlcjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSB1c2VyIHByZXNzaW5nIHRoZSBmb3J3YXJkIGFycm93IGtleS5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudC5cbiAgICovXG4gIHByaXZhdGUgX2ZvcndhcmRBcnJvd1ByZXNzZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVudSAmJiB0aGlzLl9tZW51U3RhY2suaW5saW5lTWVudU9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuX21lbnVTdGFjay5jbG9zZUFsbCh7XG4gICAgICAgIGZvY3VzTmV4dE9uRW1wdHk6IEZvY3VzTmV4dC5uZXh0SXRlbSxcbiAgICAgICAgZm9jdXNQYXJlbnRUcmlnZ2VyOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgbW91c2VlbnRlciBldmVudHMgYW5kIGNsb3NlIGFueSBzaWJsaW5nIG1lbnUgaXRlbXMgaWYgdGhpcyBlbGVtZW50IGlzIG1vdXNlZFxuICAgKiBpbnRvLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0dXBNb3VzZUVudGVyKCkge1xuICAgIGlmICghdGhpcy5faXNTdGFuZGFsb25lSXRlbSgpKSB7XG4gICAgICBjb25zdCBjbG9zZU9wZW5TaWJsaW5ncyA9ICgpID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5fbWVudVN0YWNrLmNsb3NlU3ViTWVudU9mKHRoaXMuX3BhcmVudE1lbnUhKSk7XG5cbiAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICBmcm9tRXZlbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuX21lbnVTdGFjay5pc0VtcHR5KCkgJiYgIXRoaXMuaGFzTWVudSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9tZW51QWltKSB7XG4gICAgICAgICAgICAgIHRoaXMuX21lbnVBaW0udG9nZ2xlKGNsb3NlT3BlblNpYmxpbmdzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNsb3NlT3BlblNpYmxpbmdzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZW5jbG9zaW5nIHBhcmVudCBtZW51IGlzIGNvbmZpZ3VyZWQgaW4gYSBob3Jpem9udGFsIG9yaWVudGF0aW9uLCBmYWxzZVxuICAgKiBvdGhlcndpc2Ugb3IgaWYgbm8gcGFyZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNQYXJlbnRWZXJ0aWNhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50TWVudT8ub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgYHR5cGVgIGF0dHJpYnV0ZSBvZiB0aGUgbWVudSBpdGVtLiAqL1xuICBwcml2YXRlIF9zZXRUeXBlKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicgJiYgIWVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykpIHtcbiAgICAgIC8vIFByZXZlbnQgZm9ybSBzdWJtaXNzaW9ucy5cbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,62 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { NgModule } from '@angular/core';
9
- import { OverlayModule } from '@kato-lee/cdk/overlay';
10
- import { CdkMenu } from './menu';
11
- import { CdkMenuBar } from './menu-bar';
12
- import { CdkMenuItem } from './menu-item';
13
- import { CdkMenuGroup } from './menu-group';
14
- import { CdkMenuItemRadio } from './menu-item-radio';
15
- import { CdkMenuItemCheckbox } from './menu-item-checkbox';
16
- import { CdkMenuTrigger } from './menu-trigger';
17
- import { CdkContextMenuTrigger } from './context-menu-trigger';
18
- import { CdkTargetMenuAim } from './menu-aim';
19
- import * as i0 from "@angular/core";
20
- /** The list of components and directives that should be declared and exported from this module. */
21
- const EXPORTED_DECLARATIONS = [
22
- CdkMenuBar,
23
- CdkMenu,
24
- CdkMenuItem,
25
- CdkMenuItemRadio,
26
- CdkMenuItemCheckbox,
27
- CdkMenuTrigger,
28
- CdkMenuGroup,
29
- CdkContextMenuTrigger,
30
- CdkTargetMenuAim,
31
- ];
32
- /** Module that declares components and directives for the CDK menu. */
33
- export class CdkMenuModule {
34
- }
35
- CdkMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
- CdkMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: CdkMenuModule, declarations: [CdkMenuBar,
37
- CdkMenu,
38
- CdkMenuItem,
39
- CdkMenuItemRadio,
40
- CdkMenuItemCheckbox,
41
- CdkMenuTrigger,
42
- CdkMenuGroup,
43
- CdkContextMenuTrigger,
44
- CdkTargetMenuAim], imports: [OverlayModule], exports: [CdkMenuBar,
45
- CdkMenu,
46
- CdkMenuItem,
47
- CdkMenuItemRadio,
48
- CdkMenuItemCheckbox,
49
- CdkMenuTrigger,
50
- CdkMenuGroup,
51
- CdkContextMenuTrigger,
52
- CdkTargetMenuAim] });
53
- CdkMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkMenuModule, imports: [OverlayModule] });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CdkMenuModule, decorators: [{
55
- type: NgModule,
56
- args: [{
57
- imports: [OverlayModule],
58
- exports: EXPORTED_DECLARATIONS,
59
- declarations: EXPORTED_DECLARATIONS,
60
- }]
61
- }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL21lbnUvbWVudS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sWUFBWSxDQUFDOztBQUU1QyxtR0FBbUc7QUFDbkcsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixVQUFVO0lBQ1YsT0FBTztJQUNQLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLGNBQWM7SUFDZCxZQUFZO0lBQ1oscUJBQXFCO0lBQ3JCLGdCQUFnQjtDQUNqQixDQUFDO0FBRUYsdUVBQXVFO0FBTXZFLE1BQU0sT0FBTyxhQUFhOzswR0FBYixhQUFhOzJHQUFiLGFBQWEsaUJBakJ4QixVQUFVO1FBQ1YsT0FBTztRQUNQLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxZQUFZO1FBQ1oscUJBQXFCO1FBQ3JCLGdCQUFnQixhQUtOLGFBQWEsYUFidkIsVUFBVTtRQUNWLE9BQU87UUFDUCxXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixnQkFBZ0I7MkdBU0wsYUFBYSxZQUpkLGFBQWE7MkZBSVosYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxxQkFBcUI7b0JBQzlCLFlBQVksRUFBRSxxQkFBcUI7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPdmVybGF5TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0Nka01lbnV9IGZyb20gJy4vbWVudSc7XG5pbXBvcnQge0Nka01lbnVCYXJ9IGZyb20gJy4vbWVudS1iYXInO1xuaW1wb3J0IHtDZGtNZW51SXRlbX0gZnJvbSAnLi9tZW51LWl0ZW0nO1xuaW1wb3J0IHtDZGtNZW51R3JvdXB9IGZyb20gJy4vbWVudS1ncm91cCc7XG5pbXBvcnQge0Nka01lbnVJdGVtUmFkaW99IGZyb20gJy4vbWVudS1pdGVtLXJhZGlvJztcbmltcG9ydCB7Q2RrTWVudUl0ZW1DaGVja2JveH0gZnJvbSAnLi9tZW51LWl0ZW0tY2hlY2tib3gnO1xuaW1wb3J0IHtDZGtNZW51VHJpZ2dlcn0gZnJvbSAnLi9tZW51LXRyaWdnZXInO1xuaW1wb3J0IHtDZGtDb250ZXh0TWVudVRyaWdnZXJ9IGZyb20gJy4vY29udGV4dC1tZW51LXRyaWdnZXInO1xuaW1wb3J0IHtDZGtUYXJnZXRNZW51QWltfSBmcm9tICcuL21lbnUtYWltJztcblxuLyoqIFRoZSBsaXN0IG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMgdGhhdCBzaG91bGQgYmUgZGVjbGFyZWQgYW5kIGV4cG9ydGVkIGZyb20gdGhpcyBtb2R1bGUuICovXG5jb25zdCBFWFBPUlRFRF9ERUNMQVJBVElPTlMgPSBbXG4gIENka01lbnVCYXIsXG4gIENka01lbnUsXG4gIENka01lbnVJdGVtLFxuICBDZGtNZW51SXRlbVJhZGlvLFxuICBDZGtNZW51SXRlbUNoZWNrYm94LFxuICBDZGtNZW51VHJpZ2dlcixcbiAgQ2RrTWVudUdyb3VwLFxuICBDZGtDb250ZXh0TWVudVRyaWdnZXIsXG4gIENka1RhcmdldE1lbnVBaW0sXG5dO1xuXG4vKiogTW9kdWxlIHRoYXQgZGVjbGFyZXMgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyBmb3IgdGhlIENESyBtZW51LiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW092ZXJsYXlNb2R1bGVdLFxuICBleHBvcnRzOiBFWFBPUlRFRF9ERUNMQVJBVElPTlMsXG4gIGRlY2xhcmF0aW9uczogRVhQT1JURURfREVDTEFSQVRJT05TLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtNZW51TW9kdWxlIHt9XG4iXX0=
@@ -1,156 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
9
- import { Subject } from 'rxjs';
10
- import { debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
11
- import * as i0 from "@angular/core";
12
- /** Injection token used for an implementation of MenuStack. */
13
- export const MENU_STACK = new InjectionToken('cdk-menu-stack');
14
- /** Provider that provides the parent menu stack, or a new menu stack if there is no parent one. */
15
- export const PARENT_OR_NEW_MENU_STACK_PROVIDER = {
16
- provide: MENU_STACK,
17
- deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
18
- useFactory: (parentMenuStack) => parentMenuStack || new MenuStack(),
19
- };
20
- /** Provider that provides the parent menu stack, or a new inline menu stack if there is no parent one. */
21
- export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (orientation) => ({
22
- provide: MENU_STACK,
23
- deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
24
- useFactory: (parentMenuStack) => parentMenuStack || MenuStack.inline(orientation),
25
- });
26
- /** The next available menu stack ID. */
27
- let nextId = 0;
28
- /**
29
- * MenuStack allows subscribers to listen for close events (when a MenuStackItem is popped off
30
- * of the stack) in order to perform closing actions. Upon the MenuStack being empty it emits
31
- * from the `empty` observable specifying the next focus action which the listener should perform
32
- * as requested by the closer.
33
- */
34
- export class MenuStack {
35
- constructor() {
36
- /** The ID of this menu stack. */
37
- this.id = `${nextId++}`;
38
- /** All MenuStackItems tracked by this MenuStack. */
39
- this._elements = [];
40
- /** Emits the element which was popped off of the stack when requested by a closer. */
41
- this._close = new Subject();
42
- /** Emits once the MenuStack has become empty after popping off elements. */
43
- this._empty = new Subject();
44
- /** Emits whether any menu in the menu stack has focus. */
45
- this._hasFocus = new Subject();
46
- /** Observable which emits the MenuStackItem which has been requested to close. */
47
- this.closed = this._close;
48
- /** Observable which emits whether any menu in the menu stack has focus. */
49
- this.hasFocus = this._hasFocus.pipe(startWith(false), debounceTime(0), distinctUntilChanged());
50
- /**
51
- * Observable which emits when the MenuStack is empty after popping off the last element. It
52
- * emits a FocusNext event which specifies the action the closer has requested the listener
53
- * perform.
54
- */
55
- this.emptied = this._empty;
56
- /**
57
- * Whether the inline menu associated with this menu stack is vertical or horizontal.
58
- * `null` indicates there is no inline menu associated with this menu stack.
59
- */
60
- this._inlineMenuOrientation = null;
61
- }
62
- /** Creates a menu stack that originates from an inline menu. */
63
- static inline(orientation) {
64
- const stack = new MenuStack();
65
- stack._inlineMenuOrientation = orientation;
66
- return stack;
67
- }
68
- /**
69
- * Adds an item to the menu stack.
70
- * @param menu the MenuStackItem to put on the stack.
71
- */
72
- push(menu) {
73
- this._elements.push(menu);
74
- }
75
- /**
76
- * Pop items off of the stack up to and including `lastItem` and emit each on the close
77
- * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
78
- * @param lastItem the last item to pop off the stack.
79
- * @param options Options that configure behavior on close.
80
- */
81
- close(lastItem, options) {
82
- const { focusNextOnEmpty, focusParentTrigger } = { ...options };
83
- if (this._elements.indexOf(lastItem) >= 0) {
84
- let poppedElement;
85
- do {
86
- poppedElement = this._elements.pop();
87
- this._close.next({ item: poppedElement, focusParentTrigger });
88
- } while (poppedElement !== lastItem);
89
- if (this.isEmpty()) {
90
- this._empty.next(focusNextOnEmpty);
91
- }
92
- }
93
- }
94
- /**
95
- * Pop items off of the stack up to but excluding `lastItem` and emit each on the close
96
- * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
97
- * @param lastItem the element which should be left on the stack
98
- * @return whether or not an item was removed from the stack
99
- */
100
- closeSubMenuOf(lastItem) {
101
- let removed = false;
102
- if (this._elements.indexOf(lastItem) >= 0) {
103
- removed = this.peek() !== lastItem;
104
- while (this.peek() !== lastItem) {
105
- this._close.next({ item: this._elements.pop() });
106
- }
107
- }
108
- return removed;
109
- }
110
- /**
111
- * Pop off all MenuStackItems and emit each one on the `close` observable one by one.
112
- * @param options Options that configure behavior on close.
113
- */
114
- closeAll(options) {
115
- const { focusNextOnEmpty, focusParentTrigger } = { ...options };
116
- if (!this.isEmpty()) {
117
- while (!this.isEmpty()) {
118
- const menuStackItem = this._elements.pop();
119
- if (menuStackItem) {
120
- this._close.next({ item: menuStackItem, focusParentTrigger });
121
- }
122
- }
123
- this._empty.next(focusNextOnEmpty);
124
- }
125
- }
126
- /** Return true if this stack is empty. */
127
- isEmpty() {
128
- return !this._elements.length;
129
- }
130
- /** Return the length of the stack. */
131
- length() {
132
- return this._elements.length;
133
- }
134
- /** Get the top most element on the stack. */
135
- peek() {
136
- return this._elements[this._elements.length - 1];
137
- }
138
- /** Whether the menu stack is associated with an inline menu. */
139
- hasInlineMenu() {
140
- return this._inlineMenuOrientation != null;
141
- }
142
- /** The orientation of the associated inline menu. */
143
- inlineMenuOrientation() {
144
- return this._inlineMenuOrientation;
145
- }
146
- /** Sets whether the menu stack contains the focused element. */
147
- setHasFocus(hasFocus) {
148
- this._hasFocus.next(hasFocus);
149
- }
150
- }
151
- MenuStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
152
- MenuStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MenuStack });
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MenuStack, decorators: [{
154
- type: Injectable
155
- }] });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvbWVudS9tZW51LXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFlN0UsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBWSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTFFLG1HQUFtRztBQUNuRyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRztJQUMvQyxPQUFPLEVBQUUsVUFBVTtJQUNuQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsRUFBRSxDQUFDLGVBQTJCLEVBQUUsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLFNBQVMsRUFBRTtDQUNoRixDQUFDO0FBRUYsMEdBQTBHO0FBQzFHLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQ3RELFdBQXNDLEVBQ3RDLEVBQUUsQ0FBQyxDQUFDO0lBQ0osT0FBTyxFQUFFLFVBQVU7SUFDbkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNoRSxVQUFVLEVBQUUsQ0FBQyxlQUEyQixFQUFFLEVBQUUsQ0FBQyxl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QUM7O3NHQXpJVSxTQUFTOzBHQUFULFNBQVM7MkZBQVQsU0FBUztrQkFEckIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqIFRoZSByZWxhdGl2ZSBpdGVtIGluIHRoZSBpbmxpbmUgbWVudSB0byBmb2N1cyBhZnRlciBjbG9zaW5nIGFsbCBwb3B1cCBtZW51cy4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEZvY3VzTmV4dCB7XG4gIG5leHRJdGVtLFxuICBwcmV2aW91c0l0ZW0sXG4gIGN1cnJlbnRJdGVtLFxufVxuXG4vKiogQSBzaW5nbGUgaXRlbSAobWVudSkgaW4gdGhlIG1lbnUgc3RhY2suICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVTdGFja0l0ZW0ge1xuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG1lbnUgc3RhY2sgdGhpcyBtZW51IHN0YWNrIGl0ZW0gYmVsb25ncyB0by4gKi9cbiAgbWVudVN0YWNrPzogTWVudVN0YWNrO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHVzZWQgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mIE1lbnVTdGFjay4gKi9cbmV4cG9ydCBjb25zdCBNRU5VX1NUQUNLID0gbmV3IEluamVjdGlvblRva2VuPE1lbnVTdGFjaz4oJ2Nkay1tZW51LXN0YWNrJyk7XG5cbi8qKiBQcm92aWRlciB0aGF0IHByb3ZpZGVzIHRoZSBwYXJlbnQgbWVudSBzdGFjaywgb3IgYSBuZXcgbWVudSBzdGFjayBpZiB0aGVyZSBpcyBubyBwYXJlbnQgb25lLiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9PUl9ORVdfTUVOVV9TVEFDS19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogTUVOVV9TVEFDSyxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIG5ldyBJbmplY3QoTUVOVV9TVEFDSyldXSxcbiAgdXNlRmFjdG9yeTogKHBhcmVudE1lbnVTdGFjaz86IE1lbnVTdGFjaykgPT4gcGFyZW50TWVudVN0YWNrIHx8IG5ldyBNZW51U3RhY2soKSxcbn07XG5cbi8qKiBQcm92aWRlciB0aGF0IHByb3ZpZGVzIHRoZSBwYXJlbnQgbWVudSBzdGFjaywgb3IgYSBuZXcgaW5saW5lIG1lbnUgc3RhY2sgaWYgdGhlcmUgaXMgbm8gcGFyZW50IG9uZS4gKi9cbmV4cG9ydCBjb25zdCBQQVJFTlRfT1JfTkVXX0lOTElORV9NRU5VX1NUQUNLX1BST1ZJREVSID0gKFxuICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyxcbikgPT4gKHtcbiAgcHJvdmlkZTogTUVOVV9TVEFDSyxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIG5ldyBJbmplY3QoTUVOVV9TVEFDSyldXSxcbiAgdXNlRmFjdG9yeTogKHBhcmVudE1lbnVTdGFjaz86IE1lbnVTdGFjaykgPT4gcGFyZW50TWVudVN0YWNrIHx8IE1lbnVTdGFjay5pbmxpbmUob3JpZW50YXRpb24pLFxufSk7XG5cbi8qKiBPcHRpb25zIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHRvIHRoZSBjbG9zZSBvciBjbG9zZUFsbCBtZXRob2RzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbG9zZU9wdGlvbnMge1xuICAvKiogVGhlIGVsZW1lbnQgdG8gZm9jdXMgbmV4dCBpZiB0aGUgY2xvc2Ugb3BlcmF0aW9uIGNhdXNlcyB0aGUgbWVudSBzdGFjayB0byBiZWNvbWUgZW1wdHkuICovXG4gIGZvY3VzTmV4dE9uRW1wdHk/OiBGb2N1c05leHQ7XG4gIC8qKiBXaGV0aGVyIHRvIGZvY3VzIHRoZSBwYXJlbnQgdHJpZ2dlciBhZnRlciBjbG9zaW5nIHRoZSBtZW51LiAqL1xuICBmb2N1c1BhcmVudFRyaWdnZXI/OiBib29sZWFuO1xufVxuXG4vKiogRXZlbnQgZGlzcGF0Y2hlZCB3aGVuIGEgbWVudSBpcyBjbG9zZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVTdGFja0Nsb3NlRXZlbnQge1xuICAvKiogVGhlIG1lbnUgYmVpbmcgY2xvc2VkLiAqL1xuICBpdGVtOiBNZW51U3RhY2tJdGVtO1xuICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgcGFyZW50IHRyaWdnZXIgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudS4gKi9cbiAgZm9jdXNQYXJlbnRUcmlnZ2VyPzogYm9vbGVhbjtcbn1cblxuLyoqIFRoZSBuZXh0IGF2YWlsYWJsZSBtZW51IHN0YWNrIElELiAqL1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogTWVudVN0YWNrIGFsbG93cyBzdWJzY3JpYmVycyB0byBsaXN0ZW4gZm9yIGNsb3NlIGV2ZW50cyAod2hlbiBhIE1lbnVTdGFja0l0ZW0gaXMgcG9wcGVkIG9mZlxuICogb2YgdGhlIHN0YWNrKSBpbiBvcmRlciB0byBwZXJmb3JtIGNsb3NpbmcgYWN0aW9ucy4gVXBvbiB0aGUgTWVudVN0YWNrIGJlaW5nIGVtcHR5IGl0IGVtaXRzXG4gKiBmcm9tIHRoZSBgZW1wdHlgIG9ic2VydmFibGUgc3BlY2lmeWluZyB0aGUgbmV4dCBmb2N1cyBhY3Rpb24gd2hpY2ggdGhlIGxpc3RlbmVyIHNob3VsZCBwZXJmb3JtXG4gKiBhcyByZXF1ZXN0ZWQgYnkgdGhlIGNsb3Nlci5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVTdGFjayB7XG4gIC8qKiBUaGUgSUQgb2YgdGhpcyBtZW51IHN0YWNrLiAqL1xuICByZWFkb25seSBpZCA9IGAke25leHRJZCsrfWA7XG5cbiAgLyoqIEFsbCBNZW51U3RhY2tJdGVtcyB0cmFja2VkIGJ5IHRoaXMgTWVudVN0YWNrLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50czogTWVudVN0YWNrSXRlbVtdID0gW107XG5cbiAgLyoqIEVtaXRzIHRoZSBlbGVtZW50IHdoaWNoIHdhcyBwb3BwZWQgb2ZmIG9mIHRoZSBzdGFjayB3aGVuIHJlcXVlc3RlZCBieSBhIGNsb3Nlci4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xvc2UgPSBuZXcgU3ViamVjdDxNZW51U3RhY2tDbG9zZUV2ZW50PigpO1xuXG4gIC8qKiBFbWl0cyBvbmNlIHRoZSBNZW51U3RhY2sgaGFzIGJlY29tZSBlbXB0eSBhZnRlciBwb3BwaW5nIG9mZiBlbGVtZW50cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZW1wdHkgPSBuZXcgU3ViamVjdDxGb2N1c05leHQgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZXRoZXIgYW55IG1lbnUgaW4gdGhlIG1lbnUgc3RhY2sgaGFzIGZvY3VzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNGb2N1cyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgdGhlIE1lbnVTdGFja0l0ZW0gd2hpY2ggaGFzIGJlZW4gcmVxdWVzdGVkIHRvIGNsb3NlLiAqL1xuICByZWFkb25seSBjbG9zZWQ6IE9ic2VydmFibGU8TWVudVN0YWNrQ2xvc2VFdmVudD4gPSB0aGlzLl9jbG9zZTtcblxuICAvKiogT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGV0aGVyIGFueSBtZW51IGluIHRoZSBtZW51IHN0YWNrIGhhcyBmb2N1cy4gKi9cbiAgcmVhZG9ubHkgaGFzRm9jdXM6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9oYXNGb2N1cy5waXBlKFxuICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgZGVib3VuY2VUaW1lKDApLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiB0aGUgTWVudVN0YWNrIGlzIGVtcHR5IGFmdGVyIHBvcHBpbmcgb2ZmIHRoZSBsYXN0IGVsZW1lbnQuIEl0XG4gICAqIGVtaXRzIGEgRm9jdXNOZXh0IGV2ZW50IHdoaWNoIHNwZWNpZmllcyB0aGUgYWN0aW9uIHRoZSBjbG9zZXIgaGFzIHJlcXVlc3RlZCB0aGUgbGlzdGVuZXJcbiAgICogcGVyZm9ybS5cbiAgICovXG4gIHJlYWRvbmx5IGVtcHRpZWQ6IE9ic2VydmFibGU8Rm9jdXNOZXh0IHwgdW5kZWZpbmVkPiA9IHRoaXMuX2VtcHR5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbmxpbmUgbWVudSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZW51IHN0YWNrIGlzIHZlcnRpY2FsIG9yIGhvcml6b250YWwuXG4gICAqIGBudWxsYCBpbmRpY2F0ZXMgdGhlcmUgaXMgbm8gaW5saW5lIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWVudSBzdGFjay5cbiAgICovXG4gIHByaXZhdGUgX2lubGluZU1lbnVPcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDcmVhdGVzIGEgbWVudSBzdGFjayB0aGF0IG9yaWdpbmF0ZXMgZnJvbSBhbiBpbmxpbmUgbWVudS4gKi9cbiAgc3RhdGljIGlubGluZShvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IE1lbnVTdGFjaygpO1xuICAgIHN0YWNrLl9pbmxpbmVNZW51T3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBpdGVtIHRvIHRoZSBtZW51IHN0YWNrLlxuICAgKiBAcGFyYW0gbWVudSB0aGUgTWVudVN0YWNrSXRlbSB0byBwdXQgb24gdGhlIHN0YWNrLlxuICAgKi9cbiAgcHVzaChtZW51OiBNZW51U3RhY2tJdGVtKSB7XG4gICAgdGhpcy5fZWxlbWVudHMucHVzaChtZW51KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3AgaXRlbXMgb2ZmIG9mIHRoZSBzdGFjayB1cCB0byBhbmQgaW5jbHVkaW5nIGBsYXN0SXRlbWAgYW5kIGVtaXQgZWFjaCBvbiB0aGUgY2xvc2VcbiAgICogb2JzZXJ2YWJsZS4gSWYgdGhlIHN0YWNrIGlzIGVtcHR5IG9yIGBsYXN0SXRlbWAgaXMgbm90IG9uIHRoZSBzdGFjayBpdCBkb2VzIG5vdGhpbmcuXG4gICAqIEBwYXJhbSBsYXN0SXRlbSB0aGUgbGFzdCBpdGVtIHRvIHBvcCBvZmYgdGhlIHN0YWNrLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRoYXQgY29uZmlndXJlIGJlaGF2aW9yIG9uIGNsb3NlLlxuICAgKi9cbiAgY2xvc2UobGFzdEl0ZW06IE1lbnVTdGFja0l0ZW0sIG9wdGlvbnM/OiBDbG9zZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7Zm9jdXNOZXh0T25FbXB0eSwgZm9jdXNQYXJlbnRUcmlnZ2VyfSA9IHsuLi5vcHRpb25zfTtcbiAgICBpZiAodGhpcy5fZWxlbWVudHMuaW5kZXhPZihsYXN0SXRlbSkgPj0gMCkge1xuICAgICAgbGV0IHBvcHBlZEVsZW1lbnQ7XG4gICAgICBkbyB7XG4gICAgICAgIHBvcHBlZEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50cy5wb3AoKSE7XG4gICAgICAgIHRoaXMuX2Nsb3NlLm5leHQoe2l0ZW06IHBvcHBlZEVsZW1lbnQsIGZvY3VzUGFyZW50VHJpZ2dlcn0pO1xuICAgICAgfSB3aGlsZSAocG9wcGVkRWxlbWVudCAhPT0gbGFzdEl0ZW0pO1xuXG4gICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgdGhpcy5fZW1wdHkubmV4dChmb2N1c05leHRPbkVtcHR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9wIGl0ZW1zIG9mZiBvZiB0aGUgc3RhY2sgdXAgdG8gYnV0IGV4Y2x1ZGluZyBgbGFzdEl0ZW1gIGFuZCBlbWl0IGVhY2ggb24gdGhlIGNsb3NlXG4gICAqIG9ic2VydmFibGUuIElmIHRoZSBzdGFjayBpcyBlbXB0eSBvciBgbGFzdEl0ZW1gIGlzIG5vdCBvbiB0aGUgc3RhY2sgaXQgZG9lcyBub3RoaW5nLlxuICAgKiBAcGFyYW0gbGFzdEl0ZW0gdGhlIGVsZW1lbnQgd2hpY2ggc2hvdWxkIGJlIGxlZnQgb24gdGhlIHN0YWNrXG4gICAqIEByZXR1cm4gd2hldGhlciBvciBub3QgYW4gaXRlbSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFja1xuICAgKi9cbiAgY2xvc2VTdWJNZW51T2YobGFzdEl0ZW06IE1lbnVTdGFja0l0ZW0pIHtcbiAgICBsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGxhc3RJdGVtKSA+PSAwKSB7XG4gICAgICByZW1vdmVkID0gdGhpcy5wZWVrKCkgIT09IGxhc3RJdGVtO1xuICAgICAgd2hpbGUgKHRoaXMucGVlaygpICE9PSBsYXN0SXRlbSkge1xuICAgICAgICB0aGlzLl9jbG9zZS5uZXh0KHtpdGVtOiB0aGlzLl9lbGVtZW50cy5wb3AoKSF9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cblxuICAvKipcbiAgICogUG9wIG9mZiBhbGwgTWVudVN0YWNrSXRlbXMgYW5kIGVtaXQgZWFjaCBvbmUgb24gdGhlIGBjbG9zZWAgb2JzZXJ2YWJsZSBvbmUgYnkgb25lLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRoYXQgY29uZmlndXJlIGJlaGF2aW9yIG9uIGNsb3NlLlxuICAgKi9cbiAgY2xvc2VBbGwob3B0aW9ucz86IENsb3NlT3B0aW9ucykge1xuICAgIGNvbnN0IHtmb2N1c05leHRPbkVtcHR5LCBmb2N1c1BhcmVudFRyaWdnZXJ9ID0gey4uLm9wdGlvbnN9O1xuICAgIGlmICghdGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHdoaWxlICghdGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgY29uc3QgbWVudVN0YWNrSXRlbSA9IHRoaXMuX2VsZW1lbnRzLnBvcCgpO1xuICAgICAgICBpZiAobWVudVN0YWNrSXRlbSkge1xuICAgICAgICAgIHRoaXMuX2Nsb3NlLm5leHQoe2l0ZW06IG1lbnVTdGFja0l0ZW0sIGZvY3VzUGFyZW50VHJpZ2dlcn0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl9lbXB0eS5uZXh0KGZvY3VzTmV4dE9uRW1wdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHN0YWNrIGlzIGVtcHR5LiAqL1xuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5fZWxlbWVudHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzdGFjay4gKi9cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50cy5sZW5ndGg7XG4gIH1cblxuICAvKiogR2V0IHRoZSB0b3AgbW9zdCBlbGVtZW50IG9uIHRoZSBzdGFjay4gKi9cbiAgcGVlaygpOiBNZW51U3RhY2tJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHNbdGhpcy5fZWxlbWVudHMubGVuZ3RoIC0gMV07XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgbWVudSBzdGFjayBpcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5saW5lIG1lbnUuICovXG4gIGhhc0lubGluZU1lbnUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubGluZU1lbnVPcmllbnRhdGlvbiAhPSBudWxsO1xuICB9XG5cbiAgLyoqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgYXNzb2NpYXRlZCBpbmxpbmUgbWVudS4gKi9cbiAgaW5saW5lTWVudU9yaWVudGF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmxpbmVNZW51T3JpZW50YXRpb247XG4gIH1cblxuICAvKiogU2V0cyB3aGV0aGVyIHRoZSBtZW51IHN0YWNrIGNvbnRhaW5zIHRoZSBmb2N1c2VkIGVsZW1lbnQuICovXG4gIHNldEhhc0ZvY3VzKGhhc0ZvY3VzOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGFzRm9jdXMubmV4dChoYXNGb2N1cyk7XG4gIH1cbn1cbiJdfQ==