@angular/cdk 19.0.0-next.3 → 19.0.0-next.5

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 (293) hide show
  1. package/a11y/index.d.ts +19 -37
  2. package/accordion/index.d.ts +5 -4
  3. package/bidi/index.d.ts +2 -2
  4. package/clipboard/index.d.ts +3 -4
  5. package/dialog/index.d.ts +6 -9
  6. package/drag-drop/index.d.ts +16 -33
  7. package/fesm2022/a11y.mjs +109 -167
  8. package/fesm2022/a11y.mjs.map +1 -1
  9. package/fesm2022/accordion.mjs +20 -25
  10. package/fesm2022/accordion.mjs.map +1 -1
  11. package/fesm2022/bidi.mjs +14 -18
  12. package/fesm2022/bidi.mjs.map +1 -1
  13. package/fesm2022/cdk.mjs +1 -1
  14. package/fesm2022/cdk.mjs.map +1 -1
  15. package/fesm2022/clipboard.mjs +19 -26
  16. package/fesm2022/clipboard.mjs.map +1 -1
  17. package/fesm2022/coercion/private.mjs.map +1 -1
  18. package/fesm2022/coercion.mjs.map +1 -1
  19. package/fesm2022/collections.mjs +3 -3
  20. package/fesm2022/collections.mjs.map +1 -1
  21. package/fesm2022/dialog.mjs +33 -53
  22. package/fesm2022/dialog.mjs.map +1 -1
  23. package/fesm2022/drag-drop.mjs +90 -149
  24. package/fesm2022/drag-drop.mjs.map +1 -1
  25. package/fesm2022/keycodes.mjs.map +1 -1
  26. package/fesm2022/layout.mjs +21 -26
  27. package/fesm2022/layout.mjs.map +1 -1
  28. package/fesm2022/listbox.mjs +17 -11
  29. package/fesm2022/listbox.mjs.map +1 -1
  30. package/fesm2022/menu.mjs +49 -49
  31. package/fesm2022/menu.mjs.map +1 -1
  32. package/fesm2022/observers/private.mjs +3 -3
  33. package/fesm2022/observers/private.mjs.map +1 -1
  34. package/fesm2022/observers.mjs +21 -21
  35. package/fesm2022/observers.mjs.map +1 -1
  36. package/fesm2022/overlay.mjs +105 -148
  37. package/fesm2022/overlay.mjs.map +1 -1
  38. package/fesm2022/platform.mjs +7 -7
  39. package/fesm2022/platform.mjs.map +1 -1
  40. package/fesm2022/portal.mjs +59 -58
  41. package/fesm2022/portal.mjs.map +1 -1
  42. package/fesm2022/private.mjs +3 -3
  43. package/fesm2022/private.mjs.map +1 -1
  44. package/fesm2022/scrolling.mjs +86 -126
  45. package/fesm2022/scrolling.mjs.map +1 -1
  46. package/fesm2022/stepper.mjs +47 -56
  47. package/fesm2022/stepper.mjs.map +1 -1
  48. package/fesm2022/table.mjs +170 -228
  49. package/fesm2022/table.mjs.map +1 -1
  50. package/fesm2022/testing/selenium-webdriver.mjs.map +1 -1
  51. package/fesm2022/testing/testbed.mjs.map +1 -1
  52. package/fesm2022/testing.mjs.map +1 -1
  53. package/fesm2022/text-field.mjs +33 -40
  54. package/fesm2022/text-field.mjs.map +1 -1
  55. package/fesm2022/tree.mjs +68 -71
  56. package/fesm2022/tree.mjs.map +1 -1
  57. package/layout/index.d.ts +5 -7
  58. package/observers/index.d.ts +2 -2
  59. package/overlay/_index.scss +44 -11
  60. package/overlay/index.d.ts +18 -34
  61. package/overlay-prebuilt.css +1 -1
  62. package/package.json +1 -1
  63. package/portal/index.d.ts +21 -18
  64. package/schematics/index.d.ts +1 -1
  65. package/schematics/index.js +2 -2
  66. package/schematics/index.mjs +2 -2
  67. package/schematics/ng-add/index.d.ts +1 -1
  68. package/schematics/ng-add/index.js +3 -3
  69. package/schematics/ng-add/index.mjs +3 -3
  70. package/schematics/ng-add/package-config.d.ts +1 -1
  71. package/schematics/ng-add/package-config.js +2 -2
  72. package/schematics/ng-add/package-config.mjs +2 -2
  73. package/schematics/ng-add/schema.d.ts +1 -1
  74. package/schematics/ng-add/schema.js +2 -2
  75. package/schematics/ng-add/schema.mjs +2 -2
  76. package/schematics/ng-generate/drag-drop/index.d.ts +1 -1
  77. package/schematics/ng-generate/drag-drop/index.js +2 -2
  78. package/schematics/ng-generate/drag-drop/index.mjs +2 -2
  79. package/schematics/ng-generate/drag-drop/schema.d.ts +1 -1
  80. package/schematics/ng-generate/drag-drop/schema.js +2 -2
  81. package/schematics/ng-generate/drag-drop/schema.mjs +2 -2
  82. package/schematics/ng-update/data/attribute-selectors.d.ts +1 -1
  83. package/schematics/ng-update/data/attribute-selectors.js +2 -2
  84. package/schematics/ng-update/data/attribute-selectors.mjs +2 -2
  85. package/schematics/ng-update/data/class-names.d.ts +1 -1
  86. package/schematics/ng-update/data/class-names.js +2 -2
  87. package/schematics/ng-update/data/class-names.mjs +2 -2
  88. package/schematics/ng-update/data/constructor-checks.d.ts +1 -1
  89. package/schematics/ng-update/data/constructor-checks.js +2 -2
  90. package/schematics/ng-update/data/constructor-checks.mjs +2 -2
  91. package/schematics/ng-update/data/css-selectors.d.ts +1 -1
  92. package/schematics/ng-update/data/css-selectors.js +2 -2
  93. package/schematics/ng-update/data/css-selectors.mjs +2 -2
  94. package/schematics/ng-update/data/css-tokens.d.ts +1 -1
  95. package/schematics/ng-update/data/css-tokens.js +2 -2
  96. package/schematics/ng-update/data/css-tokens.mjs +2 -2
  97. package/schematics/ng-update/data/element-selectors.d.ts +1 -1
  98. package/schematics/ng-update/data/element-selectors.js +2 -2
  99. package/schematics/ng-update/data/element-selectors.mjs +2 -2
  100. package/schematics/ng-update/data/index.d.ts +1 -1
  101. package/schematics/ng-update/data/index.js +2 -2
  102. package/schematics/ng-update/data/index.mjs +2 -2
  103. package/schematics/ng-update/data/input-names.d.ts +1 -1
  104. package/schematics/ng-update/data/input-names.js +2 -2
  105. package/schematics/ng-update/data/input-names.mjs +2 -2
  106. package/schematics/ng-update/data/method-call-checks.d.ts +1 -1
  107. package/schematics/ng-update/data/method-call-checks.js +2 -2
  108. package/schematics/ng-update/data/method-call-checks.mjs +2 -2
  109. package/schematics/ng-update/data/output-names.d.ts +1 -1
  110. package/schematics/ng-update/data/output-names.js +2 -2
  111. package/schematics/ng-update/data/output-names.mjs +2 -2
  112. package/schematics/ng-update/data/property-names.d.ts +1 -1
  113. package/schematics/ng-update/data/property-names.js +2 -2
  114. package/schematics/ng-update/data/property-names.mjs +2 -2
  115. package/schematics/ng-update/data/symbol-removal.d.ts +1 -1
  116. package/schematics/ng-update/data/symbol-removal.js +2 -2
  117. package/schematics/ng-update/data/symbol-removal.mjs +2 -2
  118. package/schematics/ng-update/devkit-file-system.d.ts +1 -1
  119. package/schematics/ng-update/devkit-file-system.js +2 -2
  120. package/schematics/ng-update/devkit-file-system.mjs +2 -2
  121. package/schematics/ng-update/devkit-migration-rule.d.ts +1 -1
  122. package/schematics/ng-update/devkit-migration-rule.js +2 -2
  123. package/schematics/ng-update/devkit-migration-rule.mjs +2 -2
  124. package/schematics/ng-update/devkit-migration.d.ts +1 -1
  125. package/schematics/ng-update/devkit-migration.js +2 -2
  126. package/schematics/ng-update/devkit-migration.mjs +2 -2
  127. package/schematics/ng-update/find-stylesheets.d.ts +1 -1
  128. package/schematics/ng-update/find-stylesheets.js +2 -2
  129. package/schematics/ng-update/find-stylesheets.mjs +2 -2
  130. package/schematics/ng-update/html-parsing/angular.d.ts +1 -1
  131. package/schematics/ng-update/html-parsing/angular.js +2 -2
  132. package/schematics/ng-update/html-parsing/angular.mjs +2 -2
  133. package/schematics/ng-update/html-parsing/elements.d.ts +1 -1
  134. package/schematics/ng-update/html-parsing/elements.js +2 -2
  135. package/schematics/ng-update/html-parsing/elements.mjs +2 -2
  136. package/schematics/ng-update/index.d.ts +1 -1
  137. package/schematics/ng-update/index.js +2 -2
  138. package/schematics/ng-update/index.mjs +2 -2
  139. package/schematics/ng-update/migrations/attribute-selectors.d.ts +1 -1
  140. package/schematics/ng-update/migrations/attribute-selectors.js +2 -2
  141. package/schematics/ng-update/migrations/attribute-selectors.mjs +2 -2
  142. package/schematics/ng-update/migrations/class-inheritance.d.ts +1 -1
  143. package/schematics/ng-update/migrations/class-inheritance.js +2 -2
  144. package/schematics/ng-update/migrations/class-inheritance.mjs +2 -2
  145. package/schematics/ng-update/migrations/class-names.d.ts +1 -1
  146. package/schematics/ng-update/migrations/class-names.js +2 -2
  147. package/schematics/ng-update/migrations/class-names.mjs +2 -2
  148. package/schematics/ng-update/migrations/constructor-signature.d.ts +1 -1
  149. package/schematics/ng-update/migrations/constructor-signature.js +2 -2
  150. package/schematics/ng-update/migrations/constructor-signature.mjs +2 -2
  151. package/schematics/ng-update/migrations/css-selectors.d.ts +1 -1
  152. package/schematics/ng-update/migrations/css-selectors.js +2 -2
  153. package/schematics/ng-update/migrations/css-selectors.mjs +2 -2
  154. package/schematics/ng-update/migrations/css-tokens.d.ts +1 -1
  155. package/schematics/ng-update/migrations/css-tokens.js +2 -2
  156. package/schematics/ng-update/migrations/css-tokens.mjs +2 -2
  157. package/schematics/ng-update/migrations/element-selectors.d.ts +1 -1
  158. package/schematics/ng-update/migrations/element-selectors.js +2 -2
  159. package/schematics/ng-update/migrations/element-selectors.mjs +2 -2
  160. package/schematics/ng-update/migrations/input-names.d.ts +1 -1
  161. package/schematics/ng-update/migrations/input-names.js +2 -2
  162. package/schematics/ng-update/migrations/input-names.mjs +2 -2
  163. package/schematics/ng-update/migrations/method-call-arguments.d.ts +1 -1
  164. package/schematics/ng-update/migrations/method-call-arguments.js +2 -2
  165. package/schematics/ng-update/migrations/method-call-arguments.mjs +2 -2
  166. package/schematics/ng-update/migrations/misc-template.d.ts +1 -1
  167. package/schematics/ng-update/migrations/misc-template.js +2 -2
  168. package/schematics/ng-update/migrations/misc-template.mjs +2 -2
  169. package/schematics/ng-update/migrations/output-names.d.ts +1 -1
  170. package/schematics/ng-update/migrations/output-names.js +2 -2
  171. package/schematics/ng-update/migrations/output-names.mjs +2 -2
  172. package/schematics/ng-update/migrations/property-names.d.ts +1 -1
  173. package/schematics/ng-update/migrations/property-names.js +2 -2
  174. package/schematics/ng-update/migrations/property-names.mjs +2 -2
  175. package/schematics/ng-update/migrations/symbol-removal.d.ts +1 -1
  176. package/schematics/ng-update/migrations/symbol-removal.js +2 -2
  177. package/schematics/ng-update/migrations/symbol-removal.mjs +2 -2
  178. package/schematics/ng-update/public-api.d.ts +1 -1
  179. package/schematics/ng-update/public-api.js +2 -2
  180. package/schematics/ng-update/public-api.mjs +2 -2
  181. package/schematics/ng-update/typescript/base-types.d.ts +1 -1
  182. package/schematics/ng-update/typescript/base-types.js +2 -2
  183. package/schematics/ng-update/typescript/base-types.mjs +2 -2
  184. package/schematics/ng-update/typescript/imports.d.ts +1 -1
  185. package/schematics/ng-update/typescript/imports.js +2 -2
  186. package/schematics/ng-update/typescript/imports.mjs +2 -2
  187. package/schematics/ng-update/typescript/literal.d.ts +1 -1
  188. package/schematics/ng-update/typescript/literal.js +2 -2
  189. package/schematics/ng-update/typescript/literal.mjs +2 -2
  190. package/schematics/ng-update/typescript/module-specifiers.d.ts +1 -1
  191. package/schematics/ng-update/typescript/module-specifiers.js +2 -2
  192. package/schematics/ng-update/typescript/module-specifiers.mjs +2 -2
  193. package/schematics/ng-update/upgrade-data.d.ts +1 -1
  194. package/schematics/ng-update/upgrade-data.js +2 -2
  195. package/schematics/ng-update/upgrade-data.mjs +2 -2
  196. package/schematics/paths.d.ts +1 -1
  197. package/schematics/paths.js +2 -2
  198. package/schematics/paths.mjs +2 -2
  199. package/schematics/update-tool/component-resource-collector.d.ts +1 -1
  200. package/schematics/update-tool/component-resource-collector.js +2 -2
  201. package/schematics/update-tool/component-resource-collector.mjs +2 -2
  202. package/schematics/update-tool/file-system.d.ts +1 -1
  203. package/schematics/update-tool/file-system.js +2 -2
  204. package/schematics/update-tool/file-system.mjs +2 -2
  205. package/schematics/update-tool/index.d.ts +1 -1
  206. package/schematics/update-tool/index.js +2 -2
  207. package/schematics/update-tool/index.mjs +2 -2
  208. package/schematics/update-tool/logger.d.ts +1 -1
  209. package/schematics/update-tool/logger.js +2 -2
  210. package/schematics/update-tool/logger.mjs +2 -2
  211. package/schematics/update-tool/migration.d.ts +1 -1
  212. package/schematics/update-tool/migration.js +2 -2
  213. package/schematics/update-tool/migration.mjs +2 -2
  214. package/schematics/update-tool/public-api.d.ts +1 -1
  215. package/schematics/update-tool/public-api.js +2 -2
  216. package/schematics/update-tool/public-api.mjs +2 -2
  217. package/schematics/update-tool/target-version.d.ts +1 -1
  218. package/schematics/update-tool/target-version.js +2 -2
  219. package/schematics/update-tool/target-version.mjs +2 -2
  220. package/schematics/update-tool/update-recorder.d.ts +1 -1
  221. package/schematics/update-tool/update-recorder.js +2 -2
  222. package/schematics/update-tool/update-recorder.mjs +2 -2
  223. package/schematics/update-tool/utils/decorators.d.ts +1 -1
  224. package/schematics/update-tool/utils/decorators.js +2 -2
  225. package/schematics/update-tool/utils/decorators.mjs +2 -2
  226. package/schematics/update-tool/utils/diagnostics.d.ts +1 -1
  227. package/schematics/update-tool/utils/diagnostics.js +2 -2
  228. package/schematics/update-tool/utils/diagnostics.mjs +2 -2
  229. package/schematics/update-tool/utils/functions.d.ts +1 -1
  230. package/schematics/update-tool/utils/functions.js +2 -2
  231. package/schematics/update-tool/utils/functions.mjs +2 -2
  232. package/schematics/update-tool/utils/imports.d.ts +1 -1
  233. package/schematics/update-tool/utils/imports.js +2 -2
  234. package/schematics/update-tool/utils/imports.mjs +2 -2
  235. package/schematics/update-tool/utils/line-mappings.d.ts +1 -1
  236. package/schematics/update-tool/utils/line-mappings.js +2 -2
  237. package/schematics/update-tool/utils/line-mappings.mjs +2 -2
  238. package/schematics/update-tool/utils/parse-tsconfig.d.ts +1 -1
  239. package/schematics/update-tool/utils/parse-tsconfig.js +2 -2
  240. package/schematics/update-tool/utils/parse-tsconfig.mjs +2 -2
  241. package/schematics/update-tool/utils/property-name.d.ts +1 -1
  242. package/schematics/update-tool/utils/property-name.js +2 -2
  243. package/schematics/update-tool/utils/property-name.mjs +2 -2
  244. package/schematics/update-tool/utils/virtual-host.d.ts +1 -1
  245. package/schematics/update-tool/utils/virtual-host.js +2 -2
  246. package/schematics/update-tool/utils/virtual-host.mjs +2 -2
  247. package/schematics/update-tool/version-changes.d.ts +1 -1
  248. package/schematics/update-tool/version-changes.js +2 -2
  249. package/schematics/update-tool/version-changes.mjs +2 -2
  250. package/schematics/utils/ast/ng-module-imports.d.ts +1 -1
  251. package/schematics/utils/ast/ng-module-imports.js +2 -2
  252. package/schematics/utils/ast/ng-module-imports.mjs +2 -2
  253. package/schematics/utils/ast.d.ts +1 -1
  254. package/schematics/utils/ast.js +2 -2
  255. package/schematics/utils/ast.mjs +2 -2
  256. package/schematics/utils/build-component.d.ts +1 -1
  257. package/schematics/utils/build-component.js +2 -2
  258. package/schematics/utils/build-component.mjs +2 -2
  259. package/schematics/utils/get-project.d.ts +1 -1
  260. package/schematics/utils/get-project.js +2 -2
  261. package/schematics/utils/get-project.mjs +2 -2
  262. package/schematics/utils/html-manipulation.d.ts +1 -1
  263. package/schematics/utils/html-manipulation.js +2 -2
  264. package/schematics/utils/html-manipulation.mjs +2 -2
  265. package/schematics/utils/index.d.ts +1 -1
  266. package/schematics/utils/index.js +2 -2
  267. package/schematics/utils/index.mjs +2 -2
  268. package/schematics/utils/parse5-element.d.ts +1 -1
  269. package/schematics/utils/parse5-element.js +2 -2
  270. package/schematics/utils/parse5-element.mjs +2 -2
  271. package/schematics/utils/project-index-file.d.ts +1 -1
  272. package/schematics/utils/project-index-file.js +2 -2
  273. package/schematics/utils/project-index-file.mjs +2 -2
  274. package/schematics/utils/project-main-file.d.ts +1 -1
  275. package/schematics/utils/project-main-file.js +2 -2
  276. package/schematics/utils/project-main-file.mjs +2 -2
  277. package/schematics/utils/project-style-file.d.ts +1 -1
  278. package/schematics/utils/project-style-file.js +2 -2
  279. package/schematics/utils/project-style-file.mjs +2 -2
  280. package/schematics/utils/project-targets.d.ts +1 -1
  281. package/schematics/utils/project-targets.js +2 -2
  282. package/schematics/utils/project-targets.mjs +2 -2
  283. package/schematics/utils/project-tsconfig-paths.d.ts +1 -1
  284. package/schematics/utils/project-tsconfig-paths.js +2 -2
  285. package/schematics/utils/project-tsconfig-paths.mjs +2 -2
  286. package/schematics/utils/schematic-options.d.ts +1 -1
  287. package/schematics/utils/schematic-options.js +2 -2
  288. package/schematics/utils/schematic-options.mjs +2 -2
  289. package/scrolling/index.d.ts +17 -37
  290. package/stepper/index.d.ts +9 -11
  291. package/table/index.d.ts +36 -51
  292. package/text-field/index.d.ts +5 -9
  293. package/tree/index.d.ts +11 -13
@@ -66,20 +66,20 @@ class Platform {
66
66
  /** Whether the current browser is Safari. */
67
67
  this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: Platform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
70
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: Platform, providedIn: 'root' }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: Platform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
70
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: Platform, providedIn: 'root' }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: Platform, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: Platform, decorators: [{
73
73
  type: Injectable,
74
74
  args: [{ providedIn: 'root' }]
75
75
  }], ctorParameters: () => [] });
76
76
 
77
77
  class PlatformModule {
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
79
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.2", ngImport: i0, type: PlatformModule }); }
80
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PlatformModule }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
79
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.3", ngImport: i0, type: PlatformModule }); }
80
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PlatformModule }); }
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PlatformModule, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PlatformModule, decorators: [{
83
83
  type: NgModule,
84
84
  args: [{}]
85
85
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"platform.mjs","sources":["../../../../../../src/cdk/platform/platform.ts","../../../../../../src/cdk/platform/platform-module.ts","../../../../../../src/cdk/platform/features/input-types.ts","../../../../../../src/cdk/platform/features/passive-listeners.ts","../../../../../../src/cdk/platform/features/scrolling.ts","../../../../../../src/cdk/platform/features/shadow-dom.ts","../../../../../../src/cdk/platform/features/test-environment.ts","../../../../../../src/cdk/platform/platform_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n private _platformId = inject(PLATFORM_ID);\n\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n isBrowser: boolean = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n BLINK: boolean =\n this.isBrowser &&\n !!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n WEBKIT: boolean =\n this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean =\n this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n /** Backwards-compatible constructor. */\n constructor(..._args: unknown[]);\n\n constructor() {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\n@NgModule({})\nexport class PlatformModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes: Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/** @returns The input types supported by this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(\n candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }),\n );\n\n return supportedInputTypes;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener(\n 'test',\n null!,\n Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }),\n );\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(\n options: AddEventListenerOptions,\n): AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED,\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType | undefined;\n\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported: boolean | undefined;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement!.style) {\n scrollBehaviorSupported = true;\n } else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction: Function | undefined = Element.prototype.scrollTo;\n\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n } else {\n scrollBehaviorSupported = false;\n }\n }\n }\n\n return scrollBehaviorSupported;\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nlet shadowDomIsSupported: boolean;\n\n/** Checks whether the user's browser support Shadow DOM. */\nexport function _supportsShadowDom(): boolean {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && ((head as any).createShadowRoot || head.attachShadow));\n }\n\n return shadowDomIsSupported;\n}\n\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nexport function _getShadowRoot(element: HTMLElement): ShadowRoot | null {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n\n return null;\n}\n\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nexport function _getFocusedElementPierceShadowDom(): HTMLElement | null {\n let activeElement =\n typeof document !== 'undefined' && document\n ? (document.activeElement as HTMLElement | null)\n : null;\n\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement as HTMLElement | null;\n if (newActiveElement === activeElement) {\n break;\n } else {\n activeElement = newActiveElement;\n }\n }\n\n return activeElement;\n}\n\n/** Gets the target of an event while accounting for Shadow DOM. */\nexport function _getEventTarget<T extends EventTarget>(event: Event): T | null {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target) as T | null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Gets whether the code is currently running in a test environment. */\nexport function _isTestEnvironment(): boolean {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha)\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.mjs","sources":["../../../../../../src/cdk/platform/platform.ts","../../../../../../src/cdk/platform/platform-module.ts","../../../../../../src/cdk/platform/features/input-types.ts","../../../../../../src/cdk/platform/features/passive-listeners.ts","../../../../../../src/cdk/platform/features/scrolling.ts","../../../../../../src/cdk/platform/features/shadow-dom.ts","../../../../../../src/cdk/platform/features/test-environment.ts","../../../../../../src/cdk/platform/platform_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n private _platformId = inject(PLATFORM_ID);\n\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n isBrowser: boolean = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n BLINK: boolean =\n this.isBrowser &&\n !!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n WEBKIT: boolean =\n this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean =\n this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n /** Backwards-compatible constructor. */\n constructor(..._args: unknown[]);\n\n constructor() {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\n\n@NgModule({})\nexport class PlatformModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes: Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/** @returns The input types supported by this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(\n candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }),\n );\n\n return supportedInputTypes;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener(\n 'test',\n null!,\n Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }),\n );\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(\n options: AddEventListenerOptions,\n): AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED,\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType | undefined;\n\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported: boolean | undefined;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement!.style) {\n scrollBehaviorSupported = true;\n } else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction: Function | undefined = Element.prototype.scrollTo;\n\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n } else {\n scrollBehaviorSupported = false;\n }\n }\n }\n\n return scrollBehaviorSupported;\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nlet shadowDomIsSupported: boolean;\n\n/** Checks whether the user's browser support Shadow DOM. */\nexport function _supportsShadowDom(): boolean {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && ((head as any).createShadowRoot || head.attachShadow));\n }\n\n return shadowDomIsSupported;\n}\n\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nexport function _getShadowRoot(element: HTMLElement): ShadowRoot | null {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n\n return null;\n}\n\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nexport function _getFocusedElementPierceShadowDom(): HTMLElement | null {\n let activeElement =\n typeof document !== 'undefined' && document\n ? (document.activeElement as HTMLElement | null)\n : null;\n\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement as HTMLElement | null;\n if (newActiveElement === activeElement) {\n break;\n } else {\n activeElement = newActiveElement;\n }\n }\n\n return activeElement;\n}\n\n/** Gets the target of an event while accounting for Shadow DOM. */\nexport function _getEventTarget<T extends EventTarget>(event: Event): T | null {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target) as T | null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** Gets whether the code is currently running in a test environment. */\nexport function _isTestEnvironment(): boolean {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha)\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAWA;AACA;AACA,IAAI,kBAA2B,CAAC;AAEhC;AACA;AACA;AACA;AACA;AACA,IAAI;IACF,kBAAkB,GAAG,OAAO,IAAI,KAAK,WAAW,IAAK,IAAY,CAAC,eAAe,CAAC;AACpF,CAAC;AAAC,MAAM;IACN,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED;;;AAGG;MAEU,QAAQ,CAAA;AA4DnB,IAAA,WAAA,GAAA;AA3DQ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;;;;;QAM1C,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC,WAAW;AACnC,cAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;cACnC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;;AAG/C,QAAA,IAAA,CAAA,IAAI,GAAY,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;AAGtE,QAAA,IAAA,CAAA,OAAO,GAAY,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;QAIjF,IAAK,CAAA,KAAA,GACH,IAAI,CAAC,SAAS;AACd,YAAA,CAAC,EAAG,MAAc,CAAC,MAAM,IAAI,kBAAkB,CAAC;YAChD,OAAO,GAAG,KAAK,WAAW;YAC1B,CAAC,IAAI,CAAC,IAAI;YACV,CAAC,IAAI,CAAC,OAAO,CAAC;;;;QAKhB,IAAM,CAAA,MAAA,GACJ,IAAI,CAAC,SAAS;AACd,YAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACxC,CAAC,IAAI,CAAC,KAAK;YACX,CAAC,IAAI,CAAC,IAAI;YACV,CAAC,IAAI,CAAC,OAAO,CAAC;;QAGhB,IAAG,CAAA,GAAA,GACD,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM,CAAC,CAAC;;;;;;AAO5F,QAAA,IAAA,CAAA,OAAO,GAAY,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;AAItF,QAAA,IAAA,CAAA,OAAO,GAAY,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;AAM3F,QAAA,IAAA,CAAA,MAAM,GAAY,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;KAKvE;qHA5DL,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAR,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cADI,MAAM,EAAA,CAAA,CAAA,EAAA;;kGAClB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;MCnBnB,cAAc,CAAA;qHAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;sHAAd,cAAc,EAAA,CAAA,CAAA,EAAA;sHAAd,cAAc,EAAA,CAAA,CAAA,EAAA;;kGAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,QAAQ;mBAAC,EAAE,CAAA;;;ACFZ;AACA,IAAI,mBAAgC,CAAC;AAErC;AACA,MAAM,mBAAmB,GAAG;;;;;IAK1B,OAAO;IACP,QAAQ;IACR,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC;AAEF;SACgB,sBAAsB,GAAA;;IAEpC,IAAI,mBAAmB,EAAE;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC5B;;;;IAKD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC7C,QAAA,mBAAmB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACnD,QAAA,OAAO,mBAAmB,CAAC;KAC5B;IAED,IAAI,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvD,mBAAmB,GAAG,IAAI,GAAG,CAC3B,mBAAmB,CAAC,MAAM,CAAC,KAAK,IAAG;AACjC,QAAA,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7C,QAAA,OAAO,gBAAgB,CAAC,IAAI,KAAK,KAAK,CAAC;KACxC,CAAC,CACH,CAAC;AAEF,IAAA,OAAO,mBAAmB,CAAC;AAC7B;;ACzDA;AACA,IAAI,qBAA8B,CAAC;AAEnC;;;AAGG;SACa,6BAA6B,GAAA;IAC3C,IAAI,qBAAqB,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAClE,QAAA,IAAI;AACF,YAAA,MAAM,CAAC,gBAAgB,CACrB,MAAM,EACN,IAAK,EACL,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;gBACnC,GAAG,EAAE,OAAO,qBAAqB,GAAG,IAAI,CAAC;AAC1C,aAAA,CAAC,CACH,CAAC;SACH;gBAAS;AACR,YAAA,qBAAqB,GAAG,qBAAqB,IAAI,KAAK,CAAC;SACxD;KACF;AAED,IAAA,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;;;AAKG;AACG,SAAU,+BAA+B,CAC7C,OAAgC,EAAA;AAEhC,IAAA,OAAO,6BAA6B,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACvE;;ACnCA;IACY,kBAgBX;AAhBD,CAAA,UAAY,iBAAiB,EAAA;AAC3B;;;AAGG;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN;;;AAGG;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP;;;AAGG;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACV,CAAC,EAhBW,iBAAiB,KAAjB,iBAAiB,GAgB5B,EAAA,CAAA,CAAA,CAAA;AAED;AACA,IAAI,iBAAgD,CAAC;AAErD;AACA,IAAI,uBAA4C,CAAC;AAEjD;SACgB,sBAAsB,GAAA;AACpC,IAAA,IAAI,uBAAuB,IAAI,IAAI,EAAE;;;AAGnC,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,CAAC,OAAO,EAAE;YAC1F,uBAAuB,GAAG,KAAK,CAAC;AAChC,YAAA,OAAO,uBAAuB,CAAC;SAChC;;QAGD,IAAI,gBAAgB,IAAI,QAAQ,CAAC,eAAgB,CAAC,KAAK,EAAE;YACvD,uBAAuB,GAAG,IAAI,CAAC;SAChC;aAAM;;;AAGL,YAAA,MAAM,gBAAgB,GAAyB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YAE1E,IAAI,gBAAgB,EAAE;;;;;gBAKpB,uBAAuB,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC1F;iBAAM;gBACL,uBAAuB,GAAG,KAAK,CAAC;aACjC;SACF;KACF;AAED,IAAA,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED;;;AAGG;SACa,oBAAoB,GAAA;;IAElC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE;QAC7C,OAAO,iBAAiB,CAAC,MAAM,CAAC;KACjC;AAED,IAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;;QAE7B,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC;AAC7C,QAAA,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC;AAC5B,QAAA,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,QAAA,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC;AACjC,QAAA,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC;AACrC,QAAA,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC;AACtC,QAAA,cAAc,CAAC,QAAQ,GAAG,UAAU,CAAC;QAErC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;AACnC,QAAA,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAA,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;AAE5B,QAAA,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAE3C,QAAA,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;;;;AAK7C,QAAA,IAAI,eAAe,CAAC,UAAU,KAAK,CAAC,EAAE;;;;;AAKpC,YAAA,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC;YAC/B,iBAAiB;AACf,gBAAA,eAAe,CAAC,UAAU,KAAK,CAAC,GAAG,iBAAiB,CAAC,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC;SAC7F;QAED,eAAe,CAAC,MAAM,EAAE,CAAC;KAC1B;AACD,IAAA,OAAO,iBAAiB,CAAC;AAC3B;;ACzGA,IAAI,oBAA6B,CAAC;AAElC;SACgB,kBAAkB,GAAA;AAChC,IAAA,IAAI,oBAAoB,IAAI,IAAI,EAAE;AAChC,QAAA,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACpE,QAAA,oBAAoB,GAAG,CAAC,EAAE,IAAI,KAAM,IAAY,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;KAC1F;AAED,IAAA,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED;AACM,SAAU,cAAc,CAAC,OAAoB,EAAA;IACjD,IAAI,kBAAkB,EAAE,EAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;;;QAIpE,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,IAAI,QAAQ,YAAY,UAAU,EAAE;AACrF,YAAA,OAAO,QAAQ,CAAC;SACjB;KACF;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;AAGG;SACa,iCAAiC,GAAA;AAC/C,IAAA,IAAI,aAAa,GACf,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ;UACtC,QAAQ,CAAC,aAAoC;UAC9C,IAAI,CAAC;AAEX,IAAA,OAAO,aAAa,IAAI,aAAa,CAAC,UAAU,EAAE;AAChD,QAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,aAAmC,CAAC;AACtF,QAAA,IAAI,gBAAgB,KAAK,aAAa,EAAE;YACtC,MAAM;SACP;aAAM;YACL,aAAa,GAAG,gBAAgB,CAAC;SAClC;KACF;AAED,IAAA,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;AACM,SAAU,eAAe,CAAwB,KAAY,EAAA;;;IAGjE,QAAQ,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAc;AACnF;;ACtDA;SACgB,kBAAkB,GAAA;;;;;IAKhC;;IAEE,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS;;SAE/C,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC;;SAE5C,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC;;SAEtC,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,EACzC;AACJ;;ACxBA;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ElementRef, Injector, Directive, EventEmitter, Inject, Input, Output, NgModule } from '@angular/core';
2
+ import { ElementRef, NgModuleRef, createComponent, Injector, inject, TemplateRef, ViewContainerRef, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
 
5
5
  /**
@@ -91,12 +91,16 @@ class Portal {
91
91
  * A `ComponentPortal` is a portal that instantiates some Component upon attachment.
92
92
  */
93
93
  class ComponentPortal extends Portal {
94
- constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) {
94
+ constructor(component, viewContainerRef, injector,
95
+ /**
96
+ * @deprecated No longer in use. To be removed.
97
+ * @breaking-change 18.0.0
98
+ */
99
+ _componentFactoryResolver, projectableNodes) {
95
100
  super();
96
101
  this.component = component;
97
102
  this.viewContainerRef = viewContainerRef;
98
103
  this.injector = injector;
99
- this.componentFactoryResolver = componentFactoryResolver;
100
104
  this.projectableNodes = projectableNodes;
101
105
  }
102
106
  }
@@ -244,7 +248,12 @@ class DomPortalOutlet extends BasePortalOutlet {
244
248
  */
245
249
  constructor(
246
250
  /** Element into which the content is projected. */
247
- outletElement, _componentFactoryResolver, _appRef, _defaultInjector,
251
+ outletElement,
252
+ /**
253
+ * @deprecated No longer in use. To be removed.
254
+ * @breaking-change 18.0.0
255
+ */
256
+ _componentFactoryResolver, _appRef, _defaultInjector,
248
257
  /**
249
258
  * @deprecated `_document` Parameter to be made required.
250
259
  * @breaking-change 10.0.0
@@ -252,7 +261,6 @@ class DomPortalOutlet extends BasePortalOutlet {
252
261
  _document) {
253
262
  super();
254
263
  this.outletElement = outletElement;
255
- this._componentFactoryResolver = _componentFactoryResolver;
256
264
  this._appRef = _appRef;
257
265
  this._defaultInjector = _defaultInjector;
258
266
  /**
@@ -262,11 +270,6 @@ class DomPortalOutlet extends BasePortalOutlet {
262
270
  * @breaking-change 10.0.0
263
271
  */
264
272
  this.attachDomPortal = (portal) => {
265
- // @breaking-change 10.0.0 Remove check and error once the
266
- // `_document` constructor parameter is required.
267
- if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {
268
- throw Error('Cannot attach DOM portal without _document constructor parameter');
269
- }
270
273
  const element = portal.element;
271
274
  if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {
272
275
  throw Error('DOM portal content must be attached to a parent node.');
@@ -287,30 +290,36 @@ class DomPortalOutlet extends BasePortalOutlet {
287
290
  this._document = _document;
288
291
  }
289
292
  /**
290
- * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.
293
+ * Attach the given ComponentPortal to DOM element.
291
294
  * @param portal Portal to be attached
292
295
  * @returns Reference to the created component.
293
296
  */
294
297
  attachComponentPortal(portal) {
295
- const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver);
296
- if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {
297
- throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');
298
- }
299
- const componentFactory = resolver.resolveComponentFactory(portal.component);
300
298
  let componentRef;
301
299
  // If the portal specifies a ViewContainerRef, we will use that as the attachment point
302
300
  // for the component (in terms of Angular's component tree, not rendering).
303
301
  // When the ViewContainerRef is missing, we use the factory to create the component directly
304
302
  // and then manually attach the view to the application.
305
303
  if (portal.viewContainerRef) {
306
- componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || undefined);
304
+ const injector = portal.injector || portal.viewContainerRef.injector;
305
+ const ngModuleRef = injector.get(NgModuleRef, null, { optional: true }) || undefined;
306
+ componentRef = portal.viewContainerRef.createComponent(portal.component, {
307
+ index: portal.viewContainerRef.length,
308
+ injector,
309
+ ngModuleRef,
310
+ projectableNodes: portal.projectableNodes || undefined,
311
+ });
307
312
  this.setDisposeFn(() => componentRef.destroy());
308
313
  }
309
314
  else {
310
315
  if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {
311
316
  throw Error('Cannot attach component portal to outlet without an ApplicationRef.');
312
317
  }
313
- componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);
318
+ componentRef = createComponent(portal.component, {
319
+ elementInjector: portal.injector || this._defaultInjector || Injector.NULL,
320
+ environmentInjector: this._appRef.injector,
321
+ projectableNodes: portal.projectableNodes || undefined,
322
+ });
314
323
  this._appRef.attachView(componentRef.hostView);
315
324
  this.setDisposeFn(() => {
316
325
  // Verify that the ApplicationRef has registered views before trying to detach a host view.
@@ -380,34 +389,36 @@ class DomPortalHost extends DomPortalOutlet {
380
389
  * the directive instance itself can be attached to a host, enabling declarative use of portals.
381
390
  */
382
391
  class CdkPortal extends TemplatePortal {
383
- constructor(templateRef, viewContainerRef) {
392
+ constructor() {
393
+ const templateRef = inject(TemplateRef);
394
+ const viewContainerRef = inject(ViewContainerRef);
384
395
  super(templateRef, viewContainerRef);
385
396
  }
386
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
387
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.2", type: CdkPortal, isStandalone: true, selector: "[cdkPortal]", exportAs: ["cdkPortal"], usesInheritance: true, ngImport: i0 }); }
397
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: CdkPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
398
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.3", type: CdkPortal, isStandalone: true, selector: "[cdkPortal]", exportAs: ["cdkPortal"], usesInheritance: true, ngImport: i0 }); }
388
399
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: CdkPortal, decorators: [{
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: CdkPortal, decorators: [{
390
401
  type: Directive,
391
402
  args: [{
392
403
  selector: '[cdkPortal]',
393
404
  exportAs: 'cdkPortal',
394
405
  standalone: true,
395
406
  }]
396
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });
407
+ }], ctorParameters: () => [] });
397
408
  /**
398
409
  * @deprecated Use `CdkPortal` instead.
399
410
  * @breaking-change 9.0.0
400
411
  */
401
412
  class TemplatePortalDirective extends CdkPortal {
402
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
403
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.2", type: TemplatePortalDirective, isStandalone: true, selector: "[cdk-portal], [portal]", providers: [
413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
414
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.3", type: TemplatePortalDirective, isStandalone: true, selector: "[cdk-portal], [portal]", providers: [
404
415
  {
405
416
  provide: CdkPortal,
406
417
  useExisting: TemplatePortalDirective,
407
418
  },
408
419
  ], exportAs: ["cdkPortal"], usesInheritance: true, ngImport: i0 }); }
409
420
  }
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: TemplatePortalDirective, decorators: [{
421
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: TemplatePortalDirective, decorators: [{
411
422
  type: Directive,
412
423
  args: [{
413
424
  selector: '[cdk-portal], [portal]',
@@ -429,15 +440,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2",
429
440
  * `<ng-template [cdkPortalOutlet]="greeting"></ng-template>`
430
441
  */
431
442
  class CdkPortalOutlet extends BasePortalOutlet {
432
- constructor(_componentFactoryResolver, _viewContainerRef,
433
- /**
434
- * @deprecated `_document` parameter to be made required.
435
- * @breaking-change 9.0.0
436
- */
437
- _document) {
443
+ constructor() {
438
444
  super();
439
- this._componentFactoryResolver = _componentFactoryResolver;
440
- this._viewContainerRef = _viewContainerRef;
445
+ this._moduleRef = inject(NgModuleRef, { optional: true });
446
+ this._document = inject(DOCUMENT);
447
+ this._viewContainerRef = inject(ViewContainerRef);
441
448
  /** Whether the portal component is initialized. */
442
449
  this._isInitialized = false;
443
450
  /** Emits when a portal is attached to the outlet. */
@@ -449,11 +456,6 @@ class CdkPortalOutlet extends BasePortalOutlet {
449
456
  * @breaking-change 10.0.0
450
457
  */
451
458
  this.attachDomPortal = (portal) => {
452
- // @breaking-change 9.0.0 Remove check and error once the
453
- // `_document` constructor parameter is required.
454
- if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {
455
- throw Error('Cannot attach DOM portal without _document constructor parameter');
456
- }
457
459
  const element = portal.element;
458
460
  if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {
459
461
  throw Error('DOM portal content must be attached to a parent node.');
@@ -471,7 +473,6 @@ class CdkPortalOutlet extends BasePortalOutlet {
471
473
  }
472
474
  });
473
475
  };
474
- this._document = _document;
475
476
  }
476
477
  /** Portal associated with the Portal outlet. */
477
478
  get portal() {
@@ -505,7 +506,7 @@ class CdkPortalOutlet extends BasePortalOutlet {
505
506
  this._attachedRef = this._attachedPortal = null;
506
507
  }
507
508
  /**
508
- * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.
509
+ * Attach the given ComponentPortal to this PortalOutlet.
509
510
  *
510
511
  * @param portal Portal to be attached to the portal outlet.
511
512
  * @returns Reference to the created component.
@@ -515,9 +516,12 @@ class CdkPortalOutlet extends BasePortalOutlet {
515
516
  // If the portal specifies an origin, use that as the logical location of the component
516
517
  // in the application tree. Otherwise use the location of this PortalOutlet.
517
518
  const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;
518
- const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;
519
- const componentFactory = resolver.resolveComponentFactory(portal.component);
520
- const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || undefined);
519
+ const ref = viewContainerRef.createComponent(portal.component, {
520
+ index: viewContainerRef.length,
521
+ injector: portal.injector || viewContainerRef.injector,
522
+ projectableNodes: portal.projectableNodes || undefined,
523
+ ngModuleRef: this._moduleRef || undefined,
524
+ });
521
525
  // If we're using a view container that's different from the injected one (e.g. when the portal
522
526
  // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered
523
527
  // inside of the alternate view container.
@@ -555,20 +559,17 @@ class CdkPortalOutlet extends BasePortalOutlet {
555
559
  ? nativeElement
556
560
  : nativeElement.parentNode);
557
561
  }
558
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
559
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.2", type: CdkPortalOutlet, isStandalone: true, selector: "[cdkPortalOutlet]", inputs: { portal: ["cdkPortalOutlet", "portal"] }, outputs: { attached: "attached" }, exportAs: ["cdkPortalOutlet"], usesInheritance: true, ngImport: i0 }); }
562
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: CdkPortalOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
563
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.3", type: CdkPortalOutlet, isStandalone: true, selector: "[cdkPortalOutlet]", inputs: { portal: ["cdkPortalOutlet", "portal"] }, outputs: { attached: "attached" }, exportAs: ["cdkPortalOutlet"], usesInheritance: true, ngImport: i0 }); }
560
564
  }
561
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: CdkPortalOutlet, decorators: [{
565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: CdkPortalOutlet, decorators: [{
562
566
  type: Directive,
563
567
  args: [{
564
568
  selector: '[cdkPortalOutlet]',
565
569
  exportAs: 'cdkPortalOutlet',
566
570
  standalone: true,
567
571
  }]
568
- }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
569
- type: Inject,
570
- args: [DOCUMENT]
571
- }] }], propDecorators: { portal: [{
572
+ }], ctorParameters: () => [], propDecorators: { portal: [{
572
573
  type: Input,
573
574
  args: ['cdkPortalOutlet']
574
575
  }], attached: [{
@@ -579,15 +580,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2",
579
580
  * @breaking-change 9.0.0
580
581
  */
581
582
  class PortalHostDirective extends CdkPortalOutlet {
582
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
583
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.2", type: PortalHostDirective, isStandalone: true, selector: "[cdkPortalHost], [portalHost]", inputs: { portal: ["cdkPortalHost", "portal"] }, providers: [
583
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
584
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.3", type: PortalHostDirective, isStandalone: true, selector: "[cdkPortalHost], [portalHost]", inputs: { portal: ["cdkPortalHost", "portal"] }, providers: [
584
585
  {
585
586
  provide: CdkPortalOutlet,
586
587
  useExisting: PortalHostDirective,
587
588
  },
588
589
  ], exportAs: ["cdkPortalHost"], usesInheritance: true, ngImport: i0 }); }
589
590
  }
590
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PortalHostDirective, decorators: [{
591
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PortalHostDirective, decorators: [{
591
592
  type: Directive,
592
593
  args: [{
593
594
  selector: '[cdkPortalHost], [portalHost]',
@@ -603,11 +604,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2",
603
604
  }]
604
605
  }] });
605
606
  class PortalModule {
606
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
607
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.2", ngImport: i0, type: PortalModule, imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); }
608
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PortalModule }); }
607
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
608
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.3", ngImport: i0, type: PortalModule, imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); }
609
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PortalModule }); }
609
610
  }
610
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: PortalModule, decorators: [{
611
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.3", ngImport: i0, type: PortalModule, decorators: [{
611
612
  type: NgModule,
612
613
  args: [{
613
614
  imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],