@taiga-ui/kit 2.42.0 → 2.43.0

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 (334) hide show
  1. package/abstract/slider/slider.d.ts +3 -3
  2. package/abstract/taiga-ui-kit-abstract.metadata.json +1 -1
  3. package/bundles/taiga-ui-kit-abstract.umd.js +1 -0
  4. package/bundles/taiga-ui-kit-abstract.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-abstract.umd.min.js +2 -2
  6. package/bundles/taiga-ui-kit-abstract.umd.min.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  8. package/bundles/taiga-ui-kit-components-accordion.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-kit-components-avatar.umd.js +1 -1
  10. package/bundles/taiga-ui-kit-components-avatar.umd.js.map +1 -1
  11. package/bundles/taiga-ui-kit-components-avatar.umd.min.js +1 -1
  12. package/bundles/taiga-ui-kit-components-avatar.umd.min.js.map +1 -1
  13. package/bundles/taiga-ui-kit-components-combo-box.umd.js +1 -10
  14. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  15. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js +1 -1
  16. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js.map +1 -1
  17. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js +65 -45
  18. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js.map +1 -1
  19. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.min.js +2 -2
  20. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.min.js.map +1 -1
  21. package/bundles/taiga-ui-kit-components-input-date-time.umd.js +1 -1
  22. package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
  23. package/bundles/taiga-ui-kit-components-input-date-time.umd.min.js +1 -1
  24. package/bundles/taiga-ui-kit-components-input-date-time.umd.min.js.map +1 -1
  25. package/bundles/taiga-ui-kit-components-input-file.umd.js.map +1 -1
  26. package/bundles/taiga-ui-kit-components-input-file.umd.min.js.map +1 -1
  27. package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
  28. package/bundles/taiga-ui-kit-components-input-files.umd.min.js.map +1 -1
  29. package/bundles/taiga-ui-kit-components-input-month.umd.js +1 -1
  30. package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
  31. package/bundles/taiga-ui-kit-components-input-month.umd.min.js +1 -1
  32. package/bundles/taiga-ui-kit-components-input-month.umd.min.js.map +1 -1
  33. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  34. package/bundles/taiga-ui-kit-components-input-phone.umd.min.js.map +1 -1
  35. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  36. package/bundles/taiga-ui-kit-components-input-range.umd.min.js.map +1 -1
  37. package/bundles/taiga-ui-kit-components-input-tag.umd.js +8 -7
  38. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  39. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js +1 -1
  40. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js.map +1 -1
  41. package/bundles/taiga-ui-kit-components-input-time.umd.js +1 -1
  42. package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
  43. package/bundles/taiga-ui-kit-components-input-time.umd.min.js +1 -1
  44. package/bundles/taiga-ui-kit-components-input-time.umd.min.js.map +1 -1
  45. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +7 -94
  46. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  47. package/bundles/taiga-ui-kit-components-line-clamp.umd.min.js +2 -2
  48. package/bundles/taiga-ui-kit-components-line-clamp.umd.min.js.map +1 -1
  49. package/bundles/taiga-ui-kit-components-multi-select.umd.js +2 -2
  50. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  51. package/bundles/taiga-ui-kit-components-multi-select.umd.min.js +1 -1
  52. package/bundles/taiga-ui-kit-components-multi-select.umd.min.js.map +1 -1
  53. package/bundles/taiga-ui-kit-components-radio-block.umd.js +1 -1
  54. package/bundles/taiga-ui-kit-components-radio-block.umd.js.map +1 -1
  55. package/bundles/taiga-ui-kit-components-radio-block.umd.min.js +1 -1
  56. package/bundles/taiga-ui-kit-components-radio-block.umd.min.js.map +1 -1
  57. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js +1 -1
  58. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js.map +1 -1
  59. package/bundles/taiga-ui-kit-components-radio-labeled.umd.min.js +1 -1
  60. package/bundles/taiga-ui-kit-components-radio-labeled.umd.min.js.map +1 -1
  61. package/bundles/taiga-ui-kit-components-radio.umd.js +4 -2
  62. package/bundles/taiga-ui-kit-components-radio.umd.js.map +1 -1
  63. package/bundles/taiga-ui-kit-components-radio.umd.min.js +1 -1
  64. package/bundles/taiga-ui-kit-components-radio.umd.min.js.map +1 -1
  65. package/bundles/taiga-ui-kit-components-range.umd.js +67 -13
  66. package/bundles/taiga-ui-kit-components-range.umd.js.map +1 -1
  67. package/bundles/taiga-ui-kit-components-range.umd.min.js +2 -2
  68. package/bundles/taiga-ui-kit-components-range.umd.min.js.map +1 -1
  69. package/bundles/taiga-ui-kit-components-select.umd.js +1 -7
  70. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  71. package/bundles/taiga-ui-kit-components-select.umd.min.js +2 -2
  72. package/bundles/taiga-ui-kit-components-select.umd.min.js.map +1 -1
  73. package/bundles/taiga-ui-kit-components-slider.umd.js +49 -48
  74. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  75. package/bundles/taiga-ui-kit-components-slider.umd.min.js +2 -2
  76. package/bundles/taiga-ui-kit-components-slider.umd.min.js.map +1 -1
  77. package/bundles/taiga-ui-kit-components-stepper.umd.js +1 -0
  78. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  79. package/bundles/taiga-ui-kit-components-stepper.umd.min.js +1 -1
  80. package/bundles/taiga-ui-kit-components-stepper.umd.min.js.map +1 -1
  81. package/bundles/taiga-ui-kit-components-tabs.umd.js +6 -4
  82. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  83. package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
  84. package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
  85. package/bundles/taiga-ui-kit-components-text-area.umd.js +2 -2
  86. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  87. package/bundles/taiga-ui-kit-components-text-area.umd.min.js +1 -1
  88. package/bundles/taiga-ui-kit-components-text-area.umd.min.js.map +1 -1
  89. package/bundles/taiga-ui-kit-components-tree.umd.js +1 -1
  90. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  91. package/bundles/taiga-ui-kit-components-tree.umd.min.js +1 -1
  92. package/bundles/taiga-ui-kit-components-tree.umd.min.js.map +1 -1
  93. package/bundles/taiga-ui-kit-directives-dropdown-selection.umd.js.map +1 -1
  94. package/bundles/taiga-ui-kit-directives-dropdown-selection.umd.min.js.map +1 -1
  95. package/bundles/taiga-ui-kit-enums.umd.js +2 -2
  96. package/bundles/taiga-ui-kit-enums.umd.js.map +1 -1
  97. package/bundles/taiga-ui-kit-enums.umd.min.js.map +1 -1
  98. package/bundles/taiga-ui-kit-utils-math.umd.js +253 -4
  99. package/bundles/taiga-ui-kit-utils-math.umd.js.map +1 -1
  100. package/bundles/taiga-ui-kit-utils-math.umd.min.js +15 -1
  101. package/bundles/taiga-ui-kit-utils-math.umd.min.js.map +1 -1
  102. package/bundles/taiga-ui-kit-utils.umd.js +12 -4
  103. package/bundles/taiga-ui-kit-utils.umd.js.map +1 -1
  104. package/bundles/taiga-ui-kit-utils.umd.min.js +1 -1
  105. package/components/accordion/accordion-item/accordion-item.component.d.ts +2 -2
  106. package/components/avatar/taiga-ui-kit-components-avatar.metadata.json +1 -1
  107. package/components/combo-box/combo-box.component.d.ts +1 -2
  108. package/components/combo-box/taiga-ui-kit-components-combo-box.metadata.json +1 -1
  109. package/components/data-list-wrapper/data-list-group-wrapper.component.d.ts +5 -4
  110. package/components/data-list-wrapper/data-list-wrapper.component.d.ts +3 -13
  111. package/components/data-list-wrapper/data-list-wrapper.d.ts +15 -0
  112. package/components/data-list-wrapper/index.d.ts +1 -0
  113. package/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.metadata.json +1 -1
  114. package/components/input-date-time/taiga-ui-kit-components-input-date-time.metadata.json +1 -1
  115. package/components/input-file/file/file.component.d.ts +2 -2
  116. package/components/input-month/taiga-ui-kit-components-input-month.metadata.json +1 -1
  117. package/components/input-phone/input-phone.component.d.ts +2 -2
  118. package/components/input-range/input-range.component.d.ts +1 -1
  119. package/components/input-tag/input-tag.component.d.ts +3 -6
  120. package/components/input-tag/taiga-ui-kit-components-input-tag.metadata.json +1 -1
  121. package/components/input-time/input-time.component.d.ts +2 -2
  122. package/components/input-time/taiga-ui-kit-components-input-time.metadata.json +1 -1
  123. package/components/line-clamp/index.d.ts +0 -1
  124. package/components/line-clamp/line-clamp.component.d.ts +0 -1
  125. package/components/line-clamp/taiga-ui-kit-components-line-clamp.metadata.json +1 -1
  126. package/components/multi-select/multi-select.component.d.ts +2 -2
  127. package/components/multi-select/taiga-ui-kit-components-multi-select.metadata.json +1 -1
  128. package/components/radio/radio.component.d.ts +2 -2
  129. package/components/radio-block/taiga-ui-kit-components-radio-block.metadata.json +1 -1
  130. package/components/radio-labeled/taiga-ui-kit-components-radio-labeled.metadata.json +1 -1
  131. package/components/range/range.component.d.ts +11 -2
  132. package/components/range/taiga-ui-kit-components-range.metadata.json +1 -1
  133. package/components/select/select.component.d.ts +0 -1
  134. package/components/select/taiga-ui-kit-components-select.metadata.json +1 -1
  135. package/components/slider/slider-readonly.directive.d.ts +4 -1
  136. package/components/slider/taiga-ui-kit-components-slider.metadata.json +1 -1
  137. package/components/stepper/taiga-ui-kit-components-stepper.metadata.json +1 -1
  138. package/components/tabs/tabs-with-more/tabs-with-more.component.d.ts +2 -2
  139. package/components/tabs/taiga-ui-kit-components-tabs.metadata.json +1 -1
  140. package/components/text-area/taiga-ui-kit-components-text-area.metadata.json +1 -1
  141. package/components/tree/taiga-ui-kit-components-tree.metadata.json +1 -1
  142. package/directives/dropdown-selection/dropdown-selection.directive.d.ts +1 -1
  143. package/enums/dropdown-position.d.ts +2 -1
  144. package/enums/step-state.d.ts +2 -1
  145. package/enums/taiga-ui-kit-enums.metadata.json +1 -1
  146. package/esm2015/abstract/slider/slider.js +3 -2
  147. package/esm2015/components/accordion/accordion-item/accordion-item.component.js +1 -1
  148. package/esm2015/components/avatar/avatar.component.js +2 -2
  149. package/esm2015/components/combo-box/combo-box.component.js +3 -12
  150. package/esm2015/components/data-list-wrapper/data-list-group-wrapper.component.js +15 -10
  151. package/esm2015/components/data-list-wrapper/data-list-wrapper.component.js +7 -40
  152. package/esm2015/components/data-list-wrapper/data-list-wrapper.js +51 -0
  153. package/esm2015/components/data-list-wrapper/index.js +2 -1
  154. package/esm2015/components/input-date-time/input-date-time.component.js +2 -2
  155. package/esm2015/components/input-file/file/file.component.js +1 -1
  156. package/esm2015/components/input-files/input-files.component.js +1 -1
  157. package/esm2015/components/input-month/input-month.component.js +2 -2
  158. package/esm2015/components/input-phone/input-phone.component.js +1 -1
  159. package/esm2015/components/input-range/input-range.component.js +1 -1
  160. package/esm2015/components/input-tag/input-tag.component.js +9 -8
  161. package/esm2015/components/input-time/input-time.component.js +2 -2
  162. package/esm2015/components/line-clamp/index.js +1 -2
  163. package/esm2015/components/line-clamp/line-clamp.component.js +3 -6
  164. package/esm2015/components/line-clamp/line-clamp.module.js +2 -3
  165. package/esm2015/components/multi-select/multi-select-group/multi-select-group.component.js +2 -2
  166. package/esm2015/components/multi-select/multi-select.component.js +2 -2
  167. package/esm2015/components/radio/radio.component.js +5 -3
  168. package/esm2015/components/radio-block/radio-block.component.js +2 -2
  169. package/esm2015/components/radio-labeled/radio-labeled.component.js +2 -2
  170. package/esm2015/components/range/range.component.js +70 -13
  171. package/esm2015/components/select/select.component.js +3 -9
  172. package/esm2015/components/slider/slider-key-steps.directive.js +9 -28
  173. package/esm2015/components/slider/slider-readonly.directive.js +38 -9
  174. package/esm2015/components/stepper/stepper.component.js +3 -2
  175. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +8 -6
  176. package/esm2015/components/text-area/text-area.component.js +3 -3
  177. package/esm2015/components/tree/components/tree/tree.component.js +2 -2
  178. package/esm2015/directives/dropdown-selection/dropdown-selection.directive.js +1 -1
  179. package/esm2015/enums/dropdown-position.js +2 -2
  180. package/esm2015/enums/step-state.js +2 -2
  181. package/esm2015/utils/index.js +2 -1
  182. package/esm2015/utils/math/index.js +2 -1
  183. package/esm2015/utils/math/key-steps.js +23 -0
  184. package/esm5/abstract/slider/slider.js +3 -2
  185. package/esm5/components/accordion/accordion-item/accordion-item.component.js +1 -1
  186. package/esm5/components/avatar/avatar.component.js +2 -2
  187. package/esm5/components/combo-box/combo-box.component.js +3 -12
  188. package/esm5/components/data-list-wrapper/data-list-group-wrapper.component.js +15 -10
  189. package/esm5/components/data-list-wrapper/data-list-wrapper.component.js +12 -55
  190. package/esm5/components/data-list-wrapper/data-list-wrapper.js +64 -0
  191. package/esm5/components/data-list-wrapper/index.js +2 -1
  192. package/esm5/components/input-date-time/input-date-time.component.js +2 -2
  193. package/esm5/components/input-file/file/file.component.js +1 -1
  194. package/esm5/components/input-files/input-files.component.js +1 -1
  195. package/esm5/components/input-month/input-month.component.js +2 -2
  196. package/esm5/components/input-phone/input-phone.component.js +1 -1
  197. package/esm5/components/input-range/input-range.component.js +1 -1
  198. package/esm5/components/input-tag/input-tag.component.js +9 -8
  199. package/esm5/components/input-time/input-time.component.js +2 -2
  200. package/esm5/components/line-clamp/index.js +1 -2
  201. package/esm5/components/line-clamp/line-clamp.component.js +3 -10
  202. package/esm5/components/line-clamp/line-clamp.module.js +2 -3
  203. package/esm5/components/multi-select/multi-select-group/multi-select-group.component.js +2 -2
  204. package/esm5/components/multi-select/multi-select.component.js +2 -2
  205. package/esm5/components/radio/radio.component.js +5 -3
  206. package/esm5/components/radio-block/radio-block.component.js +2 -2
  207. package/esm5/components/radio-labeled/radio-labeled.component.js +2 -2
  208. package/esm5/components/range/range.component.js +68 -12
  209. package/esm5/components/select/select.component.js +3 -9
  210. package/esm5/components/slider/slider-key-steps.directive.js +11 -43
  211. package/esm5/components/slider/slider-readonly.directive.js +45 -9
  212. package/esm5/components/stepper/stepper.component.js +3 -2
  213. package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +8 -6
  214. package/esm5/components/text-area/text-area.component.js +3 -3
  215. package/esm5/components/tree/components/tree/tree.component.js +2 -2
  216. package/esm5/directives/dropdown-selection/dropdown-selection.directive.js +1 -1
  217. package/esm5/enums/dropdown-position.js +2 -2
  218. package/esm5/enums/step-state.js +2 -2
  219. package/esm5/utils/index.js +2 -1
  220. package/esm5/utils/math/index.js +2 -1
  221. package/esm5/utils/math/key-steps.js +30 -0
  222. package/fesm2015/taiga-ui-kit-abstract.js +2 -1
  223. package/fesm2015/taiga-ui-kit-abstract.js.map +1 -1
  224. package/fesm2015/taiga-ui-kit-components-accordion.js.map +1 -1
  225. package/fesm2015/taiga-ui-kit-components-avatar.js +1 -1
  226. package/fesm2015/taiga-ui-kit-components-avatar.js.map +1 -1
  227. package/fesm2015/taiga-ui-kit-components-combo-box.js +2 -11
  228. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  229. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js +56 -38
  230. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js.map +1 -1
  231. package/fesm2015/taiga-ui-kit-components-input-date-time.js +1 -1
  232. package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
  233. package/fesm2015/taiga-ui-kit-components-input-file.js.map +1 -1
  234. package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
  235. package/fesm2015/taiga-ui-kit-components-input-month.js +1 -1
  236. package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
  237. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  238. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  239. package/fesm2015/taiga-ui-kit-components-input-tag.js +8 -7
  240. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  241. package/fesm2015/taiga-ui-kit-components-input-time.js +1 -1
  242. package/fesm2015/taiga-ui-kit-components-input-time.js.map +1 -1
  243. package/fesm2015/taiga-ui-kit-components-line-clamp.js +9 -91
  244. package/fesm2015/taiga-ui-kit-components-line-clamp.js.map +1 -1
  245. package/fesm2015/taiga-ui-kit-components-multi-select.js +2 -2
  246. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  247. package/fesm2015/taiga-ui-kit-components-radio-block.js +1 -1
  248. package/fesm2015/taiga-ui-kit-components-radio-block.js.map +1 -1
  249. package/fesm2015/taiga-ui-kit-components-radio-labeled.js +1 -1
  250. package/fesm2015/taiga-ui-kit-components-radio-labeled.js.map +1 -1
  251. package/fesm2015/taiga-ui-kit-components-radio.js +4 -2
  252. package/fesm2015/taiga-ui-kit-components-radio.js.map +1 -1
  253. package/fesm2015/taiga-ui-kit-components-range.js +70 -14
  254. package/fesm2015/taiga-ui-kit-components-range.js.map +1 -1
  255. package/fesm2015/taiga-ui-kit-components-select.js +2 -8
  256. package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
  257. package/fesm2015/taiga-ui-kit-components-slider.js +41 -34
  258. package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
  259. package/fesm2015/taiga-ui-kit-components-stepper.js +2 -1
  260. package/fesm2015/taiga-ui-kit-components-stepper.js.map +1 -1
  261. package/fesm2015/taiga-ui-kit-components-tabs.js +7 -5
  262. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  263. package/fesm2015/taiga-ui-kit-components-text-area.js +2 -2
  264. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  265. package/fesm2015/taiga-ui-kit-components-tree.js +1 -1
  266. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  267. package/fesm2015/taiga-ui-kit-directives-dropdown-selection.js.map +1 -1
  268. package/fesm2015/taiga-ui-kit-enums.js +2 -2
  269. package/fesm2015/taiga-ui-kit-enums.js.map +1 -1
  270. package/fesm2015/taiga-ui-kit-utils-math.js +25 -1
  271. package/fesm2015/taiga-ui-kit-utils-math.js.map +1 -1
  272. package/fesm2015/taiga-ui-kit-utils.js +1 -0
  273. package/fesm2015/taiga-ui-kit-utils.js.map +1 -1
  274. package/fesm5/taiga-ui-kit-abstract.js +2 -1
  275. package/fesm5/taiga-ui-kit-abstract.js.map +1 -1
  276. package/fesm5/taiga-ui-kit-components-accordion.js.map +1 -1
  277. package/fesm5/taiga-ui-kit-components-avatar.js +1 -1
  278. package/fesm5/taiga-ui-kit-components-avatar.js.map +1 -1
  279. package/fesm5/taiga-ui-kit-components-combo-box.js +2 -11
  280. package/fesm5/taiga-ui-kit-components-combo-box.js.map +1 -1
  281. package/fesm5/taiga-ui-kit-components-data-list-wrapper.js +66 -45
  282. package/fesm5/taiga-ui-kit-components-data-list-wrapper.js.map +1 -1
  283. package/fesm5/taiga-ui-kit-components-input-date-time.js +1 -1
  284. package/fesm5/taiga-ui-kit-components-input-date-time.js.map +1 -1
  285. package/fesm5/taiga-ui-kit-components-input-file.js.map +1 -1
  286. package/fesm5/taiga-ui-kit-components-input-files.js.map +1 -1
  287. package/fesm5/taiga-ui-kit-components-input-month.js +1 -1
  288. package/fesm5/taiga-ui-kit-components-input-month.js.map +1 -1
  289. package/fesm5/taiga-ui-kit-components-input-phone.js.map +1 -1
  290. package/fesm5/taiga-ui-kit-components-input-range.js.map +1 -1
  291. package/fesm5/taiga-ui-kit-components-input-tag.js +8 -7
  292. package/fesm5/taiga-ui-kit-components-input-tag.js.map +1 -1
  293. package/fesm5/taiga-ui-kit-components-input-time.js +1 -1
  294. package/fesm5/taiga-ui-kit-components-input-time.js.map +1 -1
  295. package/fesm5/taiga-ui-kit-components-line-clamp.js +9 -97
  296. package/fesm5/taiga-ui-kit-components-line-clamp.js.map +1 -1
  297. package/fesm5/taiga-ui-kit-components-multi-select.js +2 -2
  298. package/fesm5/taiga-ui-kit-components-multi-select.js.map +1 -1
  299. package/fesm5/taiga-ui-kit-components-radio-block.js +1 -1
  300. package/fesm5/taiga-ui-kit-components-radio-block.js.map +1 -1
  301. package/fesm5/taiga-ui-kit-components-radio-labeled.js +1 -1
  302. package/fesm5/taiga-ui-kit-components-radio-labeled.js.map +1 -1
  303. package/fesm5/taiga-ui-kit-components-radio.js +4 -2
  304. package/fesm5/taiga-ui-kit-components-radio.js.map +1 -1
  305. package/fesm5/taiga-ui-kit-components-range.js +68 -13
  306. package/fesm5/taiga-ui-kit-components-range.js.map +1 -1
  307. package/fesm5/taiga-ui-kit-components-select.js +2 -8
  308. package/fesm5/taiga-ui-kit-components-select.js.map +1 -1
  309. package/fesm5/taiga-ui-kit-components-slider.js +49 -48
  310. package/fesm5/taiga-ui-kit-components-slider.js.map +1 -1
  311. package/fesm5/taiga-ui-kit-components-stepper.js +2 -1
  312. package/fesm5/taiga-ui-kit-components-stepper.js.map +1 -1
  313. package/fesm5/taiga-ui-kit-components-tabs.js +7 -5
  314. package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
  315. package/fesm5/taiga-ui-kit-components-text-area.js +2 -2
  316. package/fesm5/taiga-ui-kit-components-text-area.js.map +1 -1
  317. package/fesm5/taiga-ui-kit-components-tree.js +1 -1
  318. package/fesm5/taiga-ui-kit-components-tree.js.map +1 -1
  319. package/fesm5/taiga-ui-kit-directives-dropdown-selection.js.map +1 -1
  320. package/fesm5/taiga-ui-kit-enums.js +2 -2
  321. package/fesm5/taiga-ui-kit-enums.js.map +1 -1
  322. package/fesm5/taiga-ui-kit-utils-math.js +32 -1
  323. package/fesm5/taiga-ui-kit-utils-math.js.map +1 -1
  324. package/fesm5/taiga-ui-kit-utils.js +1 -0
  325. package/fesm5/taiga-ui-kit-utils.js.map +1 -1
  326. package/package.json +4 -4
  327. package/utils/index.d.ts +1 -0
  328. package/utils/math/index.d.ts +1 -0
  329. package/utils/math/key-steps.d.ts +4 -0
  330. package/utils/math/taiga-ui-kit-utils-math.metadata.json +1 -1
  331. package/utils/taiga-ui-kit-utils.metadata.json +1 -1
  332. package/components/line-clamp/line-clamp.directive.d.ts +0 -11
  333. package/esm2015/components/line-clamp/line-clamp.directive.js +0 -87
  334. package/esm5/components/line-clamp/line-clamp.directive.js +0 -89
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-directives-dropdown-selection.js","sources":["ng://@taiga-ui/kit/directives/dropdown-selection/dropdown-selection.directive.ts","ng://@taiga-ui/kit/directives/dropdown-selection/dropdown-selection.module.ts","ng://@taiga-ui/kit/directives/dropdown-selection/taiga-ui-kit-directives-dropdown-selection.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectorRef,\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ALWAYS_TRUE_HANDLER,\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_SPACE,\n getNativeFocused,\n px,\n TuiActiveZoneDirective,\n TuiBooleanHandler,\n TuiDestroyService,\n TuiParentsScrollService,\n TuiPortalService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {\n AbstractTuiDropdown,\n TUI_DOCUMENT_OR_SHADOW_ROOT,\n TUI_DROPDOWN_DIRECTIVE,\n TUI_ELEMENT_REF,\n TuiDropdown,\n} from '@taiga-ui/core';\nimport {getWordRange} from '@taiga-ui/kit/utils/dom';\nimport {merge} from 'rxjs';\nimport {map, switchMapTo, takeUntil} from 'rxjs/operators';\n\nconst EMPTY_RECT: ClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n};\n\n// @dynamic\n@Directive({\n selector: '[tuiDropdownSelection]:not(ng-container)',\n providers: [\n {\n provide: TUI_DROPDOWN_DIRECTIVE,\n useExisting: forwardRef(() => TuiDropdownSelectionDirective),\n },\n TuiParentsScrollService,\n TuiDestroyService,\n ],\n})\nexport class TuiDropdownSelectionDirective\n extends AbstractTuiDropdown\n implements TuiDropdown, OnDestroy\n{\n private visibilityHandler: TuiBooleanHandler<Range> = ALWAYS_TRUE_HANDLER;\n private readonly documentRef: Document;\n private ghost?: HTMLElement;\n private range?: Range;\n\n @Input()\n set tuiDropdownSelection(handler: TuiBooleanHandler<Range> | undefined) {\n if (!handler || !this.range) {\n return;\n }\n\n const inHostAndValid =\n this.elementRef.nativeElement.contains(this.range.commonAncestorContainer) &&\n handler(this.range);\n\n this.visibilityHandler = handler;\n this.toggleDropdownBox(inHostAndValid);\n }\n\n @Input('tuiDropdownSelectionPosition')\n position: 'selection' | 'word' | 'tag' = 'selection';\n\n constructor(\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(ComponentFactoryResolver)\n componentFactoryResolver: ComponentFactoryResolver,\n @Inject(Injector) injector: Injector,\n @Inject(TuiPortalService) portalService: TuiPortalService,\n @Host() @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(TuiActiveZoneDirective)\n @Optional()\n activeZone: TuiActiveZoneDirective | null,\n @Inject(TUI_DOCUMENT_OR_SHADOW_ROOT)\n @Optional()\n shadowRootRef: Document | null,\n @Inject(TUI_ELEMENT_REF)\n @Optional()\n customElementRef: ElementRef<HTMLElement> | null,\n @Inject(TuiDestroyService)\n destroy$: TuiDestroyService,\n @Inject(TuiParentsScrollService) readonly refresh$: TuiParentsScrollService,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n ) {\n super(\n componentFactoryResolver,\n injector,\n portalService,\n customElementRef || elementRef,\n activeZone,\n );\n this.documentRef = shadowRootRef || documentRef;\n\n // SSR protection\n if (!this.documentRef.createRange) {\n return;\n }\n\n this.range = this.documentRef.createRange();\n\n const {nativeElement} = this.elementRef;\n\n merge(\n typedFromEvent(this.documentRef, 'mouseup'),\n typedFromEvent(nativeElement, 'mousedown').pipe(\n switchMapTo(\n typedFromEvent(nativeElement, 'mousemove').pipe(\n takeUntil(typedFromEvent(this.documentRef, 'mouseup')),\n ),\n ),\n ),\n typedFromEvent(nativeElement, 'keyup'),\n )\n .pipe(\n map(() => {\n const active = getNativeFocused(this.documentRef);\n const selection = this.documentRef.getSelection();\n\n // TODO: iframe warning\n if (\n (active instanceof HTMLInputElement ||\n active instanceof HTMLTextAreaElement) &&\n nativeElement.contains(active)\n ) {\n return this.veryVerySadInputFix(active);\n }\n\n return selection && selection.rangeCount\n ? selection.getRangeAt(0)\n : this.range;\n }),\n takeUntil(destroy$),\n )\n .subscribe(range => {\n const contained =\n !!range && nativeElement.contains(range.commonAncestorContainer);\n\n this.range = contained ? range : this.range;\n\n const valid =\n contained &&\n (!this.visibilityHandler ||\n !this.range ||\n this.visibilityHandler(this.range));\n\n this.toggleDropdownBox(!!range && (valid || this.inDropdown(range)));\n });\n }\n\n get clientRect(): ClientRect {\n const {defaultView} = this.documentRef;\n const {rangeRect} = this;\n const frameElement = defaultView ? defaultView.frameElement : null;\n\n if (!frameElement) {\n return rangeRect;\n }\n\n const documentRect = frameElement.getBoundingClientRect();\n\n return {\n top: rangeRect.top + documentRect.top,\n left: rangeRect.left + documentRect.left,\n right: rangeRect.left + documentRect.left + rangeRect.width,\n bottom: rangeRect.top + documentRect.top + rangeRect.height,\n width: rangeRect.width,\n height: rangeRect.height,\n };\n }\n\n ngOnDestroy() {\n this.closeDropdownBox();\n\n if (this.ghost) {\n this.renderer.removeChild(\n this.viewContainerRef.element.nativeElement,\n this.ghost,\n );\n }\n }\n\n /**\n * get ClientRect of current Range according to provided position\n */\n private get rangeRect(): ClientRect {\n if (!this.range) {\n return EMPTY_RECT;\n }\n\n switch (this.position) {\n case 'tag': {\n const {commonAncestorContainer} = this.range;\n const element =\n commonAncestorContainer.nodeType === Node.ELEMENT_NODE\n ? commonAncestorContainer\n : commonAncestorContainer.parentNode;\n\n return (element as Element).getBoundingClientRect();\n }\n case 'word':\n return getWordRange(this.range).getBoundingClientRect();\n default:\n return this.range.getBoundingClientRect();\n }\n }\n\n /**\n * Toggle dropdown visibility (has to be in ngZone.run because it could be initiated inside iframe in Editor)\n */\n private toggleDropdownBox(visible: boolean) {\n this.ngZone.run(() => {\n if (visible) {\n this.openDropdownBox();\n } else {\n this.closeDropdownBox();\n }\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Check if Node is inside dropdown\n */\n private boxContains(node: Node): boolean {\n return (\n !!this.dropdownBoxRef &&\n this.dropdownBoxRef.location.nativeElement.contains(node)\n );\n }\n\n /**\n * Check if given range is at least partially inside dropdown\n */\n private inDropdown(range: Range): boolean {\n const {startContainer, endContainer} = range;\n const inDropdown = this.boxContains(range.commonAncestorContainer);\n const hostToDropdown =\n this.boxContains(endContainer) &&\n this.elementRef.nativeElement.contains(startContainer);\n const dropdownToHost =\n this.boxContains(startContainer) &&\n this.elementRef.nativeElement.contains(endContainer);\n\n return inDropdown || hostToDropdown || dropdownToHost;\n }\n\n /**\n * Position invisible DIV and create Range similar to selected range inside input/textarea\n */\n private veryVerySadInputFix(element: HTMLInputElement | HTMLTextAreaElement): Range {\n const {ghost = this.initGhost(element)} = this;\n const {top, left, width, height} = element.getBoundingClientRect();\n const {selectionStart, selectionEnd} = element;\n const range = this.documentRef.createRange();\n const hostRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n ghost.style.top = px(top - hostRect.top);\n ghost.style.left = px(left - hostRect.left);\n ghost.style.width = px(width);\n ghost.style.height = px(height);\n ghost.textContent = CHAR_ZERO_WIDTH_SPACE + element.value + CHAR_NO_BREAK_SPACE;\n\n range.setStart(ghost.firstChild!, selectionStart || 0);\n range.setEnd(ghost.firstChild!, selectionEnd || 0);\n\n return range;\n }\n\n /**\n * Create an invisible DIV styled exactly like input/textarea element inside directive\n */\n private initGhost(element: HTMLInputElement | HTMLTextAreaElement): HTMLElement {\n const ghost = this.renderer.createElement('div');\n const {nativeElement} = this.viewContainerRef.element;\n const {font, letterSpacing, textTransform, padding} = getComputedStyle(element);\n\n ghost.style.position = 'absolute';\n ghost.style.pointerEvents = 'none';\n ghost.style.opacity = '0';\n ghost.style.whiteSpace = 'pre-wrap';\n ghost.style.font = font;\n ghost.style.letterSpacing = letterSpacing;\n ghost.style.textTransform = textTransform;\n ghost.style.padding = padding;\n\n this.renderer.appendChild(nativeElement, ghost);\n this.ghost = ghost;\n\n return ghost;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiDropdownBoxModule} from '@taiga-ui/core';\n\nimport {TuiDropdownSelectionDirective} from './dropdown-selection.directive';\n\n@NgModule({\n imports: [TuiDropdownBoxModule],\n declarations: [TuiDropdownSelectionDirective],\n exports: [TuiDropdownSelectionDirective],\n})\nexport class TuiDropdownSelectionModule {}\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-dropdown-selection.js","sources":["ng://@taiga-ui/kit/directives/dropdown-selection/dropdown-selection.directive.ts","ng://@taiga-ui/kit/directives/dropdown-selection/dropdown-selection.module.ts","ng://@taiga-ui/kit/directives/dropdown-selection/taiga-ui-kit-directives-dropdown-selection.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectorRef,\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ALWAYS_TRUE_HANDLER,\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_SPACE,\n getNativeFocused,\n px,\n TuiActiveZoneDirective,\n TuiBooleanHandler,\n TuiDestroyService,\n TuiParentsScrollService,\n TuiPortalService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {\n AbstractTuiDropdown,\n TUI_DOCUMENT_OR_SHADOW_ROOT,\n TUI_DROPDOWN_DIRECTIVE,\n TUI_ELEMENT_REF,\n TuiDropdown,\n} from '@taiga-ui/core';\nimport {getWordRange} from '@taiga-ui/kit/utils/dom';\nimport {merge} from 'rxjs';\nimport {map, switchMapTo, takeUntil} from 'rxjs/operators';\n\nconst EMPTY_RECT: ClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n};\n\n// @dynamic\n@Directive({\n selector: '[tuiDropdownSelection]:not(ng-container)',\n providers: [\n {\n provide: TUI_DROPDOWN_DIRECTIVE,\n useExisting: forwardRef(() => TuiDropdownSelectionDirective),\n },\n TuiParentsScrollService,\n TuiDestroyService,\n ],\n})\nexport class TuiDropdownSelectionDirective\n extends AbstractTuiDropdown\n implements TuiDropdown, OnDestroy\n{\n private visibilityHandler: TuiBooleanHandler<Range> = ALWAYS_TRUE_HANDLER;\n private readonly documentRef: Document;\n private ghost?: HTMLElement;\n private range?: Range;\n\n @Input()\n set tuiDropdownSelection(handler: TuiBooleanHandler<Range> | '') {\n if (!handler || !this.range) {\n return;\n }\n\n const inHostAndValid =\n this.elementRef.nativeElement.contains(this.range.commonAncestorContainer) &&\n handler(this.range);\n\n this.visibilityHandler = handler;\n this.toggleDropdownBox(inHostAndValid);\n }\n\n @Input('tuiDropdownSelectionPosition')\n position: 'selection' | 'word' | 'tag' = 'selection';\n\n constructor(\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(ComponentFactoryResolver)\n componentFactoryResolver: ComponentFactoryResolver,\n @Inject(Injector) injector: Injector,\n @Inject(TuiPortalService) portalService: TuiPortalService,\n @Host() @Inject(ElementRef) elementRef: ElementRef<HTMLElement>,\n @Inject(TuiActiveZoneDirective)\n @Optional()\n activeZone: TuiActiveZoneDirective | null,\n @Inject(TUI_DOCUMENT_OR_SHADOW_ROOT)\n @Optional()\n shadowRootRef: Document | null,\n @Inject(TUI_ELEMENT_REF)\n @Optional()\n customElementRef: ElementRef<HTMLElement> | null,\n @Inject(TuiDestroyService)\n destroy$: TuiDestroyService,\n @Inject(TuiParentsScrollService) readonly refresh$: TuiParentsScrollService,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n ) {\n super(\n componentFactoryResolver,\n injector,\n portalService,\n customElementRef || elementRef,\n activeZone,\n );\n this.documentRef = shadowRootRef || documentRef;\n\n // SSR protection\n if (!this.documentRef.createRange) {\n return;\n }\n\n this.range = this.documentRef.createRange();\n\n const {nativeElement} = this.elementRef;\n\n merge(\n typedFromEvent(this.documentRef, 'mouseup'),\n typedFromEvent(nativeElement, 'mousedown').pipe(\n switchMapTo(\n typedFromEvent(nativeElement, 'mousemove').pipe(\n takeUntil(typedFromEvent(this.documentRef, 'mouseup')),\n ),\n ),\n ),\n typedFromEvent(nativeElement, 'keyup'),\n )\n .pipe(\n map(() => {\n const active = getNativeFocused(this.documentRef);\n const selection = this.documentRef.getSelection();\n\n // TODO: iframe warning\n if (\n (active instanceof HTMLInputElement ||\n active instanceof HTMLTextAreaElement) &&\n nativeElement.contains(active)\n ) {\n return this.veryVerySadInputFix(active);\n }\n\n return selection && selection.rangeCount\n ? selection.getRangeAt(0)\n : this.range;\n }),\n takeUntil(destroy$),\n )\n .subscribe(range => {\n const contained =\n !!range && nativeElement.contains(range.commonAncestorContainer);\n\n this.range = contained ? range : this.range;\n\n const valid =\n contained &&\n (!this.visibilityHandler ||\n !this.range ||\n this.visibilityHandler(this.range));\n\n this.toggleDropdownBox(!!range && (valid || this.inDropdown(range)));\n });\n }\n\n get clientRect(): ClientRect {\n const {defaultView} = this.documentRef;\n const {rangeRect} = this;\n const frameElement = defaultView ? defaultView.frameElement : null;\n\n if (!frameElement) {\n return rangeRect;\n }\n\n const documentRect = frameElement.getBoundingClientRect();\n\n return {\n top: rangeRect.top + documentRect.top,\n left: rangeRect.left + documentRect.left,\n right: rangeRect.left + documentRect.left + rangeRect.width,\n bottom: rangeRect.top + documentRect.top + rangeRect.height,\n width: rangeRect.width,\n height: rangeRect.height,\n };\n }\n\n ngOnDestroy() {\n this.closeDropdownBox();\n\n if (this.ghost) {\n this.renderer.removeChild(\n this.viewContainerRef.element.nativeElement,\n this.ghost,\n );\n }\n }\n\n /**\n * get ClientRect of current Range according to provided position\n */\n private get rangeRect(): ClientRect {\n if (!this.range) {\n return EMPTY_RECT;\n }\n\n switch (this.position) {\n case 'tag': {\n const {commonAncestorContainer} = this.range;\n const element =\n commonAncestorContainer.nodeType === Node.ELEMENT_NODE\n ? commonAncestorContainer\n : commonAncestorContainer.parentNode;\n\n return (element as Element).getBoundingClientRect();\n }\n case 'word':\n return getWordRange(this.range).getBoundingClientRect();\n default:\n return this.range.getBoundingClientRect();\n }\n }\n\n /**\n * Toggle dropdown visibility (has to be in ngZone.run because it could be initiated inside iframe in Editor)\n */\n private toggleDropdownBox(visible: boolean) {\n this.ngZone.run(() => {\n if (visible) {\n this.openDropdownBox();\n } else {\n this.closeDropdownBox();\n }\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Check if Node is inside dropdown\n */\n private boxContains(node: Node): boolean {\n return (\n !!this.dropdownBoxRef &&\n this.dropdownBoxRef.location.nativeElement.contains(node)\n );\n }\n\n /**\n * Check if given range is at least partially inside dropdown\n */\n private inDropdown(range: Range): boolean {\n const {startContainer, endContainer} = range;\n const inDropdown = this.boxContains(range.commonAncestorContainer);\n const hostToDropdown =\n this.boxContains(endContainer) &&\n this.elementRef.nativeElement.contains(startContainer);\n const dropdownToHost =\n this.boxContains(startContainer) &&\n this.elementRef.nativeElement.contains(endContainer);\n\n return inDropdown || hostToDropdown || dropdownToHost;\n }\n\n /**\n * Position invisible DIV and create Range similar to selected range inside input/textarea\n */\n private veryVerySadInputFix(element: HTMLInputElement | HTMLTextAreaElement): Range {\n const {ghost = this.initGhost(element)} = this;\n const {top, left, width, height} = element.getBoundingClientRect();\n const {selectionStart, selectionEnd} = element;\n const range = this.documentRef.createRange();\n const hostRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n ghost.style.top = px(top - hostRect.top);\n ghost.style.left = px(left - hostRect.left);\n ghost.style.width = px(width);\n ghost.style.height = px(height);\n ghost.textContent = CHAR_ZERO_WIDTH_SPACE + element.value + CHAR_NO_BREAK_SPACE;\n\n range.setStart(ghost.firstChild!, selectionStart || 0);\n range.setEnd(ghost.firstChild!, selectionEnd || 0);\n\n return range;\n }\n\n /**\n * Create an invisible DIV styled exactly like input/textarea element inside directive\n */\n private initGhost(element: HTMLInputElement | HTMLTextAreaElement): HTMLElement {\n const ghost = this.renderer.createElement('div');\n const {nativeElement} = this.viewContainerRef.element;\n const {font, letterSpacing, textTransform, padding} = getComputedStyle(element);\n\n ghost.style.position = 'absolute';\n ghost.style.pointerEvents = 'none';\n ghost.style.opacity = '0';\n ghost.style.whiteSpace = 'pre-wrap';\n ghost.style.font = font;\n ghost.style.letterSpacing = letterSpacing;\n ghost.style.textTransform = textTransform;\n ghost.style.padding = padding;\n\n this.renderer.appendChild(nativeElement, ghost);\n this.ghost = ghost;\n\n return ghost;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiDropdownBoxModule} from '@taiga-ui/core';\n\nimport {TuiDropdownSelectionDirective} from './dropdown-selection.directive';\n\n@NgModule({\n imports: [TuiDropdownBoxModule],\n declarations: [TuiDropdownSelectionDirective],\n exports: [TuiDropdownSelectionDirective],\n})\nexport class TuiDropdownSelectionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ var TuiBorders;
8
8
  })(TuiBorders || (TuiBorders = {}));
9
9
 
10
10
  /**
11
- * @deprecated use string values
11
+ * @deprecated use {@link TuiDropdownPositionT}
12
12
  */
13
13
  var TuiDropdownPosition;
14
14
  (function (TuiDropdownPosition) {
@@ -57,7 +57,7 @@ var TuiStatus;
57
57
  })(TuiStatus || (TuiStatus = {}));
58
58
 
59
59
  /**
60
- * @deprecated use string values
60
+ * @deprecated use {@link TuiStepStateT}
61
61
  */
62
62
  var TuiStepState;
63
63
  (function (TuiStepState) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-enums.js","sources":["ng://@taiga-ui/kit/enums/borders.ts","ng://@taiga-ui/kit/enums/dropdown-position.ts","ng://@taiga-ui/kit/enums/file-state.ts","ng://@taiga-ui/kit/enums/marker-icon-mode.ts","ng://@taiga-ui/kit/enums/status.ts","ng://@taiga-ui/kit/enums/step-state.ts","ng://@taiga-ui/kit/enums/text-align.ts","ng://@taiga-ui/kit/enums/taiga-ui-kit-enums.ts"],"sourcesContent":["/**\n * @deprecated use string values\n */\nexport const enum TuiBorders {\n All = 'all',\n TopBottom = 'top-bottom',\n}\n","/**\n * @deprecated use string values\n */\nexport const enum TuiDropdownPosition {\n Selection = 'selection',\n Word = 'word',\n Tag = 'tag',\n}\n","/**\n * @internal\n */\nexport const enum TuiFileState {\n Error = 'error',\n Deleted = 'deleted',\n Loading = 'loading',\n Normal = 'normal',\n}\n\nexport type TuiFileStateT = 'error' | 'deleted' | 'loading' | 'normal';\n","/**\n * @deprecated use join type {@link TuiMarkerIconModeT}\n */\nexport const enum TuiMarkerIconMode {\n Link = 'link',\n Primary = 'primary',\n Warning = 'warning',\n White = 'white',\n Secondary = 'secondary',\n Success = 'success',\n Error = 'error',\n OnDark = 'onDark',\n}\n","/**\n * @deprecated use join type {@link TuiStatusT}\n */\nexport const enum TuiStatus {\n Default = 'default',\n Primary = 'primary',\n Custom = 'custom',\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n}\n","/**\n * @deprecated use string values\n */\nexport const enum TuiStepState {\n Normal = 'normal',\n Error = 'error',\n Pass = 'pass',\n}\n","/**\n * @deprecated use string values\n */\nexport const enum TuiTextAlign {\n Left = 'left',\n Center = 'center',\n Right = 'right',\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;IAGkB;AAAlB,WAAkB,UAAU;IACxB,yBAAW,CAAA;IACX,sCAAwB,CAAA;AAC5B,CAAC,EAHiB,UAAU,KAAV,UAAU;;ACH5B;;;IAGkB;AAAlB,WAAkB,mBAAmB;IACjC,8CAAuB,CAAA;IACvB,oCAAa,CAAA;IACb,kCAAW,CAAA;AACf,CAAC,EAJiB,mBAAmB,KAAnB,mBAAmB;;ACHrC;;;IAGkB;AAAlB,WAAkB,YAAY;IAC1B,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AACrB,CAAC,EALiB,YAAY,KAAZ,YAAY;;ACH9B;;;IAGkB;AAAlB,WAAkB,iBAAiB;IAC/B,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;IACf,4CAAuB,CAAA;IACvB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;IACf,sCAAiB,CAAA;AACrB,CAAC,EATiB,iBAAiB,KAAjB,iBAAiB;;ACHnC;;;IAGkB;AAAlB,WAAkB,SAAS;IACvB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACvB,CAAC,EAPiB,SAAS,KAAT,SAAS;;ACH3B;;;IAGkB;AAAlB,WAAkB,YAAY;IAC1B,iCAAiB,CAAA;IACjB,+BAAe,CAAA;IACf,6BAAa,CAAA;AACjB,CAAC,EAJiB,YAAY,KAAZ,YAAY;;ACH9B;;;IAGkB;AAAlB,WAAkB,YAAY;IAC1B,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AACnB,CAAC,EAJiB,YAAY,KAAZ,YAAY;;ACH9B;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-enums.js","sources":["ng://@taiga-ui/kit/enums/borders.ts","ng://@taiga-ui/kit/enums/dropdown-position.ts","ng://@taiga-ui/kit/enums/file-state.ts","ng://@taiga-ui/kit/enums/marker-icon-mode.ts","ng://@taiga-ui/kit/enums/status.ts","ng://@taiga-ui/kit/enums/step-state.ts","ng://@taiga-ui/kit/enums/text-align.ts","ng://@taiga-ui/kit/enums/taiga-ui-kit-enums.ts"],"sourcesContent":["/**\n * @deprecated use string values\n */\nexport const enum TuiBorders {\n All = 'all',\n TopBottom = 'top-bottom',\n}\n","/**\n * @deprecated use {@link TuiDropdownPositionT}\n */\nexport const enum TuiDropdownPosition {\n Selection = 'selection',\n Word = 'word',\n Tag = 'tag',\n}\n\nexport type TuiDropdownPositionT = 'selection' | 'word' | 'tag';\n","/**\n * @internal\n */\nexport const enum TuiFileState {\n Error = 'error',\n Deleted = 'deleted',\n Loading = 'loading',\n Normal = 'normal',\n}\n\nexport type TuiFileStateT = 'error' | 'deleted' | 'loading' | 'normal';\n","/**\n * @deprecated use join type {@link TuiMarkerIconModeT}\n */\nexport const enum TuiMarkerIconMode {\n Link = 'link',\n Primary = 'primary',\n Warning = 'warning',\n White = 'white',\n Secondary = 'secondary',\n Success = 'success',\n Error = 'error',\n OnDark = 'onDark',\n}\n","/**\n * @deprecated use join type {@link TuiStatusT}\n */\nexport const enum TuiStatus {\n Default = 'default',\n Primary = 'primary',\n Custom = 'custom',\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n}\n","/**\n * @deprecated use {@link TuiStepStateT}\n */\nexport const enum TuiStepState {\n Normal = 'normal',\n Error = 'error',\n Pass = 'pass',\n}\n\nexport type TuiStepStateT = 'normal' | 'error' | 'pass';\n","/**\n * @deprecated use string values\n */\nexport const enum TuiTextAlign {\n Left = 'left',\n Center = 'center',\n Right = 'right',\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;IAGkB;AAAlB,WAAkB,UAAU;IACxB,yBAAW,CAAA;IACX,sCAAwB,CAAA;AAC5B,CAAC,EAHiB,UAAU,KAAV,UAAU;;ACH5B;;;IAGkB;AAAlB,WAAkB,mBAAmB;IACjC,8CAAuB,CAAA;IACvB,oCAAa,CAAA;IACb,kCAAW,CAAA;AACf,CAAC,EAJiB,mBAAmB,KAAnB,mBAAmB;;ACHrC;;;IAGkB;AAAlB,WAAkB,YAAY;IAC1B,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AACrB,CAAC,EALiB,YAAY,KAAZ,YAAY;;ACH9B;;;IAGkB;AAAlB,WAAkB,iBAAiB;IAC/B,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;IACf,4CAAuB,CAAA;IACvB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;IACf,sCAAiB,CAAA;AACrB,CAAC,EATiB,iBAAiB,KAAjB,iBAAiB;;ACHnC;;;IAGkB;AAAlB,WAAkB,SAAS;IACvB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACvB,CAAC,EAPiB,SAAS,KAAT,SAAS;;ACH3B;;;IAGkB;AAAlB,WAAkB,YAAY;IAC1B,iCAAiB,CAAA;IACjB,+BAAe,CAAA;IACf,6BAAa,CAAA;AACjB,CAAC,EAJiB,YAAY,KAAZ,YAAY;;ACH9B;;;IAGkB;AAAlB,WAAkB,YAAY;IAC1B,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AACnB,CAAC,EAJiB,YAAY,KAAZ,YAAY;;ACH9B;;;;;;"}
@@ -1,3 +1,7 @@
1
+ import { __read } from 'tslib';
2
+ import { round } from '@taiga-ui/cdk';
3
+ import { TUI_FLOATING_PRECISION } from '@taiga-ui/kit/constants';
4
+
1
5
  /**
2
6
  * @internal
3
7
  */
@@ -10,9 +14,36 @@ function horizontalDirectionToNumber(direction) {
10
14
  }
11
15
  }
12
16
 
17
+ function tuiFindKeyStepsBoundariesByFn(keySteps, fn) {
18
+ var keyStepUpperIndex = keySteps.findIndex(function (keyStep, i) { return i && fn(keyStep); });
19
+ var lowerStep = keySteps[keyStepUpperIndex - 1];
20
+ var upperStep = keySteps[keyStepUpperIndex];
21
+ return [lowerStep, upperStep];
22
+ }
23
+ function tuiPercentageToKeyStepValue(valuePercentage, keySteps) {
24
+ var _a = __read(tuiFindKeyStepsBoundariesByFn(keySteps, function (_a) {
25
+ var _b = __read(_a, 2), keyStepPercentage = _b[0], _ = _b[1];
26
+ return valuePercentage <= keyStepPercentage;
27
+ }), 2), _b = __read(_a[0], 2), lowerStepPercent = _b[0], lowerStepValue = _b[1], _c = __read(_a[1], 2), upperStepPercent = _c[0], upperStepValue = _c[1];
28
+ var ratio = (valuePercentage - lowerStepPercent) / (upperStepPercent - lowerStepPercent);
29
+ var controlValue = (upperStepValue - lowerStepValue) * ratio + lowerStepValue;
30
+ return round(controlValue, TUI_FLOATING_PRECISION);
31
+ }
32
+ function tuiKeyStepValueToPercentage(value, keySteps) {
33
+ var _a = __read(tuiFindKeyStepsBoundariesByFn(keySteps, function (_a) {
34
+ var _b = __read(_a, 2), _ = _b[0], keyStepValue = _b[1];
35
+ return value <= keyStepValue;
36
+ }), 2), _b = __read(_a[0], 2), lowerStepPercent = _b[0], lowerStepValue = _b[1], _c = __read(_a[1], 2), upperStepPercent = _c[0], upperStepValue = _c[1];
37
+ var ratio = (value - lowerStepValue) / (upperStepValue - lowerStepValue);
38
+ return (upperStepPercent - lowerStepPercent) * ratio + lowerStepPercent;
39
+ }
40
+ function tuiCheckKeyStepsHaveMinMaxPercents(steps) {
41
+ return !steps.length || (steps[0][0] === 0 && steps[steps.length - 1][0] === 100);
42
+ }
43
+
13
44
  /**
14
45
  * Generated bundle index. Do not edit.
15
46
  */
16
47
 
17
- export { horizontalDirectionToNumber };
48
+ export { horizontalDirectionToNumber, tuiCheckKeyStepsHaveMinMaxPercents, tuiKeyStepValueToPercentage, tuiPercentageToKeyStepValue };
18
49
  //# sourceMappingURL=taiga-ui-kit-utils-math.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-utils-math.js","sources":["ng://@taiga-ui/kit/utils/math/horizontal-direction-to-number.ts","ng://@taiga-ui/kit/utils/math/taiga-ui-kit-utils-math.ts"],"sourcesContent":["import {TuiHorizontalDirection} from '@taiga-ui/core';\n\n/**\n * @internal\n */\nexport function horizontalDirectionToNumber(direction: TuiHorizontalDirection): -1 | 1 {\n switch (direction) {\n case 'left':\n return -1;\n case 'right':\n return 1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAEA;;;SAGgB,2BAA2B,CAAC,SAAiC;IACzE,QAAQ,SAAS;QACb,KAAK,MAAM;YACP,OAAO,CAAC,CAAC,CAAC;QACd,KAAK,OAAO;YACR,OAAO,CAAC,CAAC;KAChB;AACL;;ACZA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-utils-math.js","sources":["ng://@taiga-ui/kit/utils/math/horizontal-direction-to-number.ts","ng://@taiga-ui/kit/utils/math/key-steps.ts","ng://@taiga-ui/kit/utils/math/taiga-ui-kit-utils-math.ts"],"sourcesContent":["import {TuiHorizontalDirection} from '@taiga-ui/core';\n\n/**\n * @internal\n */\nexport function horizontalDirectionToNumber(direction: TuiHorizontalDirection): -1 | 1 {\n switch (direction) {\n case 'left':\n return -1;\n case 'right':\n return 1;\n }\n}\n","import {round} from '@taiga-ui/cdk';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/kit/constants';\nimport {TuiKeySteps} from '@taiga-ui/kit/types';\n\nfunction tuiFindKeyStepsBoundariesByFn(\n keySteps: TuiKeySteps,\n fn: ([keyStepPercent, keyStepValue]: [number, number]) => boolean,\n): [[number, number], [number, number]] {\n const keyStepUpperIndex = keySteps.findIndex((keyStep, i) => i && fn(keyStep));\n const lowerStep = keySteps[keyStepUpperIndex - 1];\n const upperStep = keySteps[keyStepUpperIndex];\n\n return [lowerStep, upperStep];\n}\n\nexport function tuiPercentageToKeyStepValue(\n valuePercentage: number,\n keySteps: TuiKeySteps,\n): number {\n const [[lowerStepPercent, lowerStepValue], [upperStepPercent, upperStepValue]] =\n tuiFindKeyStepsBoundariesByFn(\n keySteps,\n ([keyStepPercentage, _]) => valuePercentage <= keyStepPercentage,\n );\n const ratio =\n (valuePercentage - lowerStepPercent) / (upperStepPercent - lowerStepPercent);\n const controlValue = (upperStepValue - lowerStepValue) * ratio + lowerStepValue;\n\n return round(controlValue, TUI_FLOATING_PRECISION);\n}\n\nexport function tuiKeyStepValueToPercentage(\n value: number,\n keySteps: TuiKeySteps,\n): number {\n const [[lowerStepPercent, lowerStepValue], [upperStepPercent, upperStepValue]] =\n tuiFindKeyStepsBoundariesByFn(\n keySteps,\n ([_, keyStepValue]) => value <= keyStepValue,\n );\n const ratio = (value - lowerStepValue) / (upperStepValue - lowerStepValue);\n\n return (upperStepPercent - lowerStepPercent) * ratio + lowerStepPercent;\n}\n\nexport function tuiCheckKeyStepsHaveMinMaxPercents(steps: TuiKeySteps): boolean {\n return !steps.length || (steps[0][0] === 0 && steps[steps.length - 1][0] === 100);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAEA;;;SAGgB,2BAA2B,CAAC,SAAiC;IACzE,QAAQ,SAAS;QACb,KAAK,MAAM;YACP,OAAO,CAAC,CAAC,CAAC;QACd,KAAK,OAAO;YACR,OAAO,CAAC,CAAC;KAChB;AACL;;ACRA,SAAS,6BAA6B,CAClC,QAAqB,EACrB,EAAiE;IAEjE,IAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAC,OAAO,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;IAC/E,IAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAClD,IAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE9C,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAClC,CAAC;SAEe,2BAA2B,CACvC,eAAuB,EACvB,QAAqB;IAEf,IAAA;;;UAID,EAJE,qBAAkC,EAAjC,wBAAgB,EAAE,sBAAc,EAAG,qBAAkC,EAAjC,wBAAgB,EAAE,sBAIzD,CAAC;IACN,IAAM,KAAK,GACP,CAAC,eAAe,GAAG,gBAAgB,KAAK,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;IACjF,IAAM,YAAY,GAAG,CAAC,cAAc,GAAG,cAAc,IAAI,KAAK,GAAG,cAAc,CAAC;IAEhF,OAAO,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AACvD,CAAC;SAEe,2BAA2B,CACvC,KAAa,EACb,QAAqB;IAEf,IAAA;;;UAID,EAJE,qBAAkC,EAAjC,wBAAgB,EAAE,sBAAc,EAAG,qBAAkC,EAAjC,wBAAgB,EAAE,sBAIzD,CAAC;IACN,IAAM,KAAK,GAAG,CAAC,KAAK,GAAG,cAAc,KAAK,cAAc,GAAG,cAAc,CAAC,CAAC;IAE3E,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,KAAK,GAAG,gBAAgB,CAAC;AAC5E,CAAC;SAEe,kCAAkC,CAAC,KAAkB;IACjE,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACtF;;AC/CA;;;;;;"}
@@ -2,6 +2,7 @@ export * from '@taiga-ui/kit/utils/dom';
2
2
  export * from '@taiga-ui/kit/utils/files';
3
3
  export * from '@taiga-ui/kit/utils/format';
4
4
  export * from '@taiga-ui/kit/utils/mask';
5
+ export * from '@taiga-ui/kit/utils/math';
5
6
  export * from '@taiga-ui/kit/utils/miscellaneous';
6
7
 
7
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-utils.js","sources":["ng://@taiga-ui/kit/utils/taiga-ui-kit-utils.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;"}
1
+ {"version":3,"file":"taiga-ui-kit-utils.js","sources":["ng://@taiga-ui/kit/utils/taiga-ui-kit-utils.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/kit",
3
- "version": "2.42.0",
3
+ "version": "2.43.0",
4
4
  "description": "Taiga UI Angular main components kit",
5
5
  "keywords": [
6
6
  "angular",
@@ -24,9 +24,9 @@
24
24
  "@angular/router": ">=9.0.0",
25
25
  "@ng-web-apis/common": ">=1.12.1 < 2",
26
26
  "@ng-web-apis/mutation-observer": ">=1.1.0",
27
- "@taiga-ui/cdk": ">=2.42.0",
28
- "@taiga-ui/core": ">=2.42.0",
29
- "@taiga-ui/i18n": ">=2.42.0",
27
+ "@taiga-ui/cdk": ">=2.43.0",
28
+ "@taiga-ui/core": ">=2.43.0",
29
+ "@taiga-ui/i18n": ">=2.43.0",
30
30
  "@tinkoff/ng-polymorpheus": ">=3.1.12 < 4",
31
31
  "rxjs": ">=6.0.0"
32
32
  },
package/utils/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export * from '@taiga-ui/kit/utils/dom';
2
2
  export * from '@taiga-ui/kit/utils/files';
3
3
  export * from '@taiga-ui/kit/utils/format';
4
4
  export * from '@taiga-ui/kit/utils/mask';
5
+ export * from '@taiga-ui/kit/utils/math';
5
6
  export * from '@taiga-ui/kit/utils/miscellaneous';
@@ -1 +1,2 @@
1
1
  export * from './horizontal-direction-to-number';
2
+ export * from './key-steps';
@@ -0,0 +1,4 @@
1
+ import { TuiKeySteps } from '@taiga-ui/kit/types';
2
+ export declare function tuiPercentageToKeyStepValue(valuePercentage: number, keySteps: TuiKeySteps): number;
3
+ export declare function tuiKeyStepValueToPercentage(value: number, keySteps: TuiKeySteps): number;
4
+ export declare function tuiCheckKeyStepsHaveMinMaxPercents(steps: TuiKeySteps): boolean;
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"horizontalDirectionToNumber":{"__symbolic":"function"}},"origins":{"horizontalDirectionToNumber":"./horizontal-direction-to-number"},"importAs":"@taiga-ui/kit/utils/math"}
1
+ {"__symbolic":"module","version":4,"metadata":{"horizontalDirectionToNumber":{"__symbolic":"function"},"tuiPercentageToKeyStepValue":{"__symbolic":"function"},"tuiKeyStepValueToPercentage":{"__symbolic":"function"},"tuiCheckKeyStepsHaveMinMaxPercents":{"__symbolic":"function","parameters":["steps"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"steps"},"member":"length"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"index","expression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"steps"},"index":0},"index":0},"right":0},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"index","expression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"steps"},"index":{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"steps"},"member":"length"},"right":1}},"index":0},"right":100}}}}},"origins":{"horizontalDirectionToNumber":"./horizontal-direction-to-number","tuiPercentageToKeyStepValue":"./key-steps","tuiKeyStepValueToPercentage":"./key-steps","tuiCheckKeyStepsHaveMinMaxPercents":"./key-steps"},"importAs":"@taiga-ui/kit/utils/math"}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"exports":[{"from":"@taiga-ui/kit/utils/dom"},{"from":"@taiga-ui/kit/utils/files"},{"from":"@taiga-ui/kit/utils/format"},{"from":"@taiga-ui/kit/utils/mask"},{"from":"@taiga-ui/kit/utils/miscellaneous"}],"metadata":{},"origins":{},"importAs":"@taiga-ui/kit/utils"}
1
+ {"__symbolic":"module","version":4,"exports":[{"from":"@taiga-ui/kit/utils/dom"},{"from":"@taiga-ui/kit/utils/files"},{"from":"@taiga-ui/kit/utils/format"},{"from":"@taiga-ui/kit/utils/mask"},{"from":"@taiga-ui/kit/utils/math"},{"from":"@taiga-ui/kit/utils/miscellaneous"}],"metadata":{},"origins":{},"importAs":"@taiga-ui/kit/utils"}
@@ -1,11 +0,0 @@
1
- import { ElementRef, NgZone, Renderer2, ViewContainerRef } from '@angular/core';
2
- import { TuiDestroyService } from '@taiga-ui/cdk';
3
- import { Observable } from 'rxjs';
4
- import { TuiLineClampComponent } from './line-clamp.component';
5
- export declare class TuiLineClampDirective {
6
- constructor(component: TuiLineClampComponent, viewContainerRef: ViewContainerRef, documentRef: Document, renderer: Renderer2, ngZone: NgZone, { nativeElement }: ElementRef<HTMLElement>, destroy$: TuiDestroyService, animationFrame$: Observable<number>,
7
- /**
8
- * TODO: remove "any" in new TS version; https://github.com/ng-web-apis/common/pull/6
9
- */
10
- cssRef: any);
11
- }
@@ -1,87 +0,0 @@
1
- import { __decorate, __param } from "tslib";
2
- import { DOCUMENT } from '@angular/common';
3
- import { Directive, ElementRef, Inject, NgZone, Renderer2, ViewContainerRef, } from '@angular/core';
4
- import { ANIMATION_FRAME, CSS } from '@ng-web-apis/common';
5
- import { CHAR_ELLIPSIS, px, TuiDestroyService, tuiZonefree } from '@taiga-ui/cdk';
6
- import { setRangeOffset } from '@taiga-ui/kit/utils/dom';
7
- import { Observable } from 'rxjs';
8
- import { map, takeUntil } from 'rxjs/operators';
9
- import { TuiLineClampComponent } from './line-clamp.component';
10
- const HIDDEN_LEFT = -200;
11
- // @dynamic
12
- let TuiLineClampDirective = class TuiLineClampDirective {
13
- constructor(component, viewContainerRef, documentRef, renderer, ngZone, { nativeElement }, destroy$, animationFrame$,
14
- /**
15
- * TODO: remove "any" in new TS version; https://github.com/ng-web-apis/common/pull/6
16
- */
17
- cssRef) {
18
- if (cssRef.supports('-webkit-line-clamp', '1') ||
19
- !documentRef.createRange ||
20
- !(nativeElement.parentElement instanceof HTMLElement)) {
21
- return;
22
- }
23
- const range = documentRef.createRange();
24
- const ellipsis = renderer.createElement('div');
25
- const { parentElement } = nativeElement;
26
- const { style } = ellipsis;
27
- style.position = 'absolute';
28
- style.bottom = '0';
29
- style.left = px(HIDDEN_LEFT);
30
- ellipsis.textContent = CHAR_ELLIPSIS;
31
- viewContainerRef.element.nativeElement.appendChild(ellipsis);
32
- animationFrame$
33
- .pipe(map(() => {
34
- // 4px buffer for IE/Edge incorrectly rounding scrollHeight
35
- if (component.oneLine ||
36
- nativeElement.scrollHeight - parentElement.clientHeight < 4) {
37
- return HIDDEN_LEFT;
38
- }
39
- let result = 0;
40
- const length = nativeElement.textContent
41
- ? nativeElement.textContent.length
42
- : 0;
43
- for (let char = 0; char < length - 2; char++) {
44
- setRangeOffset(range, nativeElement, char, 'setStart');
45
- setRangeOffset(range, nativeElement, char + 1, 'setEnd');
46
- const rangeRect = range.getBoundingClientRect();
47
- const clientRect = parentElement.getBoundingClientRect();
48
- if (Math.round(rangeRect.top - clientRect.bottom) >= 0) {
49
- break;
50
- }
51
- result = rangeRect.right - clientRect.left;
52
- }
53
- return result;
54
- }), tuiZonefree(ngZone), takeUntil(destroy$))
55
- .subscribe(left => {
56
- style.left = px(left);
57
- });
58
- }
59
- };
60
- TuiLineClampDirective.ctorParameters = () => [
61
- { type: TuiLineClampComponent, decorators: [{ type: Inject, args: [TuiLineClampComponent,] }] },
62
- { type: ViewContainerRef, decorators: [{ type: Inject, args: [ViewContainerRef,] }] },
63
- { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
64
- { type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
65
- { type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
66
- { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
67
- { type: TuiDestroyService, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
68
- { type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
69
- { type: undefined, decorators: [{ type: Inject, args: [CSS,] }] }
70
- ];
71
- TuiLineClampDirective = __decorate([
72
- Directive({
73
- selector: '[lineClamp]',
74
- providers: [TuiDestroyService],
75
- }),
76
- __param(0, Inject(TuiLineClampComponent)),
77
- __param(1, Inject(ViewContainerRef)),
78
- __param(2, Inject(DOCUMENT)),
79
- __param(3, Inject(Renderer2)),
80
- __param(4, Inject(NgZone)),
81
- __param(5, Inject(ElementRef)),
82
- __param(6, Inject(TuiDestroyService)),
83
- __param(7, Inject(ANIMATION_FRAME)),
84
- __param(8, Inject(CSS))
85
- ], TuiLineClampDirective);
86
- export { TuiLineClampDirective };
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvbGluZS1jbGFtcC8iLCJzb3VyY2VzIjpbImxpbmUtY2xhbXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFFekIsV0FBVztBQUtYLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBQzlCLFlBQ21DLFNBQWdDLEVBQ3JDLGdCQUFrQyxFQUMxQyxXQUFxQixFQUNwQixRQUFtQixFQUN0QixNQUFjLEVBQ1YsRUFBQyxhQUFhLEVBQTBCLEVBQ2pDLFFBQTJCLEVBQzdCLGVBQW1DO0lBQzVEOztPQUVHO0lBQ1UsTUFBVztRQUV4QixJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDO1lBQzFDLENBQUMsV0FBVyxDQUFDLFdB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UCxRQUFRLEVBQUUsYUFBYTtRQUN2QixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztLQUNqQyxDQUFDO0lBR08sV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUM3QixXQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3hCLFdBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2hCLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pCLFdBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2QsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN6QixXQUFBLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUl2QixXQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtHQWJQLHFCQUFxQixDQTBFakM7U0ExRVkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FOSU1BVElPTl9GUkFNRSwgQ1NTfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7Q0hBUl9FTExJUFNJUywgcHgsIFR1aURlc3Ryb3lTZXJ2aWNlLCB0dWlab25lZnJlZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge3NldFJhbmdlT2Zmc2V0fSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzL2RvbSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1R1aUxpbmVDbGFtcENvbXBvbmVudH0gZnJvbSAnLi9saW5lLWNsYW1wLmNvbXBvbmVudCc7XG5cbmNvbnN0IEhJRERFTl9MRUZUID0gLTIwMDtcblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2xpbmVDbGFtcF0nLFxuICAgIHByb3ZpZGVyczogW1R1aURlc3Ryb3lTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTGluZUNsYW1wRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUdWlMaW5lQ2xhbXBDb21wb25lbnQpIGNvbXBvbmVudDogVHVpTGluZUNsYW1wQ29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KFZpZXdDb250YWluZXJSZWYpIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChSZW5kZXJlcjIpIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSB7bmF0aXZlRWxlbWVudH06IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKSBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoQU5JTUFUSU9OX0ZSQU1FKSBhbmltYXRpb25GcmFtZSQ6IE9ic2VydmFibGU8bnVtYmVyPixcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRPRE86IHJlbW92ZSBcImFueVwiIGluIG5ldyBUUyB2ZXJzaW9uOyBodHRwczovL2dpdGh1Yi5jb20vbmctd2ViLWFwaXMvY29tbW9uL3B1bGwvNlxuICAgICAgICAgKi9cbiAgICAgICAgQEluamVjdChDU1MpIGNzc1JlZjogYW55LFxuICAgICkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjc3NSZWYuc3VwcG9ydHMoJy13ZWJraXQtbGluZS1jbGFtcCcsICcxJykgfHxcbiAgICAgICAgICAgICFkb2N1bWVudFJlZi5jcmVhdGVSYW5nZSB8fFxuICAgICAgICAgICAgIShuYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50UmVmLmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGNvbnN0IGVsbGlwc2lzOiBIVE1MRWxlbWVudCA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjb25zdCB7cGFyZW50RWxlbWVudH0gPSBuYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB7c3R5bGV9ID0gZWxsaXBzaXM7XG5cbiAgICAgICAgc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBzdHlsZS5ib3R0b20gPSAnMCc7XG4gICAgICAgIHN0eWxlLmxlZnQgPSBweChISURERU5fTEVGVCk7XG4gICAgICAgIGVsbGlwc2lzLnRleHRDb250ZW50ID0gQ0hBUl9FTExJUFNJUztcblxuICAgICAgICB2aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlbGxpcHNpcyk7XG5cbiAgICAgICAgYW5pbWF0aW9uRnJhbWUkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyA0cHggYnVmZmVyIGZvciBJRS9FZGdlIGluY29ycmVjdGx5IHJvdW5kaW5nIHNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQub25lTGluZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBwYXJlbnRFbGVtZW50LmNsaWVudEhlaWdodCA8IDRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSElEREVOX0xFRlQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gbmF0aXZlRWxlbWVudC50ZXh0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBuYXRpdmVFbGVtZW50LnRleHRDb250ZW50Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoYXIgPSAwOyBjaGFyIDwgbGVuZ3RoIC0gMjsgY2hhcisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSYW5nZU9mZnNldChyYW5nZSwgbmF0aXZlRWxlbWVudCwgY2hhciwgJ3NldFN0YXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSYW5nZU9mZnNldChyYW5nZSwgbmF0aXZlRWxlbWVudCwgY2hhciArIDEsICdzZXRFbmQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VSZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGllbnRSZWN0ID0gcGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGgucm91bmQocmFuZ2VSZWN0LnRvcCAtIGNsaWVudFJlY3QuYm90dG9tKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJhbmdlUmVjdC5yaWdodCAtIGNsaWVudFJlY3QubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdHVpWm9uZWZyZWUobmdab25lKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShsZWZ0ID0+IHtcbiAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gcHgobGVmdCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,89 +0,0 @@
1
- import { __decorate, __param } from "tslib";
2
- import { DOCUMENT } from '@angular/common';
3
- import { Directive, ElementRef, Inject, NgZone, Renderer2, ViewContainerRef, } from '@angular/core';
4
- import { ANIMATION_FRAME, CSS } from '@ng-web-apis/common';
5
- import { CHAR_ELLIPSIS, px, TuiDestroyService, tuiZonefree } from '@taiga-ui/cdk';
6
- import { setRangeOffset } from '@taiga-ui/kit/utils/dom';
7
- import { Observable } from 'rxjs';
8
- import { map, takeUntil } from 'rxjs/operators';
9
- import { TuiLineClampComponent } from './line-clamp.component';
10
- var HIDDEN_LEFT = -200;
11
- // @dynamic
12
- var TuiLineClampDirective = /** @class */ (function () {
13
- function TuiLineClampDirective(component, viewContainerRef, documentRef, renderer, ngZone, _a, destroy$, animationFrame$,
14
- /**
15
- * TODO: remove "any" in new TS version; https://github.com/ng-web-apis/common/pull/6
16
- */
17
- cssRef) {
18
- var nativeElement = _a.nativeElement;
19
- if (cssRef.supports('-webkit-line-clamp', '1') ||
20
- !documentRef.createRange ||
21
- !(nativeElement.parentElement instanceof HTMLElement)) {
22
- return;
23
- }
24
- var range = documentRef.createRange();
25
- var ellipsis = renderer.createElement('div');
26
- var parentElement = nativeElement.parentElement;
27
- var style = ellipsis.style;
28
- style.position = 'absolute';
29
- style.bottom = '0';
30
- style.left = px(HIDDEN_LEFT);
31
- ellipsis.textContent = CHAR_ELLIPSIS;
32
- viewContainerRef.element.nativeElement.appendChild(ellipsis);
33
- animationFrame$
34
- .pipe(map(function () {
35
- // 4px buffer for IE/Edge incorrectly rounding scrollHeight
36
- if (component.oneLine ||
37
- nativeElement.scrollHeight - parentElement.clientHeight < 4) {
38
- return HIDDEN_LEFT;
39
- }
40
- var result = 0;
41
- var length = nativeElement.textContent
42
- ? nativeElement.textContent.length
43
- : 0;
44
- for (var char = 0; char < length - 2; char++) {
45
- setRangeOffset(range, nativeElement, char, 'setStart');
46
- setRangeOffset(range, nativeElement, char + 1, 'setEnd');
47
- var rangeRect = range.getBoundingClientRect();
48
- var clientRect = parentElement.getBoundingClientRect();
49
- if (Math.round(rangeRect.top - clientRect.bottom) >= 0) {
50
- break;
51
- }
52
- result = rangeRect.right - clientRect.left;
53
- }
54
- return result;
55
- }), tuiZonefree(ngZone), takeUntil(destroy$))
56
- .subscribe(function (left) {
57
- style.left = px(left);
58
- });
59
- }
60
- TuiLineClampDirective.ctorParameters = function () { return [
61
- { type: TuiLineClampComponent, decorators: [{ type: Inject, args: [TuiLineClampComponent,] }] },
62
- { type: ViewContainerRef, decorators: [{ type: Inject, args: [ViewContainerRef,] }] },
63
- { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
64
- { type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
65
- { type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
66
- { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
67
- { type: TuiDestroyService, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
68
- { type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
69
- { type: undefined, decorators: [{ type: Inject, args: [CSS,] }] }
70
- ]; };
71
- TuiLineClampDirective = __decorate([
72
- Directive({
73
- selector: '[lineClamp]',
74
- providers: [TuiDestroyService],
75
- }),
76
- __param(0, Inject(TuiLineClampComponent)),
77
- __param(1, Inject(ViewContainerRef)),
78
- __param(2, Inject(DOCUMENT)),
79
- __param(3, Inject(Renderer2)),
80
- __param(4, Inject(NgZone)),
81
- __param(5, Inject(ElementRef)),
82
- __param(6, Inject(TuiDestroyService)),
83
- __param(7, Inject(ANIMATION_FRAME)),
84
- __param(8, Inject(CSS))
85
- ], TuiLineClampDirective);
86
- return TuiLineClampDirective;
87
- }());
88
- export { TuiLineClampDirective };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvbGluZS1jbGFtcC8iLCJzb3VyY2VzIjpbImxpbmUtY2xhbXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsSUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFFekIsV0FBVztBQUtYO0lBQ0ksK0JBQ21DLFNBQWdDLEVBQ3JDLGdCQUFrQyxFQUMxQyxXQUFxQixFQUNwQixRQUFtQixFQUN0QixNQUFjLEVBQ1YsRUFBd0MsRUFDakMsUUFBMkIsRUFDN0IsZUFBbUM7SUFDNUQ7O09BRUc7SUFDVSxNQUFXO1lBTkgsZ0NBQWE7UUFRbEMsSUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQztZQUMxQyxDQUFDLFdBQVcsQ0FBQyxXQUFXO1lBQ3hCLENBQUMsQ0FBQyxhQUFhLENBQUMs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QUFxQixDQUFDLENBQUE7UUFDN0IsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUN4QixXQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNoQixXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqQixXQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNkLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2xCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekIsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFJdkIsV0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7T0FiUCxxQkFBcUIsQ0EwRWpDO0lBQUQsNEJBQUM7Q0FBQSxBQTFFRCxJQTBFQztTQTFFWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgTmdab25lLFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QU5JTUFUSU9OX0ZSQU1FLCBDU1N9IGZyb20gJ0BuZy13ZWItYXBpcy9jb21tb24nO1xuaW1wb3J0IHtDSEFSX0VMTElQU0lTLCBweCwgVHVpRGVzdHJveVNlcnZpY2UsIHR1aVpvbmVmcmVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7c2V0UmFuZ2VPZmZzZXR9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMvZG9tJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VHVpTGluZUNsYW1wQ29tcG9uZW50fSBmcm9tICcuL2xpbmUtY2xhbXAuY29tcG9uZW50JztcblxuY29uc3QgSElEREVOX0xFRlQgPSAtMjAwO1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbGluZUNsYW1wXScsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlMaW5lQ2xhbXBEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFR1aUxpbmVDbGFtcENvbXBvbmVudCkgY29tcG9uZW50OiBUdWlMaW5lQ2xhbXBDb21wb25lbnQsXG4gICAgICAgIEBJbmplY3QoVmlld0NvbnRhaW5lclJlZikgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnRSZWY6IERvY3VtZW50LFxuICAgICAgICBASW5qZWN0KFJlbmRlcmVyMikgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChOZ1pvbmUpIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHtuYXRpdmVFbGVtZW50fTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoVHVpRGVzdHJveVNlcnZpY2UpIGRlc3Ryb3kkOiBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAgQEluamVjdChBTklNQVRJT05fRlJBTUUpIGFuaW1hdGlvbkZyYW1lJDogT2JzZXJ2YWJsZTxudW1iZXI+LFxuICAgICAgICAvKipcbiAgICAgICAgICogVE9ETzogcmVtb3ZlIFwiYW55XCIgaW4gbmV3IFRTIHZlcnNpb247IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy13ZWItYXBpcy9jb21tb24vcHVsbC82XG4gICAgICAgICAqL1xuICAgICAgICBASW5qZWN0KENTUykgY3NzUmVmOiBhbnksXG4gICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNzc1JlZi5zdXBwb3J0cygnLXdlYmtpdC1saW5lLWNsYW1wJywgJzEnKSB8fFxuICAgICAgICAgICAgIWRvY3VtZW50UmVmLmNyZWF0ZVJhbmdlIHx8XG4gICAgICAgICAgICAhKG5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnRSZWYuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgY29uc3QgZWxsaXBzaXM6IEhUTUxFbGVtZW50ID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGNvbnN0IHtwYXJlbnRFbGVtZW50fSA9IG5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHtzdHlsZX0gPSBlbGxpcHNpcztcblxuICAgICAgICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgICAgc3R5bGUubGVmdCA9IHB4KEhJRERFTl9MRUZUKTtcbiAgICAgICAgZWxsaXBzaXMudGV4dENvbnRlbnQgPSBDSEFSX0VMTElQU0lTO1xuXG4gICAgICAgIHZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGVsbGlwc2lzKTtcblxuICAgICAgICBhbmltYXRpb25GcmFtZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIDRweCBidWZmZXIgZm9yIElFL0VkZ2UgaW5jb3JyZWN0bHkgcm91bmRpbmcgc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vbmVMaW5lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtIHBhcmVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IDwgNFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBISURERU5fTEVGVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBuYXRpdmVFbGVtZW50LnRleHRDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICA/IG5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2hhciA9IDA7IGNoYXIgPCBsZW5ndGggLSAyOyBjaGFyKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhbmdlT2Zmc2V0KHJhbmdlLCBuYXRpdmVFbGVtZW50LCBjaGFyLCAnc2V0U3RhcnQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhbmdlT2Zmc2V0KHJhbmdlLCBuYXRpdmVFbGVtZW50LCBjaGFyICsgMSwgJ3NldEVuZCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5nZVJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPSBwYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5yb3VuZChyYW5nZVJlY3QudG9wIC0gY2xpZW50UmVjdC5ib3R0b20pID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmFuZ2VSZWN0LnJpZ2h0IC0gY2xpZW50UmVjdC5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0dWlab25lZnJlZShuZ1pvbmUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGxlZnQgPT4ge1xuICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==