@taiga-ui/kit 4.52.0-canary.24b31eb → 4.52.0-canary.2fa3dd5

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 (268) hide show
  1. package/README.md +1 -1
  2. package/components/action-bar/action-bar.component.d.ts +5 -7
  3. package/components/action-bar/index.d.ts +0 -2
  4. package/components/badge/badge.options.d.ts +1 -3
  5. package/components/badge-notification/badge-notification.options.d.ts +1 -3
  6. package/components/block/block.options.d.ts +1 -3
  7. package/components/breadcrumbs/breadcrumbs.options.d.ts +1 -3
  8. package/components/calendar-month/calendar-month.component.d.ts +1 -1
  9. package/components/calendar-range/calendar-range.component.d.ts +1 -2
  10. package/components/chip/chip.options.d.ts +1 -3
  11. package/components/confirm/confirm.component.d.ts +2 -2
  12. package/components/copy/copy.component.d.ts +1 -1
  13. package/components/copy/copy.directive.d.ts +1 -0
  14. package/components/data-list-wrapper/data-list-group-wrapper.component.d.ts +2 -0
  15. package/components/files/file/file.options.d.ts +1 -1
  16. package/components/files/files/files.component.d.ts +2 -2
  17. package/components/files/input-files/input-files.options.d.ts +1 -3
  18. package/components/index.d.ts +0 -1
  19. package/components/input-number/input-number.directive.d.ts +5 -9
  20. package/components/input-number/step/input-number-step.component.d.ts +1 -1
  21. package/components/input-phone-international/input-phone-international.component.d.ts +3 -3
  22. package/components/input-phone-international/input-phone-international.options.d.ts +1 -3
  23. package/components/input-pin/input-pin.component.d.ts +1 -1
  24. package/components/input-range/input-range.component.d.ts +4 -7
  25. package/components/input-slider/input-slider.directive.d.ts +0 -1
  26. package/components/input-time/input-time.directive.d.ts +6 -8
  27. package/components/line-clamp/line-clamp.component.d.ts +8 -10
  28. package/components/line-clamp/line-clamp.options.d.ts +1 -3
  29. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +1 -1
  30. package/components/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
  31. package/components/notification-middle/notification-middle.component.d.ts +2 -2
  32. package/components/notification-middle/notification-middle.directive.d.ts +4 -3
  33. package/components/notification-middle/notification-middle.service.d.ts +7 -3
  34. package/components/pagination/index.d.ts +1 -0
  35. package/components/pagination/pagination.component.d.ts +3 -2
  36. package/components/pagination/pagination.options.d.ts +10 -0
  37. package/components/preview/dialog/preview-dialog.component.d.ts +2 -2
  38. package/components/preview/dialog/preview-dialog.directive.d.ts +3 -3
  39. package/components/preview/dialog/preview-dialog.service.d.ts +5 -2
  40. package/components/preview/pagination/preview-pagination.component.d.ts +1 -1
  41. package/components/preview/preview.component.d.ts +1 -1
  42. package/components/preview/zoom/preview-zoom.component.d.ts +1 -1
  43. package/components/progress/progress-bar/progress-color-segments.directive.d.ts +4 -4
  44. package/components/progress/progress.options.d.ts +1 -3
  45. package/components/push/push-alert.component.d.ts +4 -3
  46. package/components/push/push.component.d.ts +1 -1
  47. package/components/push/push.directive.d.ts +4 -6
  48. package/components/push/push.options.d.ts +4 -8
  49. package/components/push/push.service.d.ts +6 -2
  50. package/components/range/range-change.directive.d.ts +1 -2
  51. package/components/range/range.component.d.ts +16 -24
  52. package/components/rating/rating.options.d.ts +1 -3
  53. package/components/select/native-select/native-select.component.d.ts +4 -5
  54. package/components/slider/helpers/key-steps.d.ts +1 -2
  55. package/components/slider/helpers/slider-key-steps.directive.d.ts +12 -21
  56. package/components/slider/slider.options.d.ts +1 -6
  57. package/components/tabs/tabs-with-more.component.d.ts +1 -1
  58. package/components/tabs/tabs.options.d.ts +1 -6
  59. package/components/textarea/textarea-limit.directive.d.ts +4 -5
  60. package/components/toast/toast.component.d.ts +4 -3
  61. package/components/toast/toast.options.d.ts +8 -7
  62. package/components/toast/toast.service.d.ts +10 -9
  63. package/components/tree/components/tree-item-content/tree-item-content.component.d.ts +8 -1
  64. package/components/tree/misc/tree.constants.d.ts +0 -3
  65. package/components/tree/misc/tree.tokens.d.ts +1 -6
  66. package/directives/button-close/button-close.directive.d.ts +2 -1
  67. package/directives/button-select/button-select.directive.d.ts +3 -3
  68. package/directives/fluid-typography/fluid-typography.directive.d.ts +3 -6
  69. package/directives/fluid-typography/fluid-typography.options.d.ts +1 -3
  70. package/fesm2022/taiga-ui-kit-components-accordion.mjs +1 -2
  71. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-components-action-bar.mjs +20 -36
  73. package/fesm2022/taiga-ui-kit-components-action-bar.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-kit-components-avatar.mjs +3 -3
  75. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs +4 -9
  77. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-kit-components-badge.mjs +6 -10
  79. package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-kit-components-badged-content.mjs +0 -1
  81. package/fesm2022/taiga-ui-kit-components-badged-content.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-components-block.mjs +4 -8
  83. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +6 -12
  85. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-kit-components-button-loading.mjs +3 -3
  87. package/fesm2022/taiga-ui-kit-components-button-loading.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +3 -6
  89. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +4 -5
  91. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-kit-components-carousel.mjs +3 -9
  93. package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +1 -1
  95. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-kit-components-chip.mjs +6 -10
  97. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +5 -6
  99. package/fesm2022/taiga-ui-kit-components-combo-box.mjs.map +1 -1
  100. package/fesm2022/taiga-ui-kit-components-comment.mjs.map +1 -1
  101. package/fesm2022/taiga-ui-kit-components-compass.mjs +3 -3
  102. package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
  103. package/fesm2022/taiga-ui-kit-components-confirm.mjs +3 -5
  104. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  105. package/fesm2022/taiga-ui-kit-components-copy.mjs +6 -6
  106. package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -1
  107. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +11 -3
  108. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs.map +1 -1
  109. package/fesm2022/taiga-ui-kit-components-drawer.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs +0 -1
  111. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-kit-components-files.mjs +17 -24
  113. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  114. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  115. package/fesm2022/taiga-ui-kit-components-floating-container.mjs +2 -2
  116. package/fesm2022/taiga-ui-kit-components-floating-container.mjs.map +1 -1
  117. package/fesm2022/taiga-ui-kit-components-fullscreen.mjs.map +1 -1
  118. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +0 -2
  119. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  120. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  121. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +3 -8
  122. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
  123. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +0 -1
  124. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  125. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +3 -5
  126. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
  127. package/fesm2022/taiga-ui-kit-components-input-date.mjs +9 -17
  128. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  129. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +2 -3
  130. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  131. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +3 -5
  132. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  133. package/fesm2022/taiga-ui-kit-components-input-month.mjs +3 -5
  134. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  135. package/fesm2022/taiga-ui-kit-components-input-number.mjs +22 -46
  136. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  137. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +12 -15
  138. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  139. package/fesm2022/taiga-ui-kit-components-input-phone.mjs +3 -5
  140. package/fesm2022/taiga-ui-kit-components-input-phone.mjs.map +1 -1
  141. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  142. package/fesm2022/taiga-ui-kit-components-input-range.mjs +7 -14
  143. package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
  144. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +9 -15
  145. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  146. package/fesm2022/taiga-ui-kit-components-input-time.mjs +29 -35
  147. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  148. package/fesm2022/taiga-ui-kit-components-input-year.mjs +2 -4
  149. package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
  150. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +2 -4
  151. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
  152. package/fesm2022/taiga-ui-kit-components-like.mjs +1 -1
  153. package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
  154. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +25 -67
  155. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  156. package/fesm2022/taiga-ui-kit-components-message.mjs +0 -1
  157. package/fesm2022/taiga-ui-kit-components-message.mjs.map +1 -1
  158. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +12 -14
  159. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  160. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs +31 -20
  161. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs.map +1 -1
  162. package/fesm2022/taiga-ui-kit-components-pager.mjs.map +1 -1
  163. package/fesm2022/taiga-ui-kit-components-pagination.mjs +20 -10
  164. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  165. package/fesm2022/taiga-ui-kit-components-pin.mjs +2 -2
  166. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  167. package/fesm2022/taiga-ui-kit-components-preview-dialog.mjs +23 -15
  168. package/fesm2022/taiga-ui-kit-components-preview-dialog.mjs.map +1 -1
  169. package/fesm2022/taiga-ui-kit-components-preview.mjs +36 -29
  170. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  171. package/fesm2022/taiga-ui-kit-components-progress.mjs +41 -33
  172. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  173. package/fesm2022/taiga-ui-kit-components-pulse.mjs +1 -1
  174. package/fesm2022/taiga-ui-kit-components-pulse.mjs.map +1 -1
  175. package/fesm2022/taiga-ui-kit-components-push.mjs +40 -47
  176. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  177. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +2 -2
  178. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  179. package/fesm2022/taiga-ui-kit-components-radio.mjs +3 -4
  180. package/fesm2022/taiga-ui-kit-components-radio.mjs.map +1 -1
  181. package/fesm2022/taiga-ui-kit-components-range.mjs +36 -80
  182. package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
  183. package/fesm2022/taiga-ui-kit-components-rating.mjs +3 -8
  184. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  185. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs +7 -3
  186. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs.map +1 -1
  187. package/fesm2022/taiga-ui-kit-components-segmented.mjs +3 -4
  188. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  189. package/fesm2022/taiga-ui-kit-components-select.mjs +35 -40
  190. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  191. package/fesm2022/taiga-ui-kit-components-slider.mjs +59 -67
  192. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  193. package/fesm2022/taiga-ui-kit-components-slides.mjs.map +1 -1
  194. package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
  195. package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
  196. package/fesm2022/taiga-ui-kit-components-switch.mjs +1 -1
  197. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  198. package/fesm2022/taiga-ui-kit-components-tabs.mjs +7 -17
  199. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  200. package/fesm2022/taiga-ui-kit-components-textarea.mjs +7 -16
  201. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  202. package/fesm2022/taiga-ui-kit-components-tiles.mjs +2 -3
  203. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  204. package/fesm2022/taiga-ui-kit-components-toast.mjs +39 -40
  205. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -1
  206. package/fesm2022/taiga-ui-kit-components-tree.mjs +34 -39
  207. package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
  208. package/fesm2022/taiga-ui-kit-components.mjs +0 -1
  209. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  210. package/fesm2022/taiga-ui-kit-directives-button-close.mjs +13 -5
  211. package/fesm2022/taiga-ui-kit-directives-button-close.mjs.map +1 -1
  212. package/fesm2022/taiga-ui-kit-directives-button-group.mjs.map +1 -1
  213. package/fesm2022/taiga-ui-kit-directives-button-select.mjs +14 -13
  214. package/fesm2022/taiga-ui-kit-directives-button-select.mjs.map +1 -1
  215. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  216. package/fesm2022/taiga-ui-kit-directives-connected.mjs +0 -1
  217. package/fesm2022/taiga-ui-kit-directives-connected.mjs.map +1 -1
  218. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs +0 -1
  219. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs.map +1 -1
  220. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  221. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +12 -25
  222. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
  223. package/fesm2022/taiga-ui-kit-directives-highlight.mjs +0 -1
  224. package/fesm2022/taiga-ui-kit-directives-highlight.mjs.map +1 -1
  225. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs +0 -1
  226. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs.map +1 -1
  227. package/fesm2022/taiga-ui-kit-directives-password.mjs +2 -6
  228. package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -1
  229. package/fesm2022/taiga-ui-kit-directives-present.mjs +0 -1
  230. package/fesm2022/taiga-ui-kit-directives-present.mjs.map +1 -1
  231. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
  232. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -1
  233. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
  234. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +2 -2
  235. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  236. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs +1 -2
  237. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs.map +1 -1
  238. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs +0 -1
  239. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs.map +1 -1
  240. package/fesm2022/taiga-ui-kit-pipes-emails.mjs +0 -1
  241. package/fesm2022/taiga-ui-kit-pipes-emails.mjs.map +1 -1
  242. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs +0 -1
  243. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs.map +1 -1
  244. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs +0 -1
  245. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs.map +1 -1
  246. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs +2 -2
  247. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs.map +1 -1
  248. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs +0 -1
  249. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs.map +1 -1
  250. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs +0 -1
  251. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs.map +1 -1
  252. package/fesm2022/taiga-ui-kit-tokens.mjs +5 -18
  253. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  254. package/package.json +14 -14
  255. package/styles/components/badge.less +1 -0
  256. package/styles/components/chip.less +12 -1
  257. package/tokens/i18n.d.ts +25 -26
  258. package/tokens/items-handlers.d.ts +1 -7
  259. package/tokens/preview-icons.d.ts +1 -3
  260. package/components/action-bar/action-bar.d.ts +0 -3
  261. package/components/action-bar/action-bar.directive.d.ts +0 -6
  262. package/components/pdf-viewer/index.d.ts +0 -4
  263. package/components/pdf-viewer/pdf-viewer.component.d.ts +0 -12
  264. package/components/pdf-viewer/pdf-viewer.directive.d.ts +0 -7
  265. package/components/pdf-viewer/pdf-viewer.options.d.ts +0 -13
  266. package/components/pdf-viewer/pdf-viewer.service.d.ts +0 -13
  267. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs +0 -83
  268. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs.map +0 -1
@@ -1,10 +1,11 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, LOCALE_ID, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, TemplateRef, ContentChildren, ViewEncapsulation, InjectionToken, Directive, forwardRef, ContentChild, Pipe } from '@angular/core';
4
+ import { inject, LOCALE_ID, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, TemplateRef, ContentChildren, ViewEncapsulation, Directive, forwardRef, ContentChild, Pipe } from '@angular/core';
5
+ import { toObservable } from '@angular/core/rxjs-interop';
5
6
  import { DomSanitizer } from '@angular/platform-browser';
6
7
  import { WA_WINDOW } from '@ng-web-apis/common';
7
- import { tuiPure, tuiProvideOptions, tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
8
+ import { tuiPure, tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
8
9
  import { TuiButton } from '@taiga-ui/core/components/button';
9
10
  import { TuiIcon } from '@taiga-ui/core/components/icon';
10
11
  import { TuiLoader } from '@taiga-ui/core/components/loader';
@@ -110,10 +111,10 @@ class TuiFile {
110
111
  this.sanitizer = inject(DomSanitizer);
111
112
  this.options = inject(TUI_FILE_OPTIONS);
112
113
  this.locale = inject(LOCALE_ID);
113
- this.units$ = inject(TUI_DIGITAL_INFORMATION_UNITS);
114
+ this.units$ = toObservable(inject(TUI_DIGITAL_INFORMATION_UNITS));
114
115
  this.win = inject(WA_WINDOW);
115
116
  this.icons = inject(TUI_COMMON_ICONS);
116
- this.fileTexts$ = inject(TUI_FILE_TEXTS);
117
+ this.fileTexts$ = toObservable(inject(TUI_FILE_TEXTS));
117
118
  this.file = { name: '' };
118
119
  this.state = 'normal';
119
120
  this.size = 'm';
@@ -184,7 +185,7 @@ class TuiFile {
184
185
  return dot > 0 ? file.name.slice(dot) : '';
185
186
  }
186
187
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFile, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiFile, isStandalone: true, selector: "tui-file,a[tuiFile],button[tuiFile]", inputs: { file: "file", state: "state", size: "size", showDelete: "showDelete", showSize: "showSize", leftContent: "leftContent" }, outputs: { remove: "remove" }, host: { properties: { "attr.data-delete": "showDelete" } }, providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)], hostDirectives: [{ directive: i1.TuiAppearance }], ngImport: i0, template: "<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n @if (showSize && (fileSize$ | async); as fileSize) {\n <div class=\"t-size\">\n {{ fileSize }}\n </div>\n }\n </div>\n @if (content$ | async; as content) {\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n <ng-content />\n</div>\n@if (allowDelete) {\n @if (fileTexts$ | async; as texts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n }\n}\n\n<ng-template #defaultLeftContent>\n @if (preview) {\n <img\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n } @else {\n @if (isLoading) {\n <tui-loader\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n } @else {\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n }\n }\n</ng-template>\n", styles: [":host{position:relative;display:flex;align-items:center;font:var(--tui-font-text-m);padding:.625rem;padding-inline-end:2.25rem;text-decoration:none;border-radius:var(--tui-radius-m)}:host:hover .t-remove,:host[data-delete=always] .t-remove{opacity:1}.t-preview{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:.75rem;border-radius:var(--tui-radius-m);overflow:hidden;color:var(--tui-text-tertiary)}.t-preview_big{inline-size:4rem;block-size:4rem;margin-inline-end:1rem}.t-preview_big:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";background:var(--tui-background-neutral-1)}.t-image{max-inline-size:100%;max-block-size:100%}.t-loader{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}.t-icon{position:absolute;top:0;left:0;bottom:0;right:0;color:var(--tui-status-positive);margin:auto}.t-icon_blank{color:var(--tui-text-tertiary)}.t-icon_error{color:var(--tui-text-negative)}.t-remove{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;top:.625rem;right:.625rem}@supports (inset-inline-end: 0){.t-remove{right:unset;inset-inline-end:.625rem}}.t-remove:focus{opacity:1}.t-remove:focus-visible{box-shadow:inset 0 0 0 2px var(--tui-border-focus)}@media (hover: hover) and (pointer: fine){.t-remove{opacity:0}}.t-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden;color:var(--tui-text-primary)}.t-text{display:flex;inline-size:100%}.t-size{flex-shrink:0;opacity:var(--tui-disabled-opacity);margin-inline-start:.5rem}.t-type{flex-shrink:0}.t-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-content{font:var(--tui-font-text-s);color:var(--tui-text-negative)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiHintOverflow, selector: "[tuiHintOverflow]", inputs: ["tuiHintOverflow"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiFile, isStandalone: true, selector: "tui-file,a[tuiFile],button[tuiFile]", inputs: { file: "file", state: "state", size: "size", showDelete: "showDelete", showSize: "showSize", leftContent: "leftContent" }, outputs: { remove: "remove" }, host: { properties: { "attr.data-delete": "showDelete" } }, providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)], hostDirectives: [{ directive: i1.TuiAppearance }], ngImport: i0, template: "<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n @if (showSize && (fileSize$ | async); as fileSize) {\n <div class=\"t-size\">\n {{ fileSize }}\n </div>\n }\n </div>\n @if (content$ | async; as content) {\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n <ng-content />\n</div>\n@if (allowDelete) {\n @if (fileTexts$ | async; as texts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n }\n}\n\n<ng-template #defaultLeftContent>\n @if (preview) {\n <img\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n } @else {\n @if (isLoading) {\n <tui-loader\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n } @else {\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n }\n }\n</ng-template>\n", styles: [":host{position:relative;display:flex;align-items:center;font:var(--tui-font-text-m);padding:.625rem;padding-inline-end:2.25rem;text-decoration:none;border-radius:var(--tui-radius-m)}:host:hover .t-remove,:host[data-delete=always] .t-remove{opacity:1}.t-preview{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:.75rem;border-radius:var(--tui-radius-m);overflow:hidden;color:var(--tui-text-tertiary)}.t-preview_big{inline-size:4rem;block-size:4rem;margin-inline-end:1rem}.t-preview_big:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";background:var(--tui-background-neutral-1)}.t-image{max-inline-size:100%;max-block-size:100%}.t-loader{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}.t-icon{position:absolute;inset:0;color:var(--tui-status-positive);margin:auto}.t-icon_blank{color:var(--tui-text-tertiary)}.t-icon_error{color:var(--tui-text-negative)}.t-remove{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;top:.625rem;right:.625rem}@supports (inset-inline-end: 0){.t-remove{right:unset;inset-inline-end:.625rem}}.t-remove:focus{opacity:1}.t-remove:focus-visible{box-shadow:inset 0 0 0 2px var(--tui-border-focus)}@media (hover: hover) and (pointer: fine){.t-remove{opacity:0}}.t-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden;color:var(--tui-text-primary)}.t-text{display:flex;inline-size:100%}.t-size{flex-shrink:0;opacity:var(--tui-disabled-opacity);margin-inline-start:.5rem}.t-type{flex-shrink:0}.t-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-content{font:var(--tui-font-text-s);color:var(--tui-text-negative)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiHintOverflow, selector: "[tuiHintOverflow]", inputs: ["tuiHintOverflow"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
189
  }
189
190
  __decorate([
190
191
  tuiPure
@@ -212,7 +213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
212
213
  TuiLoader,
213
214
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)], hostDirectives: [TuiAppearance], host: {
214
215
  '[attr.data-delete]': 'showDelete',
215
- }, template: "<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n @if (showSize && (fileSize$ | async); as fileSize) {\n <div class=\"t-size\">\n {{ fileSize }}\n </div>\n }\n </div>\n @if (content$ | async; as content) {\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n <ng-content />\n</div>\n@if (allowDelete) {\n @if (fileTexts$ | async; as texts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n }\n}\n\n<ng-template #defaultLeftContent>\n @if (preview) {\n <img\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n } @else {\n @if (isLoading) {\n <tui-loader\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n } @else {\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n }\n }\n</ng-template>\n", styles: [":host{position:relative;display:flex;align-items:center;font:var(--tui-font-text-m);padding:.625rem;padding-inline-end:2.25rem;text-decoration:none;border-radius:var(--tui-radius-m)}:host:hover .t-remove,:host[data-delete=always] .t-remove{opacity:1}.t-preview{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:.75rem;border-radius:var(--tui-radius-m);overflow:hidden;color:var(--tui-text-tertiary)}.t-preview_big{inline-size:4rem;block-size:4rem;margin-inline-end:1rem}.t-preview_big:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";background:var(--tui-background-neutral-1)}.t-image{max-inline-size:100%;max-block-size:100%}.t-loader{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}.t-icon{position:absolute;top:0;left:0;bottom:0;right:0;color:var(--tui-status-positive);margin:auto}.t-icon_blank{color:var(--tui-text-tertiary)}.t-icon_error{color:var(--tui-text-negative)}.t-remove{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;top:.625rem;right:.625rem}@supports (inset-inline-end: 0){.t-remove{right:unset;inset-inline-end:.625rem}}.t-remove:focus{opacity:1}.t-remove:focus-visible{box-shadow:inset 0 0 0 2px var(--tui-border-focus)}@media (hover: hover) and (pointer: fine){.t-remove{opacity:0}}.t-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden;color:var(--tui-text-primary)}.t-text{display:flex;inline-size:100%}.t-size{flex-shrink:0;opacity:var(--tui-disabled-opacity);margin-inline-start:.5rem}.t-type{flex-shrink:0}.t-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-content{font:var(--tui-font-text-s);color:var(--tui-text-negative)}\n"] }]
216
+ }, template: "<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n @if (showSize && (fileSize$ | async); as fileSize) {\n <div class=\"t-size\">\n {{ fileSize }}\n </div>\n }\n </div>\n @if (content$ | async; as content) {\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n <ng-content />\n</div>\n@if (allowDelete) {\n @if (fileTexts$ | async; as texts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n }\n}\n\n<ng-template #defaultLeftContent>\n @if (preview) {\n <img\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n } @else {\n @if (isLoading) {\n <tui-loader\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n } @else {\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n }\n }\n</ng-template>\n", styles: [":host{position:relative;display:flex;align-items:center;font:var(--tui-font-text-m);padding:.625rem;padding-inline-end:2.25rem;text-decoration:none;border-radius:var(--tui-radius-m)}:host:hover .t-remove,:host[data-delete=always] .t-remove{opacity:1}.t-preview{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:.75rem;border-radius:var(--tui-radius-m);overflow:hidden;color:var(--tui-text-tertiary)}.t-preview_big{inline-size:4rem;block-size:4rem;margin-inline-end:1rem}.t-preview_big:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";background:var(--tui-background-neutral-1)}.t-image{max-inline-size:100%;max-block-size:100%}.t-loader{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}.t-icon{position:absolute;inset:0;color:var(--tui-status-positive);margin:auto}.t-icon_blank{color:var(--tui-text-tertiary)}.t-icon_error{color:var(--tui-text-negative)}.t-remove{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;top:.625rem;right:.625rem}@supports (inset-inline-end: 0){.t-remove{right:unset;inset-inline-end:.625rem}}.t-remove:focus{opacity:1}.t-remove:focus-visible{box-shadow:inset 0 0 0 2px var(--tui-border-focus)}@media (hover: hover) and (pointer: fine){.t-remove{opacity:0}}.t-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden;color:var(--tui-text-primary)}.t-text{display:flex;inline-size:100%}.t-size{flex-shrink:0;opacity:var(--tui-disabled-opacity);margin-inline-start:.5rem}.t-type{flex-shrink:0}.t-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-content{font:var(--tui-font-text-s);color:var(--tui-text-negative)}\n"] }]
216
217
  }], propDecorators: { file: [{
217
218
  type: Input
218
219
  }], state: [{
@@ -232,8 +233,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
232
233
  class TuiFilesComponent {
233
234
  constructor() {
234
235
  this.items = EMPTY_QUERY;
235
- this.hideText$ = inject(TUI_HIDE_TEXT);
236
- this.showAllText$ = inject(TUI_SHOW_ALL_TEXT);
236
+ this.hideText = inject(TUI_HIDE_TEXT);
237
+ this.showAllText = inject(TUI_SHOW_ALL_TEXT);
237
238
  this.max = 0;
238
239
  this.expanded = false;
239
240
  this.expandedChange = new EventEmitter();
@@ -248,13 +249,13 @@ class TuiFilesComponent {
248
249
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFilesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
250
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiFilesComponent, isStandalone: true, selector: "tui-files", inputs: { max: "max", expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, providers: [
250
251
  tuiGroupOptionsProvider({ size: 'm', collapsed: true, orientation: 'vertical' }),
251
- ], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], hostDirectives: [{ directive: i1$1.TuiGroup }], ngImport: i0, template: "@if (items.changes | async) {}\n<ng-content />\n@for (item of items; track item; let index = $index) {\n @if (!max || index < max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n}\n@if (hasExtraItems) {\n <tui-expand [expanded]=\"expanded\">\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n @for (item of items; track item; let index = $index) {\n @if (max && index >= max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n }\n </div>\n </tui-expand>\n}\n@if (hasExtraItems) {\n <div\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n >\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ (expanded ? hideText$ : showAllText$) | async }}\n </button>\n </div>\n}\n", styles: ["tui-files{inline-size:100%;overflow:hidden;border-radius:var(--tui-radius-m)}tui-files:empty:empty{display:none}tui-files .t-files{position:relative;display:block;inline-size:100%;block-size:100%;border-radius:var(--tui-radius-m);overflow:hidden}tui-files .t-button{inline-size:100%;border-radius:inherit}tui-files .t-bottom{z-index:3;inline-size:100%;background:var(--tui-background-base);mask:none!important}tui-files .t-bottom_collapsed{box-shadow:var(--tui-shadow-popup);margin-block-start:-1.5rem}tui-files .t-extra-items{inline-size:100%}tui-files .t-extra-items>*{border-radius:0!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "directive", type: TuiGroup, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "collapsed", "rounded", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
252
+ ], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], hostDirectives: [{ directive: i1$1.TuiGroup }], ngImport: i0, template: "@if (items.changes | async) {}\n<ng-content />\n@for (item of items; track item) {\n @if (!max || $index < max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n}\n@if (hasExtraItems) {\n <tui-expand [expanded]=\"expanded\">\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n @for (item of items; track item) {\n @if (max && $index >= max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n }\n </div>\n </tui-expand>\n}\n@if (hasExtraItems) {\n <div\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n >\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ expanded ? hideText() : showAllText() }}\n </button>\n </div>\n}\n", styles: ["tui-files{inline-size:100%;overflow:hidden;border-radius:var(--tui-radius-m)}tui-files:empty:empty{display:none}tui-files .t-files{position:relative;display:block;inline-size:100%;block-size:100%;border-radius:var(--tui-radius-m);overflow:hidden}tui-files .t-button{inline-size:100%;border-radius:inherit}tui-files .t-bottom{z-index:3;inline-size:100%;background:var(--tui-background-base);mask:none!important}tui-files .t-bottom_collapsed{box-shadow:var(--tui-shadow-popup);margin-block-start:-1.5rem}tui-files .t-extra-items{inline-size:100%}tui-files .t-extra-items>*{border-radius:0!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "directive", type: TuiGroup, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "collapsed", "rounded", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
252
253
  }
253
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFilesComponent, decorators: [{
254
255
  type: Component,
255
256
  args: [{ selector: 'tui-files', imports: [AsyncPipe, NgTemplateOutlet, TuiButton, TuiExpand, TuiGroup], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
256
257
  tuiGroupOptionsProvider({ size: 'm', collapsed: true, orientation: 'vertical' }),
257
- ], hostDirectives: [TuiGroup], template: "@if (items.changes | async) {}\n<ng-content />\n@for (item of items; track item; let index = $index) {\n @if (!max || index < max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n}\n@if (hasExtraItems) {\n <tui-expand [expanded]=\"expanded\">\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n @for (item of items; track item; let index = $index) {\n @if (max && index >= max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n }\n </div>\n </tui-expand>\n}\n@if (hasExtraItems) {\n <div\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n >\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ (expanded ? hideText$ : showAllText$) | async }}\n </button>\n </div>\n}\n", styles: ["tui-files{inline-size:100%;overflow:hidden;border-radius:var(--tui-radius-m)}tui-files:empty:empty{display:none}tui-files .t-files{position:relative;display:block;inline-size:100%;block-size:100%;border-radius:var(--tui-radius-m);overflow:hidden}tui-files .t-button{inline-size:100%;border-radius:inherit}tui-files .t-bottom{z-index:3;inline-size:100%;background:var(--tui-background-base);mask:none!important}tui-files .t-bottom_collapsed{box-shadow:var(--tui-shadow-popup);margin-block-start:-1.5rem}tui-files .t-extra-items{inline-size:100%}tui-files .t-extra-items>*{border-radius:0!important}\n"] }]
258
+ ], hostDirectives: [TuiGroup], template: "@if (items.changes | async) {}\n<ng-content />\n@for (item of items; track item) {\n @if (!max || $index < max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n}\n@if (hasExtraItems) {\n <tui-expand [expanded]=\"expanded\">\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n @for (item of items; track item) {\n @if (max && $index >= max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n }\n </div>\n </tui-expand>\n}\n@if (hasExtraItems) {\n <div\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n >\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ expanded ? hideText() : showAllText() }}\n </button>\n </div>\n}\n", styles: ["tui-files{inline-size:100%;overflow:hidden;border-radius:var(--tui-radius-m)}tui-files:empty:empty{display:none}tui-files .t-files{position:relative;display:block;inline-size:100%;block-size:100%;border-radius:var(--tui-radius-m);overflow:hidden}tui-files .t-button{inline-size:100%;border-radius:inherit}tui-files .t-bottom{z-index:3;inline-size:100%;background:var(--tui-background-base);mask:none!important}tui-files .t-bottom_collapsed{box-shadow:var(--tui-shadow-popup);margin-block-start:-1.5rem}tui-files .t-extra-items{inline-size:100%}tui-files .t-extra-items>*{border-radius:0!important}\n"] }]
258
259
  }], propDecorators: { items: [{
259
260
  type: ContentChildren,
260
261
  args: [TuiItem, { read: TemplateRef }]
@@ -269,7 +270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
269
270
  class TuiInputFilesContent {
270
271
  constructor() {
271
272
  this.breakpoint$ = inject(TuiBreakpointService);
272
- this.text$ = inject(TUI_INPUT_FILE_TEXTS);
273
+ this.text$ = toObservable(inject(TUI_INPUT_FILE_TEXTS));
273
274
  this.context = injectContext();
274
275
  this.component = inject(TuiInputFiles);
275
276
  }
@@ -336,12 +337,7 @@ const TUI_INPUT_FILES_DEFAULT_OPTIONS = {
336
337
  /**
337
338
  * Default parameters for input files component
338
339
  */
339
- const TUI_INPUT_FILES_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_FILES_OPTIONS' : '', {
340
- factory: () => TUI_INPUT_FILES_DEFAULT_OPTIONS,
341
- });
342
- function tuiInputFilesOptionsProvider(options) {
343
- return tuiProvideOptions(TUI_INPUT_FILES_OPTIONS, options, TUI_INPUT_FILES_DEFAULT_OPTIONS);
344
- }
340
+ const [TUI_INPUT_FILES_OPTIONS, tuiInputFilesOptionsProvider] = tuiCreateOptions(TUI_INPUT_FILES_DEFAULT_OPTIONS);
345
341
 
346
342
  class TuiInputFilesValidator extends TuiValidator {
347
343
  constructor() {
@@ -370,7 +366,6 @@ class TuiInputFilesValidator extends TuiValidator {
370
366
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputFilesValidator, decorators: [{
371
367
  type: Directive,
372
368
  args: [{
373
- standalone: true,
374
369
  inputs: ['accept', 'maxFileSize'],
375
370
  providers: [tuiProvide(NG_VALIDATORS, TuiInputFilesValidator, true)],
376
371
  exportAs: 'tuiInputFilesValidator',
@@ -410,7 +405,6 @@ class TuiInputFilesDirective extends TuiControl {
410
405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputFilesDirective, decorators: [{
411
406
  type: Directive,
412
407
  args: [{
413
- standalone: true,
414
408
  selector: 'input[tuiInputFiles]',
415
409
  providers: [
416
410
  tuiAsControl(TuiInputFilesDirective),
@@ -473,7 +467,7 @@ class TuiInputFiles {
473
467
  >
474
468
  {{ text }}
475
469
  </span>
476
- `, isInline: true, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
470
+ `, isInline: true, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
477
471
  }
478
472
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputFiles, decorators: [{
479
473
  type: Component,
@@ -494,7 +488,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
494
488
  '(dragleave)': 'onDrag(null)',
495
489
  '[class._dragged]': 'fileDragged',
496
490
  '(change)': 'onFilesSelected($event.target)',
497
- }, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"] }]
491
+ }, styles: ["label[tuiInputFiles]{position:relative;display:flex;min-block-size:var(--tui-height-l);justify-content:center;align-items:center;text-align:center;border-radius:var(--tui-radius-m);font:var(--tui-font-text-m);overflow-wrap:break-word;padding:0 .5rem}label[tuiInputFiles]>:not(input){position:relative;pointer-events:none}label[tuiInputFiles] input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;color:transparent;cursor:pointer}label[tuiInputFiles] input:disabled~*{opacity:var(--tui-disabled-opacity)}label[tuiInputFiles] input::-webkit-file-upload-button{display:none}label[tuiInputFiles] input::file-selector-button{display:none}*:disabled label[tuiInputFiles]{pointer-events:none}[tuiAppearance][data-appearance=file]{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border-radius:inherit;box-sizing:border-box;border:1px dashed var(--tui-text-action);outline:none}tui-root._mobile [tuiAppearance][data-appearance=file]{border-style:solid}[tuiInputFiles]._dragged [tuiAppearance][data-appearance=file]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):hover:not(:disabled):not([data-state]){background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}@media (hover: hover) and (pointer: fine){[tuiAppearance][data-appearance=file][tuiWrapper]:hover:not(._no-hover),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=hover]{background:var(--tui-background-neutral-1);border-color:var(--tui-text-action-hover)}}[tuiAppearance][data-appearance=file]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled):active:not([data-state]){background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][data-state=active]{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file][tuiWrapper]:active:not(._no-active),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active],[tuiAppearance][data-appearance=file][tuiWrapper][data-state=active]:hover{background:var(--tui-background-neutral-1-hover)}[tuiAppearance][data-appearance=file]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file][tuiWrapper]:disabled:not([data-state]),[tuiAppearance][data-appearance=file][tuiWrapper][data-state=disabled]{background:transparent;border-color:var(--tui-text-tertiary)}[tuiAppearance][data-appearance=file]:focus-visible:not([data-focus=false]){border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][data-focus=true]{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file][tuiWrapper]:not(._focused):has(:focus-visible),[tuiAppearance][data-appearance=file][tuiWrapper]._focused{border:.125rem solid var(--tui-border-focus)}[tuiAppearance][data-appearance=file]:not(:disabled)[data-mode~=invalid],[tuiAppearance][data-appearance=file]:invalid:not(:disabled):not([data-mode]){border-color:var(--tui-status-negative)!important}\n"] }]
498
492
  }], propDecorators: { template: [{
499
493
  type: ContentChild,
500
494
  args: [TemplateRef]
@@ -508,8 +502,8 @@ class TuiFileRejectedPipe {
508
502
  this.options = inject(TUI_INPUT_FILES_OPTIONS);
509
503
  this.formatSize = inject(TUI_FILE_OPTIONS).formatSize;
510
504
  this.locale = inject(LOCALE_ID);
511
- this.text$ = inject(TUI_INPUT_FILE_TEXTS);
512
- this.unit$ = inject(TUI_DIGITAL_INFORMATION_UNITS);
505
+ this.text$ = toObservable(inject(TUI_INPUT_FILE_TEXTS));
506
+ this.unit$ = toObservable(inject(TUI_DIGITAL_INFORMATION_UNITS));
513
507
  }
514
508
  transform(file, { accept = this.options.accept, maxFileSize = this.options.maxFileSize, } = this.options) {
515
509
  const sizeValidator = tuiCreateFileSizeValidator(maxFileSize);
@@ -539,7 +533,6 @@ class TuiFileRejectedPipe {
539
533
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFileRejectedPipe, decorators: [{
540
534
  type: Pipe,
541
535
  args: [{
542
- standalone: true,
543
536
  name: 'tuiFileRejected',
544
537
  }]
545
538
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-files.mjs","sources":["../../../projects/kit/components/files/files.validators.ts","../../../projects/kit/components/files/files.utils.ts","../../../projects/kit/components/files/file/file.options.ts","../../../projects/kit/components/files/file/file.component.ts","../../../projects/kit/components/files/file/file.template.html","../../../projects/kit/components/files/files/files.component.ts","../../../projects/kit/components/files/files/files.template.html","../../../projects/kit/components/files/input-files/input-files.content.ts","../../../projects/kit/components/files/input-files/input-files.options.ts","../../../projects/kit/components/files/input-files/input-files-validator.directive.ts","../../../projects/kit/components/files/input-files/input-files.directive.ts","../../../projects/kit/components/files/input-files/input-files.component.ts","../../../projects/kit/components/files/pipes/file-rejected.pipe.ts","../../../projects/kit/components/files/files.ts","../../../projects/kit/components/files/taiga-ui-kit-components-files.ts"],"sourcesContent":["import {coerceArray} from '@angular/cdk/coercion';\nimport {type ValidatorFn} from '@angular/forms';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\n\nexport const TUI_SIZE_ERROR = 'tuiSize';\nexport const TUI_FORMAT_ERROR = 'tuiFormat';\n\ninterface FileFormatError {\n [TUI_FORMAT_ERROR]: TuiContext<File[]>;\n}\n\ninterface FileSizeError {\n [TUI_SIZE_ERROR]: TuiContext<File[]> & {size: number};\n}\n\nexport function tuiCreateFileSizeValidator(size: number): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileSizeError | null => {\n const files = value && coerceArray(value);\n const $implicit = value && files?.filter((file) => file.size > size);\n\n return $implicit?.length ? {[TUI_SIZE_ERROR]: {$implicit, size}} : null;\n };\n}\n\nexport function tuiCreateFileFormatValidator(accept: string): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileFormatError | null => {\n const files = value && coerceArray(value);\n const formats = toArray(accept);\n const $implicit = value && files?.filter((file) => !checkFormat(file, formats));\n\n return $implicit?.length && accept ? {[TUI_FORMAT_ERROR]: {$implicit}} : null;\n };\n}\n\nfunction checkFormat({name, type}: File, formats: readonly string[]): boolean {\n const extension = `.${(name.split('.').pop() || '').toLowerCase()}`;\n\n return formats.some(\n (format) =>\n format === extension ||\n format === type ||\n (format.split('/')[1] === '*' &&\n type?.split('/')[0] === format.split('/')[0]),\n );\n}\n\nfunction toArray(accept: string): readonly string[] {\n return accept\n .toLowerCase()\n .split(',')\n .map((format) => format.trim().toLowerCase());\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {type AbstractControl} from '@angular/forms';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_FORMAT_ERROR, TUI_SIZE_ERROR} from './files.validators';\n\nconst BYTES_PER_KIB = 1024;\nconst BYTES_PER_MIB = 1024 * BYTES_PER_KIB;\n\nexport function tuiFilesRejected(control?: AbstractControl | null): File[] {\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n\n return Array.from(new Set([...format, ...size]));\n}\n\nexport function tuiFilesAccepted(control?: AbstractControl | null): File[] {\n const value = control?.value || [];\n const files: File[] = coerceArray(value);\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n\n return files.filter((file) => !size.includes(file) && !format.includes(file));\n}\n\nexport function tuiFormatSize(\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n): string | null {\n if (size === undefined) {\n return null;\n }\n\n if (size < BYTES_PER_KIB) {\n return `${size} ${units[0]}`;\n }\n\n if (size < BYTES_PER_MIB) {\n return `${(size / BYTES_PER_KIB).toFixed(0)} ${units[1]}`;\n }\n\n return `${tuiRound(size / BYTES_PER_MIB, 2).toLocaleString(locale)} ${units[2]}`;\n}\n","import {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiFileState} from '../files.types';\nimport {tuiFormatSize} from '../files.utils';\n\nexport interface TuiFileOptions extends TuiAppearanceOptions {\n readonly formatSize: (\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n ) => string | null;\n readonly icons: Record<\n Exclude<TuiFileState, 'loading'>,\n PolymorpheusContent<TuiContext<TuiSizeL>>\n >;\n}\n\nexport const TUI_FILE_DEFAULT_OPTIONS: TuiFileOptions = {\n appearance: 'outline',\n formatSize: tuiFormatSize,\n icons: {\n normal: ({$implicit}) => ($implicit === 'l' ? '@tui.file' : '@tui.circle-check'),\n error: '@tui.circle-alert',\n deleted: '@tui.trash',\n },\n};\n\n/**\n * Default parameters for file component\n */\nexport const [TUI_FILE_OPTIONS, tuiFileOptionsProvider] = tuiCreateOptions(\n TUI_FILE_DEFAULT_OPTIONS,\n);\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n LOCALE_ID,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, type SafeValue} from '@angular/platform-browser';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {\n TuiAppearance,\n tuiAppearanceOptionsProvider,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type TuiLanguage} from '@taiga-ui/i18n/types';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, type Observable, of} from 'rxjs';\n\nimport {type TuiFileLike, type TuiFileState} from '../files.types';\nimport {TUI_FILE_OPTIONS} from './file.options';\n\n@Component({\n selector: 'tui-file,a[tuiFile],button[tuiFile]',\n imports: [\n AsyncPipe,\n PolymorpheusOutlet,\n TuiButton,\n TuiHintOverflow,\n TuiIcon,\n TuiLoader,\n ],\n templateUrl: './file.template.html',\n styleUrls: ['./file.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)],\n hostDirectives: [TuiAppearance],\n host: {\n '[attr.data-delete]': 'showDelete',\n },\n})\nexport class TuiFile {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly options = inject(TUI_FILE_OPTIONS);\n private readonly locale = inject(LOCALE_ID);\n private readonly units$ = inject(TUI_DIGITAL_INFORMATION_UNITS);\n private readonly win = inject(WA_WINDOW) as Window & {File: typeof File};\n\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly fileTexts$ = inject(TUI_FILE_TEXTS);\n\n @Input()\n public file: TuiFileLike = {name: ''};\n\n @Input()\n public state: TuiFileState = 'normal';\n\n @Input()\n public size: TuiSizeL = 'm';\n\n @Input()\n public showDelete: boolean | 'always' = true;\n\n @Input()\n public showSize = true;\n\n @Input()\n public leftContent: PolymorpheusContent;\n\n @Output()\n public readonly remove = new EventEmitter<void>();\n\n protected get preview(): SafeValue {\n return this.isBig ? this.createPreview(this.file) : '';\n }\n\n protected get isBig(): boolean {\n return this.size === 'l';\n }\n\n protected get isLoading(): boolean {\n return this.state === 'loading';\n }\n\n protected get isError(): boolean {\n return this.state === 'error';\n }\n\n protected get isDeleted(): boolean {\n return this.state === 'deleted';\n }\n\n protected get allowDelete(): boolean {\n return this.showDelete && this.remove.observed;\n }\n\n protected get icon(): PolymorpheusContent<TuiContext<TuiSizeL>> {\n return this.state === 'loading' ? '' : this.options.icons[this.state];\n }\n\n protected get name(): string {\n return this.getName(this.file);\n }\n\n protected get type(): string {\n return this.getType(this.file);\n }\n\n protected get content$(): Observable<PolymorpheusContent> {\n return this.calculateContent$(this.state, this.file, this.fileTexts$);\n }\n\n protected get fileSize$(): Observable<string | null> {\n return this.calculateFileSize$(this.file, this.units$);\n }\n\n @tuiPure\n private calculateContent$(\n state: TuiFileState,\n file: TuiFileLike,\n fileTexts$: Observable<Record<keyof TuiLanguage['fileTexts'], string>>,\n ): Observable<PolymorpheusContent> {\n return state === 'error' && !file.content\n ? fileTexts$.pipe(map((texts) => texts.loadingError))\n : of(this.file.content || '');\n }\n\n @tuiPure\n private calculateFileSize$(\n file: TuiFileLike,\n units$: Observable<readonly [string, string, string]>,\n ): Observable<string | null> {\n return units$.pipe(\n map((units) => this.options.formatSize(units, file.size, this.locale)),\n );\n }\n\n @tuiPure\n private createPreview(file: TuiFileLike): SafeValue {\n if (file.src) {\n return file.src;\n }\n\n if (\n this.win.File &&\n file instanceof this.win.File &&\n file.type?.startsWith('image/')\n ) {\n return this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file));\n }\n\n return '';\n }\n\n @tuiPure\n private getName(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // a dot at position 0 means a “hidden” file, not an extension\n\n return dot > 0 ? file.name.slice(0, dot) : file.name;\n }\n\n @tuiPure\n private getType(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // only return an extension when there is one\n\n return dot > 0 ? file.name.slice(dot) : '';\n }\n}\n","<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n @if (showSize && (fileSize$ | async); as fileSize) {\n <div class=\"t-size\">\n {{ fileSize }}\n </div>\n }\n </div>\n @if (content$ | async; as content) {\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n <ng-content />\n</div>\n@if (allowDelete) {\n @if (fileTexts$ | async; as texts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n }\n}\n\n<ng-template #defaultLeftContent>\n @if (preview) {\n <img\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n } @else {\n @if (isLoading) {\n <tui-loader\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n } @else {\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n }\n }\n</ng-template>\n","import {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n type QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiExpand} from '@taiga-ui/core/components/expand';\nimport {TuiGroup, tuiGroupOptionsProvider} from '@taiga-ui/core/directives/group';\nimport {TUI_HIDE_TEXT, TUI_SHOW_ALL_TEXT} from '@taiga-ui/kit/tokens';\n\n@Component({\n selector: 'tui-files',\n imports: [AsyncPipe, NgTemplateOutlet, TuiButton, TuiExpand, TuiGroup],\n templateUrl: './files.template.html',\n styleUrls: ['./files.styles.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiGroupOptionsProvider({size: 'm', collapsed: true, orientation: 'vertical'}),\n ],\n hostDirectives: [TuiGroup],\n})\nexport class TuiFilesComponent {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly hideText$ = inject(TUI_HIDE_TEXT);\n protected readonly showAllText$ = inject(TUI_SHOW_ALL_TEXT);\n\n @Input()\n public max = 0;\n\n @Input()\n public expanded = false;\n\n @Output()\n public readonly expandedChange = new EventEmitter<boolean>();\n\n protected get hasExtraItems(): boolean {\n return !!this.max && this.items.length > this.max;\n }\n\n protected toggle(): void {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n}\n","@if (items.changes | async) {}\n<ng-content />\n@for (item of items; track item; let index = $index) {\n @if (!max || index < max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n}\n@if (hasExtraItems) {\n <tui-expand [expanded]=\"expanded\">\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n @for (item of items; track item; let index = $index) {\n @if (max && index >= max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n }\n </div>\n </tui-expand>\n}\n@if (hasExtraItems) {\n <div\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n >\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ (expanded ? hideText$ : showAllText$) | async }}\n </button>\n </div>\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiBreakpointService} from '@taiga-ui/core/services';\nimport {TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {combineLatest, map, type Observable, of} from 'rxjs';\n\nimport {TuiInputFiles} from './input-files.component';\n\n@Component({\n imports: [AsyncPipe, TuiLink],\n template: `\n <a tuiLink>{{ link$ | async }}</a>\n {{ label$ | async }}\n `,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiInputFilesContent {\n private readonly breakpoint$ = inject(TuiBreakpointService);\n private readonly text$ = inject(TUI_INPUT_FILE_TEXTS);\n private readonly context = injectContext<TuiContext<boolean>>();\n private readonly component = inject(TuiInputFiles);\n\n protected get link$(): Observable<string> {\n return this.computeLink$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n protected get label$(): Observable<string> {\n return this.computeLabel$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n @tuiPure\n private computeLink$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? of('')\n : this.text$.pipe(\n map((t) => (multiple ? t.defaultLinkMultiple : t.defaultLinkSingle)),\n );\n }\n\n @tuiPure\n private computeLabel$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple ? text.dropMultiple : text.drop;\n }),\n )\n : combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple\n ? text.defaultLabelMultiple\n : text.defaultLabelSingle;\n }),\n );\n }\n}\n","import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiInputFilesOptions extends TuiAppearanceOptions {\n accept: string;\n maxFileSize: number;\n multiple: boolean;\n size: TuiSizeL;\n}\n\nexport const TUI_INPUT_FILES_DEFAULT_OPTIONS: TuiInputFilesOptions = {\n appearance: 'file',\n accept: '',\n multiple: false,\n size: 'm',\n maxFileSize: 30 * 1024 * 1024, // 30 MiB\n};\n\n/**\n * Default parameters for input files component\n */\nexport const TUI_INPUT_FILES_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_FILES_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_FILES_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiInputFilesOptionsProvider(\n options: Partial<TuiInputFilesOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_FILES_OPTIONS,\n options,\n TUI_INPUT_FILES_DEFAULT_OPTIONS,\n );\n}\n","import {Directive, inject, type OnChanges, type OnInit} from '@angular/core';\nimport {NG_VALIDATORS, Validators} from '@angular/forms';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\n\n@Directive({\n standalone: true,\n inputs: ['accept', 'maxFileSize'],\n providers: [tuiProvide(NG_VALIDATORS, TuiInputFilesValidator, true)],\n exportAs: 'tuiInputFilesValidator',\n host: {\n '[accept]': 'accept',\n },\n})\nexport class TuiInputFilesValidator extends TuiValidator implements OnInit, OnChanges {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n\n public accept = this.options.accept;\n public maxFileSize = this.options.maxFileSize;\n\n public override ngOnChanges(): void {\n this.update();\n }\n\n public ngOnInit(): void {\n this.update();\n }\n\n private update(): void {\n this.validate =\n Validators.compose([\n tuiCreateFileFormatValidator(this.accept),\n tuiCreateFileSizeValidator(this.maxFileSize),\n ]) || Validators.nullValidator;\n this.onChange();\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {Directive, forwardRef, inject, Output} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {EMPTY_ARRAY} from '@taiga-ui/cdk/constants';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiControlValue, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAppearanceMode,\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {filter, map, switchMap, timer} from 'rxjs';\n\nimport {type TuiFileLike} from '../files.types';\nimport {tuiFilesRejected} from '../files.utils';\nimport {TuiInputFiles} from './input-files.component';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\nimport {TuiInputFilesValidator} from './input-files-validator.directive';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputFiles]',\n providers: [\n tuiAsControl(TuiInputFilesDirective),\n tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiWithAppearance,\n {\n directive: TuiInputFilesValidator,\n inputs: ['accept', 'maxFileSize'],\n },\n ],\n host: {\n title: '',\n type: 'file',\n '[disabled]': 'disabled()',\n '(blur)': 'onTouched()',\n '(click)': 'onClick($event)',\n },\n})\nexport class TuiInputFilesDirective extends TuiControl<\n TuiFileLike | readonly TuiFileLike[]\n> {\n protected readonly host = inject(forwardRef(() => TuiInputFiles));\n protected readonly m = tuiAppearanceMode(this.mode, {});\n\n @Output()\n public readonly reject = timer(0, tuiZonefreeScheduler()).pipe(\n switchMap(() => tuiControlValue(this.control.control)),\n map(() => tuiFilesRejected(this.control.control)),\n filter(({length}) => !!length),\n );\n\n public readonly input = tuiInjectElement<HTMLInputElement>();\n\n public process(files: FileList): void {\n const fileOrFiles = this.input.multiple\n ? [...toArray(this.value()), ...Array.from(files)]\n : files[0];\n\n if (fileOrFiles) {\n this.onChange(fileOrFiles);\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.input.readOnly) {\n event.preventDefault();\n }\n }\n}\n\nfunction toArray(\n value: TuiFileLike | readonly TuiFileLike[] | null,\n): readonly TuiFileLike[] {\n return value ? coerceArray(value) : EMPTY_ARRAY;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {PolymorpheusComponent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiInputFilesContent} from './input-files.content';\nimport {TuiInputFilesDirective} from './input-files.directive';\n\n@Component({\n selector: 'label[tuiInputFiles]',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"\n template || content as text;\n context: {$implicit: fileDragged}\n \"\n >\n {{ text }}\n </span>\n `,\n styleUrls: ['./input-files.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(dragover.prevent.zoneless)': '0',\n '(drop.prevent)': 'onDropped($event)',\n '(dragenter)': 'onDrag($event.dataTransfer)',\n '(dragleave)': 'onDrag(null)',\n '[class._dragged]': 'fileDragged',\n '(change)': 'onFilesSelected($event.target)',\n },\n})\nexport class TuiInputFiles {\n @ContentChild(TemplateRef)\n protected readonly template?: TemplateRef<TuiContext<boolean>>;\n\n protected files?: FileList | null;\n protected readonly content = new PolymorpheusComponent(TuiInputFilesContent);\n\n @ContentChild(TuiInputFilesDirective)\n public readonly input?: TuiInputFilesDirective;\n\n protected get fileDragged(): boolean {\n return !!this.files && !this.input?.disabled();\n }\n\n protected onFilesSelected(input: HTMLInputElement): void {\n if (!input?.files) {\n return;\n }\n\n this.input?.process(input.files);\n input.value = '';\n }\n\n protected onDropped({dataTransfer}: DragEvent): void {\n this.files = null;\n\n if (dataTransfer?.files && !this.input?.disabled()) {\n this.input?.process(dataTransfer.files);\n }\n }\n\n protected onDrag(dataTransfer: DataTransfer | null): void {\n this.files = dataTransfer?.files;\n }\n}\n","import {inject, LOCALE_ID, Pipe, type PipeTransform} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {combineLatest, map, type Observable} from 'rxjs';\n\nimport {TUI_FILE_OPTIONS} from '../file/file.options';\nimport {type TuiFileLike} from '../files.types';\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from '../input-files/input-files.options';\n\n@Pipe({\n standalone: true,\n name: 'tuiFileRejected',\n})\nexport class TuiFileRejectedPipe implements PipeTransform {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n private readonly formatSize = inject(TUI_FILE_OPTIONS).formatSize;\n private readonly locale = inject(LOCALE_ID);\n private readonly text$ = inject(TUI_INPUT_FILE_TEXTS);\n private readonly unit$ = inject(TUI_DIGITAL_INFORMATION_UNITS);\n\n public transform(\n file: TuiFileLike | null,\n {\n accept = this.options.accept,\n maxFileSize = this.options.maxFileSize,\n }: {accept?: string; maxFileSize?: number} = this.options,\n ): Observable<TuiFileLike | null> {\n const sizeValidator = tuiCreateFileSizeValidator(maxFileSize);\n const formatValidator = tuiCreateFileFormatValidator(accept);\n const control = new FormControl(file);\n\n return combineLatest([this.text$, this.unit$]).pipe(\n map(([{maxSizeRejectionReason, formatRejectionReason}, units]) => {\n if (file && formatValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: formatRejectionReason,\n };\n }\n\n if (file && sizeValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: `${maxSizeRejectionReason}${CHAR_NO_BREAK_SPACE}${this.formatSize(units, maxFileSize, this.locale)}`,\n };\n }\n\n return null;\n }),\n );\n }\n}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiFile} from './file/file.component';\nimport {TuiFilesComponent} from './files/files.component';\nimport {TuiInputFiles} from './input-files/input-files.component';\nimport {TuiInputFilesDirective} from './input-files/input-files.directive';\nimport {TuiFileRejectedPipe} from './pipes/file-rejected.pipe';\n\nexport const TuiFiles = [\n TuiItem,\n TuiFile,\n TuiInputFiles,\n TuiFilesComponent,\n TuiFileRejectedPipe,\n TuiInputFilesDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toArray","i1","i2","i3.TuiInputFilesValidator"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-files.mjs","sources":["../../../projects/kit/components/files/files.validators.ts","../../../projects/kit/components/files/files.utils.ts","../../../projects/kit/components/files/file/file.options.ts","../../../projects/kit/components/files/file/file.component.ts","../../../projects/kit/components/files/file/file.template.html","../../../projects/kit/components/files/files/files.component.ts","../../../projects/kit/components/files/files/files.template.html","../../../projects/kit/components/files/input-files/input-files.content.ts","../../../projects/kit/components/files/input-files/input-files.options.ts","../../../projects/kit/components/files/input-files/input-files-validator.directive.ts","../../../projects/kit/components/files/input-files/input-files.directive.ts","../../../projects/kit/components/files/input-files/input-files.component.ts","../../../projects/kit/components/files/pipes/file-rejected.pipe.ts","../../../projects/kit/components/files/files.ts","../../../projects/kit/components/files/taiga-ui-kit-components-files.ts"],"sourcesContent":["import {coerceArray} from '@angular/cdk/coercion';\nimport {type ValidatorFn} from '@angular/forms';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\n\nexport const TUI_SIZE_ERROR = 'tuiSize';\nexport const TUI_FORMAT_ERROR = 'tuiFormat';\n\ninterface FileFormatError {\n [TUI_FORMAT_ERROR]: TuiContext<File[]>;\n}\n\ninterface FileSizeError {\n [TUI_SIZE_ERROR]: TuiContext<File[]> & {size: number};\n}\n\nexport function tuiCreateFileSizeValidator(size: number): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileSizeError | null => {\n const files = value && coerceArray(value);\n const $implicit = value && files?.filter((file) => file.size > size);\n\n return $implicit?.length ? {[TUI_SIZE_ERROR]: {$implicit, size}} : null;\n };\n}\n\nexport function tuiCreateFileFormatValidator(accept: string): ValidatorFn {\n return ({value}: {value: File | readonly File[] | null}): FileFormatError | null => {\n const files = value && coerceArray(value);\n const formats = toArray(accept);\n const $implicit = value && files?.filter((file) => !checkFormat(file, formats));\n\n return $implicit?.length && accept ? {[TUI_FORMAT_ERROR]: {$implicit}} : null;\n };\n}\n\nfunction checkFormat({name, type}: File, formats: readonly string[]): boolean {\n const extension = `.${(name.split('.').pop() || '').toLowerCase()}`;\n\n return formats.some(\n (format) =>\n format === extension ||\n format === type ||\n (format.split('/')[1] === '*' &&\n type?.split('/')[0] === format.split('/')[0]),\n );\n}\n\nfunction toArray(accept: string): readonly string[] {\n return accept\n .toLowerCase()\n .split(',')\n .map((format) => format.trim().toLowerCase());\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {type AbstractControl} from '@angular/forms';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_FORMAT_ERROR, TUI_SIZE_ERROR} from './files.validators';\n\nconst BYTES_PER_KIB = 1024;\nconst BYTES_PER_MIB = 1024 * BYTES_PER_KIB;\n\nexport function tuiFilesRejected(control?: AbstractControl | null): File[] {\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n\n return Array.from(new Set([...format, ...size]));\n}\n\nexport function tuiFilesAccepted(control?: AbstractControl | null): File[] {\n const value = control?.value || [];\n const files: File[] = coerceArray(value);\n const size: File[] = control?.getError(TUI_SIZE_ERROR)?.$implicit || [];\n const format: File[] = control?.getError(TUI_FORMAT_ERROR)?.$implicit || [];\n\n return files.filter((file) => !size.includes(file) && !format.includes(file));\n}\n\nexport function tuiFormatSize(\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n): string | null {\n if (size === undefined) {\n return null;\n }\n\n if (size < BYTES_PER_KIB) {\n return `${size} ${units[0]}`;\n }\n\n if (size < BYTES_PER_MIB) {\n return `${(size / BYTES_PER_KIB).toFixed(0)} ${units[1]}`;\n }\n\n return `${tuiRound(size / BYTES_PER_MIB, 2).toLocaleString(locale)} ${units[2]}`;\n}\n","import {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {type TuiFileState} from '../files.types';\nimport {tuiFormatSize} from '../files.utils';\n\nexport interface TuiFileOptions extends TuiAppearanceOptions {\n formatSize(\n units: readonly [string, string, string],\n size?: number,\n locale?: string,\n ): string | null;\n readonly icons: Record<\n Exclude<TuiFileState, 'loading'>,\n PolymorpheusContent<TuiContext<TuiSizeL>>\n >;\n}\n\nexport const TUI_FILE_DEFAULT_OPTIONS: TuiFileOptions = {\n appearance: 'outline',\n formatSize: tuiFormatSize,\n icons: {\n normal: ({$implicit}) => ($implicit === 'l' ? '@tui.file' : '@tui.circle-check'),\n error: '@tui.circle-alert',\n deleted: '@tui.trash',\n },\n};\n\n/**\n * Default parameters for file component\n */\nexport const [TUI_FILE_OPTIONS, tuiFileOptionsProvider] = tuiCreateOptions(\n TUI_FILE_DEFAULT_OPTIONS,\n);\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n LOCALE_ID,\n Output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {DomSanitizer, type SafeValue} from '@angular/platform-browser';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {\n TuiAppearance,\n tuiAppearanceOptionsProvider,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {type TuiLanguage} from '@taiga-ui/i18n/types';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, type Observable, of} from 'rxjs';\n\nimport {type TuiFileLike, type TuiFileState} from '../files.types';\nimport {TUI_FILE_OPTIONS} from './file.options';\n\n@Component({\n selector: 'tui-file,a[tuiFile],button[tuiFile]',\n imports: [\n AsyncPipe,\n PolymorpheusOutlet,\n TuiButton,\n TuiHintOverflow,\n TuiIcon,\n TuiLoader,\n ],\n templateUrl: './file.template.html',\n styleUrl: './file.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAppearanceOptionsProvider(TUI_FILE_OPTIONS)],\n hostDirectives: [TuiAppearance],\n host: {\n '[attr.data-delete]': 'showDelete',\n },\n})\nexport class TuiFile {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly options = inject(TUI_FILE_OPTIONS);\n private readonly locale = inject(LOCALE_ID);\n private readonly units$ = toObservable(inject(TUI_DIGITAL_INFORMATION_UNITS));\n private readonly win = inject(WA_WINDOW) as Window & {File: typeof File};\n\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly fileTexts$ = toObservable(inject(TUI_FILE_TEXTS));\n\n @Input()\n public file: TuiFileLike = {name: ''};\n\n @Input()\n public state: TuiFileState = 'normal';\n\n @Input()\n public size: TuiSizeL = 'm';\n\n @Input()\n public showDelete: boolean | 'always' = true;\n\n @Input()\n public showSize = true;\n\n @Input()\n public leftContent: PolymorpheusContent;\n\n @Output()\n public readonly remove = new EventEmitter<void>();\n\n protected get preview(): SafeValue {\n return this.isBig ? this.createPreview(this.file) : '';\n }\n\n protected get isBig(): boolean {\n return this.size === 'l';\n }\n\n protected get isLoading(): boolean {\n return this.state === 'loading';\n }\n\n protected get isError(): boolean {\n return this.state === 'error';\n }\n\n protected get isDeleted(): boolean {\n return this.state === 'deleted';\n }\n\n protected get allowDelete(): boolean {\n return this.showDelete && this.remove.observed;\n }\n\n protected get icon(): PolymorpheusContent<TuiContext<TuiSizeL>> {\n return this.state === 'loading' ? '' : this.options.icons[this.state];\n }\n\n protected get name(): string {\n return this.getName(this.file);\n }\n\n protected get type(): string {\n return this.getType(this.file);\n }\n\n protected get content$(): Observable<PolymorpheusContent> {\n return this.calculateContent$(this.state, this.file, this.fileTexts$);\n }\n\n protected get fileSize$(): Observable<string | null> {\n return this.calculateFileSize$(this.file, this.units$);\n }\n\n @tuiPure\n private calculateContent$(\n state: TuiFileState,\n file: TuiFileLike,\n fileTexts$: Observable<Record<keyof TuiLanguage['fileTexts'], string>>,\n ): Observable<PolymorpheusContent> {\n return state === 'error' && !file.content\n ? fileTexts$.pipe(map((texts) => texts.loadingError))\n : of(this.file.content || '');\n }\n\n @tuiPure\n private calculateFileSize$(\n file: TuiFileLike,\n units$: Observable<readonly [string, string, string]>,\n ): Observable<string | null> {\n return units$.pipe(\n map((units) => this.options.formatSize(units, file.size, this.locale)),\n );\n }\n\n @tuiPure\n private createPreview(file: TuiFileLike): SafeValue {\n if (file.src) {\n return file.src;\n }\n\n if (\n this.win.File &&\n file instanceof this.win.File &&\n file.type?.startsWith('image/')\n ) {\n return this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file));\n }\n\n return '';\n }\n\n @tuiPure\n private getName(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // a dot at position 0 means a “hidden” file, not an extension\n\n return dot > 0 ? file.name.slice(0, dot) : file.name;\n }\n\n @tuiPure\n private getType(file: TuiFileLike): string {\n const dot = file.name.lastIndexOf('.');\n // only return an extension when there is one\n\n return dot > 0 ? file.name.slice(dot) : '';\n }\n}\n","<div\n class=\"t-preview\"\n [class.t-preview_big]=\"isBig\"\n>\n <ng-container *polymorpheusOutlet=\"leftContent || defaultLeftContent as text\">\n {{ text }}\n </ng-container>\n</div>\n<div class=\"t-wrapper\">\n <div class=\"t-text\">\n <div\n tuiHintOverflow\n class=\"t-name\"\n >\n {{ name }}\n </div>\n <div class=\"t-type\">{{ type }}</div>\n @if (showSize && (fileSize$ | async); as fileSize) {\n <div class=\"t-size\">\n {{ fileSize }}\n </div>\n }\n </div>\n @if (content$ | async; as content) {\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n <ng-content />\n</div>\n@if (allowDelete) {\n @if (fileTexts$ | async; as texts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-remove\"\n [iconStart]=\"icons.close\"\n (click.prevent)=\"remove.emit()\"\n (mousedown.prevent.zoneless)=\"(0)\"\n >\n {{ texts.remove }}\n </button>\n }\n}\n\n<ng-template #defaultLeftContent>\n @if (preview) {\n <img\n alt=\"file preview\"\n class=\"t-image\"\n [src]=\"preview\"\n />\n } @else {\n @if (isLoading) {\n <tui-loader\n class=\"t-loader\"\n [inheritColor]=\"isBig\"\n />\n } @else {\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [class.t-icon_blank]=\"isBig || isDeleted\"\n [class.t-icon_error]=\"isError\"\n [icon]=\"src.toString()\"\n />\n }\n }\n</ng-template>\n","import {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n type QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiExpand} from '@taiga-ui/core/components/expand';\nimport {TuiGroup, tuiGroupOptionsProvider} from '@taiga-ui/core/directives/group';\nimport {TUI_HIDE_TEXT, TUI_SHOW_ALL_TEXT} from '@taiga-ui/kit/tokens';\n\n@Component({\n selector: 'tui-files',\n imports: [AsyncPipe, NgTemplateOutlet, TuiButton, TuiExpand, TuiGroup],\n templateUrl: './files.template.html',\n styleUrl: './files.styles.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiGroupOptionsProvider({size: 'm', collapsed: true, orientation: 'vertical'}),\n ],\n hostDirectives: [TuiGroup],\n})\nexport class TuiFilesComponent {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly hideText = inject(TUI_HIDE_TEXT);\n protected readonly showAllText = inject(TUI_SHOW_ALL_TEXT);\n\n @Input()\n public max = 0;\n\n @Input()\n public expanded = false;\n\n @Output()\n public readonly expandedChange = new EventEmitter<boolean>();\n\n protected get hasExtraItems(): boolean {\n return !!this.max && this.items.length > this.max;\n }\n\n protected toggle(): void {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n}\n","@if (items.changes | async) {}\n<ng-content />\n@for (item of items; track item) {\n @if (!max || $index < max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n}\n@if (hasExtraItems) {\n <tui-expand [expanded]=\"expanded\">\n <div\n tuiGroup\n class=\"t-extra-items\"\n >\n @for (item of items; track item) {\n @if (max && $index >= max) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n }\n }\n </div>\n </tui-expand>\n}\n@if (hasExtraItems) {\n <div\n class=\"t-bottom\"\n [class.t-bottom_collapsed]=\"!expanded\"\n >\n <button\n appearance=\"outline\"\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n (click)=\"toggle()\"\n >\n {{ expanded ? hideText() : showAllText() }}\n </button>\n </div>\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiBreakpointService} from '@taiga-ui/core/services';\nimport {TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {combineLatest, map, type Observable, of} from 'rxjs';\n\nimport {TuiInputFiles} from './input-files.component';\n\n@Component({\n imports: [AsyncPipe, TuiLink],\n template: `\n <a tuiLink>{{ link$ | async }}</a>\n {{ label$ | async }}\n `,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiInputFilesContent {\n private readonly breakpoint$ = inject(TuiBreakpointService);\n private readonly text$ = toObservable(inject(TUI_INPUT_FILE_TEXTS));\n private readonly context = injectContext<TuiContext<boolean>>();\n private readonly component = inject(TuiInputFiles);\n\n protected get link$(): Observable<string> {\n return this.computeLink$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n protected get label$(): Observable<string> {\n return this.computeLabel$(\n this.context.$implicit,\n !!this.component.input?.input.multiple,\n );\n }\n\n @tuiPure\n private computeLink$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? of('')\n : this.text$.pipe(\n map((t) => (multiple ? t.defaultLinkMultiple : t.defaultLinkSingle)),\n );\n }\n\n @tuiPure\n private computeLabel$(fileDragged: boolean, multiple: boolean): Observable<string> {\n return fileDragged\n ? combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple ? text.dropMultiple : text.drop;\n }),\n )\n : combineLatest([this.breakpoint$, this.text$]).pipe(\n map(([breakpoint, text]) => {\n if (breakpoint === 'mobile') {\n return '';\n }\n\n return multiple\n ? text.defaultLabelMultiple\n : text.defaultLabelSingle;\n }),\n );\n }\n}\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiInputFilesOptions extends TuiAppearanceOptions {\n accept: string;\n maxFileSize: number;\n multiple: boolean;\n size: TuiSizeL;\n}\n\nexport const TUI_INPUT_FILES_DEFAULT_OPTIONS: TuiInputFilesOptions = {\n appearance: 'file',\n accept: '',\n multiple: false,\n size: 'm',\n maxFileSize: 30 * 1024 * 1024, // 30 MiB\n};\n\n/**\n * Default parameters for input files component\n */\nexport const [TUI_INPUT_FILES_OPTIONS, tuiInputFilesOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_FILES_DEFAULT_OPTIONS,\n);\n","import {Directive, inject, type OnChanges, type OnInit} from '@angular/core';\nimport {NG_VALIDATORS, Validators} from '@angular/forms';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\n\n@Directive({\n inputs: ['accept', 'maxFileSize'],\n providers: [tuiProvide(NG_VALIDATORS, TuiInputFilesValidator, true)],\n exportAs: 'tuiInputFilesValidator',\n host: {\n '[accept]': 'accept',\n },\n})\nexport class TuiInputFilesValidator extends TuiValidator implements OnInit, OnChanges {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n\n public accept = this.options.accept;\n public maxFileSize = this.options.maxFileSize;\n\n public override ngOnChanges(): void {\n this.update();\n }\n\n public ngOnInit(): void {\n this.update();\n }\n\n private update(): void {\n this.validate =\n Validators.compose([\n tuiCreateFileFormatValidator(this.accept),\n tuiCreateFileSizeValidator(this.maxFileSize),\n ]) || Validators.nullValidator;\n this.onChange();\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {Directive, forwardRef, inject, Output} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {EMPTY_ARRAY} from '@taiga-ui/cdk/constants';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiControlValue, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAppearanceMode,\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {filter, map, switchMap, timer} from 'rxjs';\n\nimport {type TuiFileLike} from '../files.types';\nimport {tuiFilesRejected} from '../files.utils';\nimport {TuiInputFiles} from './input-files.component';\nimport {TUI_INPUT_FILES_OPTIONS} from './input-files.options';\nimport {TuiInputFilesValidator} from './input-files-validator.directive';\n\n@Directive({\n selector: 'input[tuiInputFiles]',\n providers: [\n tuiAsControl(TuiInputFilesDirective),\n tuiAppearanceOptionsProvider(TUI_INPUT_FILES_OPTIONS),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiWithAppearance,\n {\n directive: TuiInputFilesValidator,\n inputs: ['accept', 'maxFileSize'],\n },\n ],\n host: {\n title: '',\n type: 'file',\n '[disabled]': 'disabled()',\n '(blur)': 'onTouched()',\n '(click)': 'onClick($event)',\n },\n})\nexport class TuiInputFilesDirective extends TuiControl<\n TuiFileLike | readonly TuiFileLike[]\n> {\n protected readonly host = inject(forwardRef(() => TuiInputFiles));\n protected readonly m = tuiAppearanceMode(this.mode, {});\n\n @Output()\n public readonly reject = timer(0, tuiZonefreeScheduler()).pipe(\n switchMap(() => tuiControlValue(this.control.control)),\n map(() => tuiFilesRejected(this.control.control)),\n filter(({length}) => !!length),\n );\n\n public readonly input = tuiInjectElement<HTMLInputElement>();\n\n public process(files: FileList): void {\n const fileOrFiles = this.input.multiple\n ? [...toArray(this.value()), ...Array.from(files)]\n : files[0];\n\n if (fileOrFiles) {\n this.onChange(fileOrFiles);\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.input.readOnly) {\n event.preventDefault();\n }\n }\n}\n\nfunction toArray(\n value: TuiFileLike | readonly TuiFileLike[] | null,\n): readonly TuiFileLike[] {\n return value ? coerceArray(value) : EMPTY_ARRAY;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {PolymorpheusComponent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiInputFilesContent} from './input-files.content';\nimport {TuiInputFilesDirective} from './input-files.directive';\n\n@Component({\n selector: 'label[tuiInputFiles]',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"\n template || content as text;\n context: {$implicit: fileDragged}\n \"\n >\n {{ text }}\n </span>\n `,\n styleUrl: './input-files.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(dragover.prevent.zoneless)': '0',\n '(drop.prevent)': 'onDropped($event)',\n '(dragenter)': 'onDrag($event.dataTransfer)',\n '(dragleave)': 'onDrag(null)',\n '[class._dragged]': 'fileDragged',\n '(change)': 'onFilesSelected($event.target)',\n },\n})\nexport class TuiInputFiles {\n @ContentChild(TemplateRef)\n protected readonly template?: TemplateRef<TuiContext<boolean>>;\n\n protected files?: FileList | null;\n protected readonly content = new PolymorpheusComponent(TuiInputFilesContent);\n\n @ContentChild(TuiInputFilesDirective)\n public readonly input?: TuiInputFilesDirective;\n\n protected get fileDragged(): boolean {\n return !!this.files && !this.input?.disabled();\n }\n\n protected onFilesSelected(input: HTMLInputElement): void {\n if (!input?.files) {\n return;\n }\n\n this.input?.process(input.files);\n input.value = '';\n }\n\n protected onDropped({dataTransfer}: DragEvent): void {\n this.files = null;\n\n if (dataTransfer?.files && !this.input?.disabled()) {\n this.input?.process(dataTransfer.files);\n }\n }\n\n protected onDrag(dataTransfer: DataTransfer | null): void {\n this.files = dataTransfer?.files;\n }\n}\n","import {inject, LOCALE_ID, Pipe, type PipeTransform} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {FormControl} from '@angular/forms';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {TUI_DIGITAL_INFORMATION_UNITS, TUI_INPUT_FILE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {combineLatest, map, type Observable} from 'rxjs';\n\nimport {TUI_FILE_OPTIONS} from '../file/file.options';\nimport {type TuiFileLike} from '../files.types';\nimport {\n tuiCreateFileFormatValidator,\n tuiCreateFileSizeValidator,\n} from '../files.validators';\nimport {TUI_INPUT_FILES_OPTIONS} from '../input-files/input-files.options';\n\n@Pipe({\n name: 'tuiFileRejected',\n})\nexport class TuiFileRejectedPipe implements PipeTransform {\n private readonly options = inject(TUI_INPUT_FILES_OPTIONS);\n private readonly formatSize = inject(TUI_FILE_OPTIONS).formatSize;\n private readonly locale = inject(LOCALE_ID);\n private readonly text$ = toObservable(inject(TUI_INPUT_FILE_TEXTS));\n private readonly unit$ = toObservable(inject(TUI_DIGITAL_INFORMATION_UNITS));\n\n public transform(\n file: TuiFileLike | null,\n {\n accept = this.options.accept,\n maxFileSize = this.options.maxFileSize,\n }: {accept?: string; maxFileSize?: number} = this.options,\n ): Observable<TuiFileLike | null> {\n const sizeValidator = tuiCreateFileSizeValidator(maxFileSize);\n const formatValidator = tuiCreateFileFormatValidator(accept);\n const control = new FormControl(file);\n\n return combineLatest([this.text$, this.unit$]).pipe(\n map(([{maxSizeRejectionReason, formatRejectionReason}, units]) => {\n if (file && formatValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: formatRejectionReason,\n };\n }\n\n if (file && sizeValidator(control)) {\n return {\n name: file.name,\n size: file.size,\n content: `${maxSizeRejectionReason}${CHAR_NO_BREAK_SPACE}${this.formatSize(units, maxFileSize, this.locale)}`,\n };\n }\n\n return null;\n }),\n );\n }\n}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiFile} from './file/file.component';\nimport {TuiFilesComponent} from './files/files.component';\nimport {TuiInputFiles} from './input-files/input-files.component';\nimport {TuiInputFilesDirective} from './input-files/input-files.directive';\nimport {TuiFileRejectedPipe} from './pipes/file-rejected.pipe';\n\nexport const TuiFiles = [\n TuiItem,\n TuiFile,\n TuiInputFiles,\n TuiFilesComponent,\n TuiFileRejectedPipe,\n TuiInputFilesDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toArray","i1","i2","i3.TuiInputFilesValidator"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-filter.mjs","sources":["../../../projects/kit/components/filter/filter.component.ts","../../../projects/kit/components/filter/filter.template.html","../../../projects/kit/components/filter/taiga-ui-kit-components-filter.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_DEFAULT_IDENTITY_MATCHER, TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {\n type TuiBooleanHandler,\n type TuiHandler,\n type TuiIdentityMatcher,\n} from '@taiga-ui/cdk/types';\nimport {TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {TuiBadge} from '@taiga-ui/kit/components/badge';\nimport {TUI_BLOCK_OPTIONS, TuiBlock} from '@taiga-ui/kit/components/block';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-filter',\n imports: [FormsModule, PolymorpheusOutlet, TuiBadge, TuiBlock, TuiHintOverflow],\n templateUrl: './filter.template.html',\n styleUrls: ['./filter.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiFallbackValueProvider([])],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiFilter<T> extends TuiControl<readonly T[]> {\n @Input()\n public identityMatcher: TuiIdentityMatcher<T> = TUI_DEFAULT_IDENTITY_MATCHER;\n\n @Input()\n public items: readonly T[] = [];\n\n @Input()\n public size: TuiSizeL | TuiSizeS = inject(TUI_BLOCK_OPTIONS).size || 'l';\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<T> = TUI_FALSE_HANDLER;\n\n @Output()\n public readonly toggledItem = new EventEmitter<T>();\n\n @Input()\n public content: PolymorpheusContent = ({$implicit}) => String($implicit);\n\n @Input()\n public badgeHandler: TuiHandler<T, number> = (item) => Number(item);\n\n public onCheckbox(value: boolean, item: T): void {\n this.toggledItem.emit(item);\n this.onChange(\n value\n ? [...this.value(), item]\n : this.value().filter((arrItem) => !this.identityMatcher(arrItem, item)),\n );\n }\n\n protected isCheckboxEnabled(item: T): boolean {\n return this.value().some((arrItem) => this.identityMatcher(arrItem, item));\n }\n}\n","@for (item of items; track item) {\n <label\n appearance=\"\"\n class=\"t-item\"\n [tuiBlock]=\"size\"\n >\n <span\n *polymorpheusOutlet=\"content as text; context: {$implicit: item}\"\n tuiHintOverflow\n class=\"t-text\"\n >\n {{ text }}\n </span>\n @if (badgeHandler(item); as badgeValue) {\n <tui-badge\n appearance=\"neutral\"\n [size]=\"size\"\n >\n {{ badgeValue }}\n </tui-badge>\n }\n <input\n tuiBlock\n type=\"checkbox\"\n [disabled]=\"disabledItemHandler(item)\"\n [ngModel]=\"isCheckboxEnabled(item)\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onCheckbox($event, item)\"\n />\n </label>\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-kit-components-filter.mjs","sources":["../../../projects/kit/components/filter/filter.component.ts","../../../projects/kit/components/filter/filter.template.html","../../../projects/kit/components/filter/taiga-ui-kit-components-filter.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_DEFAULT_IDENTITY_MATCHER, TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {\n type TuiBooleanHandler,\n type TuiHandler,\n type TuiIdentityMatcher,\n} from '@taiga-ui/cdk/types';\nimport {TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {TuiBadge} from '@taiga-ui/kit/components/badge';\nimport {TUI_BLOCK_OPTIONS, TuiBlock} from '@taiga-ui/kit/components/block';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-filter',\n imports: [FormsModule, PolymorpheusOutlet, TuiBadge, TuiBlock, TuiHintOverflow],\n templateUrl: './filter.template.html',\n styleUrl: './filter.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiFallbackValueProvider([])],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiFilter<T> extends TuiControl<readonly T[]> {\n @Input()\n public identityMatcher: TuiIdentityMatcher<T> = TUI_DEFAULT_IDENTITY_MATCHER;\n\n @Input()\n public items: readonly T[] = [];\n\n @Input()\n public size: TuiSizeL | TuiSizeS = inject(TUI_BLOCK_OPTIONS).size || 'l';\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<T> = TUI_FALSE_HANDLER;\n\n @Output()\n public readonly toggledItem = new EventEmitter<T>();\n\n @Input()\n public content: PolymorpheusContent = ({$implicit}) => String($implicit);\n\n @Input()\n public badgeHandler: TuiHandler<T, number> = (item) => Number(item);\n\n public onCheckbox(value: boolean, item: T): void {\n this.toggledItem.emit(item);\n this.onChange(\n value\n ? [...this.value(), item]\n : this.value().filter((arrItem) => !this.identityMatcher(arrItem, item)),\n );\n }\n\n protected isCheckboxEnabled(item: T): boolean {\n return this.value().some((arrItem) => this.identityMatcher(arrItem, item));\n }\n}\n","@for (item of items; track item) {\n <label\n appearance=\"\"\n class=\"t-item\"\n [tuiBlock]=\"size\"\n >\n <span\n *polymorpheusOutlet=\"content as text; context: {$implicit: item}\"\n tuiHintOverflow\n class=\"t-text\"\n >\n {{ text }}\n </span>\n @if (badgeHandler(item); as badgeValue) {\n <tui-badge\n appearance=\"neutral\"\n [size]=\"size\"\n >\n {{ badgeValue }}\n </tui-badge>\n }\n <input\n tuiBlock\n type=\"checkbox\"\n [disabled]=\"disabledItemHandler(item)\"\n [ngModel]=\"isCheckboxEnabled(item)\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onCheckbox($event, item)\"\n />\n </label>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,11 +4,11 @@ import { tuiWithStyles } from '@taiga-ui/cdk/utils/miscellaneous';
4
4
 
5
5
  class Styles {
6
6
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: Styles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-floating-container" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiFloatingContainer]{transition-property:bottom;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;bottom:calc(100 * var(--tui-viewport-vh) - var(--tui-viewport-height) - var(--tui-viewport-y));z-index:1;margin-block-start:1rem;padding-block-end:max(1rem,env(safe-area-inset-bottom));text-align:center;font:var(--tui-font-text-ui-s);color:var(--tui-text-secondary)}[tuiFloatingContainer],[tuiFloatingContainer]>tui-elastic-container>.t-wrapper{display:flex;flex-direction:column;gap:.5rem}[tuiFloatingContainer]>*,[tuiFloatingContainer]>tui-elastic-container>.t-wrapper>*{inline-size:100%}[tuiFloatingContainer]:has(>*:only-child:not(tui-elastic-container)),[tuiFloatingContainer]:has(*.ng-animating:first-child~.ng-animating:last-child){padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}[tuiFloatingContainer]:before{top:0;left:0;bottom:0;right:0;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:-1rem;right:-1rem;z-index:-1;background:var(--t-background, var(--tui-background-elevation-1));-webkit-mask-image:linear-gradient(180deg,transparent,black 2.5rem);mask-image:linear-gradient(180deg,transparent,black 2.5rem)}tui-sheet-dialog [tuiFloatingContainer]{margin-block-end:calc(-1*max(1.5rem,env(safe-area-inset-bottom)))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: Styles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-floating-container" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiFloatingContainer]{transition-property:bottom;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;bottom:calc(100 * var(--tui-viewport-vh) - var(--tui-viewport-height) - var(--tui-viewport-y));z-index:1;margin-block-start:1rem;padding-block-end:max(1rem,env(safe-area-inset-bottom));text-align:center;font:var(--tui-font-text-ui-s);color:var(--tui-text-secondary)}[tuiFloatingContainer],[tuiFloatingContainer]>tui-elastic-container>.t-wrapper{display:flex;flex-direction:column!important;gap:.5rem}[tuiFloatingContainer]>*,[tuiFloatingContainer]>tui-elastic-container>.t-wrapper>*{inline-size:100%}[tuiFloatingContainer]:has(>*:only-child:not(tui-elastic-container)),[tuiFloatingContainer]:has(*.ng-animating:first-child~.ng-animating:last-child){padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}[tuiFloatingContainer]:before{inset:0;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:-1rem;right:-1rem;z-index:-1;background:var(--t-background, var(--tui-background-elevation-1));-webkit-mask-image:linear-gradient(180deg,transparent,black 2.5rem);mask-image:linear-gradient(180deg,transparent,black 2.5rem)}tui-sheet-dialog [tuiFloatingContainer]{margin-block-end:calc(-1*max(1.5rem,env(safe-area-inset-bottom)))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8
8
  }
9
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Styles, decorators: [{
10
10
  type: Component,
11
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'tui-floating-container' }, styles: ["[tuiFloatingContainer]{transition-property:bottom;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;bottom:calc(100 * var(--tui-viewport-vh) - var(--tui-viewport-height) - var(--tui-viewport-y));z-index:1;margin-block-start:1rem;padding-block-end:max(1rem,env(safe-area-inset-bottom));text-align:center;font:var(--tui-font-text-ui-s);color:var(--tui-text-secondary)}[tuiFloatingContainer],[tuiFloatingContainer]>tui-elastic-container>.t-wrapper{display:flex;flex-direction:column;gap:.5rem}[tuiFloatingContainer]>*,[tuiFloatingContainer]>tui-elastic-container>.t-wrapper>*{inline-size:100%}[tuiFloatingContainer]:has(>*:only-child:not(tui-elastic-container)),[tuiFloatingContainer]:has(*.ng-animating:first-child~.ng-animating:last-child){padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}[tuiFloatingContainer]:before{top:0;left:0;bottom:0;right:0;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:-1rem;right:-1rem;z-index:-1;background:var(--t-background, var(--tui-background-elevation-1));-webkit-mask-image:linear-gradient(180deg,transparent,black 2.5rem);mask-image:linear-gradient(180deg,transparent,black 2.5rem)}tui-sheet-dialog [tuiFloatingContainer]{margin-block-end:calc(-1*max(1.5rem,env(safe-area-inset-bottom)))}\n"] }]
11
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'tui-floating-container' }, styles: ["[tuiFloatingContainer]{transition-property:bottom;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;bottom:calc(100 * var(--tui-viewport-vh) - var(--tui-viewport-height) - var(--tui-viewport-y));z-index:1;margin-block-start:1rem;padding-block-end:max(1rem,env(safe-area-inset-bottom));text-align:center;font:var(--tui-font-text-ui-s);color:var(--tui-text-secondary)}[tuiFloatingContainer],[tuiFloatingContainer]>tui-elastic-container>.t-wrapper{display:flex;flex-direction:column!important;gap:.5rem}[tuiFloatingContainer]>*,[tuiFloatingContainer]>tui-elastic-container>.t-wrapper>*{inline-size:100%}[tuiFloatingContainer]:has(>*:only-child:not(tui-elastic-container)),[tuiFloatingContainer]:has(*.ng-animating:first-child~.ng-animating:last-child){padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}[tuiFloatingContainer]:before{inset:0;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:-1rem;right:-1rem;z-index:-1;background:var(--t-background, var(--tui-background-elevation-1));-webkit-mask-image:linear-gradient(180deg,transparent,black 2.5rem);mask-image:linear-gradient(180deg,transparent,black 2.5rem)}tui-sheet-dialog [tuiFloatingContainer]{margin-block-end:calc(-1*max(1.5rem,env(safe-area-inset-bottom)))}\n"] }]
12
12
  }] });
13
13
  class TuiFloatingContainer {
14
14
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-floating-container.mjs","sources":["../../../projects/kit/components/floating-container/floating-container.directive.ts","../../../projects/kit/components/floating-container/taiga-ui-kit-components-floating-container.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\n@Component({\n template: '',\n styleUrls: ['./floating-container.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {class: 'tui-floating-container'},\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiFloatingContainer]',\n host: {\n tuiFloatingContainer: '',\n '[style.--t-background]': 'background()',\n },\n})\nexport class TuiFloatingContainer {\n protected readonly nothing = tuiWithStyles(Styles);\n\n public readonly background = input('', {alias: 'tuiFloatingContainer'});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AASA,MAOM,MAAM,CAAA;+GAAN,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAM,4HANE,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+2CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMV,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPX,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAC,KAAK,EAAE,wBAAwB,EAAC,EAAA,MAAA,EAAA,CAAA,+2CAAA,CAAA,EAAA;;MAW9B,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAQuB,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;QAElC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,EAAE,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAC,CAAC;AAC1E;+GAJY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,oBAAoB,EAAE,EAAE;AACxB,wBAAA,wBAAwB,EAAE,cAAc;AAC3C,qBAAA;AACJ,iBAAA;;;ACxBD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-floating-container.mjs","sources":["../../../projects/kit/components/floating-container/floating-container.directive.ts","../../../projects/kit/components/floating-container/taiga-ui-kit-components-floating-container.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\n@Component({\n template: '',\n styleUrl: './floating-container.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {class: 'tui-floating-container'},\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiFloatingContainer]',\n host: {\n tuiFloatingContainer: '',\n '[style.--t-background]': 'background()',\n },\n})\nexport class TuiFloatingContainer {\n protected readonly nothing = tuiWithStyles(Styles);\n\n public readonly background = input('', {alias: 'tuiFloatingContainer'});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AASA,MAOM,MAAM,CAAA;+GAAN,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAM,4HANE,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m2CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMV,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPX,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAC,KAAK,EAAE,wBAAwB,EAAC,EAAA,MAAA,EAAA,CAAA,m2CAAA,CAAA,EAAA;;MAW9B,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAQuB,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;QAElC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,EAAE,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAC,CAAC;AAC1E;+GAJY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,oBAAoB,EAAE,EAAE;AACxB,wBAAA,wBAAwB,EAAE,cAAc;AAC3C,qBAAA;AACJ,iBAAA;;;ACxBD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-fullscreen.mjs","sources":["../../../projects/kit/components/fullscreen/fullscreen.component.ts","../../../projects/kit/components/fullscreen/taiga-ui-kit-components-fullscreen.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport {TuiRoot} from '@taiga-ui/core/components/root';\n\n@Component({\n selector: '[tuiFullscreen]',\n imports: [TuiRoot],\n template: '<tui-root><ng-content /></tui-root>',\n styleUrls: ['./fullscreen.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'(document:fullscreenchange)': 'closedByEscape($event)'},\n})\nexport class TuiFullscreen {\n @ViewChild(TuiRoot, {read: ElementRef})\n private readonly root?: ElementRef<HTMLElement>;\n\n private readonly doc = inject(DOCUMENT);\n protected readonly open = signal(false);\n\n @Output('tuiFullscreenChange')\n public readonly opened = new EventEmitter<boolean>();\n\n @Input('tuiFullscreenOptions')\n public options?: FullscreenOptions = {navigationUI: 'auto'};\n\n @Input('tuiFullscreen')\n public set fullscreen(open: boolean) {\n if (this.open() === open) {\n return;\n }\n\n if (open) {\n this.root?.nativeElement\n .requestFullscreen(this.options)\n .then(() => this.fullscreenState(open));\n } else {\n this.doc\n .exitFullscreen()\n .then(() => this.fullscreenState(open))\n .catch((error: unknown) =>\n console.error('Failed to exit fullscreen:', error),\n );\n }\n }\n\n protected closedByEscape(event: Event): void {\n if (!this.doc.fullscreenElement && event.target === this.root?.nativeElement) {\n this.fullscreenState(false);\n }\n }\n\n private fullscreenState(open: boolean): void {\n this.open.set(open);\n this.opened.emit(open);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAsBa,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAGvB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAW;AAG7C,QAAA,IAAA,CAAA,OAAO,GAAuB,EAAC,YAAY,EAAE,MAAM,EAAC;AAgC9D;IA9BG,IACW,UAAU,CAAC,IAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACtB;;QAGJ,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,EAAE;AACN,iBAAA,iBAAiB,CAAC,IAAI,CAAC,OAAO;iBAC9B,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;aACxC;AACH,YAAA,IAAI,CAAC;AACA,iBAAA,cAAc;iBACd,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACrC,iBAAA,KAAK,CAAC,CAAC,KAAc,KAClB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CACrD;;;AAIH,IAAA,cAAc,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;AAC1E,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;;AAI3B,IAAA,eAAe,CAAC,IAAa,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAzCjB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,oVACX,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAS,UAAU,EAN3B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qCAAqC,iWADrC,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAMR,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,OAAO,CAAC,YACR,qCAAqC,EAAA,eAAA,EAE9B,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAC,6BAA6B,EAAE,wBAAwB,EAAC,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA;8BAI9C,IAAI,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;gBAOtB,MAAM,EAAA,CAAA;sBADrB,MAAM;uBAAC,qBAAqB;gBAItB,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,sBAAsB;gBAIlB,UAAU,EAAA,CAAA;sBADpB,KAAK;uBAAC,eAAe;;;ACnC1B;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-fullscreen.mjs","sources":["../../../projects/kit/components/fullscreen/fullscreen.component.ts","../../../projects/kit/components/fullscreen/taiga-ui-kit-components-fullscreen.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport {TuiRoot} from '@taiga-ui/core/components/root';\n\n@Component({\n selector: '[tuiFullscreen]',\n imports: [TuiRoot],\n template: '<tui-root><ng-content /></tui-root>',\n styleUrl: './fullscreen.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'(document:fullscreenchange)': 'closedByEscape($event)'},\n})\nexport class TuiFullscreen {\n @ViewChild(TuiRoot, {read: ElementRef})\n private readonly root?: ElementRef<HTMLElement>;\n\n private readonly doc = inject(DOCUMENT);\n protected readonly open = signal(false);\n\n @Output('tuiFullscreenChange')\n public readonly opened = new EventEmitter<boolean>();\n\n @Input('tuiFullscreenOptions')\n public options?: FullscreenOptions = {navigationUI: 'auto'};\n\n @Input('tuiFullscreen')\n public set fullscreen(open: boolean) {\n if (this.open() === open) {\n return;\n }\n\n if (open) {\n this.root?.nativeElement\n .requestFullscreen(this.options)\n .then(() => this.fullscreenState(open));\n } else {\n this.doc\n .exitFullscreen()\n .then(() => this.fullscreenState(open))\n .catch((error: unknown) =>\n console.error('Failed to exit fullscreen:', error),\n );\n }\n }\n\n protected closedByEscape(event: Event): void {\n if (!this.doc.fullscreenElement && event.target === this.root?.nativeElement) {\n this.fullscreenState(false);\n }\n }\n\n private fullscreenState(open: boolean): void {\n this.open.set(open);\n this.opened.emit(open);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAsBa,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAGvB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAW;AAG7C,QAAA,IAAA,CAAA,OAAO,GAAuB,EAAC,YAAY,EAAE,MAAM,EAAC;AAgC9D;IA9BG,IACW,UAAU,CAAC,IAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACtB;;QAGJ,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,EAAE;AACN,iBAAA,iBAAiB,CAAC,IAAI,CAAC,OAAO;iBAC9B,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;aACxC;AACH,YAAA,IAAI,CAAC;AACA,iBAAA,cAAc;iBACd,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACrC,iBAAA,KAAK,CAAC,CAAC,KAAc,KAClB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CACrD;;;AAIH,IAAA,cAAc,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;AAC1E,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;;AAI3B,IAAA,eAAe,CAAC,IAAa,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAzCjB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,oVACX,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAS,UAAU,EAN3B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qCAAqC,iWADrC,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAMR,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,OAAO,CAAC,YACR,qCAAqC,EAAA,eAAA,EAE9B,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAC,6BAA6B,EAAE,wBAAwB,EAAC,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA;8BAI9C,IAAI,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;gBAOtB,MAAM,EAAA,CAAA;sBADrB,MAAM;uBAAC,qBAAqB;gBAItB,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,sBAAsB;gBAIlB,UAAU,EAAA,CAAA;sBADpB,KAAK;uBAAC,eAAe;;;ACnC1B;;AAEG;;;;"}