@angular/cdk 19.0.0-next.0 → 19.0.0-next.10

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 (580) hide show
  1. package/a11y/_index.scss +12 -54
  2. package/a11y/index.d.ts +24 -38
  3. package/accordion/index.d.ts +5 -4
  4. package/bidi/index.d.ts +2 -2
  5. package/clipboard/index.d.ts +3 -4
  6. package/dialog/index.d.ts +12 -12
  7. package/drag-drop/index.d.ts +17 -37
  8. package/fesm2022/a11y.mjs +134 -181
  9. package/fesm2022/a11y.mjs.map +1 -1
  10. package/fesm2022/accordion.mjs +20 -27
  11. package/fesm2022/accordion.mjs.map +1 -1
  12. package/fesm2022/bidi.mjs +14 -19
  13. package/fesm2022/bidi.mjs.map +1 -1
  14. package/fesm2022/cdk.mjs +1 -1
  15. package/fesm2022/cdk.mjs.map +1 -1
  16. package/fesm2022/clipboard.mjs +19 -27
  17. package/fesm2022/clipboard.mjs.map +1 -1
  18. package/fesm2022/coercion/private.mjs.map +1 -1
  19. package/fesm2022/coercion.mjs.map +1 -1
  20. package/fesm2022/collections.mjs +3 -3
  21. package/fesm2022/collections.mjs.map +1 -1
  22. package/fesm2022/dialog.mjs +36 -56
  23. package/fesm2022/dialog.mjs.map +1 -1
  24. package/fesm2022/drag-drop.mjs +107 -181
  25. package/fesm2022/drag-drop.mjs.map +1 -1
  26. package/fesm2022/keycodes.mjs.map +1 -1
  27. package/fesm2022/layout.mjs +21 -26
  28. package/fesm2022/layout.mjs.map +1 -1
  29. package/fesm2022/listbox.mjs +17 -13
  30. package/fesm2022/listbox.mjs.map +1 -1
  31. package/fesm2022/menu.mjs +49 -61
  32. package/fesm2022/menu.mjs.map +1 -1
  33. package/fesm2022/observers/private.mjs +3 -3
  34. package/fesm2022/observers/private.mjs.map +1 -1
  35. package/fesm2022/observers.mjs +21 -22
  36. package/fesm2022/observers.mjs.map +1 -1
  37. package/fesm2022/overlay.mjs +120 -149
  38. package/fesm2022/overlay.mjs.map +1 -1
  39. package/fesm2022/platform.mjs +11 -14
  40. package/fesm2022/platform.mjs.map +1 -1
  41. package/fesm2022/portal.mjs +60 -63
  42. package/fesm2022/portal.mjs.map +1 -1
  43. package/fesm2022/private.mjs +65 -0
  44. package/fesm2022/private.mjs.map +1 -0
  45. package/fesm2022/scrolling.mjs +90 -132
  46. package/fesm2022/scrolling.mjs.map +1 -1
  47. package/fesm2022/stepper.mjs +69 -63
  48. package/fesm2022/stepper.mjs.map +1 -1
  49. package/fesm2022/table.mjs +171 -250
  50. package/fesm2022/table.mjs.map +1 -1
  51. package/fesm2022/testing/selenium-webdriver.mjs.map +1 -1
  52. package/fesm2022/testing/testbed.mjs +3 -2
  53. package/fesm2022/testing/testbed.mjs.map +1 -1
  54. package/fesm2022/testing.mjs.map +1 -1
  55. package/fesm2022/text-field.mjs +46 -40
  56. package/fesm2022/text-field.mjs.map +1 -1
  57. package/fesm2022/tree.mjs +90 -80
  58. package/fesm2022/tree.mjs.map +1 -1
  59. package/layout/index.d.ts +5 -7
  60. package/observers/index.d.ts +2 -2
  61. package/overlay/_index.scss +56 -21
  62. package/overlay/index.d.ts +24 -36
  63. package/overlay-prebuilt.css +1 -1
  64. package/package.json +5 -55
  65. package/platform/index.d.ts +2 -1
  66. package/portal/index.d.ts +22 -19
  67. package/private/index.d.ts +30 -0
  68. package/schematics/index.d.ts +1 -1
  69. package/schematics/index.js +2 -2
  70. package/schematics/index.mjs +2 -2
  71. package/schematics/ng-add/index.d.ts +1 -1
  72. package/schematics/ng-add/index.js +3 -3
  73. package/schematics/ng-add/index.mjs +3 -3
  74. package/schematics/ng-add/package-config.d.ts +1 -1
  75. package/schematics/ng-add/package-config.js +2 -2
  76. package/schematics/ng-add/package-config.mjs +2 -2
  77. package/schematics/ng-add/schema.d.ts +1 -1
  78. package/schematics/ng-add/schema.js +2 -2
  79. package/schematics/ng-add/schema.mjs +2 -2
  80. package/schematics/ng-generate/drag-drop/index.d.ts +1 -1
  81. package/schematics/ng-generate/drag-drop/index.js +2 -2
  82. package/schematics/ng-generate/drag-drop/index.mjs +2 -2
  83. package/schematics/ng-generate/drag-drop/schema.d.ts +1 -1
  84. package/schematics/ng-generate/drag-drop/schema.js +2 -2
  85. package/schematics/ng-generate/drag-drop/schema.mjs +2 -2
  86. package/schematics/ng-update/data/attribute-selectors.d.ts +1 -1
  87. package/schematics/ng-update/data/attribute-selectors.js +2 -2
  88. package/schematics/ng-update/data/attribute-selectors.mjs +2 -2
  89. package/schematics/ng-update/data/class-names.d.ts +1 -1
  90. package/schematics/ng-update/data/class-names.js +2 -2
  91. package/schematics/ng-update/data/class-names.mjs +2 -2
  92. package/schematics/ng-update/data/constructor-checks.d.ts +1 -1
  93. package/schematics/ng-update/data/constructor-checks.js +2 -2
  94. package/schematics/ng-update/data/constructor-checks.mjs +2 -2
  95. package/schematics/ng-update/data/css-selectors.d.ts +1 -1
  96. package/schematics/ng-update/data/css-selectors.js +2 -2
  97. package/schematics/ng-update/data/css-selectors.mjs +2 -2
  98. package/schematics/ng-update/data/css-tokens.d.ts +1 -1
  99. package/schematics/ng-update/data/css-tokens.js +2 -2
  100. package/schematics/ng-update/data/css-tokens.mjs +2 -2
  101. package/schematics/ng-update/data/element-selectors.d.ts +1 -1
  102. package/schematics/ng-update/data/element-selectors.js +2 -2
  103. package/schematics/ng-update/data/element-selectors.mjs +2 -2
  104. package/schematics/ng-update/data/index.d.ts +1 -1
  105. package/schematics/ng-update/data/index.js +2 -2
  106. package/schematics/ng-update/data/index.mjs +2 -2
  107. package/schematics/ng-update/data/input-names.d.ts +1 -1
  108. package/schematics/ng-update/data/input-names.js +2 -2
  109. package/schematics/ng-update/data/input-names.mjs +2 -2
  110. package/schematics/ng-update/data/method-call-checks.d.ts +1 -1
  111. package/schematics/ng-update/data/method-call-checks.js +2 -2
  112. package/schematics/ng-update/data/method-call-checks.mjs +2 -2
  113. package/schematics/ng-update/data/output-names.d.ts +1 -1
  114. package/schematics/ng-update/data/output-names.js +2 -2
  115. package/schematics/ng-update/data/output-names.mjs +2 -2
  116. package/schematics/ng-update/data/property-names.d.ts +1 -1
  117. package/schematics/ng-update/data/property-names.js +2 -2
  118. package/schematics/ng-update/data/property-names.mjs +2 -2
  119. package/schematics/ng-update/data/symbol-removal.d.ts +1 -1
  120. package/schematics/ng-update/data/symbol-removal.js +2 -2
  121. package/schematics/ng-update/data/symbol-removal.mjs +2 -2
  122. package/schematics/ng-update/devkit-file-system.d.ts +1 -1
  123. package/schematics/ng-update/devkit-file-system.js +2 -2
  124. package/schematics/ng-update/devkit-file-system.mjs +2 -2
  125. package/schematics/ng-update/devkit-migration-rule.d.ts +1 -1
  126. package/schematics/ng-update/devkit-migration-rule.js +2 -2
  127. package/schematics/ng-update/devkit-migration-rule.mjs +2 -2
  128. package/schematics/ng-update/devkit-migration.d.ts +1 -1
  129. package/schematics/ng-update/devkit-migration.js +2 -2
  130. package/schematics/ng-update/devkit-migration.mjs +2 -2
  131. package/schematics/ng-update/find-stylesheets.d.ts +1 -1
  132. package/schematics/ng-update/find-stylesheets.js +2 -2
  133. package/schematics/ng-update/find-stylesheets.mjs +2 -2
  134. package/schematics/ng-update/html-parsing/angular.d.ts +1 -1
  135. package/schematics/ng-update/html-parsing/angular.js +2 -2
  136. package/schematics/ng-update/html-parsing/angular.mjs +2 -2
  137. package/schematics/ng-update/html-parsing/elements.d.ts +1 -1
  138. package/schematics/ng-update/html-parsing/elements.js +2 -2
  139. package/schematics/ng-update/html-parsing/elements.mjs +2 -2
  140. package/schematics/ng-update/index.d.ts +1 -1
  141. package/schematics/ng-update/index.js +2 -2
  142. package/schematics/ng-update/index.mjs +2 -2
  143. package/schematics/ng-update/migrations/attribute-selectors.d.ts +1 -1
  144. package/schematics/ng-update/migrations/attribute-selectors.js +2 -2
  145. package/schematics/ng-update/migrations/attribute-selectors.mjs +2 -2
  146. package/schematics/ng-update/migrations/class-inheritance.d.ts +1 -1
  147. package/schematics/ng-update/migrations/class-inheritance.js +2 -2
  148. package/schematics/ng-update/migrations/class-inheritance.mjs +2 -2
  149. package/schematics/ng-update/migrations/class-names.d.ts +1 -1
  150. package/schematics/ng-update/migrations/class-names.js +2 -2
  151. package/schematics/ng-update/migrations/class-names.mjs +2 -2
  152. package/schematics/ng-update/migrations/constructor-signature.d.ts +1 -1
  153. package/schematics/ng-update/migrations/constructor-signature.js +2 -2
  154. package/schematics/ng-update/migrations/constructor-signature.mjs +2 -2
  155. package/schematics/ng-update/migrations/css-selectors.d.ts +1 -1
  156. package/schematics/ng-update/migrations/css-selectors.js +2 -2
  157. package/schematics/ng-update/migrations/css-selectors.mjs +2 -2
  158. package/schematics/ng-update/migrations/css-tokens.d.ts +1 -1
  159. package/schematics/ng-update/migrations/css-tokens.js +2 -2
  160. package/schematics/ng-update/migrations/css-tokens.mjs +2 -2
  161. package/schematics/ng-update/migrations/element-selectors.d.ts +1 -1
  162. package/schematics/ng-update/migrations/element-selectors.js +2 -2
  163. package/schematics/ng-update/migrations/element-selectors.mjs +2 -2
  164. package/schematics/ng-update/migrations/input-names.d.ts +1 -1
  165. package/schematics/ng-update/migrations/input-names.js +2 -2
  166. package/schematics/ng-update/migrations/input-names.mjs +2 -2
  167. package/schematics/ng-update/migrations/method-call-arguments.d.ts +1 -1
  168. package/schematics/ng-update/migrations/method-call-arguments.js +2 -2
  169. package/schematics/ng-update/migrations/method-call-arguments.mjs +2 -2
  170. package/schematics/ng-update/migrations/misc-template.d.ts +1 -1
  171. package/schematics/ng-update/migrations/misc-template.js +2 -2
  172. package/schematics/ng-update/migrations/misc-template.mjs +2 -2
  173. package/schematics/ng-update/migrations/output-names.d.ts +1 -1
  174. package/schematics/ng-update/migrations/output-names.js +2 -2
  175. package/schematics/ng-update/migrations/output-names.mjs +2 -2
  176. package/schematics/ng-update/migrations/property-names.d.ts +1 -1
  177. package/schematics/ng-update/migrations/property-names.js +2 -2
  178. package/schematics/ng-update/migrations/property-names.mjs +2 -2
  179. package/schematics/ng-update/migrations/symbol-removal.d.ts +1 -1
  180. package/schematics/ng-update/migrations/symbol-removal.js +2 -2
  181. package/schematics/ng-update/migrations/symbol-removal.mjs +2 -2
  182. package/schematics/ng-update/public-api.d.ts +1 -1
  183. package/schematics/ng-update/public-api.js +2 -2
  184. package/schematics/ng-update/public-api.mjs +2 -2
  185. package/schematics/ng-update/typescript/base-types.d.ts +1 -1
  186. package/schematics/ng-update/typescript/base-types.js +2 -2
  187. package/schematics/ng-update/typescript/base-types.mjs +2 -2
  188. package/schematics/ng-update/typescript/imports.d.ts +1 -1
  189. package/schematics/ng-update/typescript/imports.js +2 -2
  190. package/schematics/ng-update/typescript/imports.mjs +2 -2
  191. package/schematics/ng-update/typescript/literal.d.ts +1 -1
  192. package/schematics/ng-update/typescript/literal.js +2 -2
  193. package/schematics/ng-update/typescript/literal.mjs +2 -2
  194. package/schematics/ng-update/typescript/module-specifiers.d.ts +1 -1
  195. package/schematics/ng-update/typescript/module-specifiers.js +2 -2
  196. package/schematics/ng-update/typescript/module-specifiers.mjs +2 -2
  197. package/schematics/ng-update/upgrade-data.d.ts +1 -1
  198. package/schematics/ng-update/upgrade-data.js +2 -2
  199. package/schematics/ng-update/upgrade-data.mjs +2 -2
  200. package/schematics/paths.d.ts +1 -1
  201. package/schematics/paths.js +2 -2
  202. package/schematics/paths.mjs +2 -2
  203. package/schematics/update-tool/component-resource-collector.d.ts +1 -1
  204. package/schematics/update-tool/component-resource-collector.js +2 -2
  205. package/schematics/update-tool/component-resource-collector.mjs +2 -2
  206. package/schematics/update-tool/file-system.d.ts +1 -1
  207. package/schematics/update-tool/file-system.js +2 -2
  208. package/schematics/update-tool/file-system.mjs +2 -2
  209. package/schematics/update-tool/index.d.ts +1 -1
  210. package/schematics/update-tool/index.js +2 -2
  211. package/schematics/update-tool/index.mjs +2 -2
  212. package/schematics/update-tool/logger.d.ts +1 -1
  213. package/schematics/update-tool/logger.js +2 -2
  214. package/schematics/update-tool/logger.mjs +2 -2
  215. package/schematics/update-tool/migration.d.ts +1 -1
  216. package/schematics/update-tool/migration.js +2 -2
  217. package/schematics/update-tool/migration.mjs +2 -2
  218. package/schematics/update-tool/public-api.d.ts +1 -1
  219. package/schematics/update-tool/public-api.js +2 -2
  220. package/schematics/update-tool/public-api.mjs +2 -2
  221. package/schematics/update-tool/target-version.d.ts +1 -1
  222. package/schematics/update-tool/target-version.js +2 -2
  223. package/schematics/update-tool/target-version.mjs +2 -2
  224. package/schematics/update-tool/update-recorder.d.ts +1 -1
  225. package/schematics/update-tool/update-recorder.js +2 -2
  226. package/schematics/update-tool/update-recorder.mjs +2 -2
  227. package/schematics/update-tool/utils/decorators.d.ts +1 -1
  228. package/schematics/update-tool/utils/decorators.js +2 -2
  229. package/schematics/update-tool/utils/decorators.mjs +2 -2
  230. package/schematics/update-tool/utils/diagnostics.d.ts +1 -1
  231. package/schematics/update-tool/utils/diagnostics.js +2 -2
  232. package/schematics/update-tool/utils/diagnostics.mjs +2 -2
  233. package/schematics/update-tool/utils/functions.d.ts +1 -1
  234. package/schematics/update-tool/utils/functions.js +2 -2
  235. package/schematics/update-tool/utils/functions.mjs +2 -2
  236. package/schematics/update-tool/utils/imports.d.ts +1 -1
  237. package/schematics/update-tool/utils/imports.js +2 -2
  238. package/schematics/update-tool/utils/imports.mjs +2 -2
  239. package/schematics/update-tool/utils/line-mappings.d.ts +1 -1
  240. package/schematics/update-tool/utils/line-mappings.js +2 -2
  241. package/schematics/update-tool/utils/line-mappings.mjs +2 -2
  242. package/schematics/update-tool/utils/parse-tsconfig.d.ts +1 -1
  243. package/schematics/update-tool/utils/parse-tsconfig.js +2 -2
  244. package/schematics/update-tool/utils/parse-tsconfig.mjs +2 -2
  245. package/schematics/update-tool/utils/property-name.d.ts +1 -1
  246. package/schematics/update-tool/utils/property-name.js +2 -2
  247. package/schematics/update-tool/utils/property-name.mjs +2 -2
  248. package/schematics/update-tool/utils/virtual-host.d.ts +1 -1
  249. package/schematics/update-tool/utils/virtual-host.js +2 -2
  250. package/schematics/update-tool/utils/virtual-host.mjs +2 -2
  251. package/schematics/update-tool/version-changes.d.ts +1 -1
  252. package/schematics/update-tool/version-changes.js +2 -2
  253. package/schematics/update-tool/version-changes.mjs +2 -2
  254. package/schematics/utils/ast/ng-module-imports.d.ts +1 -1
  255. package/schematics/utils/ast/ng-module-imports.js +2 -2
  256. package/schematics/utils/ast/ng-module-imports.mjs +2 -2
  257. package/schematics/utils/ast.d.ts +1 -1
  258. package/schematics/utils/ast.js +2 -2
  259. package/schematics/utils/ast.mjs +2 -2
  260. package/schematics/utils/build-component.d.ts +1 -1
  261. package/schematics/utils/build-component.js +2 -2
  262. package/schematics/utils/build-component.mjs +2 -2
  263. package/schematics/utils/get-project.d.ts +1 -1
  264. package/schematics/utils/get-project.js +2 -2
  265. package/schematics/utils/get-project.mjs +2 -2
  266. package/schematics/utils/html-manipulation.d.ts +1 -1
  267. package/schematics/utils/html-manipulation.js +2 -2
  268. package/schematics/utils/html-manipulation.mjs +2 -2
  269. package/schematics/utils/index.d.ts +1 -1
  270. package/schematics/utils/index.js +2 -2
  271. package/schematics/utils/index.mjs +2 -2
  272. package/schematics/utils/parse5-element.d.ts +1 -1
  273. package/schematics/utils/parse5-element.js +2 -2
  274. package/schematics/utils/parse5-element.mjs +2 -2
  275. package/schematics/utils/project-index-file.d.ts +1 -1
  276. package/schematics/utils/project-index-file.js +2 -2
  277. package/schematics/utils/project-index-file.mjs +2 -2
  278. package/schematics/utils/project-main-file.d.ts +1 -1
  279. package/schematics/utils/project-main-file.js +2 -2
  280. package/schematics/utils/project-main-file.mjs +2 -2
  281. package/schematics/utils/project-style-file.d.ts +1 -1
  282. package/schematics/utils/project-style-file.js +2 -2
  283. package/schematics/utils/project-style-file.mjs +2 -2
  284. package/schematics/utils/project-targets.d.ts +1 -1
  285. package/schematics/utils/project-targets.js +4 -3
  286. package/schematics/utils/project-targets.mjs +4 -3
  287. package/schematics/utils/project-tsconfig-paths.d.ts +1 -1
  288. package/schematics/utils/project-tsconfig-paths.js +2 -2
  289. package/schematics/utils/project-tsconfig-paths.mjs +2 -2
  290. package/schematics/utils/schematic-options.d.ts +1 -1
  291. package/schematics/utils/schematic-options.js +2 -2
  292. package/schematics/utils/schematic-options.mjs +2 -2
  293. package/scrolling/index.d.ts +19 -38
  294. package/stepper/index.d.ts +16 -69
  295. package/table/index.d.ts +41 -56
  296. package/text-field/index.d.ts +6 -9
  297. package/tree/index.d.ts +17 -16
  298. package/esm2022/a11y/a11y-module.mjs +0 -31
  299. package/esm2022/a11y/a11y_public_index.mjs +0 -5
  300. package/esm2022/a11y/aria-describer/aria-describer.mjs +0 -232
  301. package/esm2022/a11y/aria-describer/aria-reference.mjs +0 -47
  302. package/esm2022/a11y/fake-event-detection.mjs +0 -29
  303. package/esm2022/a11y/focus-monitor/focus-monitor.mjs +0 -468
  304. package/esm2022/a11y/focus-trap/configurable-focus-trap-config.mjs +0 -9
  305. package/esm2022/a11y/focus-trap/configurable-focus-trap-factory.mjs +0 -54
  306. package/esm2022/a11y/focus-trap/configurable-focus-trap.mjs +0 -51
  307. package/esm2022/a11y/focus-trap/event-listener-inert-strategy.mjs +0 -61
  308. package/esm2022/a11y/focus-trap/focus-trap-inert-strategy.mjs +0 -11
  309. package/esm2022/a11y/focus-trap/focus-trap-manager.mjs +0 -53
  310. package/esm2022/a11y/focus-trap/focus-trap.mjs +0 -396
  311. package/esm2022/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +0 -116
  312. package/esm2022/a11y/index.mjs +0 -9
  313. package/esm2022/a11y/input-modality/input-modality-detector.mjs +0 -176
  314. package/esm2022/a11y/interactivity-checker/interactivity-checker.mjs +0 -238
  315. package/esm2022/a11y/key-manager/activedescendant-key-manager.mjs +0 -20
  316. package/esm2022/a11y/key-manager/focus-key-manager.mjs +0 -29
  317. package/esm2022/a11y/key-manager/list-key-manager.mjs +0 -357
  318. package/esm2022/a11y/key-manager/noop-tree-key-manager.mjs +0 -94
  319. package/esm2022/a11y/key-manager/tree-key-manager-strategy.mjs +0 -9
  320. package/esm2022/a11y/key-manager/tree-key-manager.mjs +0 -345
  321. package/esm2022/a11y/key-manager/typeahead.mjs +0 -91
  322. package/esm2022/a11y/live-announcer/live-announcer-tokens.mjs +0 -19
  323. package/esm2022/a11y/live-announcer/live-announcer.mjs +0 -210
  324. package/esm2022/a11y/public-api.mjs +0 -30
  325. package/esm2022/accordion/accordion-item.mjs +0 -162
  326. package/esm2022/accordion/accordion-module.mjs +0 -24
  327. package/esm2022/accordion/accordion.mjs +0 -65
  328. package/esm2022/accordion/accordion_public_index.mjs +0 -5
  329. package/esm2022/accordion/index.mjs +0 -9
  330. package/esm2022/accordion/public-api.mjs +0 -11
  331. package/esm2022/bidi/bidi-module.mjs +0 -23
  332. package/esm2022/bidi/bidi_public_index.mjs +0 -5
  333. package/esm2022/bidi/dir-document-token.mjs +0 -33
  334. package/esm2022/bidi/dir.mjs +0 -70
  335. package/esm2022/bidi/directionality.mjs +0 -52
  336. package/esm2022/bidi/index.mjs +0 -9
  337. package/esm2022/bidi/public-api.mjs +0 -12
  338. package/esm2022/clipboard/clipboard-module.mjs +0 -23
  339. package/esm2022/clipboard/clipboard.mjs +0 -53
  340. package/esm2022/clipboard/clipboard_public_index.mjs +0 -5
  341. package/esm2022/clipboard/copy-to-clipboard.mjs +0 -100
  342. package/esm2022/clipboard/index.mjs +0 -9
  343. package/esm2022/clipboard/pending-copy.mjs +0 -71
  344. package/esm2022/clipboard/public-api.mjs +0 -12
  345. package/esm2022/coercion/array.mjs +0 -11
  346. package/esm2022/coercion/boolean-property.mjs +0 -12
  347. package/esm2022/coercion/css-pixel-value.mjs +0 -15
  348. package/esm2022/coercion/element.mjs +0 -16
  349. package/esm2022/coercion/index.mjs +0 -9
  350. package/esm2022/coercion/number-property.mjs +0 -24
  351. package/esm2022/coercion/private/index.mjs +0 -9
  352. package/esm2022/coercion/private/observable.mjs +0 -19
  353. package/esm2022/coercion/private/private_public_index.mjs +0 -5
  354. package/esm2022/coercion/public-api.mjs +0 -14
  355. package/esm2022/coercion/string-array.mjs +0 -38
  356. package/esm2022/collections/array-data-source.mjs +0 -21
  357. package/esm2022/collections/collection-viewer.mjs +0 -9
  358. package/esm2022/collections/collections_public_index.mjs +0 -5
  359. package/esm2022/collections/data-source.mjs +0 -19
  360. package/esm2022/collections/dispose-view-repeater-strategy.mjs +0 -48
  361. package/esm2022/collections/index.mjs +0 -9
  362. package/esm2022/collections/public-api.mjs +0 -17
  363. package/esm2022/collections/recycle-view-repeater-strategy.mjs +0 -129
  364. package/esm2022/collections/selection-model.mjs +0 -225
  365. package/esm2022/collections/tree-adapter.mjs +0 -9
  366. package/esm2022/collections/unique-selection-dispatcher.mjs +0 -55
  367. package/esm2022/collections/view-repeater.mjs +0 -26
  368. package/esm2022/dialog/dialog-config.mjs +0 -70
  369. package/esm2022/dialog/dialog-container.mjs +0 -308
  370. package/esm2022/dialog/dialog-injectors.mjs +0 -40
  371. package/esm2022/dialog/dialog-module.mjs +0 -40
  372. package/esm2022/dialog/dialog-ref.mjs +0 -85
  373. package/esm2022/dialog/dialog.mjs +0 -303
  374. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  375. package/esm2022/dialog/index.mjs +0 -9
  376. package/esm2022/dialog/public-api.mjs +0 -14
  377. package/esm2022/drag-drop/directives/assertions.mjs +0 -18
  378. package/esm2022/drag-drop/directives/config.mjs +0 -14
  379. package/esm2022/drag-drop/directives/drag-handle.mjs +0 -68
  380. package/esm2022/drag-drop/directives/drag-placeholder.mjs +0 -43
  381. package/esm2022/drag-drop/directives/drag-preview.mjs +0 -48
  382. package/esm2022/drag-drop/directives/drag.mjs +0 -520
  383. package/esm2022/drag-drop/directives/drop-list-group.mjs +0 -47
  384. package/esm2022/drag-drop/directives/drop-list.mjs +0 -352
  385. package/esm2022/drag-drop/dom/clone-node.mjs +0 -65
  386. package/esm2022/drag-drop/dom/dom-rect.mjs +0 -64
  387. package/esm2022/drag-drop/dom/parent-position-tracker.mjs +0 -76
  388. package/esm2022/drag-drop/dom/root-node.mjs +0 -21
  389. package/esm2022/drag-drop/dom/styling.mjs +0 -89
  390. package/esm2022/drag-drop/dom/transition-duration.mjs +0 -36
  391. package/esm2022/drag-drop/drag-drop-module.mjs +0 -49
  392. package/esm2022/drag-drop/drag-drop-registry.mjs +0 -266
  393. package/esm2022/drag-drop/drag-drop.mjs +0 -57
  394. package/esm2022/drag-drop/drag-drop_public_index.mjs +0 -5
  395. package/esm2022/drag-drop/drag-events.mjs +0 -9
  396. package/esm2022/drag-drop/drag-parent.mjs +0 -16
  397. package/esm2022/drag-drop/drag-ref.mjs +0 -1097
  398. package/esm2022/drag-drop/drag-utils.mjs +0 -60
  399. package/esm2022/drag-drop/drop-list-ref.mjs +0 -672
  400. package/esm2022/drag-drop/index.mjs +0 -9
  401. package/esm2022/drag-drop/preview-ref.mjs +0 -117
  402. package/esm2022/drag-drop/public-api.mjs +0 -23
  403. package/esm2022/drag-drop/sorting/drop-list-sort-strategy.mjs +0 -9
  404. package/esm2022/drag-drop/sorting/mixed-sort-strategy.mjs +0 -246
  405. package/esm2022/drag-drop/sorting/single-axis-sort-strategy.mjs +0 -343
  406. package/esm2022/index.mjs +0 -9
  407. package/esm2022/keycodes/index.mjs +0 -9
  408. package/esm2022/keycodes/keycodes.mjs +0 -127
  409. package/esm2022/keycodes/keycodes_public_index.mjs +0 -5
  410. package/esm2022/keycodes/modifiers.mjs +0 -18
  411. package/esm2022/keycodes/public-api.mjs +0 -10
  412. package/esm2022/layout/breakpoints-observer.mjs +0 -105
  413. package/esm2022/layout/breakpoints.mjs +0 -29
  414. package/esm2022/layout/index.mjs +0 -9
  415. package/esm2022/layout/layout-module.mjs +0 -19
  416. package/esm2022/layout/layout_public_index.mjs +0 -5
  417. package/esm2022/layout/media-matcher.mjs +0 -94
  418. package/esm2022/layout/public-api.mjs +0 -12
  419. package/esm2022/listbox/index.mjs +0 -9
  420. package/esm2022/listbox/listbox-module.mjs +0 -24
  421. package/esm2022/listbox/listbox.mjs +0 -888
  422. package/esm2022/listbox/listbox_public_index.mjs +0 -5
  423. package/esm2022/listbox/public-api.mjs +0 -10
  424. package/esm2022/menu/context-menu-trigger.mjs +0 -221
  425. package/esm2022/menu/event-detection.mjs +0 -28
  426. package/esm2022/menu/index.mjs +0 -9
  427. package/esm2022/menu/menu-aim.mjs +0 -204
  428. package/esm2022/menu/menu-bar.mjs +0 -134
  429. package/esm2022/menu/menu-base.mjs +0 -192
  430. package/esm2022/menu/menu-errors.mjs +0 -22
  431. package/esm2022/menu/menu-group.mjs +0 -31
  432. package/esm2022/menu/menu-interface.mjs +0 -11
  433. package/esm2022/menu/menu-item-checkbox.mjs +0 -50
  434. package/esm2022/menu/menu-item-radio.mjs +0 -72
  435. package/esm2022/menu/menu-item-selectable.mjs +0 -36
  436. package/esm2022/menu/menu-item.mjs +0 -270
  437. package/esm2022/menu/menu-module.mjs +0 -60
  438. package/esm2022/menu/menu-stack.mjs +0 -163
  439. package/esm2022/menu/menu-trigger-base.mjs +0 -119
  440. package/esm2022/menu/menu-trigger.mjs +0 -313
  441. package/esm2022/menu/menu.mjs +0 -135
  442. package/esm2022/menu/menu_public_index.mjs +0 -5
  443. package/esm2022/menu/pointer-focus-tracker.mjs +0 -51
  444. package/esm2022/menu/public-api.mjs +0 -24
  445. package/esm2022/observers/index.mjs +0 -9
  446. package/esm2022/observers/observe-content.mjs +0 -216
  447. package/esm2022/observers/observers_public_index.mjs +0 -5
  448. package/esm2022/observers/private/index.mjs +0 -9
  449. package/esm2022/observers/private/private_public_index.mjs +0 -5
  450. package/esm2022/observers/private/shared-resize-observer.mjs +0 -125
  451. package/esm2022/observers/public-api.mjs +0 -9
  452. package/esm2022/overlay/dispatchers/base-overlay-dispatcher.mjs +0 -52
  453. package/esm2022/overlay/dispatchers/index.mjs +0 -10
  454. package/esm2022/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +0 -81
  455. package/esm2022/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +0 -151
  456. package/esm2022/overlay/fullscreen-overlay-container.mjs +0 -94
  457. package/esm2022/overlay/index.mjs +0 -9
  458. package/esm2022/overlay/overlay-config.mjs +0 -45
  459. package/esm2022/overlay/overlay-container.mjs +0 -81
  460. package/esm2022/overlay/overlay-directives.mjs +0 -432
  461. package/esm2022/overlay/overlay-module.mjs +0 -28
  462. package/esm2022/overlay/overlay-ref.mjs +0 -437
  463. package/esm2022/overlay/overlay.mjs +0 -126
  464. package/esm2022/overlay/overlay_public_index.mjs +0 -5
  465. package/esm2022/overlay/position/connected-position.mjs +0 -88
  466. package/esm2022/overlay/position/flexible-connected-position-strategy.mjs +0 -1002
  467. package/esm2022/overlay/position/global-position-strategy.mjs +0 -237
  468. package/esm2022/overlay/position/overlay-position-builder.mjs +0 -50
  469. package/esm2022/overlay/position/position-strategy.mjs +0 -9
  470. package/esm2022/overlay/position/scroll-clip.mjs +0 -40
  471. package/esm2022/overlay/public-api.mjs +0 -22
  472. package/esm2022/overlay/scroll/block-scroll-strategy.mjs +0 -80
  473. package/esm2022/overlay/scroll/close-scroll-strategy.mjs +0 -65
  474. package/esm2022/overlay/scroll/index.mjs +0 -14
  475. package/esm2022/overlay/scroll/noop-scroll-strategy.mjs +0 -17
  476. package/esm2022/overlay/scroll/reposition-scroll-strategy.mjs +0 -61
  477. package/esm2022/overlay/scroll/scroll-strategy-options.mjs +0 -55
  478. package/esm2022/overlay/scroll/scroll-strategy.mjs +0 -14
  479. package/esm2022/platform/features/input-types.mjs +0 -59
  480. package/esm2022/platform/features/passive-listeners.mjs +0 -36
  481. package/esm2022/platform/features/scrolling.mjs +0 -104
  482. package/esm2022/platform/features/shadow-dom.mjs +0 -54
  483. package/esm2022/platform/features/test-environment.mjs +0 -24
  484. package/esm2022/platform/index.mjs +0 -9
  485. package/esm2022/platform/platform-module.mjs +0 -19
  486. package/esm2022/platform/platform.mjs +0 -85
  487. package/esm2022/platform/platform_public_index.mjs +0 -5
  488. package/esm2022/platform/public-api.mjs +0 -15
  489. package/esm2022/portal/dom-portal-outlet.mjs +0 -158
  490. package/esm2022/portal/index.mjs +0 -9
  491. package/esm2022/portal/portal-directives.mjs +0 -251
  492. package/esm2022/portal/portal-errors.mjs +0 -51
  493. package/esm2022/portal/portal-injector.mjs +0 -28
  494. package/esm2022/portal/portal.mjs +0 -189
  495. package/esm2022/portal/portal_public_index.mjs +0 -5
  496. package/esm2022/portal/public-api.mjs +0 -12
  497. package/esm2022/public-api.mjs +0 -9
  498. package/esm2022/scrolling/fixed-size-virtual-scroll.mjs +0 -218
  499. package/esm2022/scrolling/index.mjs +0 -9
  500. package/esm2022/scrolling/public-api.mjs +0 -20
  501. package/esm2022/scrolling/scroll-dispatcher.mjs +0 -163
  502. package/esm2022/scrolling/scrollable.mjs +0 -177
  503. package/esm2022/scrolling/scrolling-module.mjs +0 -69
  504. package/esm2022/scrolling/scrolling_public_index.mjs +0 -5
  505. package/esm2022/scrolling/viewport-ruler.mjs +0 -146
  506. package/esm2022/scrolling/virtual-for-of.mjs +0 -299
  507. package/esm2022/scrolling/virtual-scroll-repeater.mjs +0 -9
  508. package/esm2022/scrolling/virtual-scroll-strategy.mjs +0 -11
  509. package/esm2022/scrolling/virtual-scroll-viewport.mjs +0 -445
  510. package/esm2022/scrolling/virtual-scrollable-element.mjs +0 -42
  511. package/esm2022/scrolling/virtual-scrollable-window.mjs +0 -41
  512. package/esm2022/scrolling/virtual-scrollable.mjs +0 -40
  513. package/esm2022/stepper/index.mjs +0 -9
  514. package/esm2022/stepper/public-api.mjs +0 -13
  515. package/esm2022/stepper/step-header.mjs +0 -31
  516. package/esm2022/stepper/step-label.mjs +0 -24
  517. package/esm2022/stepper/stepper-button.mjs +0 -58
  518. package/esm2022/stepper/stepper-module.mjs +0 -41
  519. package/esm2022/stepper/stepper.mjs +0 -452
  520. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  521. package/esm2022/table/can-stick.mjs +0 -46
  522. package/esm2022/table/cell.mjs +0 -245
  523. package/esm2022/table/coalesced-style-scheduler.mjs +0 -79
  524. package/esm2022/table/index.mjs +0 -9
  525. package/esm2022/table/public-api.mjs +0 -20
  526. package/esm2022/table/row.mjs +0 -317
  527. package/esm2022/table/sticky-position-listener.mjs +0 -11
  528. package/esm2022/table/sticky-styler.mjs +0 -347
  529. package/esm2022/table/table-errors.mjs +0 -67
  530. package/esm2022/table/table-module.mjs +0 -93
  531. package/esm2022/table/table.mjs +0 -1148
  532. package/esm2022/table/table_public_index.mjs +0 -5
  533. package/esm2022/table/text-column.mjs +0 -154
  534. package/esm2022/table/tokens.mjs +0 -16
  535. package/esm2022/testing/change-detection.mjs +0 -102
  536. package/esm2022/testing/component-harness.mjs +0 -328
  537. package/esm2022/testing/element-dimensions.mjs +0 -9
  538. package/esm2022/testing/harness-environment.mjs +0 -220
  539. package/esm2022/testing/index.mjs +0 -9
  540. package/esm2022/testing/public-api.mjs +0 -15
  541. package/esm2022/testing/selenium-webdriver/index.mjs +0 -9
  542. package/esm2022/testing/selenium-webdriver/public-api.mjs +0 -10
  543. package/esm2022/testing/selenium-webdriver/selenium-web-driver-element.mjs +0 -216
  544. package/esm2022/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +0 -88
  545. package/esm2022/testing/selenium-webdriver/selenium-webdriver-keys.mjs +0 -64
  546. package/esm2022/testing/test-element-errors.mjs +0 -15
  547. package/esm2022/testing/test-element.mjs +0 -49
  548. package/esm2022/testing/testbed/fake-events/dispatch-events.mjs +0 -53
  549. package/esm2022/testing/testbed/fake-events/element-focus.mjs +0 -39
  550. package/esm2022/testing/testbed/fake-events/event-objects.mjs +0 -127
  551. package/esm2022/testing/testbed/fake-events/index.mjs +0 -14
  552. package/esm2022/testing/testbed/fake-events/type-in-element.mjs +0 -97
  553. package/esm2022/testing/testbed/index.mjs +0 -9
  554. package/esm2022/testing/testbed/public-api.mjs +0 -10
  555. package/esm2022/testing/testbed/task-state-zone-interceptor.mjs +0 -82
  556. package/esm2022/testing/testbed/testbed-harness-environment.mjs +0 -165
  557. package/esm2022/testing/testbed/unit-test-element.mjs +0 -258
  558. package/esm2022/testing/text-filtering.mjs +0 -21
  559. package/esm2022/text-field/autofill.mjs +0 -114
  560. package/esm2022/text-field/autosize.mjs +0 -309
  561. package/esm2022/text-field/index.mjs +0 -9
  562. package/esm2022/text-field/public-api.mjs +0 -11
  563. package/esm2022/text-field/text-field-module.mjs +0 -24
  564. package/esm2022/text-field/text-field_public_index.mjs +0 -5
  565. package/esm2022/tree/control/base-tree-control.mjs +0 -62
  566. package/esm2022/tree/control/flat-tree-control.mjs +0 -57
  567. package/esm2022/tree/control/nested-tree-control.mjs +0 -67
  568. package/esm2022/tree/control/tree-control.mjs +0 -2
  569. package/esm2022/tree/index.mjs +0 -9
  570. package/esm2022/tree/nested-node.mjs +0 -103
  571. package/esm2022/tree/node.mjs +0 -36
  572. package/esm2022/tree/outlet.mjs +0 -40
  573. package/esm2022/tree/padding.mjs +0 -129
  574. package/esm2022/tree/public-api.mjs +0 -20
  575. package/esm2022/tree/toggle.mjs +0 -51
  576. package/esm2022/tree/tree-errors.mjs +0 -44
  577. package/esm2022/tree/tree-module.mjs +0 -49
  578. package/esm2022/tree/tree.mjs +0 -1123
  579. package/esm2022/tree/tree_public_index.mjs +0 -5
  580. package/esm2022/version.mjs +0 -11
package/tree/index.d.ts CHANGED
@@ -2,10 +2,8 @@ import { AfterContentChecked } from '@angular/core';
2
2
  import { AfterContentInit } from '@angular/core';
3
3
  import { AfterViewInit } from '@angular/core';
4
4
  import { BehaviorSubject } from 'rxjs';
5
- import { ChangeDetectorRef } from '@angular/core';
6
5
  import { CollectionViewer } from '@angular/cdk/collections';
7
6
  import { DataSource } from '@angular/cdk/collections';
8
- import { Directionality } from '@angular/cdk/bidi';
9
7
  import { ElementRef } from '@angular/core';
10
8
  import { EventEmitter } from '@angular/core';
11
9
  import * as i0 from '@angular/core';
@@ -95,7 +93,7 @@ export declare class CdkNestedTreeNode<T, K = T> extends CdkTreeNode<T, K> imple
95
93
  protected _children: T[];
96
94
  /** The children node placeholder. */
97
95
  nodeOutlet: QueryList<CdkTreeNodeOutlet>;
98
- constructor(elementRef: ElementRef<HTMLElement>, tree: CdkTree<T, K>, _differs: IterableDiffers);
96
+ constructor(...args: unknown[]);
99
97
  ngAfterContentInit(): void;
100
98
  ngOnInit(): void;
101
99
  ngOnDestroy(): void;
@@ -116,6 +114,7 @@ export declare class CdkNestedTreeNode<T, K = T> extends CdkTreeNode<T, K> imple
116
114
  export declare class CdkTree<T, K = T> implements AfterContentChecked, AfterContentInit, AfterViewInit, CollectionViewer, OnDestroy, OnInit {
117
115
  private _differs;
118
116
  private _changeDetectorRef;
117
+ private _elementRef;
119
118
  private _dir;
120
119
  /** Subject that emits when the component has been destroyed. */
121
120
  private readonly _onDestroy;
@@ -212,7 +211,7 @@ export declare class CdkTree<T, K = T> implements AfterContentChecked, AfterCont
212
211
  /** The key manager for this tree. Handles focus and activation based on user keyboard input. */
213
212
  _keyManager: TreeKeyManagerStrategy<CdkTreeNode<T, K>>;
214
213
  private _viewInit;
215
- constructor(_differs: IterableDiffers, _changeDetectorRef: ChangeDetectorRef, _dir: Directionality);
214
+ constructor(...args: unknown[]);
216
215
  ngAfterContentInit(): void;
217
216
  ngAfterContentChecked(): void;
218
217
  ngOnDestroy(): void;
@@ -282,7 +281,7 @@ export declare class CdkTree<T, K = T> implements AfterContentChecked, AfterCont
282
281
  /** Level accessor, used for compatibility between the old Tree and new Tree */
283
282
  _getLevelAccessor(): ((dataNode: T) => number) | undefined;
284
283
  /** Children accessor, used for compatibility between the old Tree and new Tree */
285
- _getChildrenAccessor(): ((dataNode: T) => Observable<T[]> | T[] | undefined | null) | undefined;
284
+ _getChildrenAccessor(): ((dataNode: T) => T[] | Observable<T[]> | null | undefined) | undefined;
286
285
  /**
287
286
  * Gets the direct children of a node; used for compatibility between the old tree and the
288
287
  * new tree.
@@ -327,7 +326,7 @@ export declare class CdkTree<T, K = T> implements AfterContentChecked, AfterCont
327
326
  /** Given a CdkTreeNode, gets the nodes that renders that node's child data. */
328
327
  _getNodeChildren(node: CdkTreeNode<T, K>): Observable<CdkTreeNode<T, K>[]>;
329
328
  /** `keydown` event handler; this just passes the event to the `TreeKeyManager`. */
330
- _sendKeydownToKeyManager(event: KeyboardEvent): void;
329
+ protected _sendKeydownToKeyManager(event: KeyboardEvent): void;
331
330
  /** Gets all nested descendants of a given node. */
332
331
  private _getDescendants;
333
332
  /**
@@ -378,7 +377,7 @@ export declare class CdkTreeModule {
378
377
  * Tree node for CdkTree. It contains the data in the tree node.
379
378
  */
380
379
  export declare class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKeyManagerItem {
381
- protected _elementRef: ElementRef<HTMLElement>;
380
+ _elementRef: ElementRef<HTMLElement>;
382
381
  protected _tree: CdkTree<T, K>;
383
382
  protected _tabindex: number | null;
384
383
  /**
@@ -461,7 +460,7 @@ export declare class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKey
461
460
  */
462
461
  _getPositionInSet(): number;
463
462
  private _changeDetectorRef;
464
- constructor(_elementRef: ElementRef<HTMLElement>, _tree: CdkTree<T, K>);
463
+ constructor(...args: unknown[]);
465
464
  ngOnInit(): void;
466
465
  ngOnDestroy(): void;
467
466
  getParent(): CdkTreeNode<T, K> | null;
@@ -476,6 +475,8 @@ export declare class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKey
476
475
  collapse(): void;
477
476
  /** Expands this data node. Implemented for TreeKeyManagerItem. */
478
477
  expand(): void;
478
+ /** Makes the node focusable. Implemented for TreeKeyManagerItem. */
479
+ makeFocusable(): void;
479
480
  _focusItem(): void;
480
481
  _setActiveItem(): void;
481
482
  _emitExpansionState(expanded: boolean): void;
@@ -490,6 +491,7 @@ export declare class CdkTreeNode<T, K = T> implements OnDestroy, OnInit, TreeKey
490
491
  * Captures the node's template and a when predicate that describes when this node should be used.
491
492
  */
492
493
  export declare class CdkTreeNodeDef<T> {
494
+ /** @docs-private */
493
495
  template: TemplateRef<any>;
494
496
  /**
495
497
  * Function that should return true if this node template should be used for the provided node
@@ -499,8 +501,7 @@ export declare class CdkTreeNodeDef<T> {
499
501
  * default.
500
502
  */
501
503
  when: (index: number, nodeData: T) => boolean;
502
- /** @docs-private */
503
- constructor(template: TemplateRef<any>);
504
+ constructor(...args: unknown[]);
504
505
  static ɵfac: i0.ɵɵFactoryDeclaration<CdkTreeNodeDef<any>, never>;
505
506
  static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTreeNodeDef<any>, "[cdkTreeNodeDef]", never, { "when": { "alias": "cdkTreeNodeDefWhen"; "required": false; }; }, {}, never, never, true, never>;
506
507
  }
@@ -511,9 +512,9 @@ export declare class CdkTreeNodeDef<T> {
511
512
  */
512
513
  export declare class CdkTreeNodeOutlet {
513
514
  viewContainer: ViewContainerRef;
514
- _node?: any | undefined;
515
- constructor(viewContainer: ViewContainerRef, _node?: any | undefined);
516
- static ɵfac: i0.ɵɵFactoryDeclaration<CdkTreeNodeOutlet, [null, { optional: true; }]>;
515
+ _node?: {} | null | undefined;
516
+ constructor(...args: unknown[]);
517
+ static ɵfac: i0.ɵɵFactoryDeclaration<CdkTreeNodeOutlet, never>;
517
518
  static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTreeNodeOutlet, "[cdkTreeNodeOutlet]", never, {}, {}, never, never, true, never>;
518
519
  }
519
520
 
@@ -556,7 +557,7 @@ export declare class CdkTreeNodePadding<T, K = T> implements OnDestroy {
556
557
  get indent(): number | string;
557
558
  set indent(indent: number | string);
558
559
  _indent: number;
559
- constructor(_treeNode: CdkTreeNode<T, K>, _tree: CdkTree<T, K>, _element: ElementRef<HTMLElement>, _dir: Directionality);
560
+ constructor(...args: unknown[]);
560
561
  ngOnDestroy(): void;
561
562
  /** The padding indent value for the tree node. Returns a string with px numbers if not null. */
562
563
  _paddingIndent(): string | null;
@@ -575,7 +576,7 @@ export declare class CdkTreeNodePadding<T, K = T> implements OnDestroy {
575
576
  * @docs-private
576
577
  */
577
578
  protected _setIndentInput(indent: number | string): void;
578
- static ɵfac: i0.ɵɵFactoryDeclaration<CdkTreeNodePadding<any, any>, [null, null, null, { optional: true; }]>;
579
+ static ɵfac: i0.ɵɵFactoryDeclaration<CdkTreeNodePadding<any, any>, never>;
579
580
  static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTreeNodePadding<any, any>, "[cdkTreeNodePadding]", never, { "level": { "alias": "cdkTreeNodePadding"; "required": false; }; "indent": { "alias": "cdkTreeNodePaddingIndent"; "required": false; }; }, {}, never, never, true, never>;
580
581
  static ngAcceptInputType_level: unknown;
581
582
  }
@@ -588,7 +589,7 @@ export declare class CdkTreeNodeToggle<T, K = T> {
588
589
  protected _treeNode: CdkTreeNode<T, K>;
589
590
  /** Whether expand/collapse the node recursively. */
590
591
  recursive: boolean;
591
- constructor(_tree: CdkTree<T, K>, _treeNode: CdkTreeNode<T, K>);
592
+ constructor(...args: unknown[]);
592
593
  _toggle(): void;
593
594
  static ɵfac: i0.ɵɵFactoryDeclaration<CdkTreeNodeToggle<any, any>, never>;
594
595
  static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTreeNodeToggle<any, any>, "[cdkTreeNodeToggle]", never, { "recursive": { "alias": "cdkTreeNodeToggleRecursive"; "required": false; }; }, {}, never, never, true, never>;
@@ -1,31 +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 { ObserversModule } from '@angular/cdk/observers';
9
- import { NgModule } from '@angular/core';
10
- import { CdkMonitorFocus } from './focus-monitor/focus-monitor';
11
- import { CdkTrapFocus } from './focus-trap/focus-trap';
12
- import { HighContrastModeDetector } from './high-contrast-mode/high-contrast-mode-detector';
13
- import { CdkAriaLive } from './live-announcer/live-announcer';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "./high-contrast-mode/high-contrast-mode-detector";
16
- export class A11yModule {
17
- constructor(highContrastModeDetector) {
18
- highContrastModeDetector._applyBodyHighContrastModeCssClasses();
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: A11yModule, deps: [{ token: i1.HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule }); }
21
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: A11yModule, imports: [ObserversModule, CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] }); }
22
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: A11yModule, imports: [ObserversModule] }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: A11yModule, decorators: [{
25
- type: NgModule,
26
- args: [{
27
- imports: [ObserversModule, CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],
28
- exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],
29
- }]
30
- }], ctorParameters: () => [{ type: i1.HighContrastModeDetector }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2ExMXkvYTExeS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0saUNBQWlDLENBQUM7OztBQU01RCxNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUFZLHdCQUFrRDtRQUM1RCx3QkFBd0IsQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO0lBQ2xFLENBQUM7cUhBSFUsVUFBVTtzSEFBVixVQUFVLFlBSFgsZUFBZSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsZUFBZSxhQUMzRCxXQUFXLEVBQUUsWUFBWSxFQUFFLGVBQWU7c0hBRXpDLFVBQVUsWUFIWCxlQUFlOztrR0FHZCxVQUFVO2tCQUp0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7aUJBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7T2JzZXJ2ZXJzTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvb2JzZXJ2ZXJzJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDZGtNb25pdG9yRm9jdXN9IGZyb20gJy4vZm9jdXMtbW9uaXRvci9mb2N1cy1tb25pdG9yJztcbmltcG9ydCB7Q2RrVHJhcEZvY3VzfSBmcm9tICcuL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcCc7XG5pbXBvcnQge0hpZ2hDb250cmFzdE1vZGVEZXRlY3Rvcn0gZnJvbSAnLi9oaWdoLWNvbnRyYXN0LW1vZGUvaGlnaC1jb250cmFzdC1tb2RlLWRldGVjdG9yJztcbmltcG9ydCB7Q2RrQXJpYUxpdmV9IGZyb20gJy4vbGl2ZS1hbm5vdW5jZXIvbGl2ZS1hbm5vdW5jZXInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbT2JzZXJ2ZXJzTW9kdWxlLCBDZGtBcmlhTGl2ZSwgQ2RrVHJhcEZvY3VzLCBDZGtNb25pdG9yRm9jdXNdLFxuICBleHBvcnRzOiBbQ2RrQXJpYUxpdmUsIENka1RyYXBGb2N1cywgQ2RrTW9uaXRvckZvY3VzXSxcbn0pXG5leHBvcnQgY2xhc3MgQTExeU1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKGhpZ2hDb250cmFzdE1vZGVEZXRlY3RvcjogSGlnaENvbnRyYXN0TW9kZURldGVjdG9yKSB7XG4gICAgaGlnaENvbnRyYXN0TW9kZURldGVjdG9yLl9hcHBseUJvZHlIaWdoQ29udHJhc3RNb2RlQ3NzQ2xhc3NlcygpO1xuICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeV9wdWJsaWNfaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2ExMXkvYTExeV9wdWJsaWNfaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -1,232 +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 { DOCUMENT } from '@angular/common';
9
- import { Inject, Injectable, APP_ID, inject } from '@angular/core';
10
- import { Platform } from '@angular/cdk/platform';
11
- import { addAriaReferencedId, getAriaReferenceIds, removeAriaReferencedId } from './aria-reference';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/cdk/platform";
14
- /**
15
- * ID used for the body container where all messages are appended.
16
- * @deprecated No longer being used. To be removed.
17
- * @breaking-change 14.0.0
18
- */
19
- export const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';
20
- /**
21
- * ID prefix used for each created message element.
22
- * @deprecated To be turned into a private variable.
23
- * @breaking-change 14.0.0
24
- */
25
- export const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';
26
- /**
27
- * Attribute given to each host element that is described by a message element.
28
- * @deprecated To be turned into a private variable.
29
- * @breaking-change 14.0.0
30
- */
31
- export const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';
32
- /** Global incremental identifier for each registered message element. */
33
- let nextId = 0;
34
- /**
35
- * Utility that creates visually hidden elements with a message content. Useful for elements that
36
- * want to use aria-describedby to further describe themselves without adding additional visual
37
- * content.
38
- */
39
- export class AriaDescriber {
40
- constructor(_document,
41
- /**
42
- * @deprecated To be turned into a required parameter.
43
- * @breaking-change 14.0.0
44
- */
45
- _platform) {
46
- this._platform = _platform;
47
- /** Map of all registered message elements that have been placed into the document. */
48
- this._messageRegistry = new Map();
49
- /** Container for all registered messages. */
50
- this._messagesContainer = null;
51
- /** Unique ID for the service. */
52
- this._id = `${nextId++}`;
53
- this._document = _document;
54
- this._id = inject(APP_ID) + '-' + nextId++;
55
- }
56
- describe(hostElement, message, role) {
57
- if (!this._canBeDescribed(hostElement, message)) {
58
- return;
59
- }
60
- const key = getKey(message, role);
61
- if (typeof message !== 'string') {
62
- // We need to ensure that the element has an ID.
63
- setMessageId(message, this._id);
64
- this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });
65
- }
66
- else if (!this._messageRegistry.has(key)) {
67
- this._createMessageElement(message, role);
68
- }
69
- if (!this._isElementDescribedByMessage(hostElement, key)) {
70
- this._addMessageReference(hostElement, key);
71
- }
72
- }
73
- removeDescription(hostElement, message, role) {
74
- if (!message || !this._isElementNode(hostElement)) {
75
- return;
76
- }
77
- const key = getKey(message, role);
78
- if (this._isElementDescribedByMessage(hostElement, key)) {
79
- this._removeMessageReference(hostElement, key);
80
- }
81
- // If the message is a string, it means that it's one that we created for the
82
- // consumer so we can remove it safely, otherwise we should leave it in place.
83
- if (typeof message === 'string') {
84
- const registeredMessage = this._messageRegistry.get(key);
85
- if (registeredMessage && registeredMessage.referenceCount === 0) {
86
- this._deleteMessageElement(key);
87
- }
88
- }
89
- if (this._messagesContainer?.childNodes.length === 0) {
90
- this._messagesContainer.remove();
91
- this._messagesContainer = null;
92
- }
93
- }
94
- /** Unregisters all created message elements and removes the message container. */
95
- ngOnDestroy() {
96
- const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}="${this._id}"]`);
97
- for (let i = 0; i < describedElements.length; i++) {
98
- this._removeCdkDescribedByReferenceIds(describedElements[i]);
99
- describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);
100
- }
101
- this._messagesContainer?.remove();
102
- this._messagesContainer = null;
103
- this._messageRegistry.clear();
104
- }
105
- /**
106
- * Creates a new element in the visually hidden message container element with the message
107
- * as its content and adds it to the message registry.
108
- */
109
- _createMessageElement(message, role) {
110
- const messageElement = this._document.createElement('div');
111
- setMessageId(messageElement, this._id);
112
- messageElement.textContent = message;
113
- if (role) {
114
- messageElement.setAttribute('role', role);
115
- }
116
- this._createMessagesContainer();
117
- this._messagesContainer.appendChild(messageElement);
118
- this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });
119
- }
120
- /** Deletes the message element from the global messages container. */
121
- _deleteMessageElement(key) {
122
- this._messageRegistry.get(key)?.messageElement?.remove();
123
- this._messageRegistry.delete(key);
124
- }
125
- /** Creates the global container for all aria-describedby messages. */
126
- _createMessagesContainer() {
127
- if (this._messagesContainer) {
128
- return;
129
- }
130
- const containerClassName = 'cdk-describedby-message-container';
131
- const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform="server"]`);
132
- for (let i = 0; i < serverContainers.length; i++) {
133
- // When going from the server to the client, we may end up in a situation where there's
134
- // already a container on the page, but we don't have a reference to it. Clear the
135
- // old container so we don't get duplicates. Doing this, instead of emptying the previous
136
- // container, should be slightly faster.
137
- serverContainers[i].remove();
138
- }
139
- const messagesContainer = this._document.createElement('div');
140
- // We add `visibility: hidden` in order to prevent text in this container from
141
- // being searchable by the browser's Ctrl + F functionality.
142
- // Screen-readers will still read the description for elements with aria-describedby even
143
- // when the description element is not visible.
144
- messagesContainer.style.visibility = 'hidden';
145
- // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that
146
- // the description element doesn't impact page layout.
147
- messagesContainer.classList.add(containerClassName);
148
- messagesContainer.classList.add('cdk-visually-hidden');
149
- // @breaking-change 14.0.0 Remove null check for `_platform`.
150
- if (this._platform && !this._platform.isBrowser) {
151
- messagesContainer.setAttribute('platform', 'server');
152
- }
153
- this._document.body.appendChild(messagesContainer);
154
- this._messagesContainer = messagesContainer;
155
- }
156
- /** Removes all cdk-describedby messages that are hosted through the element. */
157
- _removeCdkDescribedByReferenceIds(element) {
158
- // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX
159
- const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);
160
- element.setAttribute('aria-describedby', originalReferenceIds.join(' '));
161
- }
162
- /**
163
- * Adds a message reference to the element using aria-describedby and increments the registered
164
- * message's reference count.
165
- */
166
- _addMessageReference(element, key) {
167
- const registeredMessage = this._messageRegistry.get(key);
168
- // Add the aria-describedby reference and set the
169
- // describedby_host attribute to mark the element.
170
- addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);
171
- element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);
172
- registeredMessage.referenceCount++;
173
- }
174
- /**
175
- * Removes a message reference from the element using aria-describedby
176
- * and decrements the registered message's reference count.
177
- */
178
- _removeMessageReference(element, key) {
179
- const registeredMessage = this._messageRegistry.get(key);
180
- registeredMessage.referenceCount--;
181
- removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);
182
- element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);
183
- }
184
- /** Returns true if the element has been described by the provided message ID. */
185
- _isElementDescribedByMessage(element, key) {
186
- const referenceIds = getAriaReferenceIds(element, 'aria-describedby');
187
- const registeredMessage = this._messageRegistry.get(key);
188
- const messageId = registeredMessage && registeredMessage.messageElement.id;
189
- return !!messageId && referenceIds.indexOf(messageId) != -1;
190
- }
191
- /** Determines whether a message can be described on a particular element. */
192
- _canBeDescribed(element, message) {
193
- if (!this._isElementNode(element)) {
194
- return false;
195
- }
196
- if (message && typeof message === 'object') {
197
- // We'd have to make some assumptions about the description element's text, if the consumer
198
- // passed in an element. Assume that if an element is passed in, the consumer has verified
199
- // that it can be used as a description.
200
- return true;
201
- }
202
- const trimmedMessage = message == null ? '' : `${message}`.trim();
203
- const ariaLabel = element.getAttribute('aria-label');
204
- // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the
205
- // element, because screen readers will end up reading out the same text twice in a row.
206
- return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;
207
- }
208
- /** Checks whether a node is an Element node. */
209
- _isElementNode(element) {
210
- return element.nodeType === this._document.ELEMENT_NODE;
211
- }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
213
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: AriaDescriber, providedIn: 'root' }); }
214
- }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: AriaDescriber, decorators: [{
216
- type: Injectable,
217
- args: [{ providedIn: 'root' }]
218
- }], ctorParameters: () => [{ type: undefined, decorators: [{
219
- type: Inject,
220
- args: [DOCUMENT]
221
- }] }, { type: i1.Platform }] });
222
- /** Gets a key that can be used to look messages up in the registry. */
223
- function getKey(message, role) {
224
- return typeof message === 'string' ? `${role || ''}/${message}` : message;
225
- }
226
- /** Assigns a unique ID to an element, if it doesn't have one already. */
227
- function setMessageId(element, serviceId) {
228
- if (!element.id) {
229
- element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;
230
- }
231
- }
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpYS1kZXNjcmliZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2ExMXkvYXJpYS1kZXNjcmliZXIvYXJpYS1kZXNjcmliZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7QUFjbEc7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1DQUFtQyxDQUFDO0FBRXpFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztBQUVuRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsc0JBQXNCLENBQUM7QUFFckUseUVBQXlFO0FBQ3pFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQVl4QixZQUNvQixTQUFjO0lBQ2hDOzs7T0FHRztJQUNLLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFmOUIsc0ZBQXNGO1FBQzlFLHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUF1QyxDQUFDO1FBRTFFLDZDQUE2QztRQUNyQyx1QkFBa0IsR0FBdUIsSUFBSSxDQUFDO1FBRXRELGlDQUFpQztRQUNoQixRQUFHLEdBQUcsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBVW5DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxD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QUNwRixDQUFDO0lBRUQsZ0RBQWdEO0lBQ3hDLGNBQWMsQ0FBQyxPQUFhO1FBQ2xDLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUMxRCxDQUFDO3FIQTVPVSxhQUFhLGtCQWFkLFFBQVE7eUhBYlAsYUFBYSxjQURELE1BQU07O2tHQUNsQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7MEJBYzNCLE1BQU07MkJBQUMsUUFBUTs7QUFrT3BCLHVFQUF1RTtBQUN2RSxTQUFTLE1BQU0sQ0FBQyxPQUF5QixFQUFFLElBQWE7SUFDdEQsT0FBTyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzVFLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsU0FBUyxZQUFZLENBQUMsT0FBb0IsRUFBRSxTQUFpQjtJQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxFQUFFLEdBQUcsR0FBRyx5QkFBeUIsSUFBSSxTQUFTLElBQUksTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgQVBQX0lELCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7YWRkQXJpYVJlZmVyZW5jZWRJZCwgZ2V0QXJpYVJlZmVyZW5jZUlkcywgcmVtb3ZlQXJpYVJlZmVyZW5jZWRJZH0gZnJvbSAnLi9hcmlhLXJlZmVyZW5jZSc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gcmVnaXN0ZXIgbWVzc2FnZSBlbGVtZW50cyBhbmQga2VlcCBhIGNvdW50IG9mIGhvdyBtYW55IHJlZ2lzdHJhdGlvbnMgaGF2ZVxuICogdGhlIHNhbWUgbWVzc2FnZSBhbmQgdGhlIHJlZmVyZW5jZSB0byB0aGUgbWVzc2FnZSBlbGVtZW50IHVzZWQgZm9yIHRoZSBgYXJpYS1kZXNjcmliZWRieWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJlZE1lc3NhZ2Uge1xuICAvKiogVGhlIGVsZW1lbnQgY29udGFpbmluZyB0aGUgbWVzc2FnZS4gKi9cbiAgbWVzc2FnZUVsZW1lbnQ6IEVsZW1lbnQ7XG5cbiAgLyoqIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCByZWZlcmVuY2UgdGhpcyBtZXNzYWdlIGVsZW1lbnQgdmlhIGBhcmlhLWRlc2NyaWJlZGJ5YC4gKi9cbiAgcmVmZXJlbmNlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJRCB1c2VkIGZvciB0aGUgYm9keSBjb250YWluZXIgd2hlcmUgYWxsIG1lc3NhZ2VzIGFyZSBhcHBlbmRlZC5cbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBiZWluZyB1c2VkLiBUbyBiZSByZW1vdmVkLlxuICogQGJyZWFraW5nLWNoYW5nZSAxNC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VTX0NPTlRBSU5FUl9JRCA9ICdjZGstZGVzY3JpYmVkYnktbWVzc2FnZS1jb250YWluZXInO1xuXG4vKipcbiAqIElEIHByZWZpeCB1c2VkIGZvciBlYWNoIGNyZWF0ZWQgbWVzc2FnZSBlbGVtZW50LlxuICogQGRlcHJlY2F0ZWQgVG8gYmUgdHVybmVkIGludG8gYSBwcml2YXRlIHZhcmlhYmxlLlxuICogQGJyZWFraW5nLWNoYW5nZSAxNC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IENES19ERVNDUklCRURCWV9JRF9QUkVGSVggPSAnY2RrLWRlc2NyaWJlZGJ5LW1lc3NhZ2UnO1xuXG4vKipcbiAqIEF0dHJpYnV0ZSBnaXZlbiB0byBlYWNoIGhvc3QgZWxlbWVudCB0aGF0IGlzIGRlc2NyaWJlZCBieSBhIG1lc3NhZ2UgZWxlbWVudC5cbiAqIEBkZXByZWNhdGVkIFRvIGJlIHR1cm5lZCBpbnRvIGEgcHJpdmF0ZSB2YXJpYWJsZS5cbiAqIEBicmVha2luZy1jaGFuZ2UgMTQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBDREtfREVTQ1JJQkVEQllfSE9TVF9BVFRSSUJVVEUgPSAnY2RrLWRlc2NyaWJlZGJ5LWhvc3QnO1xuXG4vKiogR2xvYmFsIGluY3JlbWVudGFsIGlkZW50aWZpZXIgZm9yIGVhY2ggcmVnaXN0ZXJlZCBtZXNzYWdlIGVsZW1lbnQuICovXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBVdGlsaXR5IHRoYXQgY3JlYXRlcyB2aXN1YWxseSBoaWRkZW4gZWxlbWVudHMgd2l0aCBhIG1lc3NhZ2UgY29udGVudC4gVXNlZnVsIGZvciBlbGVtZW50cyB0aGF0XG4gKiB3YW50IHRvIHVzZSBhcmlhLWRlc2NyaWJlZGJ5IHRvIGZ1cnRoZXIgZGVzY3JpYmUgdGhlbXNlbHZlcyB3aXRob3V0IGFkZGluZyBhZGRpdGlvbmFsIHZpc3VhbFxuICogY29udGVudC5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQXJpYURlc2NyaWJlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudDtcblxuICAvKiogTWFwIG9mIGFsbCByZWdpc3RlcmVkIG1lc3NhZ2UgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gcGxhY2VkIGludG8gdGhlIGRvY3VtZW50LiAqL1xuICBwcml2YXRlIF9tZXNzYWdlUmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZyB8IEVsZW1lbnQsIFJlZ2lzdGVyZWRNZXNzYWdlPigpO1xuXG4gIC8qKiBDb250YWluZXIgZm9yIGFsbCByZWdpc3RlcmVkIG1lc3NhZ2VzLiAqL1xuICBwcml2YXRlIF9tZXNzYWdlc0NvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVW5pcXVlIElEIGZvciB0aGUgc2VydmljZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaWQgPSBgJHtuZXh0SWQrK31gO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LFxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFRvIGJlIHR1cm5lZCBpbnRvIGEgcmVxdWlyZWQgcGFyYW1ldGVyLlxuICAgICAqIEBicmVha2luZy1jaGFuZ2UgMTQuMC4wXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGxhdGZvcm0/OiBQbGF0Zm9ybSxcbiAgKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBfZG9jdW1lbnQ7XG4gICAgdGhpcy5faWQgPSBpbmplY3QoQVBQX0lEKSArICctJyArIG5leHRJZCsrO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdG8gdGhlIGhvc3QgZWxlbWVudCBhbiBhcmlhLWRlc2NyaWJlZGJ5IHJlZmVyZW5jZSB0byBhIGhpZGRlbiBlbGVtZW50IHRoYXQgY29udGFpbnNcbiAgICogdGhlIG1lc3NhZ2UuIElmIHRoZSBzYW1lIG1lc3NhZ2UgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLCB0aGVuIGl0IHdpbGwgcmV1c2UgdGhlIGNyZWF0ZWRcbiAgICogbWVzc2FnZSBlbGVtZW50LlxuICAgKi9cbiAgZGVzY3JpYmUoaG9zdEVsZW1lbnQ6IEVsZW1lbnQsIG1lc3NhZ2U6IHN0cmluZywgcm9sZT86IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgdG8gdGhlIGhvc3QgZWxlbWVudCBhbiBhcmlhLWRlc2NyaWJlZGJ5IHJlZmVyZW5jZSB0byBhbiBhbHJlYWR5LWV4aXN0aW5nIG1lc3NhZ2UgZWxlbWVudC5cbiAgICovXG4gIGRlc2NyaWJlKGhvc3RFbGVtZW50OiBFbGVtZW50LCBtZXNzYWdlOiBIVE1MRWxlbWVudCk6IHZvaWQ7XG5cbiAgZGVzY3JpYmUoaG9zdEVsZW1lbnQ6IEVsZW1lbnQsIG1lc3NhZ2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LCByb2xlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jYW5CZURlc2NyaWJlZChob3N0RWxlbWVudCwgbWVzc2FnZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBnZXRLZXkobWVzc2FnZSwgcm9sZSk7XG5cbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGhhcyBhbiBJRC5cbiAgICAgIHNldE1lc3NhZ2VJZChtZXNzYWdlLCB0aGlzLl9pZCk7XG4gICAgICB0aGlzLl9tZXNzYWdlUmVnaXN0cnkuc2V0KGtleSwge21lc3NhZ2VFbGVtZW50OiBtZXNzYWdlLCByZWZlcmVuY2VDb3VudDogMH0pO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX21lc3NhZ2VSZWdpc3RyeS5oYXMoa2V5KSkge1xuICAgICAgdGhpcy5fY3JlYXRlTWVzc2FnZUVsZW1lbnQobWVzc2FnZSwgcm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UoaG9zdEVsZW1lbnQsIGtleSkpIHtcbiAgICAgIHRoaXMuX2FkZE1lc3NhZ2VSZWZlcmVuY2UoaG9zdEVsZW1lbnQsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbW92ZXMgdGhlIGhvc3QgZWxlbWVudCdzIGFyaWEtZGVzY3JpYmVkYnkgcmVmZXJlbmNlIHRvIHRoZSBtZXNzYWdlLiAqL1xuICByZW1vdmVEZXNjcmlwdGlvbihob3N0RWxlbWVudDogRWxlbWVudCwgbWVzc2FnZTogc3RyaW5nLCByb2xlPzogc3RyaW5nKTogdm9pZDtcblxuICAvKiogUmVtb3ZlcyB0aGUgaG9zdCBlbGVtZW50J3MgYXJpYS1kZXNjcmliZWRieSByZWZlcmVuY2UgdG8gdGhlIG1lc3NhZ2UgZWxlbWVudC4gKi9cbiAgcmVtb3ZlRGVzY3JpcHRpb24oaG9zdEVsZW1lbnQ6IEVsZW1lbnQsIG1lc3NhZ2U6IEhUTUxFbGVtZW50KTogdm9pZDtcblxuICByZW1vdmVEZXNjcmlwdGlvbihob3N0RWxlbWVudDogRWxlbWVudCwgbWVzc2FnZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQsIHJvbGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgIXRoaXMuX2lzRWxlbWVudE5vZGUoaG9zdEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gZ2V0S2V5KG1lc3NhZ2UsIHJvbGUpO1xuXG4gICAgaWYgKHRoaXMuX2lzRWxlbWVudERlc2NyaWJlZEJ5TWVzc2FnZShob3N0RWxlbWVudCwga2V5KSkge1xuICAgICAgdGhpcy5fcmVtb3ZlTWVzc2FnZVJlZmVyZW5jZShob3N0RWxlbWVudCwga2V5KTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBhIHN0cmluZywgaXQgbWVhbnMgdGhhdCBpdCdzIG9uZSB0aGF0IHdlIGNyZWF0ZWQgZm9yIHRoZVxuICAgIC8vIGNvbnN1bWVyIHNvIHdlIGNhbiByZW1vdmUgaXQgc2FmZWx5LCBvdGhlcndpc2Ugd2Ugc2hvdWxkIGxlYXZlIGl0IGluIHBsYWNlLlxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHJlZ2lzdGVyZWRNZXNzYWdlID0gdGhpcy5fbWVzc2FnZVJlZ2lzdHJ5LmdldChrZXkpO1xuICAgICAgaWYgKHJlZ2lzdGVyZWRNZXNzYWdlICYmIHJlZ2lzdGVyZWRNZXNzYWdlLnJlZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICAgIHRoaXMuX2RlbGV0ZU1lc3NhZ2VFbGVtZW50KGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX21lc3NhZ2VzQ29udGFpbmVyPy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fbWVzc2FnZXNDb250YWluZXIucmVtb3ZlKCk7XG4gICAgICB0aGlzLl9tZXNzYWdlc0NvbnRhaW5lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIFVucmVnaXN0ZXJzIGFsbCBjcmVhdGVkIG1lc3NhZ2UgZWxlbWVudHMgYW5kIHJlbW92ZXMgdGhlIG1lc3NhZ2UgY29udGFpbmVyLiAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBkZXNjcmliZWRFbGVtZW50cyA9IHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICBgWyR7Q0RLX0RFU0NSSUJFREJZX0hPU1RfQVRUUklCVVRFfT1cIiR7dGhpcy5faWR9XCJdYCxcbiAgICApO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXNjcmliZWRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5fcmVtb3ZlQ2RrRGVzY3JpYmVkQnlSZWZlcmVuY2VJZHMoZGVzY3JpYmVkRWxlbWVudHNbaV0pO1xuICAgICAgZGVzY3JpYmVkRWxlbWVudHNbaV0ucmVtb3ZlQXR0cmlidXRlKENES19ERVNDUklCRURCWV9IT1NUX0FUVFJJQlVURSk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWVzc2FnZXNDb250YWluZXI/LnJlbW92ZSgpO1xuICAgIHRoaXMuX21lc3NhZ2VzQ29udGFpbmVyID0gbnVsbDtcbiAgICB0aGlzLl9tZXNzYWdlUmVnaXN0cnkuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGVsZW1lbnQgaW4gdGhlIHZpc3VhbGx5IGhpZGRlbiBtZXNzYWdlIGNvbnRhaW5lciBlbGVtZW50IHdpdGggdGhlIG1lc3NhZ2VcbiAgICogYXMgaXRzIGNvbnRlbnQgYW5kIGFkZHMgaXQgdG8gdGhlIG1lc3NhZ2UgcmVnaXN0cnkuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVNZXNzYWdlRWxlbWVudChtZXNzYWdlOiBzdHJpbmcsIHJvbGU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXNzYWdlRWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHNldE1lc3NhZ2VJZChtZXNzYWdlRWxlbWVudCwgdGhpcy5faWQpO1xuICAgIG1lc3NhZ2VFbGVtZW50LnRleHRDb250ZW50ID0gbWVzc2FnZTtcblxuICAgIGlmIChyb2xlKSB7XG4gICAgICBtZXNzYWdlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCByb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpO1xuICAgIHRoaXMuX21lc3NhZ2VzQ29udGFpbmVyIS5hcHBlbmRDaGlsZChtZXNzYWdlRWxlbWVudCk7XG4gICAgdGhpcy5fbWVzc2FnZVJlZ2lzdHJ5LnNldChnZXRLZXkobWVzc2FnZSwgcm9sZSksIHttZXNzYWdlRWxlbWVudCwgcmVmZXJlbmNlQ291bnQ6IDB9KTtcbiAgfVxuXG4gIC8qKiBEZWxldGVzIHRoZSBtZXNzYWdlIGVsZW1lbnQgZnJvbSB0aGUgZ2xvYmFsIG1lc3NhZ2VzIGNvbnRhaW5lci4gKi9cbiAgcHJpdmF0ZSBfZGVsZXRlTWVzc2FnZUVsZW1lbnQoa2V5OiBzdHJpbmcgfCBFbGVtZW50KSB7XG4gICAgdGhpcy5fbWVzc2FnZVJlZ2lzdHJ5LmdldChrZXkpPy5tZXNzYWdlRWxlbWVudD8ucmVtb3ZlKCk7XG4gICAgdGhpcy5fbWVzc2FnZVJlZ2lzdHJ5LmRlbGV0ZShrZXkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgdGhlIGdsb2JhbCBjb250YWluZXIgZm9yIGFsbCBhcmlhLWRlc2NyaWJlZGJ5IG1lc3NhZ2VzLiAqL1xuICBwcml2YXRlIF9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpIHtcbiAgICBpZiAodGhpcy5fbWVzc2FnZXNDb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXJDbGFzc05hbWUgPSAnY2RrLWRlc2NyaWJlZGJ5LW1lc3NhZ2UtY29udGFpbmVyJztcbiAgICBjb25zdCBzZXJ2ZXJDb250YWluZXJzID0gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgIGAuJHtjb250YWluZXJDbGFzc05hbWV9W3BsYXRmb3JtPVwic2VydmVyXCJdYCxcbiAgICApO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJ2ZXJDb250YWluZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBXaGVuIGdvaW5nIGZyb20gdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LCB3ZSBtYXkgZW5kIHVwIGluIGEgc2l0dWF0aW9uIHdoZXJlIHRoZXJlJ3NcbiAgICAgIC8vIGFscmVhZHkgYSBjb250YWluZXIgb24gdGhlIHBhZ2UsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgcmVmZXJlbmNlIHRvIGl0LiBDbGVhciB0aGVcbiAgICAgIC8vIG9sZCBjb250YWluZXIgc28gd2UgZG9uJ3QgZ2V0IGR1cGxpY2F0ZXMuIERvaW5nIHRoaXMsIGluc3RlYWQgb2YgZW1wdHlpbmcgdGhlIHByZXZpb3VzXG4gICAgICAvLyBjb250YWluZXIsIHNob3VsZCBiZSBzbGlnaHRseSBmYXN0ZXIuXG4gICAgICBzZXJ2ZXJDb250YWluZXJzW2ldLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2VzQ29udGFpbmVyID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICAvLyBXZSBhZGQgYHZpc2liaWxpdHk6IGhpZGRlbmAgaW4gb3JkZXIgdG8gcHJldmVudCB0ZXh0IGluIHRoaXMgY29udGFpbmVyIGZyb21cbiAgICAvLyBiZWluZyBzZWFyY2hhYmxlIGJ5IHRoZSBicm93c2VyJ3MgQ3RybCArIEYgZnVuY3Rpb25hbGl0eS5cbiAgICAvLyBTY3JlZW4tcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgdGhlIGRlc2NyaXB0aW9uIGZvciBlbGVtZW50cyB3aXRoIGFyaWEtZGVzY3JpYmVkYnkgZXZlblxuICAgIC8vIHdoZW4gdGhlIGRlc2NyaXB0aW9uIGVsZW1lbnQgaXMgbm90IHZpc2libGUuXG4gICAgbWVzc2FnZXNDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHVzZSBgdmlzaWJpbGl0eTogaGlkZGVuYCwgd2Ugc3RpbGwgYXBwbHkgYGNkay12aXN1YWxseS1oaWRkZW5gIHNvIHRoYXRcbiAgICAvLyB0aGUgZGVzY3JpcHRpb24gZWxlbWVudCBkb2Vzbid0IGltcGFjdCBwYWdlIGxheW91dC5cbiAgICBtZXNzYWdlc0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGNvbnRhaW5lckNsYXNzTmFtZSk7XG4gICAgbWVzc2FnZXNDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xuXG4gICAgLy8gQGJyZWFraW5nLWNoYW5nZSAxNC4wLjAgUmVtb3ZlIG51bGwgY2hlY2sgZm9yIGBfcGxhdGZvcm1gLlxuICAgIGlmICh0aGlzLl9wbGF0Zm9ybSAmJiAhdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICBtZXNzYWdlc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3BsYXRmb3JtJywgJ3NlcnZlcicpO1xuICAgIH1cblxuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVzc2FnZXNDb250YWluZXIpO1xuICAgIHRoaXMuX21lc3NhZ2VzQ29udGFpbmVyID0gbWVzc2FnZXNDb250YWluZXI7XG4gIH1cblxuICAvKiogUmVtb3ZlcyBhbGwgY2RrLWRlc2NyaWJlZGJ5IG1lc3NhZ2VzIHRoYXQgYXJlIGhvc3RlZCB0aHJvdWdoIHRoZSBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9yZW1vdmVDZGtEZXNjcmliZWRCeVJlZmVyZW5jZUlkcyhlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgLy8gUmVtb3ZlIGFsbCBhcmlhLWRlc2NyaWJlZGJ5IHJlZmVyZW5jZSBJRHMgdGhhdCBhcmUgcHJlZml4ZWQgYnkgQ0RLX0RFU0NSSUJFREJZX0lEX1BSRUZJWFxuICAgIGNvbnN0IG9yaWdpbmFsUmVmZXJlbmNlSWRzID0gZ2V0QXJpYVJlZmVyZW5jZUlkcyhlbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScpLmZpbHRlcihcbiAgICAgIGlkID0+IGlkLmluZGV4T2YoQ0RLX0RFU0NSSUJFREJZX0lEX1BSRUZJWCkgIT0gMCxcbiAgICApO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jywgb3JpZ2luYWxSZWZlcmVuY2VJZHMuam9pbignICcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbWVzc2FnZSByZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgdXNpbmcgYXJpYS1kZXNjcmliZWRieSBhbmQgaW5jcmVtZW50cyB0aGUgcmVnaXN0ZXJlZFxuICAgKiBtZXNzYWdlJ3MgcmVmZXJlbmNlIGNvdW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfYWRkTWVzc2FnZVJlZmVyZW5jZShlbGVtZW50OiBFbGVtZW50LCBrZXk6IHN0cmluZyB8IEVsZW1lbnQpIHtcbiAgICBjb25zdCByZWdpc3RlcmVkTWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VSZWdpc3RyeS5nZXQoa2V5KSE7XG5cbiAgICAvLyBBZGQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgcmVmZXJlbmNlIGFuZCBzZXQgdGhlXG4gICAgLy8gZGVzY3JpYmVkYnlfaG9zdCBhdHRyaWJ1dGUgdG8gbWFyayB0aGUgZWxlbWVudC5cbiAgICBhZGRBcmlhUmVmZXJlbmNlZElkKGVsZW1lbnQsICdhcmlhLWRlc2NyaWJlZGJ5JywgcmVnaXN0ZXJlZE1lc3NhZ2UubWVzc2FnZUVsZW1lbnQuaWQpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKENES19ERVNDUklCRURCWV9IT1NUX0FUVFJJQlVURSwgdGhpcy5faWQpO1xuICAgIHJlZ2lzdGVyZWRNZXNzYWdlLnJlZmVyZW5jZUNvdW50Kys7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1lc3NhZ2UgcmVmZXJlbmNlIGZyb20gdGhlIGVsZW1lbnQgdXNpbmcgYXJpYS1kZXNjcmliZWRieVxuICAgKiBhbmQgZGVjcmVtZW50cyB0aGUgcmVnaXN0ZXJlZCBtZXNzYWdlJ3MgcmVmZXJlbmNlIGNvdW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfcmVtb3ZlTWVzc2FnZVJlZmVyZW5jZShlbGVtZW50OiBFbGVtZW50LCBrZXk6IHN0cmluZyB8IEVsZW1lbnQpIHtcbiAgICBjb25zdCByZWdpc3RlcmVkTWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VSZWdpc3RyeS5nZXQoa2V5KSE7XG4gICAgcmVnaXN0ZXJlZE1lc3NhZ2UucmVmZXJlbmNlQ291bnQtLTtcblxuICAgIHJlbW92ZUFyaWFSZWZlcmVuY2VkSWQoZWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCByZWdpc3RlcmVkTWVzc2FnZS5tZXNzYWdlRWxlbWVudC5pZCk7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoQ0RLX0RFU0NSSUJFREJZX0hPU1RfQVRUUklCVVRFKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZGVzY3JpYmVkIGJ5IHRoZSBwcm92aWRlZCBtZXNzYWdlIElELiAqL1xuICBwcml2YXRlIF9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcgfCBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVmZXJlbmNlSWRzID0gZ2V0QXJpYVJlZmVyZW5jZUlkcyhlbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScpO1xuICAgIGNvbnN0IHJlZ2lzdGVyZWRNZXNzYWdlID0gdGhpcy5fbWVzc2FnZVJlZ2lzdHJ5LmdldChrZXkpO1xuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHJlZ2lzdGVyZWRNZXNzYWdlICYmIHJlZ2lzdGVyZWRNZXNzYWdlLm1lc3NhZ2VFbGVtZW50LmlkO1xuXG4gICAgcmV0dXJuICEhbWVzc2FnZUlkICYmIHJlZmVyZW5jZUlkcy5pbmRleE9mKG1lc3NhZ2VJZCkgIT0gLTE7XG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbWVzc2FnZSBjYW4gYmUgZGVzY3JpYmVkIG9uIGEgcGFydGljdWxhciBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9jYW5CZURlc2NyaWJlZChlbGVtZW50OiBFbGVtZW50LCBtZXNzYWdlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IHZvaWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2lzRWxlbWVudE5vZGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZSAmJiB0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIFdlJ2QgaGF2ZSB0byBtYWtlIHNvbWUgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGRlc2NyaXB0aW9uIGVsZW1lbnQncyB0ZXh0LCBpZiB0aGUgY29uc3VtZXJcbiAgICAgIC8vIHBhc3NlZCBpbiBhbiBlbGVtZW50LiBBc3N1bWUgdGhhdCBpZiBhbiBlbGVtZW50IGlzIHBhc3NlZCBpbiwgdGhlIGNvbnN1bWVyIGhhcyB2ZXJpZmllZFxuICAgICAgLy8gdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhIGRlc2NyaXB0aW9uLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSBtZXNzYWdlID09IG51bGwgPyAnJyA6IGAke21lc3NhZ2V9YC50cmltKCk7XG4gICAgY29uc3QgYXJpYUxhYmVsID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKTtcblxuICAgIC8vIFdlIHNob3VsZG4ndCBzZXQgZGVzY3JpcHRpb25zIGlmIHRoZXkncmUgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgYGFyaWEtbGFiZWxgIG9mIHRoZVxuICAgIC8vIGVsZW1lbnQsIGJlY2F1c2Ugc2NyZWVuIHJlYWRlcnMgd2lsbCBlbmQgdXAgcmVhZGluZyBvdXQgdGhlIHNhbWUgdGV4dCB0d2ljZSBpbiBhIHJvdy5cbiAgICByZXR1cm4gdHJpbW1lZE1lc3NhZ2UgPyAhYXJpYUxhYmVsIHx8IGFyaWFMYWJlbC50cmltKCkgIT09IHRyaW1tZWRNZXNzYWdlIDogZmFsc2U7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgYSBub2RlIGlzIGFuIEVsZW1lbnQgbm9kZS4gKi9cbiAgcHJpdmF0ZSBfaXNFbGVtZW50Tm9kZShlbGVtZW50OiBOb2RlKTogZWxlbWVudCBpcyBFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudC5ub2RlVHlwZSA9PT0gdGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFO1xuICB9XG59XG5cbi8qKiBHZXRzIGEga2V5IHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9vayBtZXNzYWdlcyB1cCBpbiB0aGUgcmVnaXN0cnkuICovXG5mdW5jdGlvbiBnZXRLZXkobWVzc2FnZTogc3RyaW5nIHwgRWxlbWVudCwgcm9sZT86IHN0cmluZyk6IHN0cmluZyB8IEVsZW1lbnQge1xuICByZXR1cm4gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnID8gYCR7cm9sZSB8fCAnJ30vJHttZXNzYWdlfWAgOiBtZXNzYWdlO1xufVxuXG4vKiogQXNzaWducyBhIHVuaXF1ZSBJRCB0byBhbiBlbGVtZW50LCBpZiBpdCBkb2Vzbid0IGhhdmUgb25lIGFscmVhZHkuICovXG5mdW5jdGlvbiBzZXRNZXNzYWdlSWQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHNlcnZpY2VJZDogc3RyaW5nKSB7XG4gIGlmICghZWxlbWVudC5pZCkge1xuICAgIGVsZW1lbnQuaWQgPSBgJHtDREtfREVTQ1JJQkVEQllfSURfUFJFRklYfS0ke3NlcnZpY2VJZH0tJHtuZXh0SWQrK31gO1xuICB9XG59XG4iXX0=
@@ -1,47 +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
- /** IDs are delimited by an empty space, as per the spec. */
9
- const ID_DELIMITER = ' ';
10
- /**
11
- * Adds the given ID to the specified ARIA attribute on an element.
12
- * Used for attributes such as aria-labelledby, aria-owns, etc.
13
- */
14
- export function addAriaReferencedId(el, attr, id) {
15
- const ids = getAriaReferenceIds(el, attr);
16
- id = id.trim();
17
- if (ids.some(existingId => existingId.trim() === id)) {
18
- return;
19
- }
20
- ids.push(id);
21
- el.setAttribute(attr, ids.join(ID_DELIMITER));
22
- }
23
- /**
24
- * Removes the given ID from the specified ARIA attribute on an element.
25
- * Used for attributes such as aria-labelledby, aria-owns, etc.
26
- */
27
- export function removeAriaReferencedId(el, attr, id) {
28
- const ids = getAriaReferenceIds(el, attr);
29
- id = id.trim();
30
- const filteredIds = ids.filter(val => val !== id);
31
- if (filteredIds.length) {
32
- el.setAttribute(attr, filteredIds.join(ID_DELIMITER));
33
- }
34
- else {
35
- el.removeAttribute(attr);
36
- }
37
- }
38
- /**
39
- * Gets the list of IDs referenced by the given ARIA attribute on an element.
40
- * Used for attributes such as aria-labelledby, aria-owns, etc.
41
- */
42
- export function getAriaReferenceIds(el, attr) {
43
- // Get string array of all individual ids (whitespace delimited) in the attribute value
44
- const attrValue = el.getAttribute(attr);
45
- return attrValue?.match(/\S+/g) ?? [];
46
- }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpYS1yZWZlcmVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2ExMXkvYXJpYS1kZXNjcmliZXIvYXJpYS1yZWZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNERBQTREO0FBQzVELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQztBQUV6Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFBVyxFQUFFLElBQXNCLEVBQUUsRUFBVTtJQUNqRixNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELE9BQU87SUFDVCxDQUFDO0lBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUViLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEVBQVcsRUFBRSxJQUFzQixFQUFFLEVBQVU7SUFDcEYsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRWxELElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO1NBQU0sQ0FBQztRQUNOLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFBVyxFQUFFLElBQVk7SUFDM0QsdUZBQXVGO0lBQ3ZGLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsT0FBTyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBJRHMgYXJlIGRlbGltaXRlZCBieSBhbiBlbXB0eSBzcGFjZSwgYXMgcGVyIHRoZSBzcGVjLiAqL1xuY29uc3QgSURfREVMSU1JVEVSID0gJyAnO1xuXG4vKipcbiAqIEFkZHMgdGhlIGdpdmVuIElEIHRvIHRoZSBzcGVjaWZpZWQgQVJJQSBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudC5cbiAqIFVzZWQgZm9yIGF0dHJpYnV0ZXMgc3VjaCBhcyBhcmlhLWxhYmVsbGVkYnksIGFyaWEtb3ducywgZXRjLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQXJpYVJlZmVyZW5jZWRJZChlbDogRWxlbWVudCwgYXR0cjogYGFyaWEtJHtzdHJpbmd9YCwgaWQ6IHN0cmluZykge1xuICBjb25zdCBpZHMgPSBnZXRBcmlhUmVmZXJlbmNlSWRzKGVsLCBhdHRyKTtcbiAgaWQgPSBpZC50cmltKCk7XG4gIGlmIChpZHMuc29tZShleGlzdGluZ0lkID0+IGV4aXN0aW5nSWQudHJpbSgpID09PSBpZCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWRzLnB1c2goaWQpO1xuXG4gIGVsLnNldEF0dHJpYnV0ZShhdHRyLCBpZHMuam9pbihJRF9ERUxJTUlURVIpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBJRCBmcm9tIHRoZSBzcGVjaWZpZWQgQVJJQSBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudC5cbiAqIFVzZWQgZm9yIGF0dHJpYnV0ZXMgc3VjaCBhcyBhcmlhLWxhYmVsbGVkYnksIGFyaWEtb3ducywgZXRjLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQXJpYVJlZmVyZW5jZWRJZChlbDogRWxlbWVudCwgYXR0cjogYGFyaWEtJHtzdHJpbmd9YCwgaWQ6IHN0cmluZykge1xuICBjb25zdCBpZHMgPSBnZXRBcmlhUmVmZXJlbmNlSWRzKGVsLCBhdHRyKTtcbiAgaWQgPSBpZC50cmltKCk7XG4gIGNvbnN0IGZpbHRlcmVkSWRzID0gaWRzLmZpbHRlcih2YWwgPT4gdmFsICE9PSBpZCk7XG5cbiAgaWYgKGZpbHRlcmVkSWRzLmxlbmd0aCkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCBmaWx0ZXJlZElkcy5qb2luKElEX0RFTElNSVRFUikpO1xuICB9IGVsc2Uge1xuICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShhdHRyKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIGxpc3Qgb2YgSURzIHJlZmVyZW5jZWQgYnkgdGhlIGdpdmVuIEFSSUEgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQuXG4gKiBVc2VkIGZvciBhdHRyaWJ1dGVzIHN1Y2ggYXMgYXJpYS1sYWJlbGxlZGJ5LCBhcmlhLW93bnMsIGV0Yy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFyaWFSZWZlcmVuY2VJZHMoZWw6IEVsZW1lbnQsIGF0dHI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgLy8gR2V0IHN0cmluZyBhcnJheSBvZiBhbGwgaW5kaXZpZHVhbCBpZHMgKHdoaXRlc3BhY2UgZGVsaW1pdGVkKSBpbiB0aGUgYXR0cmlidXRlIHZhbHVlXG4gIGNvbnN0IGF0dHJWYWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyKTtcbiAgcmV0dXJuIGF0dHJWYWx1ZT8ubWF0Y2goL1xcUysvZykgPz8gW107XG59XG4iXX0=
@@ -1,29 +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
- /** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */
9
- export function isFakeMousedownFromScreenReader(event) {
10
- // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on
11
- // a clickable element. We can distinguish these events when `event.buttons` is zero, or
12
- // `event.detail` is zero depending on the browser:
13
- // - `event.buttons` works on Firefox, but fails on Chrome.
14
- // - `detail` works on Chrome, but fails on Firefox.
15
- return event.buttons === 0 || event.detail === 0;
16
- }
17
- /** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */
18
- export function isFakeTouchstartFromScreenReader(event) {
19
- const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);
20
- // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`
21
- // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,
22
- // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10
23
- // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.
24
- return (!!touch &&
25
- touch.identifier === -1 &&
26
- (touch.radiusX == null || touch.radiusX === 1) &&
27
- (touch.radiusY == null || touch.radiusY === 1));
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS1ldmVudC1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2ExMXkvZmFrZS1ldmVudC1kZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsOEZBQThGO0FBQzlGLE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxLQUFpQjtJQUMvRCw2RkFBNkY7SUFDN0Ysd0ZBQXdGO0lBQ3hGLG1EQUFtRDtJQUNuRCwyREFBMkQ7SUFDM0Qsb0RBQW9EO0lBQ3BELE9BQU8sS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELCtGQUErRjtBQUMvRixNQUFNLFVBQVUsZ0NBQWdDLENBQUMsS0FBaUI7SUFDaEUsTUFBTSxLQUFLLEdBQ1QsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNGLDBGQUEwRjtJQUMxRiw0RkFBNEY7SUFDNUYsK0ZBQStGO0lBQy9GLCtFQUErRTtJQUMvRSxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7UUFDUCxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FDL0MsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqIEdldHMgd2hldGhlciBhbiBldmVudCBjb3VsZCBiZSBhIGZha2VkIGBtb3VzZWRvd25gIGV2ZW50IGRpc3BhdGNoZWQgYnkgYSBzY3JlZW4gcmVhZGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgLy8gU29tZSBzY3JlZW4gcmVhZGVycyB3aWxsIGRpc3BhdGNoIGEgZmFrZSBgbW91c2Vkb3duYCBldmVudCB3aGVuIHByZXNzaW5nIGVudGVyIG9yIHNwYWNlIG9uXG4gIC8vIGEgY2xpY2thYmxlIGVsZW1lbnQuIFdlIGNhbiBkaXN0aW5ndWlzaCB0aGVzZSBldmVudHMgd2hlbiBgZXZlbnQuYnV0dG9uc2AgaXMgemVybywgb3JcbiAgLy8gYGV2ZW50LmRldGFpbGAgaXMgemVybyBkZXBlbmRpbmcgb24gdGhlIGJyb3dzZXI6XG4gIC8vIC0gYGV2ZW50LmJ1dHRvbnNgIHdvcmtzIG9uIEZpcmVmb3gsIGJ1dCBmYWlscyBvbiBDaHJvbWUuXG4gIC8vIC0gYGRldGFpbGAgd29ya3Mgb24gQ2hyb21lLCBidXQgZmFpbHMgb24gRmlyZWZveC5cbiAgcmV0dXJuIGV2ZW50LmJ1dHRvbnMgPT09IDAgfHwgZXZlbnQuZGV0YWlsID09PSAwO1xufVxuXG4vKiogR2V0cyB3aGV0aGVyIGFuIGV2ZW50IGNvdWxkIGJlIGEgZmFrZWQgYHRvdWNoc3RhcnRgIGV2ZW50IGRpc3BhdGNoZWQgYnkgYSBzY3JlZW4gcmVhZGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyKGV2ZW50OiBUb3VjaEV2ZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHRvdWNoOiBUb3VjaCB8IHVuZGVmaW5lZCA9XG4gICAgKGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlc1swXSkgfHwgKGV2ZW50LmNoYW5nZWRUb3VjaGVzICYmIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKTtcblxuICAvLyBBIGZha2UgYHRvdWNoc3RhcnRgIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20gYSByZWFsIG9uZSBieSBsb29raW5nIGF0IHRoZSBgaWRlbnRpZmllcmBcbiAgLy8gd2hpY2ggaXMgdHlwaWNhbGx5ID49IDAgb24gYSByZWFsIGRldmljZSB2ZXJzdXMgLTEgZnJvbSBhIHNjcmVlbiByZWFkZXIuIEp1c3QgdG8gYmUgc2FmZSxcbiAgLy8gd2UgY2FuIGFsc28gbG9vayBhdCBgcmFkaXVzWGAgYW5kIGByYWRpdXNZYC4gVGhpcyBiZWhhdmlvciB3YXMgb2JzZXJ2ZWQgYWdhaW5zdCBhIFdpbmRvd3MgMTBcbiAgLy8gZGV2aWNlIHdpdGggYSB0b3VjaCBzY3JlZW4gcnVubmluZyBOVkRBIHYyMDIwLjQgYW5kIEZpcmVmb3ggODUgb3IgQ2hyb21lIDg4LlxuICByZXR1cm4gKFxuICAgICEhdG91Y2ggJiZcbiAgICB0b3VjaC5pZGVudGlmaWVyID09PSAtMSAmJlxuICAgICh0b3VjaC5yYWRpdXNYID09IG51bGwgfHwgdG91Y2gucmFkaXVzWCA9PT0gMSkgJiZcbiAgICAodG91Y2gucmFkaXVzWSA9PSBudWxsIHx8IHRvdWNoLnJhZGl1c1kgPT09IDEpXG4gICk7XG59XG4iXX0=