@taiga-ui/cdk 4.0.0-rc.1 → 4.0.0-rc.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 (316) hide show
  1. package/classes/control.d.ts +1 -1
  2. package/classes/index.d.ts +0 -1
  3. package/constants/used-icons.d.ts +1 -1
  4. package/constants/version.d.ts +1 -1
  5. package/constants/version.js +1 -1
  6. package/directives/auto-focus/autofocus.options.d.ts +1 -1
  7. package/directives/for/for.directive.d.ts +3 -3
  8. package/directives/platform/platform.directive.d.ts +1 -1
  9. package/directives/value-changes/value-changes.directive.d.ts +3 -3
  10. package/esm2022/classes/control.mjs +2 -2
  11. package/esm2022/classes/index.mjs +1 -2
  12. package/esm2022/constants/used-icons.mjs +14 -6
  13. package/esm2022/constants/version.mjs +2 -2
  14. package/esm2022/directives/active-zone/active-zone.directive.mjs +2 -2
  15. package/esm2022/directives/auto-focus/autofocus.options.mjs +3 -3
  16. package/esm2022/directives/auto-focus/handlers/ios.handler.mjs +3 -3
  17. package/esm2022/directives/click-outside/click-outside.directive.mjs +2 -2
  18. package/esm2022/directives/copy-processor/copy-processor.directive.mjs +3 -3
  19. package/esm2022/directives/droppable/droppable.directive.mjs +3 -3
  20. package/esm2022/directives/for/for.directive.mjs +6 -6
  21. package/esm2022/directives/high-dpi/high-dpi.directive.mjs +3 -3
  22. package/esm2022/directives/hovered/hovered.service.mjs +2 -2
  23. package/esm2022/directives/obscured/obscured.directive.mjs +2 -2
  24. package/esm2022/directives/obscured/obscured.service.mjs +4 -4
  25. package/esm2022/directives/pan/pan.service.mjs +2 -2
  26. package/esm2022/directives/platform/platform.directive.mjs +6 -6
  27. package/esm2022/directives/swipe/swipe.service.mjs +2 -2
  28. package/esm2022/directives/value-changes/value-changes.directive.mjs +6 -6
  29. package/esm2022/directives/zoom/zoom.service.mjs +4 -4
  30. package/esm2022/observables/control-value.mjs +2 -2
  31. package/esm2022/observables/drag-and-drop-from.mjs +2 -2
  32. package/esm2022/observables/events.mjs +3 -3
  33. package/esm2022/observables/if-map.mjs +2 -2
  34. package/esm2022/observables/must-be-present.mjs +2 -2
  35. package/esm2022/observables/zone.mjs +4 -4
  36. package/esm2022/pipes/filter/filter.pipe.mjs +2 -2
  37. package/esm2022/services/index.mjs +2 -2
  38. package/esm2022/services/popover.service.mjs +3 -3
  39. package/esm2022/services/scroll.service.mjs +5 -5
  40. package/esm2022/services/theme-color.service.mjs +30 -0
  41. package/esm2022/tokens/active-element.mjs +5 -5
  42. package/esm2022/tokens/environment.mjs +15 -7
  43. package/esm2022/tokens/removed-element.mjs +4 -4
  44. package/esm2022/tokens/window-size.mjs +3 -3
  45. package/esm2022/utils/color/get-gradient-data.mjs +6 -0
  46. package/esm2022/utils/color/hex-to-rgb.mjs +2 -2
  47. package/esm2022/utils/color/index.mjs +3 -1
  48. package/esm2022/utils/color/parse-color.mjs +3 -3
  49. package/esm2022/utils/color/parse-gradient.mjs +70 -0
  50. package/esm2022/utils/color/rgb-to-hex.mjs +2 -2
  51. package/esm2022/utils/dom/get-element-obscurers.mjs +2 -2
  52. package/esm2022/utils/dom/get-element-point.mjs +6 -0
  53. package/esm2022/utils/dom/index.mjs +2 -1
  54. package/esm2022/utils/focus/focused-in.mjs +7 -0
  55. package/esm2022/utils/focus/index.mjs +2 -1
  56. package/esm2022/utils/miscellaneous/mark-control-as-touched-and-validate.mjs +3 -3
  57. package/esm2022/utils/miscellaneous/with-styles.mjs +2 -2
  58. package/fesm2022/taiga-ui-cdk-classes.mjs +2 -16
  59. package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-cdk-constants.mjs +14 -6
  61. package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs +1 -1
  63. package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs +4 -4
  65. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-cdk-directives-click-outside.mjs +1 -1
  67. package/fesm2022/taiga-ui-cdk-directives-click-outside.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs +2 -2
  69. package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-cdk-directives-droppable.mjs +2 -2
  71. package/fesm2022/taiga-ui-cdk-directives-droppable.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-cdk-directives-for.mjs +5 -5
  73. package/fesm2022/taiga-ui-cdk-directives-for.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-cdk-directives-high-dpi.mjs +2 -2
  75. package/fesm2022/taiga-ui-cdk-directives-high-dpi.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-cdk-directives-hovered.mjs +1 -1
  77. package/fesm2022/taiga-ui-cdk-directives-hovered.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs +4 -4
  79. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-cdk-directives-pan.mjs +1 -1
  81. package/fesm2022/taiga-ui-cdk-directives-pan.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-cdk-directives-platform.mjs +5 -5
  83. package/fesm2022/taiga-ui-cdk-directives-platform.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs +1 -1
  85. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-cdk-directives-value-changes.mjs +5 -5
  87. package/fesm2022/taiga-ui-cdk-directives-value-changes.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs +3 -3
  89. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-cdk-observables.mjs +9 -9
  91. package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-cdk-pipes-filter.mjs +1 -1
  93. package/fesm2022/taiga-ui-cdk-pipes-filter.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-cdk-services.mjs +25 -28
  95. package/fesm2022/taiga-ui-cdk-services.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-cdk-tokens.mjs +22 -15
  97. package/fesm2022/taiga-ui-cdk-tokens.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-cdk-utils-color.mjs +80 -5
  99. package/fesm2022/taiga-ui-cdk-utils-color.mjs.map +1 -1
  100. package/fesm2022/taiga-ui-cdk-utils-dom.mjs +7 -2
  101. package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-cdk-utils-focus.mjs +8 -2
  103. package/fesm2022/taiga-ui-cdk-utils-focus.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +3 -3
  105. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
  106. package/package.json +7 -8
  107. package/schematics/migration.json +3 -3
  108. package/schematics/ng-add/constants/modules.d.ts +0 -1
  109. package/schematics/ng-add/constants/modules.js +1 -11
  110. package/schematics/ng-add/constants/versions.d.ts +0 -1
  111. package/schematics/ng-add/constants/versions.js +1 -2
  112. package/schematics/ng-add/index.js +1 -7
  113. package/schematics/ng-add/schema.d.ts +0 -1
  114. package/schematics/ng-add/schema.json +0 -27
  115. package/schematics/ng-add/steps/add-taiga-icons.js +1 -1
  116. package/schematics/ng-add/steps/add-taiga-modules.js +7 -22
  117. package/schematics/ng-update/interfaces/html-comment.d.ts +3 -2
  118. package/schematics/ng-update/interfaces/replacement-attribute-value.d.ts +6 -2
  119. package/schematics/ng-update/interfaces/replacement-identifier.d.ts +4 -10
  120. package/schematics/ng-update/interfaces/replacement-type.d.ts +5 -0
  121. package/schematics/ng-update/steps/icons/replace-imports.js +5 -5
  122. package/schematics/ng-update/steps/index.d.ts +1 -0
  123. package/schematics/ng-update/steps/index.js +1 -0
  124. package/schematics/ng-update/steps/remove-module.js +2 -2
  125. package/schematics/ng-update/steps/rename-types.js +11 -7
  126. package/schematics/ng-update/steps/replace-deep-import.js +2 -2
  127. package/schematics/ng-update/steps/replace-enums.js +2 -2
  128. package/schematics/ng-update/steps/replace-identifier.js +31 -9
  129. package/schematics/ng-update/steps/replace-package-name.d.ts +5 -0
  130. package/schematics/ng-update/steps/replace-package-name.js +18 -0
  131. package/schematics/ng-update/steps/replace-services.js +5 -5
  132. package/schematics/ng-update/steps/show-warnings.js +4 -4
  133. package/schematics/ng-update/utils/replace-text.js +1 -1
  134. package/schematics/ng-update/utils/templates/replace-attr-values.js +41 -12
  135. package/schematics/ng-update/utils/templates/replace-attrs.js +1 -1
  136. package/schematics/ng-update/utils/templates/template-comments.js +11 -3
  137. package/schematics/ng-update/v4/index.js +20 -7
  138. package/schematics/ng-update/v4/migrate-css-vars/palette.d.ts +11 -2
  139. package/schematics/ng-update/v4/migrate-css-vars/palette.js +18 -8
  140. package/schematics/ng-update/v4/migrate-css-vars/rename-css-vars.js +10 -2
  141. package/schematics/ng-update/v4/migrate-icons/index.js +9 -7
  142. package/schematics/ng-update/v4/migrate-icons/rename-icons.js +15 -7
  143. package/schematics/ng-update/v4/migrate-icons/rename-proprietary-icons.d.ts +3 -0
  144. package/schematics/ng-update/v4/migrate-icons/rename-proprietary-icons.js +79 -0
  145. package/schematics/ng-update/v4/steps/constants/attr-to-directive-replace.js +5 -4
  146. package/schematics/ng-update/v4/steps/constants/attr-with-values-to-replace.js +51 -2
  147. package/schematics/ng-update/v4/steps/constants/attrs-to-replace.js +114 -27
  148. package/schematics/ng-update/v4/steps/constants/enums.js +31 -0
  149. package/schematics/ng-update/v4/steps/constants/html-comments.js +19 -0
  150. package/schematics/ng-update/v4/steps/constants/identifiers-to-replace.js +1388 -288
  151. package/schematics/ng-update/v4/steps/constants/index.d.ts +1 -0
  152. package/schematics/ng-update/v4/steps/constants/index.js +1 -0
  153. package/schematics/ng-update/v4/steps/constants/inputs-to-remove.js +2 -1
  154. package/schematics/ng-update/v4/steps/constants/migration-warnings.js +25 -0
  155. package/schematics/ng-update/v4/steps/constants/modules-to-remove.js +32 -0
  156. package/schematics/ng-update/v4/steps/constants/modules-to-replace.d.ts +13 -0
  157. package/schematics/ng-update/v4/steps/constants/modules-to-replace.js +16 -0
  158. package/schematics/ng-update/v4/steps/constants/services.d.ts +2 -0
  159. package/schematics/ng-update/v4/steps/constants/services.js +15 -0
  160. package/schematics/ng-update/v4/steps/constants/tags-to-replace.js +17 -4
  161. package/schematics/ng-update/v4/steps/constants/types.d.ts +2 -0
  162. package/schematics/ng-update/v4/steps/constants/types.js +49 -0
  163. package/schematics/ng-update/v4/steps/index.d.ts +7 -0
  164. package/schematics/ng-update/v4/steps/index.js +7 -0
  165. package/schematics/ng-update/v4/steps/migrate-alert-service.d.ts +2 -0
  166. package/schematics/ng-update/v4/steps/migrate-alert-service.js +110 -0
  167. package/schematics/ng-update/v4/steps/migrate-all-country-iso-codes.js +1 -1
  168. package/schematics/ng-update/v4/steps/migrate-destroy-service.js +7 -4
  169. package/schematics/ng-update/v4/steps/migrate-legacy-mask.js +2 -2
  170. package/schematics/ng-update/v4/steps/migrate-month-context.d.ts +2 -0
  171. package/schematics/ng-update/v4/steps/migrate-month-context.js +39 -0
  172. package/schematics/ng-update/v4/steps/migrate-number-format-settings.d.ts +2 -0
  173. package/schematics/ng-update/v4/steps/migrate-number-format-settings.js +64 -0
  174. package/schematics/ng-update/v4/steps/migrate-option-providers.js +6 -3
  175. package/schematics/ng-update/v4/steps/migrate-proprietary.js +3 -3
  176. package/schematics/ng-update/v4/steps/migrate-root.d.ts +3 -0
  177. package/schematics/ng-update/v4/steps/migrate-root.js +61 -0
  178. package/schematics/ng-update/v4/steps/migrate-templates.js +11 -1
  179. package/schematics/ng-update/v4/steps/styles/index.js +38 -0
  180. package/schematics/ng-update/v4/steps/styles/migrate-less-scss-constants.d.ts +1 -0
  181. package/schematics/ng-update/v4/steps/styles/migrate-less-scss-constants.js +13 -0
  182. package/schematics/ng-update/v4/steps/styles/migrate-scrollbar-behavior.d.ts +1 -0
  183. package/schematics/ng-update/v4/steps/styles/migrate-scrollbar-behavior.js +10 -0
  184. package/schematics/ng-update/v4/steps/styles/migrate-shadow-mixins.d.ts +1 -0
  185. package/schematics/ng-update/v4/steps/styles/migrate-shadow-mixins.js +23 -0
  186. package/schematics/ng-update/v4/steps/styles/migrate-space-mixins.d.ts +1 -0
  187. package/schematics/ng-update/v4/steps/styles/migrate-space-mixins.js +20 -0
  188. package/schematics/ng-update/v4/steps/styles/migrate-text-mixins.d.ts +1 -0
  189. package/schematics/ng-update/v4/steps/styles/migrate-text-mixins.js +54 -0
  190. package/schematics/ng-update/v4/steps/templates/index.d.ts +6 -0
  191. package/schematics/ng-update/v4/steps/templates/index.js +6 -0
  192. package/schematics/ng-update/v4/steps/templates/migrate-avatar.js +34 -11
  193. package/schematics/ng-update/{v3/steps/migrate-polymorpheus.d.ts → v4/steps/templates/migrate-axes.d.ts} +2 -2
  194. package/schematics/ng-update/v4/steps/templates/migrate-axes.js +26 -0
  195. package/schematics/ng-update/v4/steps/templates/migrate-badge.js +17 -8
  196. package/schematics/ng-update/v4/steps/templates/migrate-badged-content.js +1 -1
  197. package/schematics/ng-update/{v3/steps/migrate-textfield-controller.d.ts → v4/steps/templates/migrate-blocked.d.ts} +2 -2
  198. package/schematics/ng-update/v4/steps/templates/migrate-blocked.js +35 -0
  199. package/schematics/ng-update/v4/steps/templates/migrate-button-appearance.d.ts +8 -0
  200. package/schematics/ng-update/v4/steps/templates/migrate-button-appearance.js +41 -0
  201. package/schematics/ng-update/v4/steps/templates/migrate-expandable.js +3 -2
  202. package/schematics/ng-update/v4/steps/templates/migrate-focusable.js +7 -4
  203. package/schematics/ng-update/v4/steps/templates/migrate-label.d.ts +8 -0
  204. package/schematics/ng-update/v4/steps/templates/migrate-label.js +39 -0
  205. package/schematics/ng-update/v4/steps/templates/migrate-labeled.js +6 -10
  206. package/schematics/ng-update/v4/steps/templates/migrate-mobile-tabs.d.ts +8 -0
  207. package/schematics/ng-update/v4/steps/templates/migrate-mobile-tabs.js +45 -0
  208. package/schematics/ng-update/v4/steps/templates/migrate-money.js +1 -1
  209. package/schematics/ng-update/v4/steps/templates/migrate-notification.d.ts +8 -0
  210. package/schematics/ng-update/v4/steps/templates/migrate-notification.js +64 -0
  211. package/schematics/ng-update/v4/steps/templates/migrate-number-precision.d.ts +8 -0
  212. package/schematics/ng-update/v4/steps/templates/migrate-number-precision.js +36 -0
  213. package/schematics/ng-update/v4/steps/templates/migrate-overscroll.d.ts +8 -0
  214. package/schematics/ng-update/v4/steps/templates/migrate-overscroll.js +27 -0
  215. package/schematics/ng-update/v4/steps/templates/migrate-thumbnail-card.js +2 -1
  216. package/schematics/ng-update/v4/steps/templates/toggles/common.d.ts +1 -1
  217. package/schematics/ng-update/v4/steps/templates/toggles/common.js +4 -3
  218. package/schematics/ng-update/v4/steps/templates/toggles/migrate-checkbox.js +36 -0
  219. package/schematics/ng-update/{v3/steps/migrate-templates.d.ts → v4/steps/update-packages.d.ts} +1 -1
  220. package/schematics/ng-update/v4/steps/update-packages.js +44 -0
  221. package/schematics/ng-update/v4/steps/utils/remove-attrs.js +1 -1
  222. package/schematics/ng-update/v4/steps/utils/replace-modules-with-providers.d.ts +3 -0
  223. package/schematics/ng-update/v4/steps/utils/replace-modules-with-providers.js +51 -0
  224. package/schematics/ng-update/v4/steps/utils/replace-substrings.js +1 -1
  225. package/schematics/ng-update/v4/tests/migrate-destroy-service/utils.js +1 -0
  226. package/schematics/utils/add-unique-import.js +1 -1
  227. package/schematics/utils/angular-json-manipulations.js +4 -4
  228. package/schematics/utils/get-named-import-references.js +8 -6
  229. package/schematics/utils/get-standalone-bootstrap-function.js +2 -2
  230. package/schematics/utils/import-manipulations.js +1 -1
  231. package/schematics/utils/push-to-array-property.js +1 -1
  232. package/schematics/utils/templates/elements.d.ts +5 -0
  233. package/schematics/utils/templates/elements.js +27 -13
  234. package/schematics/utils/templates/get-component-templates.js +1 -1
  235. package/schematics/utils/templates/inputs.js +2 -1
  236. package/schematics/utils/templates/ng-component-input-manipulations.js +5 -5
  237. package/services/index.d.ts +1 -1
  238. package/services/theme-color.service.d.ts +16 -0
  239. package/tokens/environment.d.ts +1 -0
  240. package/utils/color/get-gradient-data.d.ts +1 -0
  241. package/utils/color/index.d.ts +2 -0
  242. package/utils/color/parse-gradient.d.ts +10 -0
  243. package/utils/dom/get-element-point.d.ts +2 -0
  244. package/utils/dom/index.d.ts +1 -0
  245. package/utils/focus/focused-in.d.ts +2 -0
  246. package/utils/focus/index.d.ts +1 -0
  247. package/classes/controller.d.ts +0 -9
  248. package/esm2022/classes/controller.mjs +0 -18
  249. package/esm2022/services/static-request.service.mjs +0 -33
  250. package/schematics/ng-update/v3/constants/breakpoints.d.ts +0 -82
  251. package/schematics/ng-update/v3/constants/breakpoints.js +0 -34
  252. package/schematics/ng-update/v3/constants/constants.d.ts +0 -2
  253. package/schematics/ng-update/v3/constants/constants.js +0 -466
  254. package/schematics/ng-update/v3/constants/deprecated-functions.d.ts +0 -2
  255. package/schematics/ng-update/v3/constants/deprecated-functions.js +0 -680
  256. package/schematics/ng-update/v3/constants/enums.d.ts +0 -2
  257. package/schematics/ng-update/v3/constants/enums.js +0 -284
  258. package/schematics/ng-update/v3/constants/modules.d.ts +0 -2
  259. package/schematics/ng-update/v3/constants/modules.js +0 -9
  260. package/schematics/ng-update/v3/constants/services.d.ts +0 -2
  261. package/schematics/ng-update/v3/constants/services.js +0 -53
  262. package/schematics/ng-update/v3/constants/templates.d.ts +0 -57
  263. package/schematics/ng-update/v3/constants/templates.js +0 -744
  264. package/schematics/ng-update/v3/constants/tui-interactive-selectors.d.ts +0 -1
  265. package/schematics/ng-update/v3/constants/tui-interactive-selectors.js +0 -55
  266. package/schematics/ng-update/v3/constants/types.d.ts +0 -2
  267. package/schematics/ng-update/v3/constants/types.js +0 -156
  268. package/schematics/ng-update/v3/constants/warnings.d.ts +0 -2
  269. package/schematics/ng-update/v3/constants/warnings.js +0 -111
  270. package/schematics/ng-update/v3/index.d.ts +0 -3
  271. package/schematics/ng-update/v3/index.js +0 -105
  272. package/schematics/ng-update/v3/schema.json +0 -13
  273. package/schematics/ng-update/v3/steps/migrate-date-time.d.ts +0 -2
  274. package/schematics/ng-update/v3/steps/migrate-date-time.js +0 -207
  275. package/schematics/ng-update/v3/steps/migrate-polymorpheus.js +0 -78
  276. package/schematics/ng-update/v3/steps/migrate-progress.d.ts +0 -8
  277. package/schematics/ng-update/v3/steps/migrate-progress.js +0 -49
  278. package/schematics/ng-update/v3/steps/migrate-sliders/index.d.ts +0 -3
  279. package/schematics/ng-update/v3/steps/migrate-sliders/index.js +0 -19
  280. package/schematics/ng-update/v3/steps/migrate-sliders/migrate-input-range.d.ts +0 -3
  281. package/schematics/ng-update/v3/steps/migrate-sliders/migrate-input-range.js +0 -103
  282. package/schematics/ng-update/v3/steps/migrate-sliders/migrate-input-slider.d.ts +0 -3
  283. package/schematics/ng-update/v3/steps/migrate-sliders/migrate-input-slider.js +0 -90
  284. package/schematics/ng-update/v3/steps/migrate-taiga-proprietary-icons.d.ts +0 -3
  285. package/schematics/ng-update/v3/steps/migrate-taiga-proprietary-icons.js +0 -70
  286. package/schematics/ng-update/v3/steps/migrate-templates.js +0 -216
  287. package/schematics/ng-update/v3/steps/migrate-textfield-controller.js +0 -98
  288. package/schematics/ng-update/v3/steps/miscellaneous.d.ts +0 -2
  289. package/schematics/ng-update/v3/steps/miscellaneous.js +0 -81
  290. package/schematics/ng-update/v3/steps/replace-functions.d.ts +0 -2
  291. package/schematics/ng-update/v3/steps/replace-functions.js +0 -138
  292. package/schematics/ng-update/v3/steps/replace-styles.d.ts +0 -3
  293. package/schematics/ng-update/v3/steps/replace-styles.js +0 -33
  294. package/schematics/ng-update/v3-30/constants/constants.d.ts +0 -2
  295. package/schematics/ng-update/v3-30/constants/constants.js +0 -8
  296. package/schematics/ng-update/v3-30/constants/icons.d.ts +0 -4
  297. package/schematics/ng-update/v3-30/constants/icons.js +0 -993
  298. package/schematics/ng-update/v3-30/index.d.ts +0 -3
  299. package/schematics/ng-update/v3-30/index.js +0 -33
  300. package/schematics/ng-update/v3-35/constants/constants.d.ts +0 -2
  301. package/schematics/ng-update/v3-35/constants/constants.js +0 -8
  302. package/schematics/ng-update/v3-35/constants/icons.d.ts +0 -4
  303. package/schematics/ng-update/v3-35/constants/icons.js +0 -2537
  304. package/schematics/ng-update/v3-35/index.d.ts +0 -3
  305. package/schematics/ng-update/v3-35/index.js +0 -33
  306. package/schematics/ng-update/v3-36/index.d.ts +0 -3
  307. package/schematics/ng-update/v3-36/index.js +0 -33
  308. package/schematics/ng-update/v3-40/index.d.ts +0 -3
  309. package/schematics/ng-update/v3-40/index.js +0 -62
  310. package/schematics/ng-update/v3-5/index.d.ts +0 -3
  311. package/schematics/ng-update/v3-5/index.js +0 -20
  312. package/schematics/ng-update/v3-5/steps/migrate-expand-templates.d.ts +0 -3
  313. package/schematics/ng-update/v3-5/steps/migrate-expand-templates.js +0 -44
  314. package/schematics/ng-update/v4/steps/migrate-styles.js +0 -20
  315. package/services/static-request.service.d.ts +0 -8
  316. /package/schematics/ng-update/v4/steps/{migrate-styles.d.ts → styles/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-dom.mjs","sources":["../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/event-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-clipboard-data-text.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/get-element-offset.ts","../../../projects/cdk/utils/dom/get-selected-text.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/is-current-target.ts","../../../projects/cdk/utils/dom/is-element-editable.ts","../../../projects/cdk/utils/dom/is-inside-iframe.ts","../../../projects/cdk/utils/dom/is-node-in.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/dom/retarget-boundary-crossing.ts","../../../projects/cdk/utils/dom/taiga-ui-cdk-utils-dom.ts"],"sourcesContent":["export function tuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return (\n current.contains(node) ||\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\n );\n } catch {\n return false;\n }\n}\n","export function tuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function tuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function tuiIsTextfield(\n element: Element,\n): element is HTMLInputElement | HTMLTextAreaElement {\n return tuiIsInput(element) || tuiIsTextarea(element);\n}\n\nexport function tuiIsElement(\n node?: Element | EventTarget | Node | null,\n): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function tuiIsHTMLElement(node: any): node is HTMLElement {\n return !!node && node instanceof node.ownerDocument.defaultView.HTMLElement;\n}\n\nexport function tuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","export function tuiIsInputEvent(event: Event): event is InputEvent {\n return 'data' in event && 'inputType' in event;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function tuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","const DEFAULT_FORMAT = 'text/plain';\n\n/**\n * Gets text from data of clipboardEvent, it also works in IE and Edge browsers\n */\nexport function tuiGetClipboardDataText(\n event: ClipboardEvent,\n format: string = DEFAULT_FORMAT,\n): string {\n return 'clipboardData' in event && event.clipboardData !== null\n ? event.clipboardData.getData(format) ||\n event.clipboardData.getData(DEFAULT_FORMAT)\n : (event as any).target.ownerDocument.defaultView.clipboardData.getData('text');\n}\n","export function tuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function tuiGetElementObscures(\n element: Element,\n): readonly [Element, Element, Element, Element] | [] | null {\n const {ownerDocument} = element;\n\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\n return null;\n }\n\n const {innerWidth, innerHeight} = ownerDocument.defaultView;\n const doc = tuiGetDocumentOrShadowRoot(element);\n const rect = element.getBoundingClientRect();\n\n if (rect.width === 0 && rect.height === 0) {\n return null;\n }\n\n const left = tuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\n const top = tuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\n const right = tuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\n const bottom = tuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\n const horizontalMiddle = tuiClamp(\n Math.round(rect.left + rect.width / 2),\n 0,\n innerWidth,\n );\n const verticalMiddle = tuiClamp(\n Math.round(rect.top + rect.height / 2),\n 0,\n innerHeight,\n );\n const elements = [\n doc.elementFromPoint(horizontalMiddle, top),\n doc.elementFromPoint(horizontalMiddle, bottom),\n doc.elementFromPoint(left, verticalMiddle),\n doc.elementFromPoint(right, verticalMiddle),\n ];\n const nonNull = elements.filter(tuiIsPresent);\n\n if (!nonNull.length) {\n return [];\n }\n\n const filtered = nonNull.filter(el => !element.contains(el) && !el.contains(element));\n\n return filtered.length === 4\n ? (filtered as [Element, Element, Element, Element])\n : null;\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsHTMLElement} from './element-checks';\n\n/**\n * Calculates offset for an element relative to it's parent several levels above\n *\n * @param host parent element\n * @param element\n * @return object with offsetTop and offsetLeft number properties\n */\nexport function tuiGetElementOffset(\n host: Element,\n element: HTMLElement,\n): {offsetLeft: number; offsetTop: number} {\n ngDevMode && console.assert(host.contains(element), 'Host must contain element');\n\n let {offsetTop, offsetLeft, offsetParent} = element;\n\n while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) {\n offsetTop += offsetParent.offsetTop;\n offsetLeft += offsetParent.offsetLeft;\n offsetParent = offsetParent.offsetParent;\n }\n\n return {offsetTop, offsetLeft};\n}\n","import {tuiIsTextfield} from './element-checks';\n\n/**\n * @description:\n * cross browser way to get selected text\n *\n * History:\n * BUG - window.getSelection() fails when text selected in a form field\n * https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n */\nexport function tuiGetSelectedText({getSelection, document}: Window): string | null {\n return document.activeElement && tuiIsTextfield(document.activeElement)\n ? document.activeElement.value.slice(\n document.activeElement.selectionStart || 0,\n document.activeElement.selectionEnd || 0,\n )\n : getSelection()?.toString() || null;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function tuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","export function tuiIsCurrentTarget({target, currentTarget}: Event): boolean {\n return target === currentTarget;\n}\n","import {tuiIsTextfield} from './element-checks';\n\nexport function tuiIsElementEditable(element: HTMLElement): boolean {\n return (tuiIsTextfield(element) && !element.readOnly) || !!element.isContentEditable;\n}\n","/**\n * Checks if an app is running inside <iframe /> tag\n */\nexport function tuiIsInsideIframe(win: Window): boolean {\n return win.parent !== win;\n}\n","import {tuiIsElement, tuiIsTextNode} from './element-checks';\n\n/**\n * Checks if node is inside a specific selector\n *\n * @param node\n * @param selector\n * @return true if node is inside a particular selector\n */\nexport function tuiIsNodeIn(node: Node, selector: string): boolean {\n return tuiIsTextNode(node)\n ? !!node.parentElement?.closest(selector)\n : tuiIsElement(node) && !!node.closest(selector);\n}\n","export function tuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect,\n };\n}\n","export function tuiRetargetedBoundaryCrossing(event: any): boolean {\n // firefox\n if ('explicitOriginalTarget' in event) {\n return event?.explicitOriginalTarget !== event.target;\n }\n\n // chrome\n if ('pointerId' in event) {\n return event.pointerId === -1;\n }\n\n // safari\n if ('detail' in event && 'webkitForce' in event) {\n return event?.detail === 0;\n }\n\n return false;\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":"taiga-ui-cdk-utils-dom.mjs","sources":["../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/event-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-clipboard-data-text.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/get-element-offset.ts","../../../projects/cdk/utils/dom/get-element-point.ts","../../../projects/cdk/utils/dom/get-selected-text.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/is-current-target.ts","../../../projects/cdk/utils/dom/is-element-editable.ts","../../../projects/cdk/utils/dom/is-inside-iframe.ts","../../../projects/cdk/utils/dom/is-node-in.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/dom/retarget-boundary-crossing.ts","../../../projects/cdk/utils/dom/taiga-ui-cdk-utils-dom.ts"],"sourcesContent":["export function tuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return (\n current.contains(node) ||\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\n );\n } catch {\n return false;\n }\n}\n","export function tuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function tuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function tuiIsTextfield(\n element: Element,\n): element is HTMLInputElement | HTMLTextAreaElement {\n return tuiIsInput(element) || tuiIsTextarea(element);\n}\n\nexport function tuiIsElement(\n node?: Element | EventTarget | Node | null,\n): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function tuiIsHTMLElement(node: any): node is HTMLElement {\n return !!node && node instanceof node.ownerDocument.defaultView.HTMLElement;\n}\n\nexport function tuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","export function tuiIsInputEvent(event: Event): event is InputEvent {\n return 'data' in event && 'inputType' in event;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function tuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","const DEFAULT_FORMAT = 'text/plain';\n\n/**\n * Gets text from data of clipboardEvent, it also works in IE and Edge browsers\n */\nexport function tuiGetClipboardDataText(\n event: ClipboardEvent,\n format: string = DEFAULT_FORMAT,\n): string {\n return 'clipboardData' in event && event.clipboardData !== null\n ? event.clipboardData.getData(format) ||\n event.clipboardData.getData(DEFAULT_FORMAT)\n : (event as any).target.ownerDocument.defaultView.clipboardData.getData('text');\n}\n","export function tuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function tuiGetElementObscures(\n element: Element,\n): readonly [Element, Element, Element, Element] | [] | null {\n const {ownerDocument} = element;\n\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\n return null;\n }\n\n const {innerWidth, innerHeight} = ownerDocument.defaultView;\n const doc = tuiGetDocumentOrShadowRoot(element);\n const rect = element.getBoundingClientRect();\n\n if (rect.width === 0 && rect.height === 0) {\n return null;\n }\n\n const left = tuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\n const top = tuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\n const right = tuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\n const bottom = tuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\n const horizontalMiddle = tuiClamp(\n Math.round(rect.left + rect.width / 2),\n 0,\n innerWidth,\n );\n const verticalMiddle = tuiClamp(\n Math.round(rect.top + rect.height / 2),\n 0,\n innerHeight,\n );\n const elements = [\n doc.elementFromPoint(horizontalMiddle, top),\n doc.elementFromPoint(horizontalMiddle, bottom),\n doc.elementFromPoint(left, verticalMiddle),\n doc.elementFromPoint(right, verticalMiddle),\n ];\n const nonNull = elements.filter(tuiIsPresent);\n\n if (!nonNull.length) {\n return [];\n }\n\n const filtered = nonNull.filter(\n (el) => !element.contains(el) && !el.contains(element),\n );\n\n return filtered.length === 4\n ? (filtered as [Element, Element, Element, Element])\n : null;\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsHTMLElement} from './element-checks';\n\n/**\n * Calculates offset for an element relative to it's parent several levels above\n *\n * @param host parent element\n * @param element\n * @return object with offsetTop and offsetLeft number properties\n */\nexport function tuiGetElementOffset(\n host: Element,\n element: HTMLElement,\n): {offsetLeft: number; offsetTop: number} {\n ngDevMode && console.assert(host.contains(element), 'Host must contain element');\n\n let {offsetTop, offsetLeft, offsetParent} = element;\n\n while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) {\n offsetTop += offsetParent.offsetTop;\n offsetLeft += offsetParent.offsetLeft;\n offsetParent = offsetParent.offsetParent;\n }\n\n return {offsetTop, offsetLeft};\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport type {TuiPoint} from '@taiga-ui/core/types';\n\nexport function tuiGetElementPoint(x: number, y: number, element: HTMLElement): TuiPoint {\n const {left, top, width, height} = element.getBoundingClientRect();\n\n return [tuiClamp(x - left, 0, width) / width, tuiClamp(y - top, 0, height) / height];\n}\n","import {tuiIsTextfield} from './element-checks';\n\n/**\n * @description:\n * cross browser way to get selected text\n *\n * History:\n * BUG - window.getSelection() fails when text selected in a form field\n * https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n */\nexport function tuiGetSelectedText({getSelection, document}: Window): string | null {\n return document.activeElement && tuiIsTextfield(document.activeElement)\n ? document.activeElement.value.slice(\n document.activeElement.selectionStart || 0,\n document.activeElement.selectionEnd || 0,\n )\n : getSelection()?.toString() || null;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function tuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","export function tuiIsCurrentTarget({target, currentTarget}: Event): boolean {\n return target === currentTarget;\n}\n","import {tuiIsTextfield} from './element-checks';\n\nexport function tuiIsElementEditable(element: HTMLElement): boolean {\n return (tuiIsTextfield(element) && !element.readOnly) || !!element.isContentEditable;\n}\n","/**\n * Checks if an app is running inside <iframe /> tag\n */\nexport function tuiIsInsideIframe(win: Window): boolean {\n return win.parent !== win;\n}\n","import {tuiIsElement, tuiIsTextNode} from './element-checks';\n\n/**\n * Checks if node is inside a specific selector\n *\n * @param node\n * @param selector\n * @return true if node is inside a particular selector\n */\nexport function tuiIsNodeIn(node: Node, selector: string): boolean {\n return tuiIsTextNode(node)\n ? !!node.parentElement?.closest(selector)\n : tuiIsElement(node) && !!node.closest(selector);\n}\n","export function tuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect,\n };\n}\n","export function tuiRetargetedBoundaryCrossing(event: any): boolean {\n // firefox\n if ('explicitOriginalTarget' in event) {\n return event?.explicitOriginalTarget !== event.target;\n }\n\n // chrome\n if ('pointerId' in event) {\n return event.pointerId === -1;\n }\n\n // safari\n if ('detail' in event && 'webkitForce' in event) {\n return event?.detail === 0;\n }\n\n return false;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAgB,SAAA,kBAAkB,CAAC,OAAa,EAAE,IAAU,EAAA;IACxD,IAAI;AACA,QAAA,QACI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtB,YAAA,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAAC,EAC9E;AACL,KAAA;IAAC,MAAM;AACJ,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACL;;ACTM,SAAU,UAAU,CAAC,OAAgB,EAAA;AACvC,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAEK,SAAU,aAAa,CAAC,OAAgB,EAAA;AAC1C,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAEK,SAAU,cAAc,CAC1B,OAAgB,EAAA;IAEhB,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAEK,SAAU,YAAY,CACxB,IAA0C,EAAA;AAE1C,IAAA,OAAO,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;AAC/E,CAAC;AAEK,SAAU,gBAAgB,CAAC,IAAS,EAAA;AACtC,IAAA,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC;AAChF,CAAC;AAEK,SAAU,aAAa,CAAC,IAAU,EAAA;AACpC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC;AAC5C;;AC1BM,SAAU,eAAe,CAAC,KAAY,EAAA;AACxC,IAAA,OAAO,MAAM,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,CAAC;AACnD;;ACFA;;AAEG;AACG,SAAU,kBAAkB,CAAC,KAAY,EAAA;AAC3C,IAAA,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAS,CAAC;AAC3C;;ACLA,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC;;AAEG;SACa,uBAAuB,CACnC,KAAqB,EACrB,SAAiB,cAAc,EAAA;IAE/B,OAAO,eAAe,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI;UACzD,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/B,YAAA,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC;AACjD,UAAG,KAAa,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxF;;ACbM,SAAU,0BAA0B,CAAC,IAAU,EAAA;AACjD,IAAA,OAAO,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW;AAC5C,UAAG,IAAI,CAAC,WAAW,EAAe;AAClC,UAAG,IAAI,CAAC,aAAsC,CAAC;AACvD;;ACCA;;;;;;;AAOG;AACG,SAAU,qBAAqB,CACjC,OAAgB,EAAA;AAEhB,IAAA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC;IAEhC,IAAI,CAAC,aAAa,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAC/D,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;IAED,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,aAAa,CAAC,WAAW,CAAC;AAC5D,IAAA,MAAM,GAAG,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;AAChD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAE7C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AAChE,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;AAC/D,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AAClE,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,QAAQ,CAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EACtC,CAAC,EACD,UAAU,CACb,CAAC;IACF,MAAM,cAAc,GAAG,QAAQ,CAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EACtC,CAAC,EACD,WAAW,CACd,CAAC;AACF,IAAA,MAAM,QAAQ,GAAG;AACb,QAAA,GAAG,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,CAAC;AAC3C,QAAA,GAAG,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC9C,QAAA,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC;AAC1C,QAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC;KAC9C,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAE9C,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,QAAA,OAAO,EAAE,CAAC;AACb,KAAA;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzD,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;AACxB,UAAG,QAAiD;UAClD,IAAI,CAAC;AACf;;AC/DA;AAIA;;;;;;AAMG;AACa,SAAA,mBAAmB,CAC/B,IAAa,EACb,OAAoB,EAAA;AAEpB,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAEjF,IAAI,EAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAC,GAAG,OAAO,CAAC;IAEpD,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,IAAI,EAAE;AAC5D,QAAA,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC;AACpC,QAAA,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC;AACtC,QAAA,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;AAC5C,KAAA;AAED,IAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,CAAC;AACnC;;SCvBgB,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,OAAoB,EAAA;AACzE,IAAA,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAEnE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AACzF;;ACLA;;;;;;;AAOG;SACa,kBAAkB,CAAC,EAAC,YAAY,EAAE,QAAQ,EAAS,EAAA;IAC/D,OAAO,QAAQ,CAAC,aAAa,IAAI,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC;UACjE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAC9B,QAAQ,CAAC,aAAa,CAAC,cAAc,IAAI,CAAC,EAC1C,QAAQ,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC,CAC3C;UACD,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;AAC7C;;SCfgB,gBAAgB,GAAA;AAC5B,IAAA,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;AAC5C;;SCJgB,kBAAkB,CAAC,EAAC,MAAM,EAAE,aAAa,EAAQ,EAAA;IAC7D,OAAO,MAAM,KAAK,aAAa,CAAC;AACpC;;ACAM,SAAU,oBAAoB,CAAC,OAAoB,EAAA;AACrD,IAAA,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACzF;;ACJA;;AAEG;AACG,SAAU,iBAAiB,CAAC,GAAW,EAAA;AACzC,IAAA,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC;AAC9B;;ACHA;;;;;;AAMG;AACa,SAAA,WAAW,CAAC,IAAU,EAAE,QAAgB,EAAA;IACpD,OAAO,aAAa,CAAC,IAAI,CAAC;UACpB,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC;AACzC,UAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzD;;ACbM,SAAU,oBAAoB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAA;AAC7C,IAAA,MAAM,IAAI,GAAG;QACT,CAAC;QACD,CAAC;AACD,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;KACH,CAAC;IAEX,OAAO;AACH,QAAA,GAAG,IAAI;AACP,QAAA,MAAM,EAAE,MAAM,IAAI;KACrB,CAAC;AACN;;AChBM,SAAU,6BAA6B,CAAC,KAAU,EAAA;;IAEpD,IAAI,wBAAwB,IAAI,KAAK,EAAE;AACnC,QAAA,OAAO,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,MAAM,CAAC;AACzD,KAAA;;IAGD,IAAI,WAAW,IAAI,KAAK,EAAE;AACtB,QAAA,OAAO,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;AACjC,KAAA;;AAGD,IAAA,IAAI,QAAQ,IAAI,KAAK,IAAI,aAAa,IAAI,KAAK,EAAE;AAC7C,QAAA,OAAO,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC;AAC9B,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB;;ACjBA;;AAEG;;;;"}
@@ -1,5 +1,7 @@
1
1
  import { tuiIsHTMLElement } from '@taiga-ui/cdk/utils/dom';
2
- import { svgNodeFilter } from '@taiga-ui/cdk/constants';
2
+ import { toSignal } from '@angular/core/rxjs-interop';
3
+ import { TUI_TRUE_HANDLER, TUI_FALSE_HANDLER, svgNodeFilter } from '@taiga-ui/cdk/constants';
4
+ import { merge, fromEvent, map } from 'rxjs';
3
5
 
4
6
  /**
5
7
  * Returns current active element, including shadow dom
@@ -27,6 +29,10 @@ function tuiBlurNativeFocused(doc) {
27
29
  }
28
30
  }
29
31
 
32
+ function tuiFocusedIn(node) {
33
+ return toSignal(merge(fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)), fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER))), { initialValue: false });
34
+ }
35
+
30
36
  /**
31
37
  * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to
32
38
  * only target natural focus order. Not checking the possibility of an element to
@@ -134,5 +140,5 @@ function tuiMoveFocus(currentIndex, elements, step) {
134
140
  * Generated bundle index. Do not edit.
135
141
  */
136
142
 
137
- export { tuiBlurNativeFocused, tuiGetClosestFocusable, tuiGetNativeFocused, tuiIsNativeFocused, tuiIsNativeFocusedIn, tuiIsNativeKeyboardFocusable, tuiIsNativeMouseFocusable, tuiMoveFocus };
143
+ export { tuiBlurNativeFocused, tuiFocusedIn, tuiGetClosestFocusable, tuiGetNativeFocused, tuiIsNativeFocused, tuiIsNativeFocusedIn, tuiIsNativeKeyboardFocusable, tuiIsNativeMouseFocusable, tuiMoveFocus };
138
144
  //# sourceMappingURL=taiga-ui-cdk-utils-focus.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetNativeFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetNativeFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsNativeFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetNativeFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsNativeFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetNativeFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && !!node.ownerDocument?.hasFocus();\n}\n","import {tuiIsNativeFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex].focus();\n\n if (tuiIsNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\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":"taiga-ui-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetNativeFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetNativeFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import type {Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map, merge} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER)),\n ),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n while (previous ? treeWalker.previousNode() : treeWalker.nextNode()) {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n }\n\n return null;\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsNativeFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetNativeFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsNativeFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetNativeFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && !!node.ownerDocument?.hasFocus();\n}\n","import {tuiIsNativeFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex].focus();\n\n if (tuiIsNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -132,12 +132,12 @@ function tuiIsValidUrl(url) {
132
132
 
133
133
  function tuiMarkControlAsTouchedAndValidate(control) {
134
134
  if (control instanceof FormArray) {
135
- control.controls.forEach(nestedControl => {
135
+ control.controls.forEach((nestedControl) => {
136
136
  tuiMarkControlAsTouchedAndValidate(nestedControl);
137
137
  });
138
138
  }
139
139
  if (control instanceof FormGroup) {
140
- Object.values(control.controls).forEach(nestedControl => {
140
+ Object.values(control.controls).forEach((nestedControl) => {
141
141
  tuiMarkControlAsTouchedAndValidate(nestedControl);
142
142
  });
143
143
  }
@@ -277,7 +277,7 @@ function tuiUniqBy(array, key) {
277
277
 
278
278
  const MAP = tuiCreateTokenFromFactory(() => {
279
279
  const map = new Map();
280
- inject(DestroyRef).onDestroy(() => map.forEach(component => component.destroy()));
280
+ inject(DestroyRef).onDestroy(() => map.forEach((component) => component.destroy()));
281
281
  return map;
282
282
  });
283
283
  function tuiWithStyles(component) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-miscellaneous.mjs","sources":["../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/array-shallow-equals.ts","../../../projects/cdk/utils/miscellaneous/array-toggle.ts","../../../projects/cdk/utils/miscellaneous/change-date-separator.ts","../../../projects/cdk/utils/miscellaneous/create-token.ts","../../../projects/cdk/utils/miscellaneous/is-string.ts","../../../projects/cdk/utils/miscellaneous/default-sort.ts","../../../projects/cdk/utils/miscellaneous/directive-binding.ts","../../../projects/cdk/utils/miscellaneous/directive-listener.ts","../../../projects/cdk/utils/miscellaneous/distance-between-touches.ts","../../../projects/cdk/utils/miscellaneous/ease-in-out-quad.ts","../../../projects/cdk/utils/miscellaneous/flat-length.ts","../../../projects/cdk/utils/miscellaneous/get-original-array-from-query-list.ts","../../../projects/cdk/utils/miscellaneous/is-falsy.ts","../../../projects/cdk/utils/miscellaneous/is-number.ts","../../../projects/cdk/utils/miscellaneous/is-object.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/is-valid-url.ts","../../../projects/cdk/utils/miscellaneous/mark-control-as-touched-and-validate.ts","../../../projects/cdk/utils/miscellaneous/nullable-same.ts","../../../projects/cdk/utils/miscellaneous/provide.ts","../../../projects/cdk/utils/miscellaneous/provide-options.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/miscellaneous/uniq-by.ts","../../../projects/cdk/utils/miscellaneous/with-styles.ts","../../../projects/cdk/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.ts"],"sourcesContent":["export function tuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function tuiArrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {tuiArrayRemove} from './array-remove';\n\nexport function tuiArrayToggle<T>(array: readonly T[], item: T): T[] {\n const index = array.indexOf(item);\n\n return index === -1 ? [...array, item] : tuiArrayRemove(array, index);\n}\n","/* internal */\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replaceAll(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import {InjectionToken} from '@angular/core';\n\nexport function tuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return tuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function tuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', {factory});\n}\n","export function tuiIsString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {tuiIsString} from './is-string';\n\nexport function tuiDefaultSort<T>(x: T, y: T): number {\n if (x === y) {\n return 0;\n }\n\n if (tuiIsString(x) && tuiIsString(y)) {\n return x.localeCompare(y);\n }\n\n return x > y ? 1 : -1;\n}\n","import type {InjectOptions, ProviderToken, Signal, WritableSignal} from '@angular/core';\nimport {effect, inject, isSignal, signal} from '@angular/core';\n\ntype SignalLikeTypeOf<T> = T extends Signal<infer R> ? R : T;\n\ntype SignalLike<T> = Signal<T> | T;\n\nexport function tuiDirectiveBinding<\n T,\n G extends keyof T,\n I extends SignalLike<SignalLikeTypeOf<T[G]>>,\n>(\n token: ProviderToken<T>,\n key: G,\n initial: I,\n options: InjectOptions = {self: true},\n): I extends Signal<any> ? I : WritableSignal<I> {\n const result: any = isSignal(initial) ? initial : signal(initial);\n const directive: any = inject(token, options);\n const output = directive[`${key.toString()}Change`];\n\n // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)\n let previous: any;\n\n effect(\n () => {\n const value: any = result();\n\n if (previous === value) {\n return;\n }\n\n if (isSignal(directive[key])) {\n directive[key].set(value);\n } else {\n directive[key] = value;\n }\n\n directive.ngOnChanges?.({});\n output?.emit?.(value);\n previous = value;\n },\n {allowSignalWrites: true},\n );\n\n return result;\n}\n","import type {InjectOptions, ProviderToken, Signal} from '@angular/core';\nimport {inject, isSignal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport type {Observable} from 'rxjs';\n\ntype OutputKeysOf<T> = {\n [K in keyof T]: T[K] extends Observable<any> | Signal<any> ? K : never;\n}[keyof T];\n\ntype OutputTypeOf<T> =\n T extends Signal<infer R> ? R : T extends Observable<infer O> ? O : never;\n\nexport function tuiDirectiveListener<T, K extends OutputKeysOf<T>>(\n token: ProviderToken<T>,\n key: K,\n options: InjectOptions = {self: true},\n): Signal<OutputTypeOf<T[K]>> {\n const prop: any = inject(token, options)?.[key];\n\n return isSignal(prop) ? prop : toSignal<any>(prop);\n}\n","export function tuiDistanceBetweenTouches({touches}: TouchEvent): number {\n return Math.hypot(\n touches[0].clientX - touches[1].clientX,\n touches[0].clientY - touches[1].clientY,\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nexport function tuiEaseInOutQuad(t: number): number {\n ngDevMode &&\n console.assert(\n t >= 0 && t <= 1,\n 'Input must be between 0 and 1 inclusive but received ',\n t,\n );\n\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n}\n","/**\n * Flattens two-dimensional array and calculates resulting length\n *\n * @param array twi dimensional array\n */\nexport function tuiFlatLength(array: ReadonlyArray<readonly unknown[]>): number {\n return array.reduce((count, section) => count + section.length, 0);\n}\n","import type {QueryList} from '@angular/core';\n\n/**\n * Extracts original array from {@link QueryList} rather than\n * creating a copy like {@link QueryList.toArray} does.\n * @param queryList\n * @returns original array from {@link QueryList}.\n */\nexport function tuiGetOriginalArrayFromQueryList<T>(\n queryList: QueryList<T>,\n): readonly T[] {\n let array: readonly T[] = [];\n\n queryList.find((_item, _index, originalArray) => {\n array = originalArray;\n\n return true;\n });\n\n return array;\n}\n","export function tuiIsFalsy(value: unknown): boolean {\n return !value;\n}\n","export function tuiIsNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","export function tuiIsObject<T extends Record<string, any>>(\n value: unknown,\n): value is NonNullable<T> {\n return typeof value === 'object' && !!value;\n}\n","export function tuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","export function tuiIsValidUrl(url: string): boolean {\n const pattern = new RegExp(\n '^([a-zA-Z]+:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|localhost|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR IP (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', // fragment locator\n 'i',\n );\n\n return pattern.test(url);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\n\nexport function tuiMarkControlAsTouchedAndValidate(control: AbstractControl): void {\n if (control instanceof FormArray) {\n control.controls.forEach(nestedControl => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach(nestedControl => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import type {TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\n/**\n * Checks identity for nullable elements.\n *\n * @param a element a\n * @param b element b\n * @param handler called if both elements are not null\n * @return true if either both are null or they pass identity handler\n */\nexport function tuiNullableSame<T>(\n a: T | null,\n b: T | null,\n handler: TuiIdentityMatcher<T>,\n): boolean {\n if (a === null) {\n return b === null;\n }\n\n if (b === null) {\n return false;\n }\n\n return handler(a, b);\n}\n","import type {ExistingProvider, ProviderToken} from '@angular/core';\n\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return {provide, useExisting, multi};\n}\n","import type {FactoryProvider, InjectionToken} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\n\nexport function tuiProvideOptions<T>(\n provide: InjectionToken<T>,\n options: Partial<T>,\n fallback: T,\n): FactoryProvider {\n return {\n provide,\n deps: [[new Optional(), new SkipSelf(), provide]],\n useFactory: (parent: T | null): T => ({\n ...(parent || fallback),\n ...options,\n }),\n };\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nfunction decorateMethod(\n originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true,\n): (this: object) => unknown {\n return function tuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<T>(\n target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<A extends unknown[], R>(\n target: (...args: A) => R,\n context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext:\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext\n | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new TuiPureException();\n }\n\n const {get, enumerable, value} = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable),\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched,\n });\n\n return patched as unknown;\n },\n };\n}\n\nexport class TuiPureException extends Error {\n constructor() {\n super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\n/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function tuiPx(value: number): string {\n ngDevMode && console.assert(Number.isFinite(value), 'Value must be finite number');\n\n return `${value}px`;\n}\n","import type {TuiValuesOf} from '@taiga-ui/cdk/types';\n\nexport function tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<TuiValuesOf<T>, T>(),\n )\n .values(),\n );\n}\n","import type {Type} from '@angular/core';\nimport {createComponent, DestroyRef, EnvironmentInjector, inject} from '@angular/core';\n\nimport {tuiCreateTokenFromFactory} from './create-token';\n\nconst MAP = tuiCreateTokenFromFactory(() => {\n const map = new Map();\n\n inject(DestroyRef).onDestroy(() => map.forEach(component => component.destroy()));\n\n return map;\n});\n\nexport function tuiWithStyles(component: Type<unknown>): undefined {\n const map = inject(MAP);\n const environmentInjector = inject(EnvironmentInjector);\n\n if (!map.has(component)) {\n map.set(component, createComponent(component, {environmentInjector}));\n }\n\n return undefined;\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":"taiga-ui-cdk-utils-miscellaneous.mjs","sources":["../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/array-shallow-equals.ts","../../../projects/cdk/utils/miscellaneous/array-toggle.ts","../../../projects/cdk/utils/miscellaneous/change-date-separator.ts","../../../projects/cdk/utils/miscellaneous/create-token.ts","../../../projects/cdk/utils/miscellaneous/is-string.ts","../../../projects/cdk/utils/miscellaneous/default-sort.ts","../../../projects/cdk/utils/miscellaneous/directive-binding.ts","../../../projects/cdk/utils/miscellaneous/directive-listener.ts","../../../projects/cdk/utils/miscellaneous/distance-between-touches.ts","../../../projects/cdk/utils/miscellaneous/ease-in-out-quad.ts","../../../projects/cdk/utils/miscellaneous/flat-length.ts","../../../projects/cdk/utils/miscellaneous/get-original-array-from-query-list.ts","../../../projects/cdk/utils/miscellaneous/is-falsy.ts","../../../projects/cdk/utils/miscellaneous/is-number.ts","../../../projects/cdk/utils/miscellaneous/is-object.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/is-valid-url.ts","../../../projects/cdk/utils/miscellaneous/mark-control-as-touched-and-validate.ts","../../../projects/cdk/utils/miscellaneous/nullable-same.ts","../../../projects/cdk/utils/miscellaneous/provide.ts","../../../projects/cdk/utils/miscellaneous/provide-options.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/miscellaneous/uniq-by.ts","../../../projects/cdk/utils/miscellaneous/with-styles.ts","../../../projects/cdk/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.ts"],"sourcesContent":["export function tuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function tuiArrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {tuiArrayRemove} from './array-remove';\n\nexport function tuiArrayToggle<T>(array: readonly T[], item: T): T[] {\n const index = array.indexOf(item);\n\n return index === -1 ? [...array, item] : tuiArrayRemove(array, index);\n}\n","/* internal */\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replaceAll(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import {InjectionToken} from '@angular/core';\n\nexport function tuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return tuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function tuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', {factory});\n}\n","export function tuiIsString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {tuiIsString} from './is-string';\n\nexport function tuiDefaultSort<T>(x: T, y: T): number {\n if (x === y) {\n return 0;\n }\n\n if (tuiIsString(x) && tuiIsString(y)) {\n return x.localeCompare(y);\n }\n\n return x > y ? 1 : -1;\n}\n","import type {InjectOptions, ProviderToken, Signal, WritableSignal} from '@angular/core';\nimport {effect, inject, isSignal, signal} from '@angular/core';\n\ntype SignalLikeTypeOf<T> = T extends Signal<infer R> ? R : T;\n\ntype SignalLike<T> = Signal<T> | T;\n\nexport function tuiDirectiveBinding<\n T,\n G extends keyof T,\n I extends SignalLike<SignalLikeTypeOf<T[G]>>,\n>(\n token: ProviderToken<T>,\n key: G,\n initial: I,\n options: InjectOptions = {self: true},\n): I extends Signal<any> ? I : WritableSignal<I> {\n const result: any = isSignal(initial) ? initial : signal(initial);\n const directive: any = inject(token, options);\n const output = directive[`${key.toString()}Change`];\n\n // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)\n let previous: any;\n\n effect(\n () => {\n const value: any = result();\n\n if (previous === value) {\n return;\n }\n\n if (isSignal(directive[key])) {\n directive[key].set(value);\n } else {\n directive[key] = value;\n }\n\n directive.ngOnChanges?.({});\n output?.emit?.(value);\n previous = value;\n },\n {allowSignalWrites: true},\n );\n\n return result;\n}\n","import type {InjectOptions, ProviderToken, Signal} from '@angular/core';\nimport {inject, isSignal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport type {Observable} from 'rxjs';\n\ntype OutputKeysOf<T> = {\n [K in keyof T]: T[K] extends Observable<any> | Signal<any> ? K : never;\n}[keyof T];\n\ntype OutputTypeOf<T> =\n T extends Signal<infer R> ? R : T extends Observable<infer O> ? O : never;\n\nexport function tuiDirectiveListener<T, K extends OutputKeysOf<T>>(\n token: ProviderToken<T>,\n key: K,\n options: InjectOptions = {self: true},\n): Signal<OutputTypeOf<T[K]>> {\n const prop: any = inject(token, options)?.[key];\n\n return isSignal(prop) ? prop : toSignal<any>(prop);\n}\n","export function tuiDistanceBetweenTouches({touches}: TouchEvent): number {\n return Math.hypot(\n touches[0].clientX - touches[1].clientX,\n touches[0].clientY - touches[1].clientY,\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nexport function tuiEaseInOutQuad(t: number): number {\n ngDevMode &&\n console.assert(\n t >= 0 && t <= 1,\n 'Input must be between 0 and 1 inclusive but received ',\n t,\n );\n\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n}\n","/**\n * Flattens two-dimensional array and calculates resulting length\n *\n * @param array twi dimensional array\n */\nexport function tuiFlatLength(array: ReadonlyArray<readonly unknown[]>): number {\n return array.reduce((count, section) => count + section.length, 0);\n}\n","import type {QueryList} from '@angular/core';\n\n/**\n * Extracts original array from {@link QueryList} rather than\n * creating a copy like {@link QueryList.toArray} does.\n * @param queryList\n * @returns original array from {@link QueryList}.\n */\nexport function tuiGetOriginalArrayFromQueryList<T>(\n queryList: QueryList<T>,\n): readonly T[] {\n let array: readonly T[] = [];\n\n queryList.find((_item, _index, originalArray) => {\n array = originalArray;\n\n return true;\n });\n\n return array;\n}\n","export function tuiIsFalsy(value: unknown): boolean {\n return !value;\n}\n","export function tuiIsNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","export function tuiIsObject<T extends Record<string, any>>(\n value: unknown,\n): value is NonNullable<T> {\n return typeof value === 'object' && !!value;\n}\n","export function tuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","export function tuiIsValidUrl(url: string): boolean {\n const pattern = new RegExp(\n '^([a-zA-Z]+:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|localhost|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR IP (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', // fragment locator\n 'i',\n );\n\n return pattern.test(url);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\n\nexport function tuiMarkControlAsTouchedAndValidate(control: AbstractControl): void {\n if (control instanceof FormArray) {\n control.controls.forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import type {TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\n/**\n * Checks identity for nullable elements.\n *\n * @param a element a\n * @param b element b\n * @param handler called if both elements are not null\n * @return true if either both are null or they pass identity handler\n */\nexport function tuiNullableSame<T>(\n a: T | null,\n b: T | null,\n handler: TuiIdentityMatcher<T>,\n): boolean {\n if (a === null) {\n return b === null;\n }\n\n if (b === null) {\n return false;\n }\n\n return handler(a, b);\n}\n","import type {ExistingProvider, ProviderToken} from '@angular/core';\n\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return {provide, useExisting, multi};\n}\n","import type {FactoryProvider, InjectionToken} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\n\nexport function tuiProvideOptions<T>(\n provide: InjectionToken<T>,\n options: Partial<T>,\n fallback: T,\n): FactoryProvider {\n return {\n provide,\n deps: [[new Optional(), new SkipSelf(), provide]],\n useFactory: (parent: T | null): T => ({\n ...(parent || fallback),\n ...options,\n }),\n };\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nfunction decorateMethod(\n originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true,\n): (this: object) => unknown {\n return function tuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<T>(\n target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<A extends unknown[], R>(\n target: (...args: A) => R,\n context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext:\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext\n | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new TuiPureException();\n }\n\n const {get, enumerable, value} = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable),\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched,\n });\n\n return patched as unknown;\n },\n };\n}\n\nexport class TuiPureException extends Error {\n constructor() {\n super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\n/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function tuiPx(value: number): string {\n ngDevMode && console.assert(Number.isFinite(value), 'Value must be finite number');\n\n return `${value}px`;\n}\n","import type {TuiValuesOf} from '@taiga-ui/cdk/types';\n\nexport function tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<TuiValuesOf<T>, T>(),\n )\n .values(),\n );\n}\n","import type {Type} from '@angular/core';\nimport {createComponent, DestroyRef, EnvironmentInjector, inject} from '@angular/core';\n\nimport {tuiCreateTokenFromFactory} from './create-token';\n\nconst MAP = tuiCreateTokenFromFactory(() => {\n const map = new Map();\n\n inject(DestroyRef).onDestroy(() => map.forEach((component) => component.destroy()));\n\n return map;\n});\n\nexport function tuiWithStyles(component: Type<unknown>): undefined {\n const map = inject(MAP);\n const environmentInjector = inject(EnvironmentInjector);\n\n if (!map.has(component)) {\n map.set(component, createComponent(component, {environmentInjector}));\n }\n\n return undefined;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/cdk",
3
- "version": "4.0.0-rc.1",
3
+ "version": "4.0.0-rc.10",
4
4
  "description": "Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance",
5
5
  "keywords": [
6
6
  "angular",
@@ -23,18 +23,18 @@
23
23
  "@angular/common": ">=16.0.0",
24
24
  "@angular/core": ">=16.0.0",
25
25
  "@angular/forms": ">=16.0.0",
26
- "@ng-web-apis/common": "^4.0.0",
27
- "@ng-web-apis/mutation-observer": "^4.0.0",
28
- "@ng-web-apis/resize-observer": "^4.0.0",
26
+ "@ng-web-apis/common": "^4.2.1",
27
+ "@ng-web-apis/mutation-observer": "^4.2.1",
28
+ "@ng-web-apis/resize-observer": "^4.2.1",
29
29
  "@taiga-ui/event-plugins": "^4.0.1",
30
- "@taiga-ui/polymorpheus": "^4.6.3",
30
+ "@taiga-ui/polymorpheus": "^4.6.4",
31
31
  "rxjs": ">=7.0.0"
32
32
  },
33
33
  "optionalDependencies": {
34
34
  "@angular-devkit/core": ">=16.0.0",
35
35
  "@angular-devkit/schematics": ">=16.0.0",
36
36
  "@schematics/angular": ">=16.0.0",
37
- "ng-morph": "^4.4.0",
37
+ "ng-morph": "^4.5.4",
38
38
  "parse5": "^7.1.2"
39
39
  },
40
40
  "ng-update": {
@@ -55,8 +55,7 @@
55
55
  "@taiga-ui/layout",
56
56
  "@taiga-ui/experimental",
57
57
  "@taiga-ui/proprietary",
58
- "@taiga-ui/legacy",
59
- "ng-morph"
58
+ "@taiga-ui/legacy"
60
59
  ]
61
60
  },
62
61
  "schematics": "./schematics/collection.json",
@@ -3,17 +3,17 @@
3
3
  "schematics": {
4
4
  "migrateCssVarsV4": {
5
5
  "description": "Migrate Taiga UI css variables",
6
- "version": "4.0.0",
6
+ "version": "4.0.0-rc.1",
7
7
  "factory": "./ng-update/v4/migrate-css-vars/index#migrateCssVars"
8
8
  },
9
9
  "migrateIconsV4": {
10
10
  "description": "Migrate Taiga UI icons to a new format",
11
- "version": "4.0.0",
11
+ "version": "4.0.0-rc.1",
12
12
  "factory": "./ng-update/v4/migrate-icons/index#migrateIcons"
13
13
  },
14
14
  "updateToV4": {
15
15
  "description": "Updates Taiga UI packages to v4",
16
- "version": "4.0.0",
16
+ "version": "4.0.0-rc.1",
17
17
  "factory": "./ng-update/v4/index#updateToV4"
18
18
  }
19
19
  }
@@ -7,4 +7,3 @@ export declare const BROWSER_ANIMATION_MODULE: {
7
7
  name: string;
8
8
  packageName: string;
9
9
  };
10
- export declare const SANITIZER_MODULES: readonly ImportingModule[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SANITIZER_MODULES = exports.BROWSER_ANIMATION_MODULE = exports.MAIN_MODULE = void 0;
3
+ exports.BROWSER_ANIMATION_MODULE = exports.MAIN_MODULE = void 0;
4
4
  exports.MAIN_MODULE = {
5
5
  name: 'TuiRoot',
6
6
  packageName: '@taiga-ui/core',
@@ -9,13 +9,3 @@ exports.BROWSER_ANIMATION_MODULE = {
9
9
  name: 'BrowserAnimationsModule',
10
10
  packageName: '@angular/platform-browser/animations',
11
11
  };
12
- exports.SANITIZER_MODULES = [
13
- {
14
- name: 'TUI_SANITIZER',
15
- packageName: '@taiga-ui/core',
16
- },
17
- {
18
- name: 'NgDompurifySanitizer',
19
- packageName: '@taiga-ui/dompurify',
20
- },
21
- ];
@@ -1,2 +1 @@
1
1
  export declare const TAIGA_VERSION: string;
2
- export declare const NG_DOMPURIFY_VERSION = "^4.1.0";
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NG_DOMPURIFY_VERSION = exports.TAIGA_VERSION = void 0;
3
+ exports.TAIGA_VERSION = void 0;
4
4
  const version_1 = require("../../../constants/version");
5
5
  exports.TAIGA_VERSION = `^${version_1.TUI_VERSION}`;
6
- exports.NG_DOMPURIFY_VERSION = '^4.1.0';
@@ -7,7 +7,7 @@ const packages_1 = require("./constants/packages");
7
7
  const versions_1 = require("./constants/versions");
8
8
  function addDependencies(tree, options) {
9
9
  const packages = [...packages_1.MAIN_PACKAGES, ...options.addons];
10
- packages.forEach(pack => {
10
+ packages.forEach((pack) => {
11
11
  (0, ng_morph_1.addPackageJsonDependency)(tree, {
12
12
  name: `@taiga-ui/${pack}`,
13
13
  version: versions_1.TAIGA_VERSION,
@@ -20,12 +20,6 @@ function addDependencies(tree, options) {
20
20
  version: versions_1.TAIGA_VERSION,
21
21
  });
22
22
  }
23
- if (options.addSanitizer) {
24
- (0, ng_morph_1.addPackageJsonDependency)(tree, {
25
- name: '@taiga-ui/dompurify',
26
- version: versions_1.NG_DOMPURIFY_VERSION,
27
- });
28
- }
29
23
  if (packages.includes('addon-table') || packages.includes('addon-mobile')) {
30
24
  addAngularCdkDep(tree);
31
25
  }
@@ -1,6 +1,5 @@
1
1
  export interface TuiSchema {
2
2
  readonly addGlobalStyles: boolean;
3
- readonly addSanitizer: boolean;
4
3
  readonly addons: readonly string[];
5
4
  readonly project: string;
6
5
  /**
@@ -20,33 +20,6 @@
20
20
  "type": "confirmation"
21
21
  }
22
22
  },
23
- "addDialogsModule": {
24
- "description": "Setting up dialog module",
25
- "type": "boolean",
26
- "default": true,
27
- "x-prompt": {
28
- "message": "Do you want to use Taiga UI dialogs?",
29
- "type": "confirmation"
30
- }
31
- },
32
- "addSanitizer": {
33
- "description": "Setting up TUI_SANITIZER",
34
- "type": "boolean",
35
- "default": true,
36
- "x-prompt": {
37
- "message": "Do you plan on using custom SVGs/icons or TUI editor? If `Yes` we will include ng-dompurify as sanitizer, read more: https://taiga-ui.dev/icons/bundled#sanitizer",
38
- "type": "confirmation"
39
- }
40
- },
41
- "addAlertModule": {
42
- "description": "Setting up alerts module",
43
- "type": "boolean",
44
- "default": true,
45
- "x-prompt": {
46
- "message": "Do you want to use Taiga UI alerts?",
47
- "type": "confirmation"
48
- }
49
- },
50
23
  "addons": {
51
24
  "description": "Setting up additional packages",
52
25
  "type": "array",
@@ -14,7 +14,7 @@ function addTaigaIcons(options) {
14
14
  }
15
15
  exports.addTaigaIcons = addTaigaIcons;
16
16
  function addTaigaAssetsToAngularJson(options) {
17
- return (0, workspace_1.updateWorkspace)(workspace => {
17
+ return (0, workspace_1.updateWorkspace)((workspace) => {
18
18
  const project = (0, get_projects_1.getProjects)(options, workspace)[0];
19
19
  if (project) {
20
20
  const targetOptions = (0, get_project_target_options_1.getProjectTargetOptions)(project, 'build');
@@ -15,26 +15,11 @@ const modules_1 = require("../constants/modules");
15
15
  function addTuiModules({ mainClass, context, }) {
16
16
  const modules = getModules([modules_1.BROWSER_ANIMATION_MODULE]);
17
17
  const mainModulePath = mainClass.getSourceFile().getFilePath();
18
- modules.forEach(module => {
18
+ modules.forEach((module) => {
19
19
  (0, ng_morph_1.addImportToNgModule)(mainClass, module.name, { unique: true });
20
20
  (0, add_unique_import_1.addUniqueImport)(mainModulePath, module.name, module.packageName);
21
21
  });
22
- context.logger.info(`${modules.map(module => module.name)} was added to ${mainModulePath}`);
23
- }
24
- function addExtraTuiProvidersToRootComponent({ mainClass, options, standalone = false, }) {
25
- if (!options.addSanitizer) {
26
- return;
27
- }
28
- const provider = '{provide: TUI_SANITIZER, useClass: NgDompurifySanitizer}';
29
- if (standalone) {
30
- (0, ng_morph_1.addProviderToComponent)(mainClass, provider, { unique: true });
31
- }
32
- else {
33
- (0, ng_morph_1.addProviderToNgModule)(mainClass, provider, { unique: true });
34
- }
35
- modules_1.SANITIZER_MODULES.forEach(module => {
36
- (0, add_unique_import_1.addUniqueImport)(mainClass.getSourceFile().getFilePath(), module.name, module.packageName);
37
- });
22
+ context.logger.info(`${modules.map((module) => module.name)} was added to ${mainModulePath}`);
38
23
  }
39
24
  function addTuiEntitiesToStandalone({ bootstrapFunction, options, context, }) {
40
25
  const [rootComponentIdentifier, bootstrapOptions = bootstrapFunction.addArgument('{providers}: []'),] = bootstrapFunction.getArguments();
@@ -43,7 +28,6 @@ function addTuiEntitiesToStandalone({ bootstrapFunction, options, context, }) {
43
28
  if (mainClass) {
44
29
  addMainModuleToRootComponent({ mainClass, options, context });
45
30
  addRootTuiProvidersToBootstrapFn(optionsObject);
46
- addExtraTuiProvidersToRootComponent({ mainClass, options, standalone: true });
47
31
  }
48
32
  }
49
33
  function addRootTuiProvidersToBootstrapFn(bootstrapOptions) {
@@ -51,11 +35,12 @@ function addRootTuiProvidersToBootstrapFn(bootstrapOptions) {
51
35
  const initializer = property.getInitializer();
52
36
  const provideAnimations = initializer
53
37
  .getElements()
54
- .find(el => ng_morph_1.Node.isCallExpression(el) &&
38
+ .find((el) => ng_morph_1.Node.isCallExpression(el) &&
55
39
  el.getExpression().getText() === 'provideAnimations');
56
40
  (0, push_to_array_property_1.pushToObjectArrayProperty)(bootstrapOptions, 'providers', 'NG_EVENT_PLUGINS');
41
+ const modules = [];
57
42
  if (!provideAnimations) {
58
- [modules_1.MAIN_MODULE].push({
43
+ modules.push({
59
44
  name: 'provideAnimations',
60
45
  packageName: '@angular/platform-browser/animations',
61
46
  });
@@ -63,7 +48,8 @@ function addRootTuiProvidersToBootstrapFn(bootstrapOptions) {
63
48
  index: 0,
64
49
  });
65
50
  }
66
- [{ name: 'NG_EVENT_PLUGINS', packageName: '@taiga-ui/event-plugins' }].forEach(({ name, packageName }) => {
51
+ modules.push({ name: 'NG_EVENT_PLUGINS', packageName: '@taiga-ui/event-plugins' });
52
+ modules.forEach(({ name, packageName }) => {
67
53
  (0, add_unique_import_1.addUniqueImport)(bootstrapOptions.getSourceFile().getFilePath(), name, packageName);
68
54
  });
69
55
  }
@@ -112,7 +98,6 @@ function addTaigaModules(options) {
112
98
  else {
113
99
  const mainClass = (0, ng_morph_1.getMainModule)(mainFilePath);
114
100
  addTuiModules({ mainClass, options, context });
115
- addExtraTuiProvidersToRootComponent({ mainClass, options });
116
101
  }
117
102
  (0, ng_morph_1.saveActiveProject)();
118
103
  });
@@ -1,5 +1,6 @@
1
1
  export interface HtmlComment {
2
- readonly tag: string;
3
- readonly withAttrs: string[];
2
+ readonly tag?: string;
3
+ readonly withAttrs?: string[];
4
+ readonly pattern?: RegExp;
4
5
  readonly comment: string;
5
6
  }
@@ -2,10 +2,14 @@ import type { Element } from 'parse5/dist/tree-adapters/default';
2
2
  export interface ReplacementAttributeValue {
3
3
  readonly attrNames: string[];
4
4
  readonly newAttrName?: string;
5
- readonly values: Array<{
5
+ readonly valueReplacer: Array<{
6
6
  readonly from: string;
7
7
  readonly to: string;
8
- }>;
8
+ }> | ((value: string) => string);
9
9
  readonly withTagNames?: string[];
10
10
  readonly filterFn?: (el: Element) => boolean;
11
+ readonly directiveModule?: {
12
+ readonly moduleSpecifier: string;
13
+ readonly name: string;
14
+ };
11
15
  }
@@ -7,16 +7,10 @@ export interface ReplacementIdentifier {
7
7
  readonly moduleSpecifier: string;
8
8
  readonly name: string;
9
9
  readonly namedImport?: string;
10
+ readonly spreadInModule?: boolean;
10
11
  };
11
12
  }
12
- export interface ReplacementIdentifierMulti extends Pick<ReplacementIdentifier, 'from'> {
13
- readonly to: Array<{
14
- readonly moduleSpecifier: string;
15
- readonly name: string;
16
- readonly namedImport?: string;
17
- }> | {
18
- readonly moduleSpecifier: string;
19
- readonly name: string;
20
- readonly namedImport?: string;
21
- };
13
+ export interface ReplacementIdentifierMulti {
14
+ readonly from: Array<ReplacementIdentifier['from']> | ReplacementIdentifier['from'];
15
+ readonly to: Array<ReplacementIdentifier['to']> | ReplacementIdentifier['to'];
22
16
  }