@taiga-ui/kit 4.43.0 → 4.44.0-canary.09b0f40

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 (231) hide show
  1. package/components/avatar/avatar.options.d.ts +2 -1
  2. package/components/badge/badge.options.d.ts +2 -1
  3. package/components/badge-notification/badge-notification.options.d.ts +2 -1
  4. package/components/block/block.options.d.ts +2 -1
  5. package/components/breadcrumbs/breadcrumbs.options.d.ts +2 -1
  6. package/components/checkbox/checkbox.options.d.ts +2 -1
  7. package/components/chip/chip.options.d.ts +2 -1
  8. package/components/combo-box/combo-box.directive.d.ts +0 -1
  9. package/components/files/input-files/input-files.options.d.ts +2 -1
  10. package/components/input-chip/input-chip.directive.d.ts +1 -0
  11. package/components/input-date-range/input-date-range.options.d.ts +2 -1
  12. package/components/input-month/input-month.options.d.ts +2 -1
  13. package/components/input-month-range/input-month-range.options.d.ts +2 -1
  14. package/components/input-password/input-password.options.d.ts +2 -1
  15. package/components/input-phone-international/input-phone-international.options.d.ts +2 -1
  16. package/components/input-time/input-time.directive.d.ts +7 -2
  17. package/components/input-time/input-time.options.d.ts +1 -1
  18. package/components/line-clamp/line-clamp.options.d.ts +2 -1
  19. package/components/multi-select/index.d.ts +1 -0
  20. package/components/multi-select/multi-select-native/multi-select-native.component.d.ts +20 -0
  21. package/components/multi-select/multi-select.d.ts +3 -1
  22. package/components/pdf-viewer/pdf-viewer.options.d.ts +2 -1
  23. package/components/progress/progress.options.d.ts +2 -1
  24. package/components/push/push.options.d.ts +2 -1
  25. package/components/radio/radio.options.d.ts +2 -1
  26. package/components/rating/rating.options.d.ts +2 -1
  27. package/components/select/select-option/select-option.component.d.ts +2 -2
  28. package/components/slider/slider.options.d.ts +2 -1
  29. package/components/switch/switch.options.d.ts +2 -1
  30. package/components/tabs/tabs.options.d.ts +2 -1
  31. package/components/tabs/tabs.providers.d.ts +2 -1
  32. package/components/tiles/tiles.tokens.d.ts +2 -1
  33. package/components/tree/misc/tree.tokens.d.ts +9 -8
  34. package/directives/chevron/chevron.directive.d.ts +2 -1
  35. package/directives/fluid-typography/fluid-typography.options.d.ts +2 -1
  36. package/directives/index.d.ts +1 -0
  37. package/directives/shimmer/index.d.ts +1 -0
  38. package/directives/shimmer/shimmer.directive.d.ts +13 -0
  39. package/esm2022/components/accordion/accordion-item.component.mjs +3 -3
  40. package/esm2022/components/avatar/avatar-labeled.component.mjs +3 -3
  41. package/esm2022/components/avatar/avatar-stack.component.mjs +2 -2
  42. package/esm2022/components/avatar/avatar.options.mjs +6 -3
  43. package/esm2022/components/badge/badge.options.mjs +6 -3
  44. package/esm2022/components/badge-notification/badge-notification.options.mjs +6 -3
  45. package/esm2022/components/block/block.options.mjs +6 -3
  46. package/esm2022/components/breadcrumbs/breadcrumbs.options.mjs +6 -3
  47. package/esm2022/components/checkbox/checkbox.options.mjs +6 -3
  48. package/esm2022/components/chip/chip.options.mjs +6 -3
  49. package/esm2022/components/combo-box/combo-box.directive.mjs +6 -7
  50. package/esm2022/components/confirm/confirm.component.mjs +3 -3
  51. package/esm2022/components/elastic-container/elastic-container.component.mjs +3 -3
  52. package/esm2022/components/files/file/file.component.mjs +3 -3
  53. package/esm2022/components/files/files/files.component.mjs +3 -3
  54. package/esm2022/components/files/input-files/input-files.options.mjs +6 -3
  55. package/esm2022/components/filter/filter.component.mjs +3 -3
  56. package/esm2022/components/floating-container/floating-container.directive.mjs +2 -2
  57. package/esm2022/components/input-chip/input-chip.component.mjs +3 -3
  58. package/esm2022/components/input-chip/input-chip.directive.mjs +5 -3
  59. package/esm2022/components/input-date-range/input-date-range.options.mjs +9 -7
  60. package/esm2022/components/input-inline/input-inline.component.mjs +3 -3
  61. package/esm2022/components/input-month/input-month.options.mjs +9 -7
  62. package/esm2022/components/input-month-range/input-month-range.options.mjs +9 -7
  63. package/esm2022/components/input-password/input-password.options.mjs +6 -3
  64. package/esm2022/components/input-phone-international/input-phone-international.options.mjs +6 -3
  65. package/esm2022/components/input-pin/input-pin.component.mjs +3 -3
  66. package/esm2022/components/input-time/input-time.component.mjs +2 -5
  67. package/esm2022/components/input-time/input-time.directive.mjs +39 -11
  68. package/esm2022/components/input-time/input-time.options.mjs +2 -1
  69. package/esm2022/components/line-clamp/line-clamp-box.component.mjs +3 -3
  70. package/esm2022/components/line-clamp/line-clamp.component.mjs +3 -3
  71. package/esm2022/components/line-clamp/line-clamp.options.mjs +6 -3
  72. package/esm2022/components/multi-select/index.mjs +2 -1
  73. package/esm2022/components/multi-select/multi-select-group/multi-select-group.component.mjs +3 -3
  74. package/esm2022/components/multi-select/multi-select-native/multi-select-native.component.mjs +56 -0
  75. package/esm2022/components/multi-select/multi-select-option/multi-select-option.component.mjs +4 -9
  76. package/esm2022/components/multi-select/multi-select.mjs +3 -1
  77. package/esm2022/components/pagination/pagination.component.mjs +3 -3
  78. package/esm2022/components/pdf-viewer/pdf-viewer.component.mjs +3 -3
  79. package/esm2022/components/pdf-viewer/pdf-viewer.options.mjs +6 -3
  80. package/esm2022/components/pin/pin.directive.mjs +2 -2
  81. package/esm2022/components/preview/preview.component.mjs +3 -3
  82. package/esm2022/components/preview/zoom/preview-zoom.component.mjs +3 -3
  83. package/esm2022/components/progress/progress-bar/fixed-gradient/progress-fixed-gradient.directive.mjs +2 -2
  84. package/esm2022/components/progress/progress-bar/progress-bar.component.mjs +2 -2
  85. package/esm2022/components/progress/progress.options.mjs +6 -3
  86. package/esm2022/components/push/push-alert.component.mjs +3 -3
  87. package/esm2022/components/push/push.component.mjs +3 -3
  88. package/esm2022/components/push/push.options.mjs +6 -3
  89. package/esm2022/components/radio/radio.options.mjs +6 -3
  90. package/esm2022/components/rating/rating.options.mjs +6 -3
  91. package/esm2022/components/select/select-option/select-option.component.mjs +23 -9
  92. package/esm2022/components/slider/slider.component.mjs +2 -2
  93. package/esm2022/components/slider/slider.options.mjs +6 -3
  94. package/esm2022/components/stepper/step.component.mjs +3 -3
  95. package/esm2022/components/switch/switch.options.mjs +6 -3
  96. package/esm2022/components/tabs/tabs-with-more.component.mjs +3 -3
  97. package/esm2022/components/tabs/tabs.options.mjs +6 -3
  98. package/esm2022/components/tabs/tabs.providers.mjs +3 -4
  99. package/esm2022/components/textarea/textarea-limit.directive.mjs +2 -2
  100. package/esm2022/components/textarea/textarea.component.mjs +3 -3
  101. package/esm2022/components/tiles/tiles.tokens.mjs +5 -3
  102. package/esm2022/components/tree/components/tree-item/tree-item.component.mjs +3 -3
  103. package/esm2022/components/tree/components/tree-item-content/tree-item-content.component.mjs +3 -3
  104. package/esm2022/components/tree/misc/tree.tokens.mjs +18 -10
  105. package/esm2022/directives/chevron/chevron.directive.mjs +6 -4
  106. package/esm2022/directives/fade/fade.directive.mjs +10 -12
  107. package/esm2022/directives/fluid-typography/fluid-typography.options.mjs +6 -3
  108. package/esm2022/directives/index.mjs +2 -1
  109. package/esm2022/directives/shimmer/index.mjs +2 -0
  110. package/esm2022/directives/shimmer/shimmer.directive.mjs +68 -0
  111. package/esm2022/directives/shimmer/taiga-ui-kit-directives-shimmer.mjs +5 -0
  112. package/esm2022/pipes/emails/emails.options.mjs +13 -11
  113. package/esm2022/pipes/filter-by-input/filter-by-input.pipe.mjs +2 -2
  114. package/esm2022/tokens/calendar-date-stream.mjs +3 -4
  115. package/esm2022/tokens/date-inputs-value-transformers.mjs +8 -6
  116. package/esm2022/tokens/i18n.mjs +74 -26
  117. package/esm2022/tokens/items-handlers.mjs +6 -3
  118. package/esm2022/tokens/mobile-calendar.mjs +3 -4
  119. package/esm2022/tokens/month-formatter.mjs +10 -9
  120. package/esm2022/tokens/preview-icons.mjs +6 -3
  121. package/esm2022/tokens/validation-errors.mjs +5 -3
  122. package/fesm2022/taiga-ui-kit-components-accordion.mjs +2 -2
  123. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  124. package/fesm2022/taiga-ui-kit-components-avatar.mjs +9 -7
  125. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  126. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs +5 -3
  127. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs.map +1 -1
  128. package/fesm2022/taiga-ui-kit-components-badge.mjs +5 -3
  129. package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-kit-components-block.mjs +5 -3
  131. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  132. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +5 -3
  133. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  134. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +5 -3
  135. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
  136. package/fesm2022/taiga-ui-kit-components-chip.mjs +5 -3
  137. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  138. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +5 -6
  139. package/fesm2022/taiga-ui-kit-components-combo-box.mjs.map +1 -1
  140. package/fesm2022/taiga-ui-kit-components-confirm.mjs +2 -2
  141. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  142. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs +2 -2
  143. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs.map +1 -1
  144. package/fesm2022/taiga-ui-kit-components-files.mjs +9 -7
  145. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  146. package/fesm2022/taiga-ui-kit-components-filter.mjs +2 -2
  147. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  148. package/fesm2022/taiga-ui-kit-components-floating-container.mjs +2 -2
  149. package/fesm2022/taiga-ui-kit-components-floating-container.mjs.map +1 -1
  150. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +5 -4
  151. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  152. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +8 -6
  153. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  154. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +2 -2
  155. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  156. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +8 -6
  157. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  158. package/fesm2022/taiga-ui-kit-components-input-month.mjs +8 -6
  159. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  160. package/fesm2022/taiga-ui-kit-components-input-password.mjs +5 -3
  161. package/fesm2022/taiga-ui-kit-components-input-password.mjs.map +1 -1
  162. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +5 -3
  163. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  164. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +2 -2
  165. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  166. package/fesm2022/taiga-ui-kit-components-input-time.mjs +41 -15
  167. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  168. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +9 -7
  169. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  170. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +57 -14
  171. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  172. package/fesm2022/taiga-ui-kit-components-pagination.mjs +2 -2
  173. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  174. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs +7 -5
  175. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs.map +1 -1
  176. package/fesm2022/taiga-ui-kit-components-pin.mjs +2 -2
  177. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  178. package/fesm2022/taiga-ui-kit-components-preview.mjs +4 -4
  179. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  180. package/fesm2022/taiga-ui-kit-components-progress.mjs +9 -7
  181. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  182. package/fesm2022/taiga-ui-kit-components-push.mjs +9 -7
  183. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  184. package/fesm2022/taiga-ui-kit-components-radio.mjs +5 -3
  185. package/fesm2022/taiga-ui-kit-components-radio.mjs.map +1 -1
  186. package/fesm2022/taiga-ui-kit-components-rating.mjs +5 -3
  187. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  188. package/fesm2022/taiga-ui-kit-components-select.mjs +22 -8
  189. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  190. package/fesm2022/taiga-ui-kit-components-slider.mjs +7 -5
  191. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  192. package/fesm2022/taiga-ui-kit-components-stepper.mjs +2 -2
  193. package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
  194. package/fesm2022/taiga-ui-kit-components-switch.mjs +5 -3
  195. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  196. package/fesm2022/taiga-ui-kit-components-tabs.mjs +8 -6
  197. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  198. package/fesm2022/taiga-ui-kit-components-textarea.mjs +4 -4
  199. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  200. package/fesm2022/taiga-ui-kit-components-tiles.mjs +5 -3
  201. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  202. package/fesm2022/taiga-ui-kit-components-tree.mjs +22 -14
  203. package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
  204. package/fesm2022/taiga-ui-kit-directives-chevron.mjs +5 -3
  205. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  206. package/fesm2022/taiga-ui-kit-directives-fade.mjs +9 -11
  207. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  208. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +5 -3
  209. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
  210. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs +74 -0
  211. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -0
  212. package/fesm2022/taiga-ui-kit-directives.mjs +1 -0
  213. package/fesm2022/taiga-ui-kit-directives.mjs.map +1 -1
  214. package/fesm2022/taiga-ui-kit-pipes-emails.mjs +12 -11
  215. package/fesm2022/taiga-ui-kit-pipes-emails.mjs.map +1 -1
  216. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs +1 -1
  217. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs.map +1 -1
  218. package/fesm2022/taiga-ui-kit-tokens.mjs +99 -41
  219. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  220. package/package.json +14 -8
  221. package/pipes/emails/emails.options.d.ts +2 -1
  222. package/styles/components/pin.less +2 -2
  223. package/styles/components/progress-bar.less +1 -1
  224. package/tokens/calendar-date-stream.d.ts +2 -1
  225. package/tokens/date-inputs-value-transformers.d.ts +5 -4
  226. package/tokens/i18n.d.ts +25 -24
  227. package/tokens/items-handlers.d.ts +2 -1
  228. package/tokens/mobile-calendar.d.ts +2 -1
  229. package/tokens/month-formatter.d.ts +2 -1
  230. package/tokens/preview-icons.d.ts +2 -1
  231. package/tokens/validation-errors.d.ts +2 -1
@@ -11,13 +11,13 @@ import { merge, fromEvent, filter } from 'rxjs';
11
11
  const BUFFER = 1; // buffer for rounding issues
12
12
  class TuiFadeStyles {
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFadeStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiFadeStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-fade-styles" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiFade]{scrollbar-width:none;-ms-overflow-style:none;transition-property:-webkit-mask-position;transition-property:mask-position;transition-property:mask-position,-webkit-mask-position;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;overflow:auto;text-overflow:unset!important;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[tuiFade]::-webkit-scrollbar,[tuiFade]::-webkit-scrollbar-thumb{display:none}[tuiFade]:not([data-orientation=vertical]){overflow-y:hidden;-webkit-mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;-webkit-mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%));mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%))}[tuiFade]:not([data-orientation=vertical])._start{-webkit-mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top}[tuiFade]:not([data-orientation=vertical])._end{-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top}[tuiFade]:not([data-orientation=vertical])._start._end{-webkit-mask-position:left bottom,right bottom,top;mask-position:left bottom,right bottom,top}[tuiFade][data-orientation=vertical]{overflow-x:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));-webkit-mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset));mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._start{-webkit-mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._end{-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom;mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom}[tuiFade][data-orientation=vertical]._start._end{-webkit-mask-position:left top,left bottom;mask-position:left top,left bottom}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiFadeStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-fade-styles" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiFade]{scrollbar-width:none;-ms-overflow-style:none;transition-property:-webkit-mask-position;transition-property:mask-position;transition-property:mask-position,-webkit-mask-position;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;overflow:auto;text-overflow:unset!important;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[tuiFade]::-webkit-scrollbar,[tuiFade]::-webkit-scrollbar-thumb{display:none}[tuiFade]:not([data-orientation=vertical]){overflow-y:hidden;-webkit-mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;-webkit-mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%));mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%))}[tuiFade]:not([data-orientation=vertical])._start{-webkit-mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top}[tuiFade]:not([data-orientation=vertical])._end{-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top}[tuiFade]:not([data-orientation=vertical])._start._end{-webkit-mask-position:left bottom,right bottom,top;mask-position:left bottom,right bottom,top}[dir=rtl] [tuiFade]:not([data-orientation=vertical])._end{-webkit-mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top}[dir=rtl] [tuiFade]:not([data-orientation=vertical])._start{-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top}[dir=rtl] [tuiFade]:not([data-orientation=vertical])._start._end{-webkit-mask-position:left bottom,right bottom,top;mask-position:left bottom,right bottom,top}[tuiFade][data-orientation=vertical]{overflow-x:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));-webkit-mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset));mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._start{-webkit-mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._end{-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom;mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom}[tuiFade][data-orientation=vertical]._start._end{-webkit-mask-position:left top,left bottom;mask-position:left top,left bottom}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFadeStyles, decorators: [{
17
17
  type: Component,
18
18
  args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
19
19
  class: 'tui-fade-styles',
20
- }, styles: ["[tuiFade]{scrollbar-width:none;-ms-overflow-style:none;transition-property:-webkit-mask-position;transition-property:mask-position;transition-property:mask-position,-webkit-mask-position;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;overflow:auto;text-overflow:unset!important;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[tuiFade]::-webkit-scrollbar,[tuiFade]::-webkit-scrollbar-thumb{display:none}[tuiFade]:not([data-orientation=vertical]){overflow-y:hidden;-webkit-mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;-webkit-mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%));mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%))}[tuiFade]:not([data-orientation=vertical])._start{-webkit-mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top}[tuiFade]:not([data-orientation=vertical])._end{-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top}[tuiFade]:not([data-orientation=vertical])._start._end{-webkit-mask-position:left bottom,right bottom,top;mask-position:left bottom,right bottom,top}[tuiFade][data-orientation=vertical]{overflow-x:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));-webkit-mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset));mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._start{-webkit-mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._end{-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom;mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom}[tuiFade][data-orientation=vertical]._start._end{-webkit-mask-position:left top,left bottom;mask-position:left top,left bottom}\n"] }]
20
+ }, styles: ["[tuiFade]{scrollbar-width:none;-ms-overflow-style:none;transition-property:-webkit-mask-position;transition-property:mask-position;transition-property:mask-position,-webkit-mask-position;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;overflow:auto;text-overflow:unset!important;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[tuiFade]::-webkit-scrollbar,[tuiFade]::-webkit-scrollbar-thumb{display:none}[tuiFade]:not([data-orientation=vertical]){overflow-y:hidden;-webkit-mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);mask-image:linear-gradient(to right,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to left,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(#000,#000);-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;-webkit-mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%));mask-size:calc(51% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),calc(50% + var(--t-fade-size) + var(--t-fade-offset)) var(--t-line-height, 100%),100% calc(100% - var(--t-line-height, 100%))}[tuiFade]:not([data-orientation=vertical])._start{-webkit-mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top}[tuiFade]:not([data-orientation=vertical])._end{-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top}[tuiFade]:not([data-orientation=vertical])._start._end{-webkit-mask-position:left bottom,right bottom,top;mask-position:left bottom,right bottom,top}[dir=rtl] [tuiFade]:not([data-orientation=vertical])._end{-webkit-mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top;mask-position:left bottom,calc(100% + var(--t-fade-size) + var(--t-fade-offset)) bottom,top}[dir=rtl] [tuiFade]:not([data-orientation=vertical])._start{-webkit-mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top;mask-position:calc(-1 * var(--t-fade-size) - var(--t-fade-offset)) bottom,right bottom,top}[dir=rtl] [tuiFade]:not([data-orientation=vertical])._start._end{-webkit-mask-position:left bottom,right bottom,top;mask-position:left bottom,right bottom,top}[tuiFade][data-orientation=vertical]{overflow-x:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));mask-image:linear-gradient(to bottom,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset))),linear-gradient(to top,transparent var(--t-fade-offset),#000 calc(var(--t-fade-size) + var(--t-fade-offset)));-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left calc(100% + var(--t-fade-size) + var(--t-fade-offset));-webkit-mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset));mask-size:100% calc(51% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._start{-webkit-mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset));mask-position:left top,left calc(100% + var(--t-fade-size) + var(--t-fade-offset))}[tuiFade][data-orientation=vertical]._end{-webkit-mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom;mask-position:left calc(-1 * var(--t-fade-size) - var(--t-fade-offset)),left bottom}[tuiFade][data-orientation=vertical]._start._end{-webkit-mask-position:left top,left bottom;mask-position:left top,left bottom}\n"] }]
21
21
  }] });
22
22
  class TuiFade {
23
23
  constructor() {
@@ -31,18 +31,16 @@ class TuiFade {
31
31
  merge(inject(ResizeObserverService, { self: true }), inject(MutationObserverService, { self: true }), fromEvent(el, 'scroll'))
32
32
  .pipe(filter(() => !!el.scrollWidth), tuiZonefree(), takeUntilDestroyed())
33
33
  .subscribe(() => {
34
- el.classList.toggle('_start', !!el.scrollLeft || !!el.scrollTop);
35
34
  el.classList.toggle('_end', this.isEnd(el));
35
+ el.classList.toggle('_start', !!Math.floor(el.scrollLeft) || !!Math.floor(el.scrollTop));
36
36
  });
37
37
  }
38
- isEnd(el) {
39
- if (this.orientation === 'vertical') {
40
- return Math.round(el.scrollTop) < el.scrollHeight - el.clientHeight - BUFFER;
41
- }
42
- return ((el.clientWidth &&
43
- Math.round(el.scrollLeft) < el.scrollWidth - el.clientWidth - BUFFER) ||
44
- // horizontal multiline fade can kick in early due to hanging elements of fonts so using bigger buffer
45
- el.scrollHeight > el.clientHeight + 4 * BUFFER);
38
+ isEnd({ scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth, }) {
39
+ return this.orientation === 'vertical'
40
+ ? Math.round(scrollTop) < scrollHeight - clientHeight - BUFFER
41
+ : Math.ceil(Math.abs(scrollLeft)) < scrollWidth - clientWidth - BUFFER ||
42
+ // horizontal multiline fade can kick in early due to hanging elements of fonts so using bigger buffer
43
+ scrollHeight > clientHeight + 4 * BUFFER;
46
44
  }
47
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFade, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
48
46
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiFade, isStandalone: true, selector: "[tuiFade]", inputs: { lineHeight: ["tuiFadeHeight", "lineHeight"], size: ["tuiFadeSize", "size"], offset: ["tuiFadeOffset", "offset"], orientation: ["tuiFade", "orientation"] }, host: { properties: { "style.line-height": "lineHeight", "style.--t-line-height": "lineHeight", "style.--t-fade-size": "size", "style.--t-fade-offset": "offset", "attr.data-orientation": "orientation" } }, providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-directives-fade.mjs","sources":["../../../projects/kit/directives/fade/fade.directive.ts","../../../projects/kit/directives/fade/taiga-ui-kit-directives-fade.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n MutationObserverService,\n WA_MUTATION_OBSERVER_INIT,\n} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiOrientation} from '@taiga-ui/core/types';\nimport {filter, fromEvent, merge} from 'rxjs';\n\nconst BUFFER = 1; // buffer for rounding issues\n\n@Component({\n standalone: true,\n template: '',\n styleUrls: ['./fade.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-fade-styles',\n },\n})\nclass TuiFadeStyles {}\n\n@Directive({\n standalone: true,\n selector: '[tuiFade]',\n providers: [\n ResizeObserverService,\n MutationObserverService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {characterData: true, subtree: true},\n },\n ],\n host: {\n '[style.line-height]': 'lineHeight',\n '[style.--t-line-height]': 'lineHeight',\n '[style.--t-fade-size]': 'size',\n '[style.--t-fade-offset]': 'offset',\n '[attr.data-orientation]': 'orientation',\n },\n})\nexport class TuiFade {\n // TODO: Remove when lh CSS units are supported: https://caniuse.com/mdn-css_types_length_lh\n @Input('tuiFadeHeight')\n public lineHeight: string | null = null;\n\n @Input('tuiFadeSize')\n public size = '1.5em';\n\n @Input('tuiFadeOffset')\n public offset = '0em';\n\n @Input('tuiFade')\n public orientation: TuiOrientation | '' = 'horizontal';\n\n constructor() {\n const el = tuiInjectElement();\n\n tuiWithStyles(TuiFadeStyles);\n merge(\n inject(ResizeObserverService, {self: true}),\n inject(MutationObserverService, {self: true}),\n fromEvent(el, 'scroll'),\n )\n .pipe(\n filter(() => !!el.scrollWidth),\n tuiZonefree(),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n el.classList.toggle('_start', !!el.scrollLeft || !!el.scrollTop);\n el.classList.toggle('_end', this.isEnd(el));\n });\n }\n\n private isEnd(el: HTMLElement): boolean {\n if (this.orientation === 'vertical') {\n return Math.round(el.scrollTop) < el.scrollHeight - el.clientHeight - BUFFER;\n }\n\n return (\n (el.clientWidth &&\n Math.round(el.scrollLeft) < el.scrollWidth - el.clientWidth - BUFFER) ||\n // horizontal multiline fade can kick in early due to hanging elements of fonts so using bigger buffer\n el.scrollHeight > el.clientHeight + 4 * BUFFER\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAoBA,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,MAUM,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,qHARL,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,s0HAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAQV,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVlB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,EAAE,EAAA,aAAA,EAEG,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,iBAAiB;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,s0HAAA,CAAA,EAAA,CAAA;;AAIL,MAmBa,OAAO,CAAA;AAchB,IAAA,WAAA,GAAA;;QAXO,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;QAGjC,IAAI,CAAA,IAAA,GAAG,OAAO,CAAC;QAGf,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAGf,IAAW,CAAA,WAAA,GAAwB,YAAY,CAAC;AAGnD,QAAA,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAE9B,aAAa,CAAC,aAAa,CAAC,CAAC;AAC7B,QAAA,KAAK,CACD,MAAM,CAAC,qBAAqB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAC3C,MAAM,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAC7C,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAC1B;AACI,aAAA,IAAI,CACD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAC9B,WAAW,EAAE,EACb,kBAAkB,EAAE,CACvB;aACA,SAAS,CAAC,MAAK;AACZ,YAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACjE,YAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;KACV;AAEO,IAAA,KAAK,CAAC,EAAe,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC;AAChF,SAAA;AAED,QAAA,QACI,CAAC,EAAE,CAAC,WAAW;AACX,YAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,MAAM;;YAExE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,EAChD;KACL;+GA7CQ,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAO,EAhBL,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,CAAA,EAAA,WAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,qBAAqB;YACrB,uBAAuB;AACvB,YAAA;AACI,gBAAA,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC;AACjD,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FASQ,OAAO,EAAA,UAAA,EAAA,CAAA;kBAnBnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE;wBACP,qBAAqB;wBACrB,uBAAuB;AACvB,wBAAA;AACI,4BAAA,OAAO,EAAE,yBAAyB;4BAClC,QAAQ,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC;AACjD,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,yBAAyB,EAAE,YAAY;AACvC,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,yBAAyB,EAAE,QAAQ;AACnC,wBAAA,yBAAyB,EAAE,aAAa;AAC3C,qBAAA;AACJ,iBAAA,CAAA;0EAIU,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,eAAe,CAAA;gBAIf,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,aAAa,CAAA;gBAIb,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,eAAe,CAAA;gBAIf,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,SAAS,CAAA;;;AChEpB;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-directives-fade.mjs","sources":["../../../projects/kit/directives/fade/fade.directive.ts","../../../projects/kit/directives/fade/taiga-ui-kit-directives-fade.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n MutationObserverService,\n WA_MUTATION_OBSERVER_INIT,\n} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiOrientation} from '@taiga-ui/core/types';\nimport {filter, fromEvent, merge} from 'rxjs';\n\nconst BUFFER = 1; // buffer for rounding issues\n\n@Component({\n standalone: true,\n template: '',\n styleUrls: ['./fade.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-fade-styles',\n },\n})\nclass TuiFadeStyles {}\n\n@Directive({\n standalone: true,\n selector: '[tuiFade]',\n providers: [\n ResizeObserverService,\n MutationObserverService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {characterData: true, subtree: true},\n },\n ],\n host: {\n '[style.line-height]': 'lineHeight',\n '[style.--t-line-height]': 'lineHeight',\n '[style.--t-fade-size]': 'size',\n '[style.--t-fade-offset]': 'offset',\n '[attr.data-orientation]': 'orientation',\n },\n})\nexport class TuiFade {\n // TODO: Remove when lh CSS units are supported: https://caniuse.com/mdn-css_types_length_lh\n @Input('tuiFadeHeight')\n public lineHeight: string | null = null;\n\n @Input('tuiFadeSize')\n public size = '1.5em';\n\n @Input('tuiFadeOffset')\n public offset = '0em';\n\n @Input('tuiFade')\n public orientation: TuiOrientation | '' = 'horizontal';\n\n constructor() {\n const el = tuiInjectElement();\n\n tuiWithStyles(TuiFadeStyles);\n merge(\n inject(ResizeObserverService, {self: true}),\n inject(MutationObserverService, {self: true}),\n fromEvent(el, 'scroll'),\n )\n .pipe(\n filter(() => !!el.scrollWidth),\n tuiZonefree(),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n el.classList.toggle('_end', this.isEnd(el));\n el.classList.toggle(\n '_start',\n !!Math.floor(el.scrollLeft) || !!Math.floor(el.scrollTop),\n );\n });\n }\n\n private isEnd({\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n }: HTMLElement): boolean {\n return this.orientation === 'vertical'\n ? Math.round(scrollTop) < scrollHeight - clientHeight - BUFFER\n : Math.ceil(Math.abs(scrollLeft)) < scrollWidth - clientWidth - BUFFER ||\n // horizontal multiline fade can kick in early due to hanging elements of fonts so using bigger buffer\n scrollHeight > clientHeight + 4 * BUFFER;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,18 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, Input } from '@angular/core';
2
+ import { InjectionToken, inject, Directive, Input } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { MutationObserverService, WA_MUTATION_OBSERVER_INIT } from '@ng-web-apis/mutation-observer';
5
5
  import { ResizeObserverService } from '@ng-web-apis/resize-observer';
6
6
  import { tuiZonefree } from '@taiga-ui/cdk/observables';
7
7
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
8
8
  import { Subject, merge, fromEvent } from 'rxjs';
9
- import { tuiCreateToken, tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
9
+ import { tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
10
10
 
11
11
  const TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS = {
12
12
  min: 0.625,
13
13
  max: 1.5,
14
14
  };
15
- const TUI_FLUID_TYPOGRAPHY_OPTIONS = tuiCreateToken(TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS);
15
+ const TUI_FLUID_TYPOGRAPHY_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_FLUID_TYPOGRAPHY_OPTIONS' : '', {
16
+ factory: () => TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS,
17
+ });
16
18
  function tuiFluidTypographyOptionsProvider(options) {
17
19
  return tuiProvideOptions(TUI_FLUID_TYPOGRAPHY_OPTIONS, options, TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS);
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-directives-fluid-typography.mjs","sources":["../../../projects/kit/directives/fluid-typography/fluid-typography.options.ts","../../../projects/kit/directives/fluid-typography/fluid-typography.directive.ts","../../../projects/kit/directives/fluid-typography/taiga-ui-kit-directives-fluid-typography.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiFluidTypographyOptions {\n readonly min: number;\n readonly max: number;\n}\n\nexport const TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS: TuiFluidTypographyOptions = {\n min: 0.625,\n max: 1.5,\n};\n\nexport const TUI_FLUID_TYPOGRAPHY_OPTIONS = tuiCreateToken(\n TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS,\n);\n\nexport function tuiFluidTypographyOptionsProvider(\n options: Partial<TuiFluidTypographyOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_FLUID_TYPOGRAPHY_OPTIONS,\n options,\n TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS,\n );\n}\n","import type {OnChanges} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n MutationObserverService,\n WA_MUTATION_OBSERVER_INIT,\n} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {fromEvent, merge, Subject} from 'rxjs';\n\nimport {TUI_FLUID_TYPOGRAPHY_OPTIONS} from './fluid-typography.options';\n\nconst STEP = 1 / 16;\n\n@Directive({\n standalone: true,\n selector: '[tuiFluidTypography]',\n providers: [\n ResizeObserverService,\n MutationObserverService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {characterData: true, subtree: true},\n },\n ],\n host: {tuiFluidTypography: ''},\n})\nexport class TuiFluidTypography implements OnChanges {\n // TODO: refactor to signal inputs after Angular update\n private readonly changes$ = new Subject<void>();\n private readonly el = tuiInjectElement();\n private readonly options = inject(TUI_FLUID_TYPOGRAPHY_OPTIONS);\n\n protected readonly sub = merge(\n this.changes$,\n inject(ResizeObserverService, {self: true}),\n inject(MutationObserverService, {self: true}),\n fromEvent(this.el, 'input'),\n )\n .pipe(tuiZonefree(), takeUntilDestroyed())\n .subscribe(() => {\n const min = Number(this.tuiFluidTypography[0] || this.options.min);\n const max = Number(this.tuiFluidTypography[1] || this.options.max);\n\n for (let i = max; i >= min; i -= STEP) {\n this.el.style.fontSize = `${i}rem`;\n\n if (this.el.scrollWidth <= this.el.clientWidth) {\n break;\n }\n }\n });\n\n @Input()\n public tuiFluidTypography: readonly [min: number, max: number] | '' = '';\n\n public ngOnChanges(): void {\n this.changes$.next();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-directives-fluid-typography.mjs","sources":["../../../projects/kit/directives/fluid-typography/fluid-typography.options.ts","../../../projects/kit/directives/fluid-typography/fluid-typography.directive.ts","../../../projects/kit/directives/fluid-typography/taiga-ui-kit-directives-fluid-typography.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {InjectionToken} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiFluidTypographyOptions {\n readonly min: number;\n readonly max: number;\n}\n\nexport const TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS: TuiFluidTypographyOptions = {\n min: 0.625,\n max: 1.5,\n};\n\nexport const TUI_FLUID_TYPOGRAPHY_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_FLUID_TYPOGRAPHY_OPTIONS' : '',\n {\n factory: () => TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiFluidTypographyOptionsProvider(\n options: Partial<TuiFluidTypographyOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_FLUID_TYPOGRAPHY_OPTIONS,\n options,\n TUI_FLUID_TYPOGRAPHY_DEFAULT_OPTIONS,\n );\n}\n","import type {OnChanges} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n MutationObserverService,\n WA_MUTATION_OBSERVER_INIT,\n} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {fromEvent, merge, Subject} from 'rxjs';\n\nimport {TUI_FLUID_TYPOGRAPHY_OPTIONS} from './fluid-typography.options';\n\nconst STEP = 1 / 16;\n\n@Directive({\n standalone: true,\n selector: '[tuiFluidTypography]',\n providers: [\n ResizeObserverService,\n MutationObserverService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {characterData: true, subtree: true},\n },\n ],\n host: {tuiFluidTypography: ''},\n})\nexport class TuiFluidTypography implements OnChanges {\n // TODO: refactor to signal inputs after Angular update\n private readonly changes$ = new Subject<void>();\n private readonly el = tuiInjectElement();\n private readonly options = inject(TUI_FLUID_TYPOGRAPHY_OPTIONS);\n\n protected readonly sub = merge(\n this.changes$,\n inject(ResizeObserverService, {self: true}),\n inject(MutationObserverService, {self: true}),\n fromEvent(this.el, 'input'),\n )\n .pipe(tuiZonefree(), takeUntilDestroyed())\n .subscribe(() => {\n const min = Number(this.tuiFluidTypography[0] || this.options.min);\n const max = Number(this.tuiFluidTypography[1] || this.options.max);\n\n for (let i = max; i >= min; i -= STEP) {\n this.el.style.fontSize = `${i}rem`;\n\n if (this.el.scrollWidth <= this.el.clientWidth) {\n break;\n }\n }\n });\n\n @Input()\n public tuiFluidTypography: readonly [min: number, max: number] | '' = '';\n\n public ngOnChanges(): void {\n this.changes$.next();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AASa,MAAA,oCAAoC,GAA8B;AAC3E,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,GAAG;EACV;AAEW,MAAA,4BAA4B,GAAG,IAAI,cAAc,CAC1D,SAAS,GAAG,8BAA8B,GAAG,EAAE,EAC/C;AACI,IAAA,OAAO,EAAE,MAAM,oCAAoC;AACtD,CAAA,EACH;AAEI,SAAU,iCAAiC,CAC7C,OAA2C,EAAA;IAE3C,OAAO,iBAAiB,CACpB,4BAA4B,EAC5B,OAAO,EACP,oCAAoC,CACvC,CAAC;AACN;;ACfA,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAEpB,MAaa,kBAAkB,CAAA;AAb/B,IAAA,WAAA,GAAA;;AAeqB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC/B,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAE7C,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAC1B,IAAI,CAAC,QAAQ,EACb,MAAM,CAAC,qBAAqB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAC3C,MAAM,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAC7C,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAC9B;AACI,aAAA,IAAI,CAAC,WAAW,EAAE,EAAE,kBAAkB,EAAE,CAAC;aACzC,SAAS,CAAC,MAAK;AACZ,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEnE,YAAA,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;gBACnC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,CAAC,CAAA,GAAA,CAAK,CAAC;gBAEnC,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;oBAC5C,MAAM;AACT,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;QAGA,IAAkB,CAAA,kBAAA,GAA6C,EAAE,CAAC;AAK5E,KAAA;IAHU,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;+GA/BQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAVhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,qBAAqB;YACrB,uBAAuB;AACvB,YAAA;AACI,gBAAA,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC;AACjD,aAAA;AACJ,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAGQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;wBACP,qBAAqB;wBACrB,uBAAuB;AACvB,wBAAA;AACI,4BAAA,OAAO,EAAE,yBAAyB;4BAClC,QAAQ,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC;AACjD,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE,EAAC,kBAAkB,EAAE,EAAE,EAAC;AACjC,iBAAA,CAAA;8BA4BU,kBAAkB,EAAA,CAAA;sBADxB,KAAK;;;ACvDV;;AAEG;;;;"}
@@ -0,0 +1,74 @@
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, PLATFORM_ID, Directive, Input } from '@angular/core';
4
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
5
+ import { tuiWithStyles } from '@taiga-ui/cdk/utils/miscellaneous';
6
+
7
+ class TuiShimmerStyles {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmerStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiShimmerStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-shimmer-styles" }, ngImport: i0, template: '', isInline: true, styles: ["@keyframes tuiShimmer{0%{-webkit-mask-position:top left,-100rem;mask-position:top left,-100rem}to{-webkit-mask-position:top left,300rem;mask-position:top left,300rem}}[tuiShimmer]._shimmer{-webkit-mask-image:linear-gradient(black,black),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);mask-image:linear-gradient(#000,#000),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);-webkit-mask-size:100%,6rem 100%;mask-size:100%,6rem 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-out;mask-composite:subtract;animation:tuiShimmer 8s infinite linear;pointer-events:none;-webkit-user-select:none;user-select:none}[tuiShimmer]._disabled{animation:none;-webkit-mask:none;mask:none;opacity:var(--tui-disabled-opacity)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmerStyles, decorators: [{
12
+ type: Component,
13
+ args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
14
+ class: 'tui-shimmer-styles',
15
+ }, styles: ["@keyframes tuiShimmer{0%{-webkit-mask-position:top left,-100rem;mask-position:top left,-100rem}to{-webkit-mask-position:top left,300rem;mask-position:top left,300rem}}[tuiShimmer]._shimmer{-webkit-mask-image:linear-gradient(black,black),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);mask-image:linear-gradient(#000,#000),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);-webkit-mask-size:100%,6rem 100%;mask-size:100%,6rem 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-out;mask-composite:subtract;animation:tuiShimmer 8s infinite linear;pointer-events:none;-webkit-user-select:none;user-select:none}[tuiShimmer]._disabled{animation:none;-webkit-mask:none;mask:none;opacity:var(--tui-disabled-opacity)}\n"] }]
16
+ }] });
17
+ class TuiShimmer {
18
+ constructor() {
19
+ this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
20
+ this.el = tuiInjectElement();
21
+ this.disabled = false;
22
+ this.nothing = tuiWithStyles(TuiShimmerStyles);
23
+ this.shimmer = false;
24
+ }
25
+ ngOnChanges() {
26
+ if (!this.isBrowser) {
27
+ return;
28
+ }
29
+ this.disabled = !parseFloat(getComputedStyle(this.el).getPropertyValue('--tui-duration'));
30
+ if (this.disabled) {
31
+ return;
32
+ }
33
+ this.animation?.commitStyles();
34
+ this.animation?.cancel();
35
+ if (this.shimmer) {
36
+ this.animation = this.el.animate({ opacity: [0.5, 0.25, 0.5, 0.5] }, { duration: 1500, iterations: Infinity });
37
+ }
38
+ else {
39
+ this.animation = this.el.animate([{ opacity: 0, offset: 0.5 }, { opacity: 1 }], {
40
+ duration: 800,
41
+ });
42
+ this.animation.finished
43
+ .then(() => {
44
+ this.el.style.opacity = '';
45
+ })
46
+ .catch(() => { });
47
+ }
48
+ }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiShimmer, isStandalone: true, selector: "[tuiShimmer]", inputs: { shimmer: ["tuiShimmer", "shimmer"] }, host: { attributes: { "tuiShimmer": "" }, properties: { "class._shimmer": "shimmer", "class._disabled": "shimmer && disabled", "attr.inert": "shimmer || null" } }, usesOnChanges: true, ngImport: i0 }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmer, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ standalone: true,
56
+ selector: '[tuiShimmer]',
57
+ host: {
58
+ tuiShimmer: '',
59
+ '[class._shimmer]': 'shimmer',
60
+ '[class._disabled]': 'shimmer && disabled',
61
+ '[attr.inert]': 'shimmer || null',
62
+ },
63
+ }]
64
+ }], propDecorators: { shimmer: [{
65
+ type: Input,
66
+ args: ['tuiShimmer']
67
+ }] } });
68
+
69
+ /**
70
+ * Generated bundle index. Do not edit.
71
+ */
72
+
73
+ export { TuiShimmer };
74
+ //# sourceMappingURL=taiga-ui-kit-directives-shimmer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-kit-directives-shimmer.mjs","sources":["../../../projects/kit/directives/shimmer/shimmer.directive.ts","../../../projects/kit/directives/shimmer/taiga-ui-kit-directives-shimmer.ts"],"sourcesContent":["import {isPlatformBrowser} from '@angular/common';\nimport type {OnChanges} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\n@Component({\n standalone: true,\n template: '',\n styleUrls: ['./shimmer.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-shimmer-styles',\n },\n})\nclass TuiShimmerStyles {}\n\n@Directive({\n standalone: true,\n selector: '[tuiShimmer]',\n host: {\n tuiShimmer: '',\n '[class._shimmer]': 'shimmer',\n '[class._disabled]': 'shimmer && disabled',\n '[attr.inert]': 'shimmer || null',\n },\n})\nexport class TuiShimmer implements OnChanges {\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly el = tuiInjectElement();\n private animation?: Animation;\n\n protected disabled = false;\n\n protected readonly nothing = tuiWithStyles(TuiShimmerStyles);\n\n @Input('tuiShimmer')\n public shimmer = false;\n\n public ngOnChanges(): void {\n if (!this.isBrowser) {\n return;\n }\n\n this.disabled = !parseFloat(\n getComputedStyle(this.el).getPropertyValue('--tui-duration'),\n );\n\n if (this.disabled) {\n return;\n }\n\n this.animation?.commitStyles();\n this.animation?.cancel();\n\n if (this.shimmer) {\n this.animation = this.el.animate(\n {opacity: [0.5, 0.25, 0.5, 0.5]},\n {duration: 1500, iterations: Infinity},\n );\n } else {\n this.animation = this.el.animate([{opacity: 0, offset: 0.5}, {opacity: 1}], {\n duration: 800,\n });\n\n this.animation.finished\n .then(() => {\n this.el.style.opacity = '';\n })\n .catch(() => {});\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export * from '@taiga-ui/kit/directives/lazy-loading';
13
13
  export * from '@taiga-ui/kit/directives/password';
14
14
  export * from '@taiga-ui/kit/directives/present';
15
15
  export * from '@taiga-ui/kit/directives/sensitive';
16
+ export * from '@taiga-ui/kit/directives/shimmer';
16
17
  export * from '@taiga-ui/kit/directives/skeleton';
17
18
  export * from '@taiga-ui/kit/directives/tooltip';
18
19
  export * from '@taiga-ui/kit/directives/unfinished-validator';
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-directives.mjs","sources":["../../../projects/kit/directives/taiga-ui-kit-directives.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AAEG"}
1
+ {"version":3,"file":"taiga-ui-kit-directives.mjs","sources":["../../../projects/kit/directives/taiga-ui-kit-directives.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG"}
@@ -1,16 +1,17 @@
1
- import { tuiCreateToken } from '@taiga-ui/cdk/utils/miscellaneous';
2
1
  import * as i0 from '@angular/core';
3
- import { inject, Pipe } from '@angular/core';
2
+ import { InjectionToken, inject, Pipe } from '@angular/core';
4
3
 
5
- const TUI_EMAIL_PIPE_OPTIONS = tuiCreateToken([
6
- 'gmail.com',
7
- 'outlook.com',
8
- 'icloud.com',
9
- 'me.com',
10
- 'yahoo.com',
11
- 'mail.com',
12
- 'proton.me',
13
- ]);
4
+ const TUI_EMAIL_PIPE_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_EMAIL_PIPE_OPTIONS' : '', {
5
+ factory: () => [
6
+ 'gmail.com',
7
+ 'outlook.com',
8
+ 'icloud.com',
9
+ 'me.com',
10
+ 'yahoo.com',
11
+ 'mail.com',
12
+ 'proton.me',
13
+ ],
14
+ });
14
15
 
15
16
  class TuiEmailsPipe {
16
17
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-pipes-emails.mjs","sources":["../../../projects/kit/pipes/emails/emails.options.ts","../../../projects/kit/pipes/emails/emails.pipe.ts","../../../projects/kit/pipes/emails/taiga-ui-kit-pipes-emails.ts"],"sourcesContent":["import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_EMAIL_PIPE_OPTIONS = tuiCreateToken([\n 'gmail.com',\n 'outlook.com',\n 'icloud.com',\n 'me.com',\n 'yahoo.com',\n 'mail.com',\n 'proton.me',\n]);\n","import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\n\nimport {TUI_EMAIL_PIPE_OPTIONS} from './emails.options';\n\n@Pipe({\n standalone: true,\n name: 'tuiEmails',\n})\nexport class TuiEmailsPipe implements PipeTransform {\n private readonly options = inject(TUI_EMAIL_PIPE_OPTIONS);\n\n public transform(\n query: string,\n suggestions: readonly string[] = this.options,\n ): readonly string[] {\n return query.includes('@')\n ? suggestions\n .map(\n (item) =>\n query.slice(0, Math.max(0, query.indexOf('@') + 1)) + item,\n )\n .filter((item) => item.startsWith(query))\n : [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAEO,MAAM,sBAAsB,GAAG,cAAc,CAAC;IACjD,WAAW;IACX,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,UAAU;IACV,WAAW;AACd,CAAA;;ACLD,MAIa,aAAa,CAAA;AAJ1B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAe7D,KAAA;AAbU,IAAA,SAAS,CACZ,KAAa,EACb,WAAiC,GAAA,IAAI,CAAC,OAAO,EAAA;AAE7C,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtB,cAAE,WAAW;AACN,iBAAA,GAAG,CACA,CAAC,IAAI,KACD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CACjE;AACA,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;cAC7C,EAAE,CAAC;KACZ;+GAfQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA,EAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,WAAW;AACpB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-pipes-emails.mjs","sources":["../../../projects/kit/pipes/emails/emails.options.ts","../../../projects/kit/pipes/emails/emails.pipe.ts","../../../projects/kit/pipes/emails/taiga-ui-kit-pipes-emails.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const TUI_EMAIL_PIPE_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_EMAIL_PIPE_OPTIONS' : '',\n {\n factory: () => [\n 'gmail.com',\n 'outlook.com',\n 'icloud.com',\n 'me.com',\n 'yahoo.com',\n 'mail.com',\n 'proton.me',\n ],\n },\n);\n","import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\n\nimport {TUI_EMAIL_PIPE_OPTIONS} from './emails.options';\n\n@Pipe({\n standalone: true,\n name: 'tuiEmails',\n})\nexport class TuiEmailsPipe implements PipeTransform {\n private readonly options = inject(TUI_EMAIL_PIPE_OPTIONS);\n\n public transform(\n query: string,\n suggestions: readonly string[] = this.options,\n ): readonly string[] {\n return query.includes('@')\n ? suggestions\n .map(\n (item) =>\n query.slice(0, Math.max(0, query.indexOf('@') + 1)) + item,\n )\n .filter((item) => item.startsWith(query))\n : [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEa,MAAA,sBAAsB,GAAG,IAAI,cAAc,CACpD,SAAS,GAAG,wBAAwB,GAAG,EAAE,EACzC;IACI,OAAO,EAAE,MAAM;QACX,WAAW;QACX,aAAa;QACb,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,UAAU;QACV,WAAW;AACd,KAAA;AACJ,CAAA;;ACTL,MAIa,aAAa,CAAA;AAJ1B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAe7D,KAAA;AAbU,IAAA,SAAS,CACZ,KAAa,EACb,WAAiC,GAAA,IAAI,CAAC,OAAO,EAAA;AAE7C,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtB,cAAE,WAAW;AACN,iBAAA,GAAG,CACA,CAAC,IAAI,KACD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CACjE;AACA,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;cAC7C,EAAE,CAAC;KACZ;+GAfQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA,EAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,WAAW;AACpB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
@@ -20,7 +20,7 @@ class TuiFilterByInputPipe {
20
20
  return this.filter(items, matcher, (this.textfield
21
21
  ? this.itemsHandlers.stringify()
22
22
  : // TODO(v5): delete backward compatibility
23
- this.host.stringify) || String, this.textfield?.input?.nativeElement.value ||
23
+ this.host.stringify) || String, this.textfield?.value() ||
24
24
  this.host.nativeFocusableElement?.value ||
25
25
  '');
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-pipes-filter-by-input.mjs","sources":["../../../projects/kit/pipes/filter-by-input/filter-by-input.pipe.ts","../../../projects/kit/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.ts"],"sourcesContent":["import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\nimport {TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport type {TuiStringHandler, TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DATA_LIST_HOST} from '@taiga-ui/core/components/data-list';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiIsFlat} from '@taiga-ui/kit/utils';\n\n// TODO: Consider replacing TuiTextfieldComponent with proper token once we refactor textfields\n@Pipe({\n standalone: true,\n name: 'tuiFilterByInput',\n pure: false,\n})\nexport class TuiFilterByInputPipe implements PipeTransform {\n // TODO: Remove optional after legacy controls are dropped\n private readonly textfield = inject(TuiTextfieldComponent, {optional: true});\n private readonly host = inject(TUI_DATA_LIST_HOST);\n private readonly itemsHandlers: TuiItemsHandlers<unknown> =\n inject(TUI_ITEMS_HANDLERS);\n\n public transform<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher?: TuiStringMatcher<T>,\n ): ReadonlyArray<readonly T[]>;\n public transform<T>(items: readonly T[], matcher?: TuiStringMatcher<T>): readonly T[];\n public transform<T>(\n items: ReadonlyArray<readonly T[]> | null,\n matcher?: TuiStringMatcher<T>,\n ): ReadonlyArray<readonly T[]> | null;\n public transform<T>(\n items: readonly T[] | null,\n matcher?: TuiStringMatcher<T>,\n ): readonly T[] | null;\n public transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T> = TUI_DEFAULT_MATCHER,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter<T>(\n items,\n matcher,\n (this.textfield\n ? this.itemsHandlers.stringify()\n : // TODO(v5): delete backward compatibility\n this.host.stringify) || String,\n this.textfield?.input?.nativeElement.value ||\n (this.host as any).nativeFocusableElement?.value ||\n '',\n );\n }\n\n @tuiPure\n private filter<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n if (!items) {\n return null;\n }\n\n return tuiIsFlat(items)\n ? this.filterFlat(items, matcher, stringify, query)\n : this.filter2d(items, matcher, stringify, query);\n }\n\n private filterFlat<T>(\n items: readonly T[],\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): readonly T[] {\n const match = this.getMatch(items, stringify, query);\n\n return match != null\n ? items\n : items.filter((item) => matcher(item, query, stringify));\n }\n\n private filter2d<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> {\n const match = items.find((item) => this.getMatch(item, stringify, query) != null);\n\n return match != null\n ? items\n : items.map((inner) => this.filterFlat(inner, matcher, stringify, query));\n }\n\n private getMatch<T>(\n items: readonly T[],\n stringify: TuiStringHandler<T>,\n query: string,\n ): T | undefined {\n // TODO: Refactor when tui-textfield[multi] is ready\n if ((this.host as any).tagValidator) {\n return undefined;\n }\n\n return items.find(\n (item) => stringify(item).toLocaleLowerCase() === query.toLocaleLowerCase(),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-pipes-filter-by-input.mjs","sources":["../../../projects/kit/pipes/filter-by-input/filter-by-input.pipe.ts","../../../projects/kit/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.ts"],"sourcesContent":["import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\nimport {TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport type {TuiStringHandler, TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DATA_LIST_HOST} from '@taiga-ui/core/components/data-list';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiIsFlat} from '@taiga-ui/kit/utils';\n\n// TODO: Consider replacing TuiTextfieldComponent with proper token once we refactor textfields\n@Pipe({\n standalone: true,\n name: 'tuiFilterByInput',\n pure: false,\n})\nexport class TuiFilterByInputPipe implements PipeTransform {\n // TODO: Remove optional after legacy controls are dropped\n private readonly textfield = inject(TuiTextfieldComponent, {optional: true});\n private readonly host = inject(TUI_DATA_LIST_HOST);\n private readonly itemsHandlers: TuiItemsHandlers<unknown> =\n inject(TUI_ITEMS_HANDLERS);\n\n public transform<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher?: TuiStringMatcher<T>,\n ): ReadonlyArray<readonly T[]>;\n public transform<T>(items: readonly T[], matcher?: TuiStringMatcher<T>): readonly T[];\n public transform<T>(\n items: ReadonlyArray<readonly T[]> | null,\n matcher?: TuiStringMatcher<T>,\n ): ReadonlyArray<readonly T[]> | null;\n public transform<T>(\n items: readonly T[] | null,\n matcher?: TuiStringMatcher<T>,\n ): readonly T[] | null;\n public transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T> = TUI_DEFAULT_MATCHER,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter<T>(\n items,\n matcher,\n (this.textfield\n ? this.itemsHandlers.stringify()\n : // TODO(v5): delete backward compatibility\n this.host.stringify) || String,\n this.textfield?.value() ||\n (this.host as any).nativeFocusableElement?.value ||\n '',\n );\n }\n\n @tuiPure\n private filter<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n if (!items) {\n return null;\n }\n\n return tuiIsFlat(items)\n ? this.filterFlat(items, matcher, stringify, query)\n : this.filter2d(items, matcher, stringify, query);\n }\n\n private filterFlat<T>(\n items: readonly T[],\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): readonly T[] {\n const match = this.getMatch(items, stringify, query);\n\n return match != null\n ? items\n : items.filter((item) => matcher(item, query, stringify));\n }\n\n private filter2d<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> {\n const match = items.find((item) => this.getMatch(item, stringify, query) != null);\n\n return match != null\n ? items\n : items.map((inner) => this.filterFlat(inner, matcher, stringify, query));\n }\n\n private getMatch<T>(\n items: readonly T[],\n stringify: TuiStringHandler<T>,\n query: string,\n ): T | undefined {\n // TODO: Refactor when tui-textfield[multi] is ready\n if ((this.host as any).tagValidator) {\n return undefined;\n }\n\n return items.find(\n (item) => stringify(item).toLocaleLowerCase() === query.toLocaleLowerCase(),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { Optional, Self, inject } from '@angular/core';
1
+ import { InjectionToken, Optional, Self, inject } from '@angular/core';
2
2
  import { NgControl } from '@angular/forms';
3
3
  import { tuiControlValue } from '@taiga-ui/cdk/observables';
4
- import { tuiCreateToken, tuiCreateTokenFromFactory, tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
5
4
  import { map, of } from 'rxjs';
6
5
  import { TUI_IDENTITY_VALUE_TRANSFORMER } from '@taiga-ui/cdk/classes';
7
6
  import { tuiExtractI18n } from '@taiga-ui/i18n/utils';
8
7
  import { TUI_FIRST_DAY, TUI_LAST_DAY } from '@taiga-ui/cdk/date-time';
9
8
  import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
10
9
  import { TUI_DEFAULT_IDENTITY_MATCHER, TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
10
+ import { tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
11
11
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
12
12
  import { TUI_DROPDOWN_COMPONENT } from '@taiga-ui/core/directives/dropdown';
13
13
  import { TUI_MONTHS } from '@taiga-ui/core/tokens';
@@ -16,7 +16,7 @@ import { TUI_MONTHS } from '@taiga-ui/core/tokens';
16
16
  * Stream that emits calendar data change
17
17
  * @deprecated this should be rewritten in v5
18
18
  */
19
- const TUI_CALENDAR_DATE_STREAM = tuiCreateToken();
19
+ const TUI_CALENDAR_DATE_STREAM = new InjectionToken(ngDevMode ? 'TUI_CALENDAR_DATE_STREAM' : '');
20
20
  function tuiDateStreamWithTransformer(transformer) {
21
21
  return {
22
22
  provide: TUI_CALENDAR_DATE_STREAM,
@@ -36,44 +36,94 @@ function tuiControlValueFactory(control, transformer) {
36
36
  /**
37
37
  * Control value transformer of TuiDay to custom value format for InputDate* components
38
38
  */
39
- const TUI_DATE_VALUE_TRANSFORMER = tuiCreateToken(TUI_IDENTITY_VALUE_TRANSFORMER);
39
+ const TUI_DATE_VALUE_TRANSFORMER = new InjectionToken(ngDevMode ? 'TUI_DATE_VALUE_TRANSFORMER' : '', {
40
+ factory: () => TUI_IDENTITY_VALUE_TRANSFORMER,
41
+ });
40
42
  /**
41
43
  * Control value transformer for InputDateRange component
42
44
  */
43
- const TUI_DATE_RANGE_VALUE_TRANSFORMER = tuiCreateToken();
45
+ const TUI_DATE_RANGE_VALUE_TRANSFORMER = new InjectionToken(ngDevMode ? 'TUI_DATE_RANGE_VALUE_TRANSFORMER' : '');
44
46
  /**
45
47
  * Control value transformer for InputDateTime component
46
48
  */
47
- const TUI_DATE_TIME_VALUE_TRANSFORMER = tuiCreateToken();
49
+ const TUI_DATE_TIME_VALUE_TRANSFORMER = new InjectionToken(ngDevMode ? 'TUI_DATE_TIME_VALUE_TRANSFORMER' : '');
48
50
  /**
49
51
  * Control value transformer for InputTime component
50
52
  */
51
- const TUI_TIME_VALUE_TRANSFORMER = tuiCreateToken();
53
+ const TUI_TIME_VALUE_TRANSFORMER = new InjectionToken(ngDevMode ? 'TUI_TIME_VALUE_TRANSFORMER' : '');
52
54
 
53
- const TUI_CONFIRM_WORDS = tuiCreateTokenFromFactory(tuiExtractI18n('confirm'));
54
- const TUI_CANCEL_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('cancel'));
55
- const TUI_DONE_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('done'));
56
- const TUI_MORE_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('more'));
57
- const TUI_HIDE_TEXT = tuiCreateTokenFromFactory(tuiExtractI18n('hide'));
58
- const TUI_SHOW_ALL_TEXT = tuiCreateTokenFromFactory(tuiExtractI18n('showAll'));
59
- const TUI_OTHER_DATE_TEXT = tuiCreateTokenFromFactory(tuiExtractI18n('otherDate'));
60
- const TUI_CHOOSE_DAY_OR_RANGE_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('mobileCalendarTexts'));
61
- const TUI_FROM_TO_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('range'));
62
- const TUI_PLUS_MINUS_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('countTexts'));
63
- const TUI_TIME_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('time'));
64
- const TUI_DATE_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('dateTexts'));
65
- const TUI_DIGITAL_INFORMATION_UNITS = tuiCreateTokenFromFactory(tuiExtractI18n('digitalInformationUnits'));
66
- const TUI_COPY_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('copyTexts'));
67
- const TUI_PASSWORD_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('passwordTexts'));
68
- const TUI_CALENDAR_MONTHS = tuiCreateTokenFromFactory(tuiExtractI18n('shortCalendarMonths'));
69
- const TUI_FILE_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('fileTexts'));
70
- const TUI_PAGINATION_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('pagination'));
71
- const TUI_INPUT_FILE_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('inputFileTexts'));
72
- const TUI_MULTI_SELECT_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('multiSelectTexts'));
73
- const TUI_COUNTRIES = tuiCreateTokenFromFactory(tuiExtractI18n('countries'));
74
- const TUI_PREVIEW_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('previewTexts'));
75
- const TUI_PREVIEW_ZOOM_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('zoomTexts'));
76
- const TUI_INTERNATIONAL_SEARCH = tuiCreateTokenFromFactory(tuiExtractI18n('phoneSearch'));
55
+ const TUI_CONFIRM_WORDS = new InjectionToken(ngDevMode ? 'TUI_CONFIRM_WORDS' : '', {
56
+ factory: tuiExtractI18n('confirm'),
57
+ });
58
+ const TUI_CANCEL_WORD = new InjectionToken(ngDevMode ? 'TUI_CANCEL_WORD' : '', {
59
+ factory: tuiExtractI18n('cancel'),
60
+ });
61
+ const TUI_DONE_WORD = new InjectionToken(ngDevMode ? 'TUI_DONE_WORD' : '', {
62
+ factory: tuiExtractI18n('done'),
63
+ });
64
+ const TUI_MORE_WORD = new InjectionToken(ngDevMode ? 'TUI_MORE_WORD' : '', {
65
+ factory: tuiExtractI18n('more'),
66
+ });
67
+ const TUI_HIDE_TEXT = new InjectionToken(ngDevMode ? 'TUI_HIDE_TEXT' : '', {
68
+ factory: tuiExtractI18n('hide'),
69
+ });
70
+ const TUI_SHOW_ALL_TEXT = new InjectionToken(ngDevMode ? 'TUI_SHOW_ALL_TEXT' : '', {
71
+ factory: tuiExtractI18n('showAll'),
72
+ });
73
+ const TUI_OTHER_DATE_TEXT = new InjectionToken(ngDevMode ? 'TUI_OTHER_DATE_TEXT' : '', {
74
+ factory: tuiExtractI18n('otherDate'),
75
+ });
76
+ const TUI_CHOOSE_DAY_OR_RANGE_TEXTS = new InjectionToken(ngDevMode ? 'TUI_CHOOSE_DAY_OR_RANGE_TEXTS' : '', {
77
+ factory: tuiExtractI18n('mobileCalendarTexts'),
78
+ });
79
+ const TUI_FROM_TO_TEXTS = new InjectionToken(ngDevMode ? 'TUI_FROM_TO_TEXTS' : '', {
80
+ factory: tuiExtractI18n('range'),
81
+ });
82
+ const TUI_PLUS_MINUS_TEXTS = new InjectionToken(ngDevMode ? 'TUI_PLUS_MINUS_TEXTS' : '', {
83
+ factory: tuiExtractI18n('countTexts'),
84
+ });
85
+ const TUI_TIME_TEXTS = new InjectionToken(ngDevMode ? 'TUI_TIME_TEXTS' : '', {
86
+ factory: tuiExtractI18n('time'),
87
+ });
88
+ const TUI_DATE_TEXTS = new InjectionToken(ngDevMode ? 'TUI_DATE_TEXTS' : '', {
89
+ factory: tuiExtractI18n('dateTexts'),
90
+ });
91
+ const TUI_DIGITAL_INFORMATION_UNITS = new InjectionToken(ngDevMode ? 'TUI_DIGITAL_INFORMATION_UNITS' : '', {
92
+ factory: tuiExtractI18n('digitalInformationUnits'),
93
+ });
94
+ const TUI_COPY_TEXTS = new InjectionToken(ngDevMode ? 'TUI_COPY_TEXTS' : '', {
95
+ factory: tuiExtractI18n('copyTexts'),
96
+ });
97
+ const TUI_PASSWORD_TEXTS = new InjectionToken(ngDevMode ? 'TUI_PASSWORD_TEXTS' : '', {
98
+ factory: tuiExtractI18n('passwordTexts'),
99
+ });
100
+ const TUI_CALENDAR_MONTHS = new InjectionToken(ngDevMode ? 'TUI_CALENDAR_MONTHS' : '', {
101
+ factory: tuiExtractI18n('shortCalendarMonths'),
102
+ });
103
+ const TUI_FILE_TEXTS = new InjectionToken(ngDevMode ? 'TUI_FILE_TEXTS' : '', {
104
+ factory: tuiExtractI18n('fileTexts'),
105
+ });
106
+ const TUI_PAGINATION_TEXTS = new InjectionToken(ngDevMode ? 'TUI_PAGINATION_TEXTS' : '', {
107
+ factory: tuiExtractI18n('pagination'),
108
+ });
109
+ const TUI_INPUT_FILE_TEXTS = new InjectionToken(ngDevMode ? 'TUI_INPUT_FILE_TEXTS' : '', {
110
+ factory: tuiExtractI18n('inputFileTexts'),
111
+ });
112
+ const TUI_MULTI_SELECT_TEXTS = new InjectionToken(ngDevMode ? 'TUI_MULTI_SELECT_TEXTS' : '', {
113
+ factory: tuiExtractI18n('multiSelectTexts'),
114
+ });
115
+ const TUI_COUNTRIES = new InjectionToken(ngDevMode ? 'TUI_COUNTRIES' : '', {
116
+ factory: tuiExtractI18n('countries'),
117
+ });
118
+ const TUI_PREVIEW_TEXTS = new InjectionToken(ngDevMode ? 'TUI_PREVIEW_TEXTS' : '', {
119
+ factory: tuiExtractI18n('previewTexts'),
120
+ });
121
+ const TUI_PREVIEW_ZOOM_TEXTS = new InjectionToken(ngDevMode ? 'TUI_PREVIEW_ZOOM_TEXTS' : '', {
122
+ factory: tuiExtractI18n('zoomTexts'),
123
+ });
124
+ const TUI_INTERNATIONAL_SEARCH = new InjectionToken(ngDevMode ? 'TUI_INTERNATIONAL_SEARCH' : '', {
125
+ factory: tuiExtractI18n('phoneSearch'),
126
+ });
77
127
 
78
128
  const TUI_INPUT_DATE_DEFAULT_OPTIONS = {
79
129
  icon: () => '@tui.calendar',
@@ -99,7 +149,9 @@ const TUI_DEFAULT_ITEMS_HANDLERS = {
99
149
  * @deprecated use it only for LEGACY controls. For new controls use the same entity from `@taiga-ui/core`.
100
150
  * TODO(v5): delete
101
151
  */
102
- const TUI_ITEMS_HANDLERS = tuiCreateToken(TUI_DEFAULT_ITEMS_HANDLERS);
152
+ const TUI_ITEMS_HANDLERS = new InjectionToken(ngDevMode ? 'TUI_ITEMS_HANDLERS' : '', {
153
+ factory: () => TUI_DEFAULT_ITEMS_HANDLERS,
154
+ });
103
155
  /**
104
156
  * @deprecated use it only for LEGACY controls. For new controls use the same entity from `@taiga-ui/core`.
105
157
  * TODO(v5): delete
@@ -111,19 +163,21 @@ function tuiItemsHandlersProvider(options) {
111
163
  /**
112
164
  * A component for mobile data picker
113
165
  */
114
- const TUI_MOBILE_CALENDAR = tuiCreateToken();
166
+ const TUI_MOBILE_CALENDAR = new InjectionToken(ngDevMode ? 'TUI_MOBILE_CALENDAR' : '');
115
167
  const TUI_MOBILE_CALENDAR_PROVIDER = {
116
168
  provide: TUI_DROPDOWN_COMPONENT,
117
169
  useFactory: () => (inject(TUI_IS_MOBILE) && inject(TUI_MOBILE_CALENDAR, { optional: true })) ||
118
170
  inject(TUI_DROPDOWN_COMPONENT, { skipSelf: true }),
119
171
  };
120
172
 
121
- const TUI_MONTH_FORMATTER = tuiCreateTokenFromFactory(() => inject(TUI_MONTHS).pipe(map((months) => (date) => {
122
- if (!date) {
123
- return '';
124
- }
125
- return `${months[date.month] ?? ''} ${date.formattedYear}`;
126
- })));
173
+ const TUI_MONTH_FORMATTER = new InjectionToken(ngDevMode ? 'TUI_MONTH_FORMATTER' : '', {
174
+ factory: () => inject(TUI_MONTHS).pipe(map((months) => (date) => {
175
+ if (!date) {
176
+ return '';
177
+ }
178
+ return `${months[date.month] ?? ''} ${date.formattedYear}`;
179
+ })),
180
+ });
127
181
 
128
182
  const TUI_PREVIEW_ICONS_DEFAULT = {
129
183
  rotate: '@tui.rotate-ccw-square',
@@ -133,12 +187,16 @@ const TUI_PREVIEW_ICONS_DEFAULT = {
133
187
  zoomOut: '@tui.minus',
134
188
  zoomReset: '@tui.minimize',
135
189
  };
136
- const TUI_PREVIEW_ICONS = tuiCreateToken(TUI_PREVIEW_ICONS_DEFAULT);
190
+ const TUI_PREVIEW_ICONS = new InjectionToken(ngDevMode ? 'TUI_PREVIEW_ICONS' : '', {
191
+ factory: () => TUI_PREVIEW_ICONS_DEFAULT,
192
+ });
137
193
  function tuiPreviewIconsProvider(icons) {
138
194
  return tuiProvideOptions(TUI_PREVIEW_ICONS, icons, TUI_PREVIEW_ICONS_DEFAULT);
139
195
  }
140
196
 
141
- const TUI_VALIDATION_ERRORS = tuiCreateToken({});
197
+ const TUI_VALIDATION_ERRORS = new InjectionToken(ngDevMode ? 'TUI_VALIDATION_ERRORS' : '', {
198
+ factory: () => ({}),
199
+ });
142
200
  const tuiValidationErrorsProvider = (useValue) => ({ provide: TUI_VALIDATION_ERRORS, useValue });
143
201
 
144
202
  /**