@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
@@ -1,97 +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 { getNoKeysSpecifiedError } from '@angular/cdk/testing';
9
- import { PERIOD } from '@angular/cdk/keycodes';
10
- import { dispatchFakeEvent, dispatchKeyboardEvent } from './dispatch-events';
11
- import { triggerFocus } from './element-focus';
12
- /** Input types for which the value can be entered incrementally. */
13
- const incrementalInputTypes = new Set([
14
- 'text',
15
- 'email',
16
- 'hidden',
17
- 'password',
18
- 'search',
19
- 'tel',
20
- 'url',
21
- ]);
22
- /**
23
- * Checks whether the given Element is a text input element.
24
- * @docs-private
25
- */
26
- export function isTextInput(element) {
27
- const nodeName = element.nodeName.toLowerCase();
28
- return nodeName === 'input' || nodeName === 'textarea';
29
- }
30
- export function typeInElement(element, ...modifiersAndKeys) {
31
- const first = modifiersAndKeys[0];
32
- let modifiers;
33
- let rest;
34
- if (first !== undefined &&
35
- typeof first !== 'string' &&
36
- first.keyCode === undefined &&
37
- first.key === undefined) {
38
- modifiers = first;
39
- rest = modifiersAndKeys.slice(1);
40
- }
41
- else {
42
- modifiers = {};
43
- rest = modifiersAndKeys;
44
- }
45
- const isInput = isTextInput(element);
46
- const inputType = element.getAttribute('type') || 'text';
47
- const keys = rest
48
- .map(k => typeof k === 'string'
49
- ? k.split('').map(c => ({ keyCode: c.toUpperCase().charCodeAt(0), key: c }))
50
- : [k])
51
- .reduce((arr, k) => arr.concat(k), []);
52
- // Throw an error if no keys have been specified. Calling this function with no
53
- // keys should not result in a focus event being dispatched unexpectedly.
54
- if (keys.length === 0) {
55
- throw getNoKeysSpecifiedError();
56
- }
57
- // We simulate the user typing in a value by incrementally assigning the value below. The problem
58
- // is that for some input types, the browser won't allow for an invalid value to be set via the
59
- // `value` property which will always be the case when going character-by-character. If we detect
60
- // such an input, we have to set the value all at once or listeners to the `input` event (e.g.
61
- // the `ReactiveFormsModule` uses such an approach) won't receive the correct value.
62
- const enterValueIncrementally = inputType === 'number'
63
- ? // The value can be set character by character in number inputs if it doesn't have any decimals.
64
- keys.every(key => key.key !== '.' && key.key !== '-' && key.keyCode !== PERIOD)
65
- : incrementalInputTypes.has(inputType);
66
- triggerFocus(element);
67
- // When we aren't entering the value incrementally, assign it all at once ahead
68
- // of time so that any listeners to the key events below will have access to it.
69
- if (!enterValueIncrementally) {
70
- element.value = keys.reduce((value, key) => value + (key.key || ''), '');
71
- }
72
- for (const key of keys) {
73
- dispatchKeyboardEvent(element, 'keydown', key.keyCode, key.key, modifiers);
74
- dispatchKeyboardEvent(element, 'keypress', key.keyCode, key.key, modifiers);
75
- if (isInput && key.key && key.key.length === 1) {
76
- if (enterValueIncrementally) {
77
- element.value += key.key;
78
- dispatchFakeEvent(element, 'input');
79
- }
80
- }
81
- dispatchKeyboardEvent(element, 'keyup', key.keyCode, key.key, modifiers);
82
- }
83
- // Since we weren't dispatching `input` events while sending the keys, we have to do it now.
84
- if (!enterValueIncrementally) {
85
- dispatchFakeEvent(element, 'input');
86
- }
87
- }
88
- /**
89
- * Clears the text in an input or textarea element.
90
- * @docs-private
91
- */
92
- export function clearElement(element) {
93
- triggerFocus(element);
94
- element.value = '';
95
- dispatchFakeEvent(element, 'input');
96
- }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1pbi1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90ZXN0aW5nL3Rlc3RiZWQvZmFrZS1ldmVudHMvdHlwZS1pbi1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyx1QkFBdUIsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0Msb0VBQW9FO0FBQ3BFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDcEMsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFFBQVE7SUFDUixLQUFLO0lBQ0wsS0FBSztDQUNOLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxPQUFPLFFBQVEsS0FBSyxPQUFPLElBQUksUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUN6RCxDQUFDO0FBNEJELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0IsRUFBRSxHQUFHLGdCQUF1QjtJQUM1RSxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLFNBQXVCLENBQUM7SUFDNUIsSUFBSSxJQUFtRCxDQUFDO0lBQ3hELElBQ0UsS0FBSyxLQUFLLFNBQVM7UUFDbkIsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFD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QUUsT0FBTyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7UUFDRCxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsNEZBQTRGO0lBQzVGLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzdCLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBK0M7SUFDMUUsWUFBWSxDQUFDLE9BQXNCLENBQUMsQ0FBQztJQUNyQyxPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNuQixpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2dldE5vS2V5c1NwZWNpZmllZEVycm9yLCBNb2RpZmllcktleXN9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7UEVSSU9EfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtkaXNwYXRjaEZha2VFdmVudCwgZGlzcGF0Y2hLZXlib2FyZEV2ZW50fSBmcm9tICcuL2Rpc3BhdGNoLWV2ZW50cyc7XG5pbXBvcnQge3RyaWdnZXJGb2N1c30gZnJvbSAnLi9lbGVtZW50LWZvY3VzJztcblxuLyoqIElucHV0IHR5cGVzIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIGVudGVyZWQgaW5jcmVtZW50YWxseS4gKi9cbmNvbnN0IGluY3JlbWVudGFsSW5wdXRUeXBlcyA9IG5ldyBTZXQoW1xuICAndGV4dCcsXG4gICdlbWFpbCcsXG4gICdoaWRkZW4nLFxuICAncGFzc3dvcmQnLFxuICAnc2VhcmNoJyxcbiAgJ3RlbCcsXG4gICd1cmwnLFxuXSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEVsZW1lbnQgaXMgYSB0ZXh0IGlucHV0IGVsZW1lbnQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRJbnB1dChlbGVtZW50OiBFbGVtZW50KTogZWxlbWVudCBpcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gIGNvbnN0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbm9kZU5hbWUgPT09ICdpbnB1dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYSc7XG59XG5cbi8qKlxuICogSWYga2V5cyBoYXZlIGJlZW4gc3BlY2lmaWVkLCBmb2N1c2VzIGFuIGlucHV0LCBzZXRzIGl0cyB2YWx1ZSBhbmQgZGlzcGF0Y2hlc1xuICogdGhlIGBpbnB1dGAgZXZlbnQsIHNpbXVsYXRpbmcgdGhlIHVzZXIgdHlwaW5nLlxuICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCBvbnRvIHdoaWNoIHRvIHNldCB0aGUgdmFsdWUuXG4gKiBAcGFyYW0ga2V5cyBUaGUga2V5cyB0byBzZW5kIHRvIHRoZSBlbGVtZW50LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZUluRWxlbWVudChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIC4uLmtleXM6IChzdHJpbmcgfCB7a2V5Q29kZT86IG51bWJlcjsga2V5Pzogc3RyaW5nfSlbXVxuKTogdm9pZDtcblxuLyoqXG4gKiBJZiBrZXlzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIGZvY3VzZXMgYW4gaW5wdXQsIHNldHMgaXRzIHZhbHVlIGFuZCBkaXNwYXRjaGVzXG4gKiB0aGUgYGlucHV0YCBldmVudCwgc2ltdWxhdGluZyB0aGUgdXNlciB0eXBpbmcuXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IG9udG8gd2hpY2ggdG8gc2V0IHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtb2RpZmllcnMgTW9kaWZpZXIga2V5cyB0aGF0IGFyZSBoZWxkIHdoaWxlIHR5cGluZy5cbiAqIEBwYXJhbSBrZXlzIFRoZSBrZXlzIHRvIHNlbmQgdG8gdGhlIGVsZW1lbnQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlSW5FbGVtZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgbW9kaWZpZXJzOiBNb2RpZmllcktleXMsXG4gIC4uLmtleXM6IChzdHJpbmcgfCB7a2V5Q29kZT86IG51bWJlcjsga2V5Pzogc3RyaW5nfSlbXVxuKTogdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVJbkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIC4uLm1vZGlmaWVyc0FuZEtleXM6IGFueVtdKSB7XG4gIGNvbnN0IGZpcnN0ID0gbW9kaWZpZXJzQW5kS2V5c1swXTtcbiAgbGV0IG1vZGlmaWVyczogTW9kaWZpZXJLZXlzO1xuICBsZXQgcmVzdDogKHN0cmluZyB8IHtrZXlDb2RlPzogbnVtYmVyOyBrZXk/OiBzdHJpbmd9KVtdO1xuICBpZiAoXG4gICAgZmlyc3QgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBmaXJzdCAhPT0gJ3N0cmluZycgJiZcbiAgICBmaXJzdC5rZXlDb2RlID09PSB1bmRlZmluZWQgJiZcbiAgICBmaXJzdC5rZXkgPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBtb2RpZmllcnMgPSBmaXJzdDtcbiAgICByZXN0ID0gbW9kaWZpZXJzQW5kS2V5cy5zbGljZSgxKTtcbiAgfSBlbHNlIHtcbiAgICBtb2RpZmllcnMgPSB7fTtcbiAgICByZXN0ID0gbW9kaWZpZXJzQW5kS2V5cztcbiAgfVxuICBjb25zdCBpc0lucHV0ID0gaXNUZXh0SW5wdXQoZWxlbWVudCk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgfHwgJ3RleHQnO1xuICBjb25zdCBrZXlzOiB7a2V5Q29kZT86IG51bWJlcjsga2V5Pzogc3RyaW5nfVtdID0gcmVzdFxuICAgIC5tYXAoayA9PlxuICAgICAgdHlwZW9mIGsgPT09ICdzdHJpbmcnXG4gICAgICAgID8gay5zcGxpdCgnJykubWFwKGMgPT4gKHtrZXlDb2RlOiBjLnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKSwga2V5OiBjfSkpXG4gICAgICAgIDogW2tdLFxuICAgIClcbiAgICAucmVkdWNlKChhcnIsIGspID0+IGFyci5jb25jYXQoayksIFtdKTtcblxuICAvLyBUaHJvdyBhbiBlcnJvciBpZiBubyBrZXlzIGhhdmUgYmVlbiBzcGVjaWZpZWQuIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIG5vXG4gIC8vIGtleXMgc2hvdWxkIG5vdCByZXN1bHQgaW4gYSBmb2N1cyBldmVudCBiZWluZyBkaXNwYXRjaGVkIHVuZXhwZWN0ZWRseS5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgZ2V0Tm9LZXlzU3BlY2lmaWVkRXJyb3IoKTtcbiAgfVxuXG4gIC8vIFdlIHNpbXVsYXRlIHRoZSB1c2VyIHR5cGluZyBpbiBhIHZhbHVlIGJ5IGluY3JlbWVudGFsbHkgYXNzaWduaW5nIHRoZSB2YWx1ZSBiZWxvdy4gVGhlIHByb2JsZW1cbiAgLy8gaXMgdGhhdCBmb3Igc29tZSBpbnB1dCB0eXBlcywgdGhlIGJyb3dzZXIgd29uJ3QgYWxsb3cgZm9yIGFuIGludmFsaWQgdmFsdWUgdG8gYmUgc2V0IHZpYSB0aGVcbiAgLy8gYHZhbHVlYCBwcm9wZXJ0eSB3aGljaCB3aWxsIGFsd2F5cyBiZSB0aGUgY2FzZSB3aGVuIGdvaW5nIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIuIElmIHdlIGRldGVjdFxuICAvLyBzdWNoIGFuIGlucHV0LCB3ZSBoYXZlIHRvIHNldCB0aGUgdmFsdWUgYWxsIGF0IG9uY2Ugb3IgbGlzdGVuZXJzIHRvIHRoZSBgaW5wdXRgIGV2ZW50IChlLmcuXG4gIC8vIHRoZSBgUmVhY3RpdmVGb3Jtc01vZHVsZWAgdXNlcyBzdWNoIGFuIGFwcHJvYWNoKSB3b24ndCByZWNlaXZlIHRoZSBjb3JyZWN0IHZhbHVlLlxuICBjb25zdCBlbnRlclZhbHVlSW5jcmVtZW50YWxseSA9XG4gICAgaW5wdXRUeXBlID09PSAnbnVtYmVyJ1xuICAgICAgPyAvLyBUaGUgdmFsdWUgY2FuIGJlIHNldCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIGluIG51bWJlciBpbnB1dHMgaWYgaXQgZG9lc24ndCBoYXZlIGFueSBkZWNpbWFscy5cbiAgICAgICAga2V5cy5ldmVyeShrZXkgPT4ga2V5LmtleSAhPT0gJy4nICYmIGtleS5rZXkgIT09ICctJyAmJiBrZXkua2V5Q29kZSAhPT0gUEVSSU9EKVxuICAgICAgOiBpbmNyZW1lbnRhbElucHV0VHlwZXMuaGFzKGlucHV0VHlwZSk7XG5cbiAgdHJpZ2dlckZvY3VzKGVsZW1lbnQpO1xuXG4gIC8vIFdoZW4gd2UgYXJlbid0IGVudGVyaW5nIHRoZSB2YWx1ZSBpbmNyZW1lbnRhbGx5LCBhc3NpZ24gaXQgYWxsIGF0IG9uY2UgYWhlYWRcbiAgLy8gb2YgdGltZSBzbyB0aGF0IGFueSBsaXN0ZW5lcnMgdG8gdGhlIGtleSBldmVudHMgYmVsb3cgd2lsbCBoYXZlIGFjY2VzcyB0byBpdC5cbiAgaWYgKCFlbnRlclZhbHVlSW5jcmVtZW50YWxseSkge1xuICAgIChlbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlID0ga2V5cy5yZWR1Y2UoKHZhbHVlLCBrZXkpID0+IHZhbHVlICsgKGtleS5rZXkgfHwgJycpLCAnJyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgZGlzcGF0Y2hLZXlib2FyZEV2ZW50KGVsZW1lbnQsICdrZXlkb3duJywga2V5LmtleUNvZGUsIGtleS5rZXksIG1vZGlmaWVycyk7XG4gICAgZGlzcGF0Y2hLZXlib2FyZEV2ZW50KGVsZW1lbnQsICdrZXlwcmVzcycsIGtleS5rZXlDb2RlLCBrZXkua2V5LCBtb2RpZmllcnMpO1xuICAgIGlmIChpc0lucHV0ICYmIGtleS5rZXkgJiYga2V5LmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChlbnRlclZhbHVlSW5jcmVtZW50YWxseSkge1xuICAgICAgICAoZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWUgKz0ga2V5LmtleTtcbiAgICAgICAgZGlzcGF0Y2hGYWtlRXZlbnQoZWxlbWVudCwgJ2lucHV0Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIGRpc3BhdGNoS2V5Ym9hcmRFdmVudChlbGVtZW50LCAna2V5dXAnLCBrZXkua2V5Q29kZSwga2V5LmtleSwgbW9kaWZpZXJzKTtcbiAgfVxuXG4gIC8vIFNpbmNlIHdlIHdlcmVuJ3QgZGlzcGF0Y2hpbmcgYGlucHV0YCBldmVudHMgd2hpbGUgc2VuZGluZyB0aGUga2V5cywgd2UgaGF2ZSB0byBkbyBpdCBub3cuXG4gIGlmICghZW50ZXJWYWx1ZUluY3JlbWVudGFsbHkpIHtcbiAgICBkaXNwYXRjaEZha2VFdmVudChlbGVtZW50LCAnaW5wdXQnKTtcbiAgfVxufVxuXG4vKipcbiAqIENsZWFycyB0aGUgdGV4dCBpbiBhbiBpbnB1dCBvciB0ZXh0YXJlYSBlbGVtZW50LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJFbGVtZW50KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XG4gIHRyaWdnZXJGb2N1cyhlbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICBkaXNwYXRjaEZha2VFdmVudChlbGVtZW50LCAnaW5wdXQnKTtcbn1cbiJdfQ==
@@ -1,9 +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
- export * from './public-api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3Rlc3RpbmcvdGVzdGJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,10 +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
- export * from './testbed-harness-environment';
9
- export * from './unit-test-element';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvdGVzdGluZy90ZXN0YmVkL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vdGVzdGJlZC1oYXJuZXNzLWVudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdW5pdC10ZXN0LWVsZW1lbnQnO1xuIl19
@@ -1,82 +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 { BehaviorSubject } from 'rxjs';
9
- /** Unique symbol that is used to patch a property to a proxy zone. */
10
- const stateObservableSymbol = Symbol('ProxyZone_PATCHED#stateObservable');
11
- /**
12
- * Interceptor that can be set up in a `ProxyZone` instance. The interceptor
13
- * will keep track of the task state and emit whenever the state changes.
14
- *
15
- * This serves as a workaround for https://github.com/angular/angular/issues/32896.
16
- */
17
- export class TaskStateZoneInterceptor {
18
- constructor(_lastState) {
19
- this._lastState = _lastState;
20
- /** Subject that can be used to emit a new state change. */
21
- this._stateSubject = new BehaviorSubject(this._lastState ? this._getTaskStateFromInternalZoneState(this._lastState) : { stable: true });
22
- /** Public observable that emits whenever the task state changes. */
23
- this.state = this._stateSubject;
24
- }
25
- /** This will be called whenever the task state changes in the intercepted zone. */
26
- onHasTask(delegate, current, target, hasTaskState) {
27
- if (current === target) {
28
- this._stateSubject.next(this._getTaskStateFromInternalZoneState(hasTaskState));
29
- }
30
- }
31
- /** Gets the task state from the internal ZoneJS task state. */
32
- _getTaskStateFromInternalZoneState(state) {
33
- return { stable: !state.macroTask && !state.microTask };
34
- }
35
- /**
36
- * Sets up the custom task state Zone interceptor in the `ProxyZone`. Throws if
37
- * no `ProxyZone` could be found.
38
- * @returns an observable that emits whenever the task state changes.
39
- */
40
- static setup() {
41
- if (Zone === undefined) {
42
- throw Error('Could not find ZoneJS. For test harnesses running in TestBed, ' +
43
- 'ZoneJS needs to be installed.');
44
- }
45
- // tslint:disable-next-line:variable-name
46
- const ProxyZoneSpec = Zone['ProxyZoneSpec'];
47
- // If there is no "ProxyZoneSpec" installed, we throw an error and recommend
48
- // setting up the proxy zone by pulling in the testing bundle.
49
- if (!ProxyZoneSpec) {
50
- throw Error('ProxyZoneSpec is needed for the test harnesses but could not be found. ' +
51
- 'Please make sure that your environment includes zone.js/dist/zone-testing.js');
52
- }
53
- // Ensure that there is a proxy zone instance set up, and get
54
- // a reference to the instance if present.
55
- const zoneSpec = ProxyZoneSpec.assertPresent();
56
- // If there already is a delegate registered in the proxy zone, and it
57
- // is type of the custom task state interceptor, we just use that state
58
- // observable. This allows us to only intercept Zone once per test
59
- // (similar to how `fakeAsync` or `async` work).
60
- if (zoneSpec[stateObservableSymbol]) {
61
- return zoneSpec[stateObservableSymbol];
62
- }
63
- // Since we intercept on environment creation and the fixture has been
64
- // created before, we might have missed tasks scheduled before. Fortunately
65
- // the proxy zone keeps track of the previous task state, so we can just pass
66
- // this as initial state to the task zone interceptor.
67
- const interceptor = new TaskStateZoneInterceptor(zoneSpec.lastTaskState);
68
- const zoneSpecOnHasTask = zoneSpec.onHasTask.bind(zoneSpec);
69
- // We setup the task state interceptor in the `ProxyZone`. Note that we cannot register
70
- // the interceptor as a new proxy zone delegate because it would mean that other zone
71
- // delegates (e.g. `FakeAsyncTestZone` or `AsyncTestZone`) can accidentally overwrite/disable
72
- // our interceptor. Since we just intend to monitor the task state of the proxy zone, it is
73
- // sufficient to just patch the proxy zone. This also avoids that we interfere with the task
74
- // queue scheduling logic.
75
- zoneSpec.onHasTask = function (...args) {
76
- zoneSpecOnHasTask(...args);
77
- interceptor.onHasTask(...args);
78
- };
79
- return (zoneSpec[stateObservableSymbol] = interceptor.state);
80
- }
81
- }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1zdGF0ZS16b25lLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90ZXN0aW5nL3Rlc3RiZWQvdGFzay1zdGF0ZS16b25lLWludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFTakQsc0VBQXNFO0FBQ3RFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFPMUU7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQW9CLFVBQStCO1FBQS9CLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBUm5ELDJEQUEyRDtRQUMxQyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FDNUYsQ0FBQztRQUVGLG9FQUFvRTtRQUMzRCxVQUFLLEdBQTBCLElBQUksQ0FBQyxhQUFhLENBQUM7SUFFTCxDQUFDO0lBRXZELG1GQUFtRjtJQUNuRixTQUFTLENBQUMsUUFBc0IsRUFBRSxPQUFhLEVBQUUsTUFBWSxFQUFFLFlBQTBCO1FBQ3ZGLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQ3ZELGtDQUFrQyxDQUFDLEtBQW1CO1FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUs7UUFDVixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QixNQUFNLEtBQUssQ0FDVCxnRUFBZ0U7Z0JBQzlELCtCQUErQixDQUNsQyxDQUFDO1FBQ0osQ0FBQztRQUVELHlDQUF5QztRQUN6QyxNQUFNLGFBQWEsR0FBSSxJQUFZLENBQUMsZUFBZSxDQUFnQyxDQUFDO1FBRXBGLDRFQUE0RTtRQUM1RSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sS0FBSyxDQUNULHlFQUF5RTtnQkFDdkUsOEVBQThFLENBQ2pGLENBQUM7UUFDSixDQUFDO1FBRUQsNkRBQTZEO1FBQzdELDBDQUEwQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUFzQixDQUFDO1FBRW5FLHNFQUFzRTtRQUN0RSx1RUFBdUU7UUFDdkUsa0VBQWtFO1FBQ2xFLGdEQUFnRDtRQUNoRCxJQUFJLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxRQUFRLENBQUMscUJBQXFCLENBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsc0VBQXNFO1FBQ3RFLDJFQUEyRTtRQUMzRSw2RUFBNkU7UUFDN0Usc0RBQXNEO1FBQ3RELE1BQU0sV0FBVyxHQUFHLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUQsdUZBQXVGO1FBQ3ZGLHFGQUFxRjtRQUNyRiw2RkFBNkY7UUFDN0YsMkZBQTJGO1FBQzNGLDRGQUE0RjtRQUM1RiwwQkFBMEI7UUFDMUIsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLEdBQUcsSUFBOEM7WUFDOUUsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMzQixXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDO1FBRUYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm94eVpvbmUsIFByb3h5Wm9uZVN0YXRpY30gZnJvbSAnLi9wcm94eS16b25lLXR5cGVzJztcblxuLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGludGVyY2VwdGVkIHpvbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tTdGF0ZSB7XG4gIC8qKiBXaGV0aGVyIHRoZSB6b25lIGlzIHN0YWJsZSAoaS5lLiBubyBtaWNyb3Rhc2tzIGFuZCBtYWNyb3Rhc2tzKS4gKi9cbiAgc3RhYmxlOiBib29sZWFuO1xufVxuXG4vKiogVW5pcXVlIHN5bWJvbCB0aGF0IGlzIHVzZWQgdG8gcGF0Y2ggYSBwcm9wZXJ0eSB0byBhIHByb3h5IHpvbmUuICovXG5jb25zdCBzdGF0ZU9ic2VydmFibGVTeW1ib2wgPSBTeW1ib2woJ1Byb3h5Wm9uZV9QQVRDSEVEI3N0YXRlT2JzZXJ2YWJsZScpO1xuXG4vKiogVHlwZSB0aGF0IGRlc2NyaWJlcyBhIHBvdGVudGlhbGx5IHBhdGNoZWQgcHJveHkgem9uZSBpbnN0YW5jZS4gKi9cbnR5cGUgUGF0Y2hlZFByb3h5Wm9uZSA9IFByb3h5Wm9uZSAmIHtcbiAgW3N0YXRlT2JzZXJ2YWJsZVN5bWJvbF06IHVuZGVmaW5lZCB8IE9ic2VydmFibGU8VGFza1N0YXRlPjtcbn07XG5cbi8qKlxuICogSW50ZXJjZXB0b3IgdGhhdCBjYW4gYmUgc2V0IHVwIGluIGEgYFByb3h5Wm9uZWAgaW5zdGFuY2UuIFRoZSBpbnRlcmNlcHRvclxuICogd2lsbCBrZWVwIHRyYWNrIG9mIHRoZSB0YXNrIHN0YXRlIGFuZCBlbWl0IHdoZW5ldmVyIHRoZSBzdGF0ZSBjaGFuZ2VzLlxuICpcbiAqIFRoaXMgc2VydmVzIGFzIGEgd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzI4OTYuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXNrU3RhdGVab25lSW50ZXJjZXB0b3Ige1xuICAvKiogU3ViamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGVtaXQgYSBuZXcgc3RhdGUgY2hhbmdlLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhc2tTdGF0ZT4oXG4gICAgdGhpcy5fbGFzdFN0YXRlID8gdGhpcy5fZ2V0VGFza1N0YXRlRnJvbUludGVybmFsWm9uZVN0YXRlKHRoaXMuX2xhc3RTdGF0ZSkgOiB7c3RhYmxlOiB0cnVlfSxcbiAgKTtcblxuICAvKiogUHVibGljIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgdGFzayBzdGF0ZSBjaGFuZ2VzLiAqL1xuICByZWFkb25seSBzdGF0ZTogT2JzZXJ2YWJsZTxUYXNrU3RhdGU+ID0gdGhpcy5fc3RhdGVTdWJqZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xhc3RTdGF0ZTogSGFzVGFza1N0YXRlIHwgbnVsbCkge31cblxuICAvKiogVGhpcyB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgdGFzayBzdGF0ZSBjaGFuZ2VzIGluIHRoZSBpbnRlcmNlcHRlZCB6b25lLiAqL1xuICBvbkhhc1Rhc2soZGVsZWdhdGU6IFpvbmVEZWxlZ2F0ZSwgY3VycmVudDogWm9uZSwgdGFyZ2V0OiBab25lLCBoYXNUYXNrU3RhdGU6IEhhc1Rhc2tTdGF0ZSkge1xuICAgIGlmIChjdXJyZW50ID09PSB0YXJnZXQpIHtcbiAgICAgIHRoaXMuX3N0YXRlU3ViamVjdC5uZXh0KHRoaXMuX2dldFRhc2tTdGF0ZUZyb21JbnRlcm5hbFpvbmVTdGF0ZShoYXNUYXNrU3RhdGUpKTtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0cyB0aGUgdGFzayBzdGF0ZSBmcm9tIHRoZSBpbnRlcm5hbCBab25lSlMgdGFzayBzdGF0ZS4gKi9cbiAgcHJpdmF0ZSBfZ2V0VGFza1N0YXRlRnJvbUludGVybmFsWm9uZVN0YXRlKHN0YXRlOiBIYXNUYXNrU3RhdGUpOiBUYXNrU3RhdGUge1xuICAgIHJldHVybiB7c3RhYmxlOiAhc3RhdGUubWFjcm9UYXNrICYmICFzdGF0ZS5taWNyb1Rhc2t9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIGN1c3RvbSB0YXNrIHN0YXRlIFpvbmUgaW50ZXJjZXB0b3IgaW4gdGhlICBgUHJveHlab25lYC4gVGhyb3dzIGlmXG4gICAqIG5vIGBQcm94eVpvbmVgIGNvdWxkIGJlIGZvdW5kLlxuICAgKiBAcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIHRhc2sgc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIHN0YXRpYyBzZXR1cCgpOiBPYnNlcnZhYmxlPFRhc2tTdGF0ZT4ge1xuICAgIGlmIChab25lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IGZpbmQgWm9uZUpTLiBGb3IgdGVzdCBoYXJuZXNzZXMgcnVubmluZyBpbiBUZXN0QmVkLCAnICtcbiAgICAgICAgICAnWm9uZUpTIG5lZWRzIHRvIGJlIGluc3RhbGxlZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGNvbnN0IFByb3h5Wm9uZVNwZWMgPSAoWm9uZSBhcyBhbnkpWydQcm94eVpvbmVTcGVjJ10gYXMgUHJveHlab25lU3RhdGljIHwgdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gXCJQcm94eVpvbmVTcGVjXCIgaW5zdGFsbGVkLCB3ZSB0aHJvdyBhbiBlcnJvciBhbmQgcmVjb21tZW5kXG4gICAgLy8gc2V0dGluZyB1cCB0aGUgcHJveHkgem9uZSBieSBwdWxsaW5nIGluIHRoZSB0ZXN0aW5nIGJ1bmRsZS5cbiAgICBpZiAoIVByb3h5Wm9uZVNwZWMpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnUHJveHlab25lU3BlYyBpcyBuZWVkZWQgZm9yIHRoZSB0ZXN0IGhhcm5lc3NlcyBidXQgY291bGQgbm90IGJlIGZvdW5kLiAnICtcbiAgICAgICAgICAnUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHlvdXIgZW52aXJvbm1lbnQgaW5jbHVkZXMgem9uZS5qcy9kaXN0L3pvbmUtdGVzdGluZy5qcycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgcHJveHkgem9uZSBpbnN0YW5jZSBzZXQgdXAsIGFuZCBnZXRcbiAgICAvLyBhIHJlZmVyZW5jZSB0byB0aGUgaW5zdGFuY2UgaWYgcHJlc2VudC5cbiAgICBjb25zdCB6b25lU3BlYyA9IFByb3h5Wm9uZVNwZWMuYXNzZXJ0UHJlc2VudCgpIGFzIFBhdGNoZWRQcm94eVpvbmU7XG5cbiAgICAvLyBJZiB0aGVyZSBhbHJlYWR5IGlzIGEgZGVsZWdhdGUgcmVnaXN0ZXJlZCBpbiB0aGUgcHJveHkgem9uZSwgYW5kIGl0XG4gICAgLy8gaXMgdHlwZSBvZiB0aGUgY3VzdG9tIHRhc2sgc3RhdGUgaW50ZXJjZXB0b3IsIHdlIGp1c3QgdXNlIHRoYXQgc3RhdGVcbiAgICAvLyBvYnNlcnZhYmxlLiBUaGlzIGFsbG93cyB1cyB0byBvbmx5IGludGVyY2VwdCBab25lIG9uY2UgcGVyIHRlc3RcbiAgICAvLyAoc2ltaWxhciB0byBob3cgYGZha2VBc3luY2Agb3IgYGFzeW5jYCB3b3JrKS5cbiAgICBpZiAoem9uZVNwZWNbc3RhdGVPYnNlcnZhYmxlU3ltYm9sXSkge1xuICAgICAgcmV0dXJuIHpvbmVTcGVjW3N0YXRlT2JzZXJ2YWJsZVN5bWJvbF0hO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIGludGVyY2VwdCBvbiBlbnZpcm9ubWVudCBjcmVhdGlvbiBhbmQgdGhlIGZpeHR1cmUgaGFzIGJlZW5cbiAgICAvLyBjcmVhdGVkIGJlZm9yZSwgd2UgbWlnaHQgaGF2ZSBtaXNzZWQgdGFza3Mgc2NoZWR1bGVkIGJlZm9yZS4gRm9ydHVuYXRlbHlcbiAgICAvLyB0aGUgcHJveHkgem9uZSBrZWVwcyB0cmFjayBvZiB0aGUgcHJldmlvdXMgdGFzayBzdGF0ZSwgc28gd2UgY2FuIGp1c3QgcGFzc1xuICAgIC8vIHRoaXMgYXMgaW5pdGlhbCBzdGF0ZSB0byB0aGUgdGFzayB6b25lIGludGVyY2VwdG9yLlxuICAgIGNvbnN0IGludGVyY2VwdG9yID0gbmV3IFRhc2tTdGF0ZVpvbmVJbnRlcmNlcHRvcih6b25lU3BlYy5sYXN0VGFza1N0YXRlKTtcbiAgICBjb25zdCB6b25lU3BlY09uSGFzVGFzayA9IHpvbmVTcGVjLm9uSGFzVGFzay5iaW5kKHpvbmVTcGVjKTtcblxuICAgIC8vIFdlIHNldHVwIHRoZSB0YXNrIHN0YXRlIGludGVyY2VwdG9yIGluIHRoZSBgUHJveHlab25lYC4gTm90ZSB0aGF0IHdlIGNhbm5vdCByZWdpc3RlclxuICAgIC8vIHRoZSBpbnRlcmNlcHRvciBhcyBhIG5ldyBwcm94eSB6b25lIGRlbGVnYXRlIGJlY2F1c2UgaXQgd291bGQgbWVhbiB0aGF0IG90aGVyIHpvbmVcbiAgICAvLyBkZWxlZ2F0ZXMgKGUuZy4gYEZha2VBc3luY1Rlc3Rab25lYCBvciBgQXN5bmNUZXN0Wm9uZWApIGNhbiBhY2NpZGVudGFsbHkgb3ZlcndyaXRlL2Rpc2FibGVcbiAgICAvLyBvdXIgaW50ZXJjZXB0b3IuIFNpbmNlIHdlIGp1c3QgaW50ZW5kIHRvIG1vbml0b3IgdGhlIHRhc2sgc3RhdGUgb2YgdGhlIHByb3h5IHpvbmUsIGl0IGlzXG4gICAgLy8gc3VmZmljaWVudCB0byBqdXN0IHBhdGNoIHRoZSBwcm94eSB6b25lLiBUaGlzIGFsc28gYXZvaWRzIHRoYXQgd2UgaW50ZXJmZXJlIHdpdGggdGhlIHRhc2tcbiAgICAvLyBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljLlxuICAgIHpvbmVTcGVjLm9uSGFzVGFzayA9IGZ1bmN0aW9uICguLi5hcmdzOiBbWm9uZURlbGVnYXRlLCBab25lLCBab25lLCBIYXNUYXNrU3RhdGVdKSB7XG4gICAgICB6b25lU3BlY09uSGFzVGFzayguLi5hcmdzKTtcbiAgICAgIGludGVyY2VwdG9yLm9uSGFzVGFzayguLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuICh6b25lU3BlY1tzdGF0ZU9ic2VydmFibGVTeW1ib2xdID0gaW50ZXJjZXB0b3Iuc3RhdGUpO1xuICB9XG59XG4iXX0=
@@ -1,165 +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 { handleAutoChangeDetectionStatus, HarnessEnvironment, stopHandlingAutoChangeDetectionStatus, } from '@angular/cdk/testing';
9
- import { flush } from '@angular/core/testing';
10
- import { takeWhile } from 'rxjs/operators';
11
- import { TaskStateZoneInterceptor } from './task-state-zone-interceptor';
12
- import { UnitTestElement } from './unit-test-element';
13
- /** The default environment options. */
14
- const defaultEnvironmentOptions = {
15
- queryFn: (selector, root) => root.querySelectorAll(selector),
16
- };
17
- /** Whether auto change detection is currently disabled. */
18
- let disableAutoChangeDetection = false;
19
- /**
20
- * The set of non-destroyed fixtures currently being used by `TestbedHarnessEnvironment` instances.
21
- */
22
- const activeFixtures = new Set();
23
- /**
24
- * Installs a handler for change detection batching status changes for a specific fixture.
25
- * @param fixture The fixture to handle change detection batching for.
26
- */
27
- function installAutoChangeDetectionStatusHandler(fixture) {
28
- if (!activeFixtures.size) {
29
- handleAutoChangeDetectionStatus(({ isDisabled, onDetectChangesNow }) => {
30
- disableAutoChangeDetection = isDisabled;
31
- if (onDetectChangesNow) {
32
- Promise.all(Array.from(activeFixtures).map(detectChanges)).then(onDetectChangesNow);
33
- }
34
- });
35
- }
36
- activeFixtures.add(fixture);
37
- }
38
- /**
39
- * Uninstalls a handler for change detection batching status changes for a specific fixture.
40
- * @param fixture The fixture to stop handling change detection batching for.
41
- */
42
- function uninstallAutoChangeDetectionStatusHandler(fixture) {
43
- activeFixtures.delete(fixture);
44
- if (!activeFixtures.size) {
45
- stopHandlingAutoChangeDetectionStatus();
46
- }
47
- }
48
- /** Whether we are currently in the fake async zone. */
49
- function isInFakeAsyncZone() {
50
- return typeof Zone !== 'undefined' && Zone.current.get('FakeAsyncTestZoneSpec') != null;
51
- }
52
- /**
53
- * Triggers change detection for a specific fixture.
54
- * @param fixture The fixture to trigger change detection for.
55
- */
56
- async function detectChanges(fixture) {
57
- fixture.detectChanges();
58
- if (isInFakeAsyncZone()) {
59
- flush();
60
- }
61
- else {
62
- await fixture.whenStable();
63
- }
64
- }
65
- /** A `HarnessEnvironment` implementation for Angular's Testbed. */
66
- export class TestbedHarnessEnvironment extends HarnessEnvironment {
67
- constructor(rawRootElement, _fixture, options) {
68
- super(rawRootElement);
69
- this._fixture = _fixture;
70
- /** Whether the environment has been destroyed. */
71
- this._destroyed = false;
72
- this._options = { ...defaultEnvironmentOptions, ...options };
73
- if (typeof Zone !== 'undefined') {
74
- this._taskState = TaskStateZoneInterceptor.setup();
75
- }
76
- this._stabilizeCallback = () => this.forceStabilize();
77
- installAutoChangeDetectionStatusHandler(_fixture);
78
- _fixture.componentRef.onDestroy(() => {
79
- uninstallAutoChangeDetectionStatusHandler(_fixture);
80
- this._destroyed = true;
81
- });
82
- }
83
- /** Creates a `HarnessLoader` rooted at the given fixture's root element. */
84
- static loader(fixture, options) {
85
- return new TestbedHarnessEnvironment(fixture.nativeElement, fixture, options);
86
- }
87
- /**
88
- * Creates a `HarnessLoader` at the document root. This can be used if harnesses are
89
- * located outside of a fixture (e.g. overlays appended to the document body).
90
- */
91
- static documentRootLoader(fixture, options) {
92
- return new TestbedHarnessEnvironment(document.body, fixture, options);
93
- }
94
- /** Gets the native DOM element corresponding to the given TestElement. */
95
- static getNativeElement(el) {
96
- if (el instanceof UnitTestElement) {
97
- return el.element;
98
- }
99
- throw Error('This TestElement was not created by the TestbedHarnessEnvironment');
100
- }
101
- /**
102
- * Creates an instance of the given harness type, using the fixture's root element as the
103
- * harness's host element. This method should be used when creating a harness for the root element
104
- * of a fixture, as components do not have the correct selector when they are created as the root
105
- * of the fixture.
106
- */
107
- static async harnessForFixture(fixture, harnessType, options) {
108
- const environment = new TestbedHarnessEnvironment(fixture.nativeElement, fixture, options);
109
- await environment.forceStabilize();
110
- return environment.createComponentHarness(harnessType, fixture.nativeElement);
111
- }
112
- /**
113
- * Flushes change detection and async tasks captured in the Angular zone.
114
- * In most cases it should not be necessary to call this manually. However, there may be some edge
115
- * cases where it is needed to fully flush animation events.
116
- */
117
- async forceStabilize() {
118
- if (!disableAutoChangeDetection) {
119
- if (this._destroyed) {
120
- throw Error('Harness is attempting to use a fixture that has already been destroyed.');
121
- }
122
- await detectChanges(this._fixture);
123
- }
124
- }
125
- /**
126
- * Waits for all scheduled or running async tasks to complete. This allows harness
127
- * authors to wait for async tasks outside of the Angular zone.
128
- */
129
- async waitForTasksOutsideAngular() {
130
- // If we run in the fake async zone, we run "flush" to run any scheduled tasks. This
131
- // ensures that the harnesses behave inside of the FakeAsyncTestZone similar to the
132
- // "AsyncTestZone" and the root zone (i.e. neither fakeAsync or async). Note that we
133
- // cannot just rely on the task state observable to become stable because the state will
134
- // never change. This is because the task queue will be only drained if the fake async
135
- // zone is being flushed.
136
- if (isInFakeAsyncZone()) {
137
- flush();
138
- }
139
- // Wait until the task queue has been drained and the zone is stable. Note that
140
- // we cannot rely on "fixture.whenStable" since it does not catch tasks scheduled
141
- // outside of the Angular zone. For test harnesses, we want to ensure that the
142
- // app is fully stabilized and therefore need to use our own zone interceptor.
143
- await this._taskState?.pipe(takeWhile(state => !state.stable)).toPromise();
144
- }
145
- /** Gets the root element for the document. */
146
- getDocumentRoot() {
147
- return document.body;
148
- }
149
- /** Creates a `TestElement` from a raw element. */
150
- createTestElement(element) {
151
- return new UnitTestElement(element, this._stabilizeCallback);
152
- }
153
- /** Creates a `HarnessLoader` rooted at the given raw element. */
154
- createEnvironment(element) {
155
- return new TestbedHarnessEnvironment(element, this._fixture, this._options);
156
- }
157
- /**
158
- * Gets a list of all elements matching the given selector under this environment's root element.
159
- */
160
- async getAllRawElements(selector) {
161
- await this.forceStabilize();
162
- return Array.from(this._options.queryFn(selector, this.rawRootElement));
163
- }
164
- }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGJlZC1oYXJuZXNzLWVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay90ZXN0aW5nL3Rlc3RiZWQvdGVzdGJlZC1oYXJuZXNzLWVudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFHTCwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBRWxCLHFDQUFxQyxHQUV0QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBbUIsS0FBSyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBWSx3QkFBd0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQVFwRCx1Q0FBdUM7QUFDdkMsTUFBTSx5QkFBeUIsR0FBcUM7SUFDbEUsT0FBTyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxJQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Q0FDOUUsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUV2Qzs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0FBRTVEOzs7R0FHRztBQUNILFNBQVMsdUNBQXVDLENBQUMsT0FBa0M7SUFDakYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QiwrQkFBK0IsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFDLEVBQUUsRUFBRTtZQUNuRSwwQkFBMEIsR0FBRyxVQUFVLENBQUM7WUFDeEMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLEtB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UUFDMUMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGlFQUFpRTtJQUN2RCxpQkFBaUIsQ0FBQyxPQUFnQjtRQUMxQyxPQUFPLElBQUkseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFnQjtRQUNoRCxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRIYXJuZXNzLFxuICBDb21wb25lbnRIYXJuZXNzQ29uc3RydWN0b3IsXG4gIGhhbmRsZUF1dG9DaGFuZ2VEZXRlY3Rpb25TdGF0dXMsXG4gIEhhcm5lc3NFbnZpcm9ubWVudCxcbiAgSGFybmVzc0xvYWRlcixcbiAgc3RvcEhhbmRsaW5nQXV0b0NoYW5nZURldGVjdGlvblN0YXR1cyxcbiAgVGVzdEVsZW1lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7Q29tcG9uZW50Rml4dHVyZSwgZmx1c2h9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlV2hpbGV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VGFza1N0YXRlLCBUYXNrU3RhdGVab25lSW50ZXJjZXB0b3J9IGZyb20gJy4vdGFzay1zdGF0ZS16b25lLWludGVyY2VwdG9yJztcbmltcG9ydCB7VW5pdFRlc3RFbGVtZW50fSBmcm9tICcuL3VuaXQtdGVzdC1lbGVtZW50JztcblxuLyoqIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdGJlZEhhcm5lc3NFbnZpcm9ubWVudE9wdGlvbnMge1xuICAvKiogVGhlIHF1ZXJ5IGZ1bmN0aW9uIHVzZWQgdG8gZmluZCBET00gZWxlbWVudHMuICovXG4gIHF1ZXJ5Rm46IChzZWxlY3Rvcjogc3RyaW5nLCByb290OiBFbGVtZW50KSA9PiBJdGVyYWJsZTxFbGVtZW50PiB8IEFycmF5TGlrZTxFbGVtZW50Pjtcbn1cblxuLyoqIFRoZSBkZWZhdWx0IGVudmlyb25tZW50IG9wdGlvbnMuICovXG5jb25zdCBkZWZhdWx0RW52aXJvbm1lbnRPcHRpb25zOiBUZXN0YmVkSGFybmVzc0Vudmlyb25tZW50T3B0aW9ucyA9IHtcbiAgcXVlcnlGbjogKHNlbGVjdG9yOiBzdHJpbmcsIHJvb3Q6IEVsZW1lbnQpID0+IHJvb3QucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvciksXG59O1xuXG4vKiogV2hldGhlciBhdXRvIGNoYW5nZSBkZXRlY3Rpb24gaXMgY3VycmVudGx5IGRpc2FibGVkLiAqL1xubGV0IGRpc2FibGVBdXRvQ2hhbmdlRGV0ZWN0aW9uID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIHNldCBvZiBub24tZGVzdHJveWVkIGZpeHR1cmVzIGN1cnJlbnRseSBiZWluZyB1c2VkIGJ5IGBUZXN0YmVkSGFybmVzc0Vudmlyb25tZW50YCBpbnN0YW5jZXMuXG4gKi9cbmNvbnN0IGFjdGl2ZUZpeHR1cmVzID0gbmV3IFNldDxDb21wb25lbnRGaXh0dXJlPHVua25vd24+PigpO1xuXG4vKipcbiAqIEluc3RhbGxzIGEgaGFuZGxlciBmb3IgY2hhbmdlIGRldGVjdGlvbiBiYXRjaGluZyBzdGF0dXMgY2hhbmdlcyBmb3IgYSBzcGVjaWZpYyBmaXh0dXJlLlxuICogQHBhcmFtIGZpeHR1cmUgVGhlIGZpeHR1cmUgdG8gaGFuZGxlIGNoYW5nZSBkZXRlY3Rpb24gYmF0Y2hpbmcgZm9yLlxuICovXG5mdW5jdGlvbiBpbnN0YWxsQXV0b0NoYW5nZURldGVjdGlvblN0YXR1c0hhbmRsZXIoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTx1bmtub3duPikge1xuICBpZiAoIWFjdGl2ZUZpeHR1cmVzLnNpemUpIHtcbiAgICBoYW5kbGVBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzKCh7aXNEaXNhYmxlZCwgb25EZXRlY3RDaGFuZ2VzTm93fSkgPT4ge1xuICAgICAgZGlzYWJsZUF1dG9DaGFuZ2VEZXRlY3Rpb24gPSBpc0Rpc2FibGVkO1xuICAgICAgaWYgKG9uRGV0ZWN0Q2hhbmdlc05vdykge1xuICAgICAgICBQcm9taXNlLmFsbChBcnJheS5mcm9tKGFjdGl2ZUZpeHR1cmVzKS5tYXAoZGV0ZWN0Q2hhbmdlcykpLnRoZW4ob25EZXRlY3RDaGFuZ2VzTm93KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhY3RpdmVGaXh0dXJlcy5hZGQoZml4dHVyZSk7XG59XG5cbi8qKlxuICogVW5pbnN0YWxscyBhIGhhbmRsZXIgZm9yIGNoYW5nZSBkZXRlY3Rpb24gYmF0Y2hpbmcgc3RhdHVzIGNoYW5nZXMgZm9yIGEgc3BlY2lmaWMgZml4dHVyZS5cbiAqIEBwYXJhbSBmaXh0dXJlIFRoZSBmaXh0dXJlIHRvIHN0b3AgaGFuZGxpbmcgY2hhbmdlIGRldGVjdGlvbiBiYXRjaGluZyBmb3IuXG4gKi9cbmZ1bmN0aW9uIHVuaW5zdGFsbEF1dG9DaGFuZ2VEZXRlY3Rpb25TdGF0dXNIYW5kbGVyKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4pIHtcbiAgYWN0aXZlRml4dHVyZXMuZGVsZXRlKGZpeHR1cmUpO1xuICBpZiAoIWFjdGl2ZUZpeHR1cmVzLnNpemUpIHtcbiAgICBzdG9wSGFuZGxpbmdBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzKCk7XG4gIH1cbn1cblxuLyoqIFdoZXRoZXIgd2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgZmFrZSBhc3luYyB6b25lLiAqL1xuZnVuY3Rpb24gaXNJbkZha2VBc3luY1pvbmUoKSB7XG4gIHJldHVybiB0eXBlb2YgWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgWm9uZSEuY3VycmVudC5nZXQoJ0Zha2VBc3luY1Rlc3Rab25lU3BlYycpICE9IG51bGw7XG59XG5cbi8qKlxuICogVHJpZ2dlcnMgY2hhbmdlIGRldGVjdGlvbiBmb3IgYSBzcGVjaWZpYyBmaXh0dXJlLlxuICogQHBhcmFtIGZpeHR1cmUgVGhlIGZpeHR1cmUgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGZvci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0Q2hhbmdlcyhmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPHVua25vd24+KSB7XG4gIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICBpZiAoaXNJbkZha2VBc3luY1pvbmUoKSkge1xuICAgIGZsdXNoKCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cbn1cblxuLyoqIEEgYEhhcm5lc3NFbnZpcm9ubWVudGAgaW1wbGVtZW50YXRpb24gZm9yIEFuZ3VsYXIncyBUZXN0YmVkLiAqL1xuZXhwb3J0IGNsYXNzIFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnQgZXh0ZW5kcyBIYXJuZXNzRW52aXJvbm1lbnQ8RWxlbWVudD4ge1xuICAvKiogV2hldGhlciB0aGUgZW52aXJvbm1lbnQgaGFzIGJlZW4gZGVzdHJveWVkLiAqL1xuICBwcml2YXRlIF9kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvKiogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSB0ZXN0IHRhc2sgc3RhdGUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfdGFza1N0YXRlPzogT2JzZXJ2YWJsZTxUYXNrU3RhdGU+O1xuXG4gIC8qKiBUaGUgb3B0aW9ucyBmb3IgdGhpcyBlbnZpcm9ubWVudC4gKi9cbiAgcHJpdmF0ZSBfb3B0aW9uczogVGVzdGJlZEhhcm5lc3NFbnZpcm9ubWVudE9wdGlvbnM7XG5cbiAgLyoqIEVudmlyb25tZW50IHN0YWJpbGl6YXRpb24gY2FsbGJhY2sgcGFzc2VkIHRvIHRoZSBjcmVhdGVkIHRlc3QgZWxlbWVudHMuICovXG4gIHByaXZhdGUgX3N0YWJpbGl6ZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICByYXdSb290RWxlbWVudDogRWxlbWVudCxcbiAgICBwcml2YXRlIF9maXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPHVua25vd24+LFxuICAgIG9wdGlvbnM/OiBUZXN0YmVkSGFybmVzc0Vudmlyb25tZW50T3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIocmF3Um9vdEVsZW1lbnQpO1xuICAgIHRoaXMuX29wdGlvbnMgPSB7Li4uZGVmYXVsdEVudmlyb25tZW50T3B0aW9ucywgLi4ub3B0aW9uc307XG4gICAgaWYgKHR5cGVvZiBab25lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5fdGFza1N0YXRlID0gVGFza1N0YXRlWm9uZUludGVyY2VwdG9yLnNldHVwKCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YWJpbGl6ZUNhbGxiYWNrID0gKCkgPT4gdGhpcy5mb3JjZVN0YWJpbGl6ZSgpO1xuICAgIGluc3RhbGxBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzSGFuZGxlcihfZml4dHVyZSk7XG4gICAgX2ZpeHR1cmUuY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB1bmluc3RhbGxBdXRvQ2hhbmdlRGV0ZWN0aW9uU3RhdHVzSGFuZGxlcihfZml4dHVyZSk7XG4gICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBgSGFybmVzc0xvYWRlcmAgcm9vdGVkIGF0IHRoZSBnaXZlbiBmaXh0dXJlJ3Mgcm9vdCBlbGVtZW50LiAqL1xuICBzdGF0aWMgbG9hZGVyKFxuICAgIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4sXG4gICAgb3B0aW9ucz86IFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnRPcHRpb25zLFxuICApOiBIYXJuZXNzTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50LCBmaXh0dXJlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYEhhcm5lc3NMb2FkZXJgIGF0IHRoZSBkb2N1bWVudCByb290LiBUaGlzIGNhbiBiZSB1c2VkIGlmIGhhcm5lc3NlcyBhcmVcbiAgICogbG9jYXRlZCBvdXRzaWRlIG9mIGEgZml4dHVyZSAoZS5nLiBvdmVybGF5cyBhcHBlbmRlZCB0byB0aGUgZG9jdW1lbnQgYm9keSkuXG4gICAqL1xuICBzdGF0aWMgZG9jdW1lbnRSb290TG9hZGVyKFxuICAgIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4sXG4gICAgb3B0aW9ucz86IFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnRPcHRpb25zLFxuICApOiBIYXJuZXNzTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnQoZG9jdW1lbnQuYm9keSwgZml4dHVyZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgbmF0aXZlIERPTSBlbGVtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIFRlc3RFbGVtZW50LiAqL1xuICBzdGF0aWMgZ2V0TmF0aXZlRWxlbWVudChlbDogVGVzdEVsZW1lbnQpOiBFbGVtZW50IHtcbiAgICBpZiAoZWwgaW5zdGFuY2VvZiBVbml0VGVzdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbC5lbGVtZW50O1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignVGhpcyBUZXN0RWxlbWVudCB3YXMgbm90IGNyZWF0ZWQgYnkgdGhlIFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBnaXZlbiBoYXJuZXNzIHR5cGUsIHVzaW5nIHRoZSBmaXh0dXJlJ3Mgcm9vdCBlbGVtZW50IGFzIHRoZVxuICAgKiBoYXJuZXNzJ3MgaG9zdCBlbGVtZW50LiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIGEgaGFybmVzcyBmb3IgdGhlIHJvb3QgZWxlbWVudFxuICAgKiBvZiBhIGZpeHR1cmUsIGFzIGNvbXBvbmVudHMgZG8gbm90IGhhdmUgdGhlIGNvcnJlY3Qgc2VsZWN0b3Igd2hlbiB0aGV5IGFyZSBjcmVhdGVkIGFzIHRoZSByb290XG4gICAqIG9mIHRoZSBmaXh0dXJlLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGhhcm5lc3NGb3JGaXh0dXJlPFQgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzPihcbiAgICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPHVua25vd24+LFxuICAgIGhhcm5lc3NUeXBlOiBDb21wb25lbnRIYXJuZXNzQ29uc3RydWN0b3I8VD4sXG4gICAgb3B0aW9ucz86IFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnRPcHRpb25zLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IG5ldyBUZXN0YmVkSGFybmVzc0Vudmlyb25tZW50KGZpeHR1cmUubmF0aXZlRWxlbWVudCwgZml4dHVyZSwgb3B0aW9ucyk7XG4gICAgYXdhaXQgZW52aXJvbm1lbnQuZm9yY2VTdGFiaWxpemUoKTtcbiAgICByZXR1cm4gZW52aXJvbm1lbnQuY3JlYXRlQ29tcG9uZW50SGFybmVzcyhoYXJuZXNzVHlwZSwgZml4dHVyZS5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaGVzIGNoYW5nZSBkZXRlY3Rpb24gYW5kIGFzeW5jIHRhc2tzIGNhcHR1cmVkIGluIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqIEluIG1vc3QgY2FzZXMgaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIG1hbnVhbGx5LiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgc29tZSBlZGdlXG4gICAqIGNhc2VzIHdoZXJlIGl0IGlzIG5lZWRlZCB0byBmdWxseSBmbHVzaCBhbmltYXRpb24gZXZlbnRzLlxuICAgKi9cbiAgYXN5bmMgZm9yY2VTdGFiaWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFkaXNhYmxlQXV0b0NoYW5nZURldGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgICB0aHJvdyBFcnJvcignSGFybmVzcyBpcyBhdHRlbXB0aW5nIHRvIHVzZSBhIGZpeHR1cmUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4nKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGV0ZWN0Q2hhbmdlcyh0aGlzLl9maXh0dXJlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2FpdHMgZm9yIGFsbCBzY2hlZHVsZWQgb3IgcnVubmluZyBhc3luYyB0YXNrcyB0byBjb21wbGV0ZS4gVGhpcyBhbGxvd3MgaGFybmVzc1xuICAgKiBhdXRob3JzIHRvIHdhaXQgZm9yIGFzeW5jIHRhc2tzIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICovXG4gIGFzeW5jIHdhaXRGb3JUYXNrc091dHNpZGVBbmd1bGFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIElmIHdlIHJ1biBpbiB0aGUgZmFrZSBhc3luYyB6b25lLCB3ZSBydW4gXCJmbHVzaFwiIHRvIHJ1biBhbnkgc2NoZWR1bGVkIHRhc2tzLiBUaGlzXG4gICAgLy8gZW5zdXJlcyB0aGF0IHRoZSBoYXJuZXNzZXMgYmVoYXZlIGluc2lkZSBvZiB0aGUgRmFrZUFzeW5jVGVzdFpvbmUgc2ltaWxhciB0byB0aGVcbiAgICAvLyBcIkFzeW5jVGVzdFpvbmVcIiBhbmQgdGhlIHJvb3Qgem9uZSAoaS5lLiBuZWl0aGVyIGZha2VBc3luYyBvciBhc3luYykuIE5vdGUgdGhhdCB3ZVxuICAgIC8vIGNhbm5vdCBqdXN0IHJlbHkgb24gdGhlIHRhc2sgc3RhdGUgb2JzZXJ2YWJsZSB0byBiZWNvbWUgc3RhYmxlIGJlY2F1c2UgdGhlIHN0YXRlIHdpbGxcbiAgICAvLyBuZXZlciBjaGFuZ2UuIFRoaXMgaXMgYmVjYXVzZSB0aGUgdGFzayBxdWV1ZSB3aWxsIGJlIG9ubHkgZHJhaW5lZCBpZiB0aGUgZmFrZSBhc3luY1xuICAgIC8vIHpvbmUgaXMgYmVpbmcgZmx1c2hlZC5cbiAgICBpZiAoaXNJbkZha2VBc3luY1pvbmUoKSkge1xuICAgICAgZmx1c2goKTtcbiAgICB9XG5cbiAgICAvLyBXYWl0IHVudGlsIHRoZSB0YXNrIHF1ZXVlIGhhcyBiZWVuIGRyYWluZWQgYW5kIHRoZSB6b25lIGlzIHN0YWJsZS4gTm90ZSB0aGF0XG4gICAgLy8gd2UgY2Fubm90IHJlbHkgb24gXCJmaXh0dXJlLndoZW5TdGFibGVcIiBzaW5jZSBpdCBkb2VzIG5vdCBjYXRjaCB0YXNrcyBzY2hlZHVsZWRcbiAgICAvLyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUuIEZvciB0ZXN0IGhhcm5lc3Nlcywgd2Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGVcbiAgICAvLyBhcHAgaXMgZnVsbHkgc3RhYmlsaXplZCBhbmQgdGhlcmVmb3JlIG5lZWQgdG8gdXNlIG91ciBvd24gem9uZSBpbnRlcmNlcHRvci5cbiAgICBhd2FpdCB0aGlzLl90YXNrU3RhdGU/LnBpcGUodGFrZVdoaWxlKHN0YXRlID0+ICFzdGF0ZS5zdGFibGUpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSByb290IGVsZW1lbnQgZm9yIHRoZSBkb2N1bWVudC4gKi9cbiAgcHJvdGVjdGVkIGdldERvY3VtZW50Um9vdCgpOiBFbGVtZW50IHtcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgYFRlc3RFbGVtZW50YCBmcm9tIGEgcmF3IGVsZW1lbnQuICovXG4gIHByb3RlY3RlZCBjcmVhdGVUZXN0RWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogVGVzdEVsZW1lbnQge1xuICAgIHJldHVybiBuZXcgVW5pdFRlc3RFbGVtZW50KGVsZW1lbnQsIHRoaXMuX3N0YWJpbGl6ZUNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgYEhhcm5lc3NMb2FkZXJgIHJvb3RlZCBhdCB0aGUgZ2l2ZW4gcmF3IGVsZW1lbnQuICovXG4gIHByb3RlY3RlZCBjcmVhdGVFbnZpcm9ubWVudChlbGVtZW50OiBFbGVtZW50KTogSGFybmVzc0Vudmlyb25tZW50PEVsZW1lbnQ+IHtcbiAgICByZXR1cm4gbmV3IFRlc3RiZWRIYXJuZXNzRW52aXJvbm1lbnQoZWxlbWVudCwgdGhpcy5fZml4dHVyZSwgdGhpcy5fb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2YgYWxsIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWxlY3RvciB1bmRlciB0aGlzIGVudmlyb25tZW50J3Mgcm9vdCBlbGVtZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEFsbFJhd0VsZW1lbnRzKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPEVsZW1lbnRbXT4ge1xuICAgIGF3YWl0IHRoaXMuZm9yY2VTdGFiaWxpemUoKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9vcHRpb25zLnF1ZXJ5Rm4oc2VsZWN0b3IsIHRoaXMucmF3Um9vdEVsZW1lbnQpKTtcbiAgfVxufVxuIl19