@taiga-ui/cdk 2.55.0 → 2.56.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 (659) hide show
  1. package/bundles/taiga-ui-cdk-abstract.umd.js +12 -12
  2. package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
  3. package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
  4. package/bundles/taiga-ui-cdk-classes.umd.js +1 -1
  5. package/bundles/taiga-ui-cdk-classes.umd.js.map +1 -1
  6. package/bundles/taiga-ui-cdk-classes.umd.min.js.map +1 -1
  7. package/bundles/taiga-ui-cdk-coercion.umd.js +1 -1
  8. package/bundles/taiga-ui-cdk-coercion.umd.js.map +1 -1
  9. package/bundles/taiga-ui-cdk-coercion.umd.min.js.map +1 -1
  10. package/bundles/taiga-ui-cdk-components-alert-host.umd.js +1 -1
  11. package/bundles/taiga-ui-cdk-components-alert-host.umd.js.map +1 -1
  12. package/bundles/taiga-ui-cdk-components-alert-host.umd.min.js.map +1 -1
  13. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js +4 -4
  14. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js.map +1 -1
  15. package/bundles/taiga-ui-cdk-components-dialog-host.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-cdk-components-dropdown-host.umd.js +2 -2
  17. package/bundles/taiga-ui-cdk-components-dropdown-host.umd.js.map +1 -1
  18. package/bundles/taiga-ui-cdk-components-dropdown-host.umd.min.js.map +1 -1
  19. package/bundles/taiga-ui-cdk-components-portal-host.umd.js +1 -1
  20. package/bundles/taiga-ui-cdk-components-portal-host.umd.js.map +1 -1
  21. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js.map +1 -1
  22. package/bundles/taiga-ui-cdk-constants.umd.js +15 -15
  23. package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
  24. package/bundles/taiga-ui-cdk-constants.umd.min.js.map +1 -1
  25. package/bundles/taiga-ui-cdk-date-time.umd.js +35 -35
  26. package/bundles/taiga-ui-cdk-date-time.umd.js.map +1 -1
  27. package/bundles/taiga-ui-cdk-date-time.umd.min.js.map +1 -1
  28. package/bundles/taiga-ui-cdk-decorators.umd.js +1 -1
  29. package/bundles/taiga-ui-cdk-decorators.umd.js.map +1 -1
  30. package/bundles/taiga-ui-cdk-decorators.umd.min.js.map +1 -1
  31. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js +3 -3
  32. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js.map +1 -1
  33. package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js.map +1 -1
  34. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +15 -15
  35. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
  36. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
  37. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js +6 -6
  38. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js.map +1 -1
  39. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js.map +1 -1
  40. package/bundles/taiga-ui-cdk-directives-checked.umd.js +6 -6
  41. package/bundles/taiga-ui-cdk-directives-checked.umd.js.map +1 -1
  42. package/bundles/taiga-ui-cdk-directives-checked.umd.min.js.map +1 -1
  43. package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js +3 -3
  44. package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js.map +1 -1
  45. package/bundles/taiga-ui-cdk-directives-copy-processor.umd.min.js.map +1 -1
  46. package/bundles/taiga-ui-cdk-directives-drag.umd.js +4 -4
  47. package/bundles/taiga-ui-cdk-directives-drag.umd.js.map +1 -1
  48. package/bundles/taiga-ui-cdk-directives-drag.umd.min.js.map +1 -1
  49. package/bundles/taiga-ui-cdk-directives-droppable.umd.js +5 -5
  50. package/bundles/taiga-ui-cdk-directives-droppable.umd.js.map +1 -1
  51. package/bundles/taiga-ui-cdk-directives-droppable.umd.min.js.map +1 -1
  52. package/bundles/taiga-ui-cdk-directives-element.umd.js +2 -2
  53. package/bundles/taiga-ui-cdk-directives-element.umd.js.map +1 -1
  54. package/bundles/taiga-ui-cdk-directives-element.umd.min.js.map +1 -1
  55. package/bundles/taiga-ui-cdk-directives-focus-trap.umd.js +5 -5
  56. package/bundles/taiga-ui-cdk-directives-focus-trap.umd.js.map +1 -1
  57. package/bundles/taiga-ui-cdk-directives-focus-trap.umd.min.js.map +1 -1
  58. package/bundles/taiga-ui-cdk-directives-focus-visible.umd.js +2 -2
  59. package/bundles/taiga-ui-cdk-directives-focus-visible.umd.js.map +1 -1
  60. package/bundles/taiga-ui-cdk-directives-focus-visible.umd.min.js.map +1 -1
  61. package/bundles/taiga-ui-cdk-directives-focusable.umd.js +3 -3
  62. package/bundles/taiga-ui-cdk-directives-focusable.umd.js.map +1 -1
  63. package/bundles/taiga-ui-cdk-directives-focusable.umd.min.js.map +1 -1
  64. package/bundles/taiga-ui-cdk-directives-focused.umd.js +2 -2
  65. package/bundles/taiga-ui-cdk-directives-focused.umd.js.map +1 -1
  66. package/bundles/taiga-ui-cdk-directives-focused.umd.min.js.map +1 -1
  67. package/bundles/taiga-ui-cdk-directives-for-async.umd.js +1 -1
  68. package/bundles/taiga-ui-cdk-directives-for-async.umd.js.map +1 -1
  69. package/bundles/taiga-ui-cdk-directives-for-async.umd.min.js.map +1 -1
  70. package/bundles/taiga-ui-cdk-directives-for.umd.js +1 -1
  71. package/bundles/taiga-ui-cdk-directives-for.umd.js.map +1 -1
  72. package/bundles/taiga-ui-cdk-directives-for.umd.min.js.map +1 -1
  73. package/bundles/taiga-ui-cdk-directives-high-dpi.umd.js +1 -1
  74. package/bundles/taiga-ui-cdk-directives-high-dpi.umd.js.map +1 -1
  75. package/bundles/taiga-ui-cdk-directives-high-dpi.umd.min.js.map +1 -1
  76. package/bundles/taiga-ui-cdk-directives-hovered.umd.js +4 -4
  77. package/bundles/taiga-ui-cdk-directives-hovered.umd.js.map +1 -1
  78. package/bundles/taiga-ui-cdk-directives-hovered.umd.min.js.map +1 -1
  79. package/bundles/taiga-ui-cdk-directives-input-mode.umd.js +10 -10
  80. package/bundles/taiga-ui-cdk-directives-input-mode.umd.js.map +1 -1
  81. package/bundles/taiga-ui-cdk-directives-input-mode.umd.min.js.map +1 -1
  82. package/bundles/taiga-ui-cdk-directives-item.umd.js +1 -1
  83. package/bundles/taiga-ui-cdk-directives-item.umd.js.map +1 -1
  84. package/bundles/taiga-ui-cdk-directives-item.umd.min.js.map +1 -1
  85. package/bundles/taiga-ui-cdk-directives-let.umd.js +1 -1
  86. package/bundles/taiga-ui-cdk-directives-let.umd.js.map +1 -1
  87. package/bundles/taiga-ui-cdk-directives-let.umd.min.js.map +1 -1
  88. package/bundles/taiga-ui-cdk-directives-media.umd.js +12 -12
  89. package/bundles/taiga-ui-cdk-directives-media.umd.js.map +1 -1
  90. package/bundles/taiga-ui-cdk-directives-media.umd.min.js.map +1 -1
  91. package/bundles/taiga-ui-cdk-directives-obscured.umd.js +1 -1
  92. package/bundles/taiga-ui-cdk-directives-obscured.umd.js.map +1 -1
  93. package/bundles/taiga-ui-cdk-directives-obscured.umd.min.js.map +1 -1
  94. package/bundles/taiga-ui-cdk-directives-overscroll.umd.js +11 -11
  95. package/bundles/taiga-ui-cdk-directives-overscroll.umd.js.map +1 -1
  96. package/bundles/taiga-ui-cdk-directives-overscroll.umd.min.js.map +1 -1
  97. package/bundles/taiga-ui-cdk-directives-pan.umd.js +2 -2
  98. package/bundles/taiga-ui-cdk-directives-pan.umd.js.map +1 -1
  99. package/bundles/taiga-ui-cdk-directives-pan.umd.min.js.map +1 -1
  100. package/bundles/taiga-ui-cdk-directives-portal.umd.js +1 -1
  101. package/bundles/taiga-ui-cdk-directives-portal.umd.js.map +1 -1
  102. package/bundles/taiga-ui-cdk-directives-portal.umd.min.js.map +1 -1
  103. package/bundles/taiga-ui-cdk-directives-pressed.umd.js +1 -1
  104. package/bundles/taiga-ui-cdk-directives-pressed.umd.js.map +1 -1
  105. package/bundles/taiga-ui-cdk-directives-pressed.umd.min.js.map +1 -1
  106. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js +3 -3
  107. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js.map +1 -1
  108. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.min.js.map +1 -1
  109. package/bundles/taiga-ui-cdk-directives-repeat-times.umd.js +1 -1
  110. package/bundles/taiga-ui-cdk-directives-repeat-times.umd.js.map +1 -1
  111. package/bundles/taiga-ui-cdk-directives-repeat-times.umd.min.js.map +1 -1
  112. package/bundles/taiga-ui-cdk-directives-resize.umd.js +2 -2
  113. package/bundles/taiga-ui-cdk-directives-resize.umd.js.map +1 -1
  114. package/bundles/taiga-ui-cdk-directives-resize.umd.min.js.map +1 -1
  115. package/bundles/taiga-ui-cdk-directives-swipe.umd.js +2 -2
  116. package/bundles/taiga-ui-cdk-directives-swipe.umd.js.map +1 -1
  117. package/bundles/taiga-ui-cdk-directives-swipe.umd.min.js.map +1 -1
  118. package/bundles/taiga-ui-cdk-directives-validator.umd.js +1 -1
  119. package/bundles/taiga-ui-cdk-directives-validator.umd.js.map +1 -1
  120. package/bundles/taiga-ui-cdk-directives-validator.umd.min.js.map +1 -1
  121. package/bundles/taiga-ui-cdk-directives-zoom.umd.js +3 -3
  122. package/bundles/taiga-ui-cdk-directives-zoom.umd.js.map +1 -1
  123. package/bundles/taiga-ui-cdk-directives-zoom.umd.min.js.map +1 -1
  124. package/bundles/taiga-ui-cdk-enums.umd.js.map +1 -1
  125. package/bundles/taiga-ui-cdk-enums.umd.min.js.map +1 -1
  126. package/bundles/taiga-ui-cdk-exceptions.umd.js +10 -10
  127. package/bundles/taiga-ui-cdk-exceptions.umd.js.map +1 -1
  128. package/bundles/taiga-ui-cdk-exceptions.umd.min.js.map +1 -1
  129. package/bundles/taiga-ui-cdk-observables.umd.js +7 -7
  130. package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
  131. package/bundles/taiga-ui-cdk-observables.umd.min.js.map +1 -1
  132. package/bundles/taiga-ui-cdk-pipes-filter.umd.js +1 -1
  133. package/bundles/taiga-ui-cdk-pipes-filter.umd.js.map +1 -1
  134. package/bundles/taiga-ui-cdk-pipes-filter.umd.min.js.map +1 -1
  135. package/bundles/taiga-ui-cdk-pipes-mapper.umd.js +1 -1
  136. package/bundles/taiga-ui-cdk-pipes-mapper.umd.js.map +1 -1
  137. package/bundles/taiga-ui-cdk-pipes-mapper.umd.min.js.map +1 -1
  138. package/bundles/taiga-ui-cdk-services.umd.js +27 -27
  139. package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
  140. package/bundles/taiga-ui-cdk-services.umd.min.js.map +1 -1
  141. package/bundles/taiga-ui-cdk-tokens.umd.js +31 -31
  142. package/bundles/taiga-ui-cdk-tokens.umd.js.map +1 -1
  143. package/bundles/taiga-ui-cdk-tokens.umd.min.js.map +1 -1
  144. package/bundles/taiga-ui-cdk-utils-browser.umd.js +5 -5
  145. package/bundles/taiga-ui-cdk-utils-browser.umd.js.map +1 -1
  146. package/bundles/taiga-ui-cdk-utils-browser.umd.min.js.map +1 -1
  147. package/bundles/taiga-ui-cdk-utils-dom.umd.js +17 -11
  148. package/bundles/taiga-ui-cdk-utils-dom.umd.js.map +1 -1
  149. package/bundles/taiga-ui-cdk-utils-dom.umd.min.js +1 -1
  150. package/bundles/taiga-ui-cdk-utils-dom.umd.min.js.map +1 -1
  151. package/bundles/taiga-ui-cdk-utils-focus.umd.js +19 -19
  152. package/bundles/taiga-ui-cdk-utils-focus.umd.js.map +1 -1
  153. package/bundles/taiga-ui-cdk-utils-focus.umd.min.js.map +1 -1
  154. package/bundles/taiga-ui-cdk-utils-format.umd.js +2 -2
  155. package/bundles/taiga-ui-cdk-utils-format.umd.js.map +1 -1
  156. package/bundles/taiga-ui-cdk-utils-format.umd.min.js.map +1 -1
  157. package/bundles/taiga-ui-cdk-utils-math.umd.js +4 -4
  158. package/bundles/taiga-ui-cdk-utils-math.umd.js.map +1 -1
  159. package/bundles/taiga-ui-cdk-utils-math.umd.min.js.map +1 -1
  160. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js +4 -4
  161. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js.map +1 -1
  162. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.min.js.map +1 -1
  163. package/bundles/taiga-ui-cdk-utils-os.umd.js +1 -1
  164. package/bundles/taiga-ui-cdk-utils-os.umd.js.map +1 -1
  165. package/bundles/taiga-ui-cdk-utils-os.umd.min.js.map +1 -1
  166. package/bundles/taiga-ui-cdk-utils-svg.umd.js +1 -1
  167. package/bundles/taiga-ui-cdk-utils-svg.umd.js.map +1 -1
  168. package/bundles/taiga-ui-cdk-utils-svg.umd.min.js.map +1 -1
  169. package/directives/active-zone/taiga-ui-cdk-directives-active-zone.metadata.json +1 -1
  170. package/esm2015/abstract/control.js +4 -4
  171. package/esm2015/abstract/interactive.js +8 -8
  172. package/esm2015/abstract/portal-host.js +2 -2
  173. package/esm2015/abstract/theme-switcher.js +2 -2
  174. package/esm2015/classes/assert.js +2 -2
  175. package/esm2015/coercion/coerce-boolean-property.js +2 -2
  176. package/esm2015/components/alert-host/alert-host.component.js +2 -2
  177. package/esm2015/components/dialog-host/dialog-host.component.js +5 -5
  178. package/esm2015/components/dropdown-host/dropdown-host.component.js +3 -3
  179. package/esm2015/components/portal-host/portal.service.js +2 -2
  180. package/esm2015/constants/parent-animation.js +5 -5
  181. package/esm2015/constants/svg-node-filter.js +2 -2
  182. package/esm2015/constants/unicode-chars.js +11 -11
  183. package/esm2015/date-time/date-fillers.js +3 -3
  184. package/esm2015/date-time/date-format.js +3 -3
  185. package/esm2015/date-time/date-separator.js +3 -3
  186. package/esm2015/date-time/day-range.js +7 -7
  187. package/esm2015/date-time/day.js +14 -14
  188. package/esm2015/date-time/month.js +2 -2
  189. package/esm2015/date-time/time.js +7 -7
  190. package/esm2015/date-time/year.js +2 -2
  191. package/esm2015/decorators/pure.js +2 -2
  192. package/esm2015/directives/active-zone/active-zone.directive.js +4 -4
  193. package/esm2015/directives/auto-focus/autofocus.directive.js +2 -2
  194. package/esm2015/directives/auto-focus/autofocus.options.js +2 -2
  195. package/esm2015/directives/auto-focus/handlers/abstract.handler.js +2 -2
  196. package/esm2015/directives/auto-focus/handlers/default.handler.js +2 -2
  197. package/esm2015/directives/auto-focus/handlers/ios.handler.js +12 -12
  198. package/esm2015/directives/autofilled/autofilled-style.component.js +2 -2
  199. package/esm2015/directives/autofilled/autofilled.directive.js +6 -6
  200. package/esm2015/directives/checked/checked.directive.js +7 -7
  201. package/esm2015/directives/copy-processor/copy-processor.directive.js +4 -4
  202. package/esm2015/directives/drag/drag.directive.js +5 -5
  203. package/esm2015/directives/droppable/droppable.directive.js +5 -5
  204. package/esm2015/directives/element/element.directive.js +3 -3
  205. package/esm2015/directives/focus-trap/focus-trap.directive.js +6 -6
  206. package/esm2015/directives/focus-visible/focus-visible.directive.js +3 -3
  207. package/esm2015/directives/focusable/focusable.directive.js +4 -4
  208. package/esm2015/directives/focused/focused.directive.js +3 -3
  209. package/esm2015/directives/for/for.directive.js +2 -2
  210. package/esm2015/directives/for-async/for-async.directive.js +2 -2
  211. package/esm2015/directives/high-dpi/high-dpi.directive.js +2 -2
  212. package/esm2015/directives/hovered/hovered.directive.js +5 -5
  213. package/esm2015/directives/input-mode/input-mode.directive.js +11 -11
  214. package/esm2015/directives/item/item.directive.js +2 -2
  215. package/esm2015/directives/let/let.directive.js +2 -2
  216. package/esm2015/directives/media/media.directive.js +13 -13
  217. package/esm2015/directives/obscured/obscured.directive.js +2 -2
  218. package/esm2015/directives/overscroll/overscroll.directive.js +12 -12
  219. package/esm2015/directives/pan/pan.directive.js +3 -3
  220. package/esm2015/directives/portal/portal.directive.js +2 -2
  221. package/esm2015/directives/pressed/pressed.directive.js +2 -2
  222. package/esm2015/directives/prevent-default/prevent-default.directive.js +4 -4
  223. package/esm2015/directives/repeat-times/repeat-times.directive.js +2 -2
  224. package/esm2015/directives/resize/resize.directive.js +3 -3
  225. package/esm2015/directives/swipe/swipe.directive.js +3 -3
  226. package/esm2015/directives/validator/validator.directive.js +2 -2
  227. package/esm2015/directives/zoom/zoom.directive.js +4 -4
  228. package/esm2015/enums/autocomplete.js +1 -1
  229. package/esm2015/enums/input-mode.js +1 -1
  230. package/esm2015/enums/input-type.js +1 -1
  231. package/esm2015/enums/overscroll-mode.js +1 -1
  232. package/esm2015/exceptions/computed-document.exception.js +2 -2
  233. package/esm2015/exceptions/document-selection.exception.js +2 -2
  234. package/esm2015/exceptions/no-host.exception.js +2 -2
  235. package/esm2015/exceptions/owner-document.exception.js +2 -2
  236. package/esm2015/exceptions/pure.exception.js +2 -2
  237. package/esm2015/exceptions/table-sort-key.exception.js +2 -2
  238. package/esm2015/exceptions/ts-parser.exception.js +2 -2
  239. package/esm2015/exceptions/value-changes.exception.js +2 -2
  240. package/esm2015/exceptions/value-present.exception.js +2 -2
  241. package/esm2015/exceptions/xml-parsing.exception.js +2 -2
  242. package/esm2015/observables/drag-and-drop-from.js +2 -2
  243. package/esm2015/observables/focus-visible-observable.js +5 -5
  244. package/esm2015/observables/mouse-drag-finish-from.js +2 -2
  245. package/esm2015/observables/pressed-observable.js +2 -2
  246. package/esm2015/pipes/filter/filter.pipe.js +2 -2
  247. package/esm2015/pipes/mapper/mapper.pipe.js +2 -2
  248. package/esm2015/services/directive-styles.service.js +5 -5
  249. package/esm2015/services/hovered.service.js +4 -4
  250. package/esm2015/services/id.service.js +3 -3
  251. package/esm2015/services/obscured.service.js +2 -2
  252. package/esm2015/services/pan.service.js +5 -5
  253. package/esm2015/services/parents-scroll.service.js +2 -2
  254. package/esm2015/services/scroll.service.js +5 -5
  255. package/esm2015/services/static-request.service.js +3 -3
  256. package/esm2015/services/swipe.service.js +2 -2
  257. package/esm2015/services/zoom.service.js +3 -3
  258. package/esm2015/tokens/active-element.js +9 -9
  259. package/esm2015/tokens/alerts.js +2 -2
  260. package/esm2015/tokens/default-renderer.js +2 -2
  261. package/esm2015/tokens/dialogs.js +2 -2
  262. package/esm2015/tokens/focusable-item-accessor.js +2 -2
  263. package/esm2015/tokens/is-android.js +2 -2
  264. package/esm2015/tokens/is-apple.js +2 -2
  265. package/esm2015/tokens/is-chromium.js +2 -2
  266. package/esm2015/tokens/is-cypress.js +2 -2
  267. package/esm2015/tokens/is-firefox.js +3 -3
  268. package/esm2015/tokens/is-ios.js +2 -2
  269. package/esm2015/tokens/is-mobile.js +2 -2
  270. package/esm2015/tokens/is-webkit.js +2 -2
  271. package/esm2015/tokens/removed-element.js +2 -2
  272. package/esm2015/tokens/sanitizer.js +2 -2
  273. package/esm2015/tokens/swipe-options.js +2 -2
  274. package/esm2015/tokens/take-only-trusted-events.js +2 -2
  275. package/esm2015/tokens/touch-supported.js +3 -3
  276. package/esm2015/tokens/window-height.js +3 -3
  277. package/esm2015/tokens/zoom-options.js +2 -2
  278. package/esm2015/utils/browser/is-edge-older-than.js +2 -2
  279. package/esm2015/utils/browser/is-edge.js +2 -2
  280. package/esm2015/utils/browser/is-firefox.js +2 -2
  281. package/esm2015/utils/browser/is-ie.js +2 -2
  282. package/esm2015/utils/browser/is-safari.js +2 -2
  283. package/esm2015/utils/dom/custom-event.js +3 -3
  284. package/esm2015/utils/dom/get-actual-target.js +2 -2
  285. package/esm2015/utils/dom/get-clipboard-data-text.js +4 -4
  286. package/esm2015/utils/dom/get-document-or-shadow-root.js +2 -2
  287. package/esm2015/utils/dom/get-element-offset.js +2 -2
  288. package/esm2015/utils/dom/index.js +2 -1
  289. package/esm2015/utils/dom/is-element.js +5 -0
  290. package/esm2015/utils/dom/is-form-field.js +4 -4
  291. package/esm2015/utils/focus/is-native-keyboard-focusable.js +14 -14
  292. package/esm2015/utils/focus/is-native-mouse-focusable.js +3 -3
  293. package/esm2015/utils/focus/set-native-mouse-focused.js +5 -5
  294. package/esm2015/utils/format/pad-start.js +2 -2
  295. package/esm2015/utils/format/px.js +2 -2
  296. package/esm2015/utils/math/round.js +5 -5
  297. package/esm2015/utils/miscellaneous/ease-in-out-quad.js +2 -2
  298. package/esm2015/utils/miscellaneous/get-swipe-direction.js +3 -3
  299. package/esm2015/utils/miscellaneous/is-number.js +2 -2
  300. package/esm2015/utils/os/is-apple-platform.js +2 -2
  301. package/esm2015/utils/svg/svg-linear-gradient-processor.js +2 -2
  302. package/esm5/abstract/control.js +4 -4
  303. package/esm5/abstract/interactive.js +8 -8
  304. package/esm5/abstract/portal-host.js +2 -2
  305. package/esm5/abstract/theme-switcher.js +2 -2
  306. package/esm5/classes/assert.js +2 -2
  307. package/esm5/coercion/coerce-boolean-property.js +2 -2
  308. package/esm5/components/alert-host/alert-host.component.js +2 -2
  309. package/esm5/components/dialog-host/dialog-host.component.js +5 -5
  310. package/esm5/components/dropdown-host/dropdown-host.component.js +3 -3
  311. package/esm5/components/portal-host/portal.service.js +2 -2
  312. package/esm5/constants/parent-animation.js +5 -5
  313. package/esm5/constants/svg-node-filter.js +2 -2
  314. package/esm5/constants/unicode-chars.js +11 -11
  315. package/esm5/date-time/date-fillers.js +3 -3
  316. package/esm5/date-time/date-format.js +3 -3
  317. package/esm5/date-time/date-separator.js +3 -3
  318. package/esm5/date-time/day-range.js +8 -8
  319. package/esm5/date-time/day.js +15 -15
  320. package/esm5/date-time/month.js +2 -2
  321. package/esm5/date-time/time.js +7 -7
  322. package/esm5/date-time/year.js +2 -2
  323. package/esm5/decorators/pure.js +2 -2
  324. package/esm5/directives/active-zone/active-zone.directive.js +4 -4
  325. package/esm5/directives/auto-focus/autofocus.directive.js +2 -2
  326. package/esm5/directives/auto-focus/autofocus.options.js +2 -2
  327. package/esm5/directives/auto-focus/handlers/abstract.handler.js +2 -2
  328. package/esm5/directives/auto-focus/handlers/default.handler.js +2 -2
  329. package/esm5/directives/auto-focus/handlers/ios.handler.js +12 -12
  330. package/esm5/directives/autofilled/autofilled-style.component.js +2 -2
  331. package/esm5/directives/autofilled/autofilled.directive.js +6 -6
  332. package/esm5/directives/checked/checked.directive.js +7 -7
  333. package/esm5/directives/copy-processor/copy-processor.directive.js +4 -4
  334. package/esm5/directives/drag/drag.directive.js +5 -5
  335. package/esm5/directives/droppable/droppable.directive.js +6 -6
  336. package/esm5/directives/element/element.directive.js +3 -3
  337. package/esm5/directives/focus-trap/focus-trap.directive.js +6 -6
  338. package/esm5/directives/focus-visible/focus-visible.directive.js +3 -3
  339. package/esm5/directives/focusable/focusable.directive.js +4 -4
  340. package/esm5/directives/focused/focused.directive.js +3 -3
  341. package/esm5/directives/for/for.directive.js +2 -2
  342. package/esm5/directives/for-async/for-async.directive.js +2 -2
  343. package/esm5/directives/high-dpi/high-dpi.directive.js +2 -2
  344. package/esm5/directives/hovered/hovered.directive.js +5 -5
  345. package/esm5/directives/input-mode/input-mode.directive.js +11 -11
  346. package/esm5/directives/item/item.directive.js +2 -2
  347. package/esm5/directives/let/let.directive.js +2 -2
  348. package/esm5/directives/media/media.directive.js +13 -13
  349. package/esm5/directives/obscured/obscured.directive.js +2 -2
  350. package/esm5/directives/overscroll/overscroll.directive.js +12 -12
  351. package/esm5/directives/pan/pan.directive.js +3 -3
  352. package/esm5/directives/portal/portal.directive.js +2 -2
  353. package/esm5/directives/pressed/pressed.directive.js +2 -2
  354. package/esm5/directives/prevent-default/prevent-default.directive.js +4 -4
  355. package/esm5/directives/repeat-times/repeat-times.directive.js +2 -2
  356. package/esm5/directives/resize/resize.directive.js +3 -3
  357. package/esm5/directives/swipe/swipe.directive.js +3 -3
  358. package/esm5/directives/validator/validator.directive.js +2 -2
  359. package/esm5/directives/zoom/zoom.directive.js +4 -4
  360. package/esm5/enums/autocomplete.js +1 -1
  361. package/esm5/enums/input-mode.js +1 -1
  362. package/esm5/enums/input-type.js +1 -1
  363. package/esm5/enums/overscroll-mode.js +1 -1
  364. package/esm5/exceptions/computed-document.exception.js +2 -2
  365. package/esm5/exceptions/document-selection.exception.js +2 -2
  366. package/esm5/exceptions/no-host.exception.js +2 -2
  367. package/esm5/exceptions/owner-document.exception.js +2 -2
  368. package/esm5/exceptions/pure.exception.js +2 -2
  369. package/esm5/exceptions/table-sort-key.exception.js +2 -2
  370. package/esm5/exceptions/ts-parser.exception.js +2 -2
  371. package/esm5/exceptions/value-changes.exception.js +2 -2
  372. package/esm5/exceptions/value-present.exception.js +2 -2
  373. package/esm5/exceptions/xml-parsing.exception.js +2 -2
  374. package/esm5/observables/drag-and-drop-from.js +2 -2
  375. package/esm5/observables/focus-visible-observable.js +5 -5
  376. package/esm5/observables/mouse-drag-finish-from.js +2 -2
  377. package/esm5/observables/pressed-observable.js +2 -2
  378. package/esm5/pipes/filter/filter.pipe.js +2 -2
  379. package/esm5/pipes/mapper/mapper.pipe.js +2 -2
  380. package/esm5/services/directive-styles.service.js +5 -5
  381. package/esm5/services/hovered.service.js +5 -5
  382. package/esm5/services/id.service.js +3 -3
  383. package/esm5/services/obscured.service.js +2 -2
  384. package/esm5/services/pan.service.js +5 -5
  385. package/esm5/services/parents-scroll.service.js +2 -2
  386. package/esm5/services/scroll.service.js +5 -5
  387. package/esm5/services/static-request.service.js +3 -3
  388. package/esm5/services/swipe.service.js +2 -2
  389. package/esm5/services/zoom.service.js +5 -5
  390. package/esm5/tokens/active-element.js +10 -10
  391. package/esm5/tokens/alerts.js +2 -2
  392. package/esm5/tokens/default-renderer.js +2 -2
  393. package/esm5/tokens/dialogs.js +2 -2
  394. package/esm5/tokens/focusable-item-accessor.js +2 -2
  395. package/esm5/tokens/is-android.js +2 -2
  396. package/esm5/tokens/is-apple.js +2 -2
  397. package/esm5/tokens/is-chromium.js +2 -2
  398. package/esm5/tokens/is-cypress.js +2 -2
  399. package/esm5/tokens/is-firefox.js +3 -3
  400. package/esm5/tokens/is-ios.js +2 -2
  401. package/esm5/tokens/is-mobile.js +2 -2
  402. package/esm5/tokens/is-webkit.js +2 -2
  403. package/esm5/tokens/removed-element.js +2 -2
  404. package/esm5/tokens/sanitizer.js +2 -2
  405. package/esm5/tokens/swipe-options.js +2 -2
  406. package/esm5/tokens/take-only-trusted-events.js +2 -2
  407. package/esm5/tokens/touch-supported.js +3 -3
  408. package/esm5/tokens/window-height.js +3 -3
  409. package/esm5/tokens/zoom-options.js +2 -2
  410. package/esm5/utils/browser/is-edge-older-than.js +2 -2
  411. package/esm5/utils/browser/is-edge.js +2 -2
  412. package/esm5/utils/browser/is-firefox.js +2 -2
  413. package/esm5/utils/browser/is-ie.js +2 -2
  414. package/esm5/utils/browser/is-safari.js +2 -2
  415. package/esm5/utils/dom/custom-event.js +3 -3
  416. package/esm5/utils/dom/get-actual-target.js +2 -2
  417. package/esm5/utils/dom/get-clipboard-data-text.js +4 -4
  418. package/esm5/utils/dom/get-document-or-shadow-root.js +2 -2
  419. package/esm5/utils/dom/get-element-offset.js +2 -2
  420. package/esm5/utils/dom/index.js +2 -1
  421. package/esm5/utils/dom/is-element.js +5 -0
  422. package/esm5/utils/dom/is-form-field.js +4 -4
  423. package/esm5/utils/focus/is-native-keyboard-focusable.js +14 -14
  424. package/esm5/utils/focus/is-native-mouse-focusable.js +3 -3
  425. package/esm5/utils/focus/set-native-mouse-focused.js +5 -5
  426. package/esm5/utils/format/pad-start.js +2 -2
  427. package/esm5/utils/format/px.js +2 -2
  428. package/esm5/utils/math/round.js +5 -5
  429. package/esm5/utils/miscellaneous/ease-in-out-quad.js +2 -2
  430. package/esm5/utils/miscellaneous/get-swipe-direction.js +3 -3
  431. package/esm5/utils/miscellaneous/is-number.js +2 -2
  432. package/esm5/utils/os/is-apple-platform.js +2 -2
  433. package/esm5/utils/svg/svg-linear-gradient-processor.js +2 -2
  434. package/fesm2015/taiga-ui-cdk-abstract.js +12 -12
  435. package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
  436. package/fesm2015/taiga-ui-cdk-classes.js +1 -1
  437. package/fesm2015/taiga-ui-cdk-classes.js.map +1 -1
  438. package/fesm2015/taiga-ui-cdk-coercion.js +1 -1
  439. package/fesm2015/taiga-ui-cdk-coercion.js.map +1 -1
  440. package/fesm2015/taiga-ui-cdk-components-alert-host.js +1 -1
  441. package/fesm2015/taiga-ui-cdk-components-alert-host.js.map +1 -1
  442. package/fesm2015/taiga-ui-cdk-components-dialog-host.js +4 -4
  443. package/fesm2015/taiga-ui-cdk-components-dialog-host.js.map +1 -1
  444. package/fesm2015/taiga-ui-cdk-components-dropdown-host.js +2 -2
  445. package/fesm2015/taiga-ui-cdk-components-dropdown-host.js.map +1 -1
  446. package/fesm2015/taiga-ui-cdk-components-portal-host.js +1 -1
  447. package/fesm2015/taiga-ui-cdk-components-portal-host.js.map +1 -1
  448. package/fesm2015/taiga-ui-cdk-constants.js +15 -15
  449. package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
  450. package/fesm2015/taiga-ui-cdk-date-time.js +33 -33
  451. package/fesm2015/taiga-ui-cdk-date-time.js.map +1 -1
  452. package/fesm2015/taiga-ui-cdk-decorators.js +1 -1
  453. package/fesm2015/taiga-ui-cdk-decorators.js.map +1 -1
  454. package/fesm2015/taiga-ui-cdk-directives-active-zone.js +3 -3
  455. package/fesm2015/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  456. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +15 -15
  457. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  458. package/fesm2015/taiga-ui-cdk-directives-autofilled.js +6 -6
  459. package/fesm2015/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  460. package/fesm2015/taiga-ui-cdk-directives-checked.js +6 -6
  461. package/fesm2015/taiga-ui-cdk-directives-checked.js.map +1 -1
  462. package/fesm2015/taiga-ui-cdk-directives-copy-processor.js +3 -3
  463. package/fesm2015/taiga-ui-cdk-directives-copy-processor.js.map +1 -1
  464. package/fesm2015/taiga-ui-cdk-directives-drag.js +4 -4
  465. package/fesm2015/taiga-ui-cdk-directives-drag.js.map +1 -1
  466. package/fesm2015/taiga-ui-cdk-directives-droppable.js +4 -4
  467. package/fesm2015/taiga-ui-cdk-directives-droppable.js.map +1 -1
  468. package/fesm2015/taiga-ui-cdk-directives-element.js +2 -2
  469. package/fesm2015/taiga-ui-cdk-directives-element.js.map +1 -1
  470. package/fesm2015/taiga-ui-cdk-directives-focus-trap.js +5 -5
  471. package/fesm2015/taiga-ui-cdk-directives-focus-trap.js.map +1 -1
  472. package/fesm2015/taiga-ui-cdk-directives-focus-visible.js +2 -2
  473. package/fesm2015/taiga-ui-cdk-directives-focus-visible.js.map +1 -1
  474. package/fesm2015/taiga-ui-cdk-directives-focusable.js +3 -3
  475. package/fesm2015/taiga-ui-cdk-directives-focusable.js.map +1 -1
  476. package/fesm2015/taiga-ui-cdk-directives-focused.js +2 -2
  477. package/fesm2015/taiga-ui-cdk-directives-focused.js.map +1 -1
  478. package/fesm2015/taiga-ui-cdk-directives-for-async.js +1 -1
  479. package/fesm2015/taiga-ui-cdk-directives-for-async.js.map +1 -1
  480. package/fesm2015/taiga-ui-cdk-directives-for.js +1 -1
  481. package/fesm2015/taiga-ui-cdk-directives-for.js.map +1 -1
  482. package/fesm2015/taiga-ui-cdk-directives-high-dpi.js +1 -1
  483. package/fesm2015/taiga-ui-cdk-directives-high-dpi.js.map +1 -1
  484. package/fesm2015/taiga-ui-cdk-directives-hovered.js +4 -4
  485. package/fesm2015/taiga-ui-cdk-directives-hovered.js.map +1 -1
  486. package/fesm2015/taiga-ui-cdk-directives-input-mode.js +10 -10
  487. package/fesm2015/taiga-ui-cdk-directives-input-mode.js.map +1 -1
  488. package/fesm2015/taiga-ui-cdk-directives-item.js +1 -1
  489. package/fesm2015/taiga-ui-cdk-directives-item.js.map +1 -1
  490. package/fesm2015/taiga-ui-cdk-directives-let.js +1 -1
  491. package/fesm2015/taiga-ui-cdk-directives-let.js.map +1 -1
  492. package/fesm2015/taiga-ui-cdk-directives-media.js +12 -12
  493. package/fesm2015/taiga-ui-cdk-directives-media.js.map +1 -1
  494. package/fesm2015/taiga-ui-cdk-directives-obscured.js +1 -1
  495. package/fesm2015/taiga-ui-cdk-directives-obscured.js.map +1 -1
  496. package/fesm2015/taiga-ui-cdk-directives-overscroll.js +11 -11
  497. package/fesm2015/taiga-ui-cdk-directives-overscroll.js.map +1 -1
  498. package/fesm2015/taiga-ui-cdk-directives-pan.js +2 -2
  499. package/fesm2015/taiga-ui-cdk-directives-pan.js.map +1 -1
  500. package/fesm2015/taiga-ui-cdk-directives-portal.js +1 -1
  501. package/fesm2015/taiga-ui-cdk-directives-portal.js.map +1 -1
  502. package/fesm2015/taiga-ui-cdk-directives-pressed.js +1 -1
  503. package/fesm2015/taiga-ui-cdk-directives-pressed.js.map +1 -1
  504. package/fesm2015/taiga-ui-cdk-directives-prevent-default.js +3 -3
  505. package/fesm2015/taiga-ui-cdk-directives-prevent-default.js.map +1 -1
  506. package/fesm2015/taiga-ui-cdk-directives-repeat-times.js +1 -1
  507. package/fesm2015/taiga-ui-cdk-directives-repeat-times.js.map +1 -1
  508. package/fesm2015/taiga-ui-cdk-directives-resize.js +2 -2
  509. package/fesm2015/taiga-ui-cdk-directives-resize.js.map +1 -1
  510. package/fesm2015/taiga-ui-cdk-directives-swipe.js +2 -2
  511. package/fesm2015/taiga-ui-cdk-directives-swipe.js.map +1 -1
  512. package/fesm2015/taiga-ui-cdk-directives-validator.js +1 -1
  513. package/fesm2015/taiga-ui-cdk-directives-validator.js.map +1 -1
  514. package/fesm2015/taiga-ui-cdk-directives-zoom.js +3 -3
  515. package/fesm2015/taiga-ui-cdk-directives-zoom.js.map +1 -1
  516. package/fesm2015/taiga-ui-cdk-enums.js.map +1 -1
  517. package/fesm2015/taiga-ui-cdk-exceptions.js +10 -10
  518. package/fesm2015/taiga-ui-cdk-exceptions.js.map +1 -1
  519. package/fesm2015/taiga-ui-cdk-observables.js +7 -7
  520. package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
  521. package/fesm2015/taiga-ui-cdk-pipes-filter.js +1 -1
  522. package/fesm2015/taiga-ui-cdk-pipes-filter.js.map +1 -1
  523. package/fesm2015/taiga-ui-cdk-pipes-mapper.js +1 -1
  524. package/fesm2015/taiga-ui-cdk-pipes-mapper.js.map +1 -1
  525. package/fesm2015/taiga-ui-cdk-services.js +24 -24
  526. package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
  527. package/fesm2015/taiga-ui-cdk-tokens.js +30 -30
  528. package/fesm2015/taiga-ui-cdk-tokens.js.map +1 -1
  529. package/fesm2015/taiga-ui-cdk-utils-browser.js +5 -5
  530. package/fesm2015/taiga-ui-cdk-utils-browser.js.map +1 -1
  531. package/fesm2015/taiga-ui-cdk-utils-dom.js +17 -12
  532. package/fesm2015/taiga-ui-cdk-utils-dom.js.map +1 -1
  533. package/fesm2015/taiga-ui-cdk-utils-focus.js +19 -19
  534. package/fesm2015/taiga-ui-cdk-utils-focus.js.map +1 -1
  535. package/fesm2015/taiga-ui-cdk-utils-format.js +2 -2
  536. package/fesm2015/taiga-ui-cdk-utils-format.js.map +1 -1
  537. package/fesm2015/taiga-ui-cdk-utils-math.js +4 -4
  538. package/fesm2015/taiga-ui-cdk-utils-math.js.map +1 -1
  539. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js +4 -4
  540. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  541. package/fesm2015/taiga-ui-cdk-utils-os.js +1 -1
  542. package/fesm2015/taiga-ui-cdk-utils-os.js.map +1 -1
  543. package/fesm2015/taiga-ui-cdk-utils-svg.js +1 -1
  544. package/fesm2015/taiga-ui-cdk-utils-svg.js.map +1 -1
  545. package/fesm5/taiga-ui-cdk-abstract.js +12 -12
  546. package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
  547. package/fesm5/taiga-ui-cdk-classes.js +1 -1
  548. package/fesm5/taiga-ui-cdk-classes.js.map +1 -1
  549. package/fesm5/taiga-ui-cdk-coercion.js +1 -1
  550. package/fesm5/taiga-ui-cdk-coercion.js.map +1 -1
  551. package/fesm5/taiga-ui-cdk-components-alert-host.js +1 -1
  552. package/fesm5/taiga-ui-cdk-components-alert-host.js.map +1 -1
  553. package/fesm5/taiga-ui-cdk-components-dialog-host.js +4 -4
  554. package/fesm5/taiga-ui-cdk-components-dialog-host.js.map +1 -1
  555. package/fesm5/taiga-ui-cdk-components-dropdown-host.js +2 -2
  556. package/fesm5/taiga-ui-cdk-components-dropdown-host.js.map +1 -1
  557. package/fesm5/taiga-ui-cdk-components-portal-host.js +1 -1
  558. package/fesm5/taiga-ui-cdk-components-portal-host.js.map +1 -1
  559. package/fesm5/taiga-ui-cdk-constants.js +15 -15
  560. package/fesm5/taiga-ui-cdk-constants.js.map +1 -1
  561. package/fesm5/taiga-ui-cdk-date-time.js +35 -35
  562. package/fesm5/taiga-ui-cdk-date-time.js.map +1 -1
  563. package/fesm5/taiga-ui-cdk-decorators.js +1 -1
  564. package/fesm5/taiga-ui-cdk-decorators.js.map +1 -1
  565. package/fesm5/taiga-ui-cdk-directives-active-zone.js +3 -3
  566. package/fesm5/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  567. package/fesm5/taiga-ui-cdk-directives-auto-focus.js +15 -15
  568. package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  569. package/fesm5/taiga-ui-cdk-directives-autofilled.js +6 -6
  570. package/fesm5/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  571. package/fesm5/taiga-ui-cdk-directives-checked.js +6 -6
  572. package/fesm5/taiga-ui-cdk-directives-checked.js.map +1 -1
  573. package/fesm5/taiga-ui-cdk-directives-copy-processor.js +3 -3
  574. package/fesm5/taiga-ui-cdk-directives-copy-processor.js.map +1 -1
  575. package/fesm5/taiga-ui-cdk-directives-drag.js +4 -4
  576. package/fesm5/taiga-ui-cdk-directives-drag.js.map +1 -1
  577. package/fesm5/taiga-ui-cdk-directives-droppable.js +5 -5
  578. package/fesm5/taiga-ui-cdk-directives-droppable.js.map +1 -1
  579. package/fesm5/taiga-ui-cdk-directives-element.js +2 -2
  580. package/fesm5/taiga-ui-cdk-directives-element.js.map +1 -1
  581. package/fesm5/taiga-ui-cdk-directives-focus-trap.js +5 -5
  582. package/fesm5/taiga-ui-cdk-directives-focus-trap.js.map +1 -1
  583. package/fesm5/taiga-ui-cdk-directives-focus-visible.js +2 -2
  584. package/fesm5/taiga-ui-cdk-directives-focus-visible.js.map +1 -1
  585. package/fesm5/taiga-ui-cdk-directives-focusable.js +3 -3
  586. package/fesm5/taiga-ui-cdk-directives-focusable.js.map +1 -1
  587. package/fesm5/taiga-ui-cdk-directives-focused.js +2 -2
  588. package/fesm5/taiga-ui-cdk-directives-focused.js.map +1 -1
  589. package/fesm5/taiga-ui-cdk-directives-for-async.js +1 -1
  590. package/fesm5/taiga-ui-cdk-directives-for-async.js.map +1 -1
  591. package/fesm5/taiga-ui-cdk-directives-for.js +1 -1
  592. package/fesm5/taiga-ui-cdk-directives-for.js.map +1 -1
  593. package/fesm5/taiga-ui-cdk-directives-high-dpi.js +1 -1
  594. package/fesm5/taiga-ui-cdk-directives-high-dpi.js.map +1 -1
  595. package/fesm5/taiga-ui-cdk-directives-hovered.js +4 -4
  596. package/fesm5/taiga-ui-cdk-directives-hovered.js.map +1 -1
  597. package/fesm5/taiga-ui-cdk-directives-input-mode.js +10 -10
  598. package/fesm5/taiga-ui-cdk-directives-input-mode.js.map +1 -1
  599. package/fesm5/taiga-ui-cdk-directives-item.js +1 -1
  600. package/fesm5/taiga-ui-cdk-directives-item.js.map +1 -1
  601. package/fesm5/taiga-ui-cdk-directives-let.js +1 -1
  602. package/fesm5/taiga-ui-cdk-directives-let.js.map +1 -1
  603. package/fesm5/taiga-ui-cdk-directives-media.js +12 -12
  604. package/fesm5/taiga-ui-cdk-directives-media.js.map +1 -1
  605. package/fesm5/taiga-ui-cdk-directives-obscured.js +1 -1
  606. package/fesm5/taiga-ui-cdk-directives-obscured.js.map +1 -1
  607. package/fesm5/taiga-ui-cdk-directives-overscroll.js +11 -11
  608. package/fesm5/taiga-ui-cdk-directives-overscroll.js.map +1 -1
  609. package/fesm5/taiga-ui-cdk-directives-pan.js +2 -2
  610. package/fesm5/taiga-ui-cdk-directives-pan.js.map +1 -1
  611. package/fesm5/taiga-ui-cdk-directives-portal.js +1 -1
  612. package/fesm5/taiga-ui-cdk-directives-portal.js.map +1 -1
  613. package/fesm5/taiga-ui-cdk-directives-pressed.js +1 -1
  614. package/fesm5/taiga-ui-cdk-directives-pressed.js.map +1 -1
  615. package/fesm5/taiga-ui-cdk-directives-prevent-default.js +3 -3
  616. package/fesm5/taiga-ui-cdk-directives-prevent-default.js.map +1 -1
  617. package/fesm5/taiga-ui-cdk-directives-repeat-times.js +1 -1
  618. package/fesm5/taiga-ui-cdk-directives-repeat-times.js.map +1 -1
  619. package/fesm5/taiga-ui-cdk-directives-resize.js +2 -2
  620. package/fesm5/taiga-ui-cdk-directives-resize.js.map +1 -1
  621. package/fesm5/taiga-ui-cdk-directives-swipe.js +2 -2
  622. package/fesm5/taiga-ui-cdk-directives-swipe.js.map +1 -1
  623. package/fesm5/taiga-ui-cdk-directives-validator.js +1 -1
  624. package/fesm5/taiga-ui-cdk-directives-validator.js.map +1 -1
  625. package/fesm5/taiga-ui-cdk-directives-zoom.js +3 -3
  626. package/fesm5/taiga-ui-cdk-directives-zoom.js.map +1 -1
  627. package/fesm5/taiga-ui-cdk-enums.js.map +1 -1
  628. package/fesm5/taiga-ui-cdk-exceptions.js +10 -10
  629. package/fesm5/taiga-ui-cdk-exceptions.js.map +1 -1
  630. package/fesm5/taiga-ui-cdk-observables.js +7 -7
  631. package/fesm5/taiga-ui-cdk-observables.js.map +1 -1
  632. package/fesm5/taiga-ui-cdk-pipes-filter.js +1 -1
  633. package/fesm5/taiga-ui-cdk-pipes-filter.js.map +1 -1
  634. package/fesm5/taiga-ui-cdk-pipes-mapper.js +1 -1
  635. package/fesm5/taiga-ui-cdk-pipes-mapper.js.map +1 -1
  636. package/fesm5/taiga-ui-cdk-services.js +27 -27
  637. package/fesm5/taiga-ui-cdk-services.js.map +1 -1
  638. package/fesm5/taiga-ui-cdk-tokens.js +31 -31
  639. package/fesm5/taiga-ui-cdk-tokens.js.map +1 -1
  640. package/fesm5/taiga-ui-cdk-utils-browser.js +5 -5
  641. package/fesm5/taiga-ui-cdk-utils-browser.js.map +1 -1
  642. package/fesm5/taiga-ui-cdk-utils-dom.js +17 -12
  643. package/fesm5/taiga-ui-cdk-utils-dom.js.map +1 -1
  644. package/fesm5/taiga-ui-cdk-utils-focus.js +19 -19
  645. package/fesm5/taiga-ui-cdk-utils-focus.js.map +1 -1
  646. package/fesm5/taiga-ui-cdk-utils-format.js +2 -2
  647. package/fesm5/taiga-ui-cdk-utils-format.js.map +1 -1
  648. package/fesm5/taiga-ui-cdk-utils-math.js +4 -4
  649. package/fesm5/taiga-ui-cdk-utils-math.js.map +1 -1
  650. package/fesm5/taiga-ui-cdk-utils-miscellaneous.js +4 -4
  651. package/fesm5/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  652. package/fesm5/taiga-ui-cdk-utils-os.js +1 -1
  653. package/fesm5/taiga-ui-cdk-utils-os.js.map +1 -1
  654. package/fesm5/taiga-ui-cdk-utils-svg.js +1 -1
  655. package/fesm5/taiga-ui-cdk-utils-svg.js.map +1 -1
  656. package/package.json +1 -1
  657. package/utils/dom/index.d.ts +1 -0
  658. package/utils/dom/is-element.d.ts +1 -0
  659. package/utils/dom/taiga-ui-cdk-utils-dom.metadata.json +1 -1
@@ -27,13 +27,13 @@ var MILLISECONDS_IN_DAY = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;
27
27
  /**
28
28
  * @deprecated dont use it. See {@link TUI_DATE_FORMAT}
29
29
  */
30
- var TUI_DATE_FILLER = new InjectionToken('date filler for Taiga UI', {
30
+ var TUI_DATE_FILLER = new InjectionToken("date filler for Taiga UI", {
31
31
  factory: function () { return "dd.mm.yyyy"; },
32
32
  });
33
33
  /**
34
34
  * @deprecated dont use it
35
35
  */
36
- var TUI_DATE_RANGE_FILLER = new InjectionToken('date range filler for Taiga UI', {
36
+ var TUI_DATE_RANGE_FILLER = new InjectionToken("date range filler for Taiga UI", {
37
37
  factory: function () {
38
38
  var dateFiller = inject(TUI_DATE_FILLER);
39
39
  return "" + dateFiller + RANGE_SEPARATOR_CHAR + dateFiller;
@@ -53,12 +53,12 @@ var DATE_FILLER_LENGTH = 10;
53
53
  */
54
54
  var DATE_RANGE_FILLER_LENGTH = 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;
55
55
 
56
- var TUI_DATE_FORMAT = new InjectionToken('Active date format for Taiga UI', {
57
- factory: function () { return 'DMY'; },
56
+ var TUI_DATE_FORMAT = new InjectionToken("Active date format for Taiga UI", {
57
+ factory: function () { return "DMY"; },
58
58
  });
59
59
 
60
- var TUI_DATE_SEPARATOR = new InjectionToken('Date separator for Taiga UI components', {
61
- factory: function () { return '.'; },
60
+ var TUI_DATE_SEPARATOR = new InjectionToken("Date separator for Taiga UI components", {
61
+ factory: function () { return "."; },
62
62
  });
63
63
  var changeDateSeparator = function (dateString, newDateSeparator) { return dateString.replace(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator); };
64
64
 
@@ -121,7 +121,7 @@ var TuiYear = /** @class */ (function () {
121
121
  };
122
122
  Object.defineProperty(TuiYear.prototype, "formattedYear", {
123
123
  get: function () {
124
- return padStart(String(this.year), 4, '0');
124
+ return padStart(String(this.year), 4, "0");
125
125
  },
126
126
  enumerable: true,
127
127
  configurable: true
@@ -297,7 +297,7 @@ var TuiMonth = /** @class */ (function (_super) {
297
297
  };
298
298
  Object.defineProperty(TuiMonth.prototype, "formattedMonthPart", {
299
299
  get: function () {
300
- return padStart(String(this.month + 1), 2, '0');
300
+ return padStart(String(this.month + 1), 2, "0");
301
301
  },
302
302
  enumerable: true,
303
303
  configurable: true
@@ -529,23 +529,23 @@ var TuiDay = /** @class */ (function (_super) {
529
529
  (1000 * 60 * 60 * 24));
530
530
  };
531
531
  TuiDay.parseRawDateString = function (date, dateMode) {
532
- if (dateMode === void 0) { dateMode = 'DMY'; }
533
- tuiAssert.assert(date.length === DATE_FILLER_LENGTH, '[parseRawDateString]: wrong date string length');
532
+ if (dateMode === void 0) { dateMode = "DMY"; }
533
+ tuiAssert.assert(date.length === DATE_FILLER_LENGTH, "[parseRawDateString]: wrong date string length");
534
534
  switch (dateMode) {
535
- case 'YMD':
535
+ case "YMD":
536
536
  return {
537
537
  day: parseInt(date.slice(8, 10), 10),
538
538
  month: parseInt(date.slice(5, 7), 10) - 1,
539
539
  year: parseInt(date.slice(0, 4), 10),
540
540
  };
541
- case 'MDY':
541
+ case "MDY":
542
542
  return {
543
543
  day: parseInt(date.slice(3, 5), 10),
544
544
  month: parseInt(date.slice(0, 2), 10) - 1,
545
545
  year: parseInt(date.slice(6, 10), 10),
546
546
  };
547
547
  default:
548
- case 'DMY':
548
+ case "DMY":
549
549
  return {
550
550
  day: parseInt(date.slice(0, 2), 10),
551
551
  month: parseInt(date.slice(3, 5), 10) - 1,
@@ -562,7 +562,7 @@ var TuiDay = /** @class */ (function (_super) {
562
562
  * @return normalized date
563
563
  */
564
564
  TuiDay.normalizeParse = function (rawDate, dateMode) {
565
- if (dateMode === void 0) { dateMode = 'DMY'; }
565
+ if (dateMode === void 0) { dateMode = "DMY"; }
566
566
  var _a = this.parseRawDateString(rawDate, dateMode), day = _a.day, month = _a.month, year = _a.year;
567
567
  return TuiDay.normalizeOf(year, month, day);
568
568
  };
@@ -573,7 +573,7 @@ var TuiDay = /** @class */ (function (_super) {
573
573
  * @throws exceptions if any part of the date is invalid
574
574
  */
575
575
  TuiDay.jsonParse = function (yearMonthDayString) {
576
- var _a = this.parseRawDateString(yearMonthDayString, 'YMD'), day = _a.day, month = _a.month, year = _a.year;
576
+ var _a = this.parseRawDateString(yearMonthDayString, "YMD"), day = _a.day, month = _a.month, year = _a.year;
577
577
  if (!TuiYear.isValidYear(year)) {
578
578
  throw new InvalidYearException(year);
579
579
  }
@@ -593,7 +593,7 @@ var TuiDay = /** @class */ (function (_super) {
593
593
  };
594
594
  Object.defineProperty(TuiDay.prototype, "formattedDayPart", {
595
595
  get: function () {
596
- return padStart(String(this.day), 2, '0');
596
+ return padStart(String(this.day), 2, "0");
597
597
  },
598
598
  enumerable: true,
599
599
  configurable: true
@@ -730,23 +730,23 @@ var TuiDay = /** @class */ (function (_super) {
730
730
  * Returns formatted whole date
731
731
  */
732
732
  TuiDay.prototype.getFormattedDay = function (dateFormat, separator) {
733
- tuiAssert.assert(separator.length === 1, 'Separator should consist of only 1 symbol');
733
+ tuiAssert.assert(separator.length === 1, "Separator should consist of only 1 symbol");
734
734
  var dd = this.formattedDayPart;
735
735
  var mm = this.formattedMonthPart;
736
736
  var yyyy = this.formattedYear;
737
737
  switch (dateFormat) {
738
- case 'YMD':
738
+ case "YMD":
739
739
  return "" + yyyy + separator + mm + separator + dd;
740
- case 'MDY':
740
+ case "MDY":
741
741
  return "" + mm + separator + dd + separator + yyyy;
742
- case 'DMY':
742
+ case "DMY":
743
743
  default:
744
744
  return "" + dd + separator + mm + separator + yyyy;
745
745
  }
746
746
  };
747
747
  TuiDay.prototype.toString = function (dateFormat, separator) {
748
- if (dateFormat === void 0) { dateFormat = 'DMY'; }
749
- if (separator === void 0) { separator = '.'; }
748
+ if (dateFormat === void 0) { dateFormat = "DMY"; }
749
+ if (separator === void 0) { separator = "."; }
750
750
  return this.getFormattedDay(dateFormat, separator);
751
751
  };
752
752
  TuiDay.prototype.toJSON = function () {
@@ -812,7 +812,7 @@ var TuiMonthRange = /** @class */ (function () {
812
812
  * @deprecated
813
813
  */
814
814
  var isDateMode = function (dateMode) {
815
- return ['DMY', 'YMD', 'MDY'].includes(dateMode);
815
+ return ["DMY", "YMD", "MDY"].includes(dateMode);
816
816
  };
817
817
  /**
818
818
  * An immutable range of two {@link TuiDay} objects
@@ -846,8 +846,8 @@ var TuiDayRange = /** @class */ (function (_super) {
846
846
  * @return normalized day range object
847
847
  */
848
848
  TuiDayRange.normalizeParse = function (rangeString, dateMode) {
849
- if (dateMode === void 0) { dateMode = 'DMY'; }
850
- var dateFormat = isDateMode(dateMode) ? dateMode : 'DMY';
849
+ if (dateMode === void 0) { dateMode = "DMY"; }
850
+ var dateFormat = isDateMode(dateMode) ? dateMode : "DMY";
851
851
  var leftDay = TuiDay.normalizeParse(rangeString.slice(0, DATE_FILLER_LENGTH), dateFormat);
852
852
  if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {
853
853
  return new TuiDayRange(leftDay, leftDay);
@@ -867,8 +867,8 @@ var TuiDayRange = /** @class */ (function (_super) {
867
867
  * @deprecated use {@link getFormattedDayRange} instead
868
868
  */
869
869
  get: function () {
870
- var from = this.from.getFormattedDay('DMY', '.');
871
- var to = this.to.getFormattedDay('DMY', '.');
870
+ var from = this.from.getFormattedDay("DMY", ".");
871
+ var to = this.to.getFormattedDay("DMY", ".");
872
872
  return "" + from + RANGE_SEPARATOR_CHAR + to;
873
873
  },
874
874
  enumerable: true,
@@ -902,8 +902,8 @@ var TuiDayRange = /** @class */ (function (_super) {
902
902
  return "" + from + RANGE_SEPARATOR_CHAR + to;
903
903
  };
904
904
  TuiDayRange.prototype.toString = function (dateFormat, dateSeparator) {
905
- if (dateFormat === void 0) { dateFormat = 'DMY'; }
906
- if (dateSeparator === void 0) { dateSeparator = '.'; }
905
+ if (dateFormat === void 0) { dateFormat = "DMY"; }
906
+ if (dateSeparator === void 0) { dateSeparator = "."; }
907
907
  var from = this.from.getFormattedDay(dateFormat, dateSeparator);
908
908
  var to = this.to.getFormattedDay(dateFormat, dateSeparator);
909
909
  return "" + from + RANGE_SEPARATOR_CHAR + to;
@@ -925,7 +925,7 @@ var TuiTime = /** @class */ (function () {
925
925
  this.minutes = minutes;
926
926
  this.seconds = seconds;
927
927
  this.ms = ms;
928
- tuiAssert.assert(TuiTime.isValidTime(hours, minutes, seconds, ms), 'Time must be real, but got:', hours, minutes, seconds, ms);
928
+ tuiAssert.assert(TuiTime.isValidTime(hours, minutes, seconds, ms), "Time must be real, but got:", hours, minutes, seconds, ms);
929
929
  }
930
930
  /**
931
931
  * Checks if time is valid
@@ -1010,11 +1010,11 @@ var TuiTime = /** @class */ (function () {
1010
1010
  * Converts TuiTime to string
1011
1011
  */
1012
1012
  TuiTime.prototype.toString = function (mode) {
1013
- var needAddMs = mode === 'HH:MM:SS.MSS' || (!mode && this.ms > 0);
1014
- var needAddSeconds = needAddMs || mode === 'HH:MM:SS' || (!mode && this.seconds > 0);
1013
+ var needAddMs = mode === "HH:MM:SS.MSS" || (!mode && this.ms > 0);
1014
+ var needAddSeconds = needAddMs || mode === "HH:MM:SS" || (!mode && this.seconds > 0);
1015
1015
  return (this.formatTime(this.hours) + ":" + this.formatTime(this.minutes) +
1016
- ("" + (needAddSeconds ? ":" + this.formatTime(this.seconds) : '')) +
1017
- ("" + (needAddMs ? "." + this.formatTime(this.ms, 3) : '')));
1016
+ ("" + (needAddSeconds ? ":" + this.formatTime(this.seconds) : "")) +
1017
+ ("" + (needAddMs ? "." + this.formatTime(this.ms, 3) : "")));
1018
1018
  };
1019
1019
  TuiTime.prototype.valueOf = function () {
1020
1020
  return this.toAbsoluteMilliseconds();
@@ -1038,7 +1038,7 @@ var TuiTime = /** @class */ (function () {
1038
1038
  };
1039
1039
  TuiTime.prototype.formatTime = function (time, digits) {
1040
1040
  if (digits === void 0) { digits = 2; }
1041
- return padStart(String(time), digits, '0');
1041
+ return padStart(String(time), digits, "0");
1042
1042
  };
1043
1043
  return TuiTime;
1044
1044
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-date-time.js","sources":["ng://@taiga-ui/cdk/date-time/date-time.ts","ng://@taiga-ui/cdk/date-time/date-fillers.ts","ng://@taiga-ui/cdk/date-time/date-format.ts","ng://@taiga-ui/cdk/date-time/date-separator.ts","ng://@taiga-ui/cdk/date-time/year.ts","ng://@taiga-ui/cdk/date-time/month.ts","ng://@taiga-ui/cdk/date-time/day.ts","ng://@taiga-ui/cdk/date-time/month-range.ts","ng://@taiga-ui/cdk/date-time/day-range.ts","ng://@taiga-ui/cdk/date-time/days.const.ts","ng://@taiga-ui/cdk/date-time/time.ts","ng://@taiga-ui/cdk/date-time/taiga-ui-cdk-date-time.ts"],"sourcesContent":["import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\n\nexport const DAYS_IN_WEEK = 7;\n\nexport const DAYS_IN_NORMAL_YEAR = 365;\n\nexport const DAYS_IN_LEAP_YEAR = 366;\n\nexport const MONTHS_IN_YEAR = 12;\n\nexport const MIN_DAY = 1;\n\nexport const MIN_MONTH = 0;\n\nexport const MAX_MONTH = 11;\n\nexport const MIN_YEAR = 0;\n\nexport const MAX_YEAR = 9999;\n\nexport const RANGE_SEPARATOR_CHAR = `${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}`;\n\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const MINUTES_IN_HOUR = 60;\n\nexport const HOURS_IN_DAY = 24;\n\nexport const MILLISECONDS_IN_MINUTE = MILLISECONDS_IN_SECOND * SECONDS_IN_MINUTE;\n\nexport const MILLISECONDS_IN_HOUR = MILLISECONDS_IN_MINUTE * MINUTES_IN_HOUR;\n\nexport const MILLISECONDS_IN_DAY = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\n\n/**\n * @deprecated dont use it. See {@link TUI_DATE_FORMAT}\n */\nexport const TUI_DATE_FILLER = new InjectionToken<string>('date filler for Taiga UI', {\n factory: () => `dd.mm.yyyy`,\n});\n\n/**\n * @deprecated dont use it\n */\nexport const TUI_DATE_RANGE_FILLER = new InjectionToken<string>(\n 'date range filler for Taiga UI',\n {\n factory: () => {\n const dateFiller = inject(TUI_DATE_FILLER);\n\n return `${dateFiller}${RANGE_SEPARATOR_CHAR}${dateFiller}`;\n },\n },\n);\n\n/**\n * @internal 'dd.mm.yyyy'.length\n * Used in:\n * - {@link TuiInputDateComponent}\n * - {@link TuiInputDateRangeComponent}\n * - {@link TuiInputDateTimeComponent}\n */\nexport const DATE_FILLER_LENGTH = 10;\n/**\n * @internal\n * Used in {@link TuiInputDateRangeComponent}\n */\nexport const DATE_RANGE_FILLER_LENGTH =\n 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;\n","import {InjectionToken} from '@angular/core';\nimport {TuiDateMode} from '@taiga-ui/cdk/types';\n\nexport const TUI_DATE_FORMAT = new InjectionToken<TuiDateMode>(\n 'Active date format for Taiga UI',\n {\n factory: () => 'DMY',\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_DATE_SEPARATOR = new InjectionToken<string>(\n 'Date separator for Taiga UI components',\n {\n factory: () => '.',\n },\n);\n\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replace(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiYearLike} from '@taiga-ui/cdk/interfaces';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange, normalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {\n DAYS_IN_LEAP_YEAR,\n DAYS_IN_NORMAL_YEAR,\n DAYS_IN_WEEK,\n MAX_YEAR,\n MIN_YEAR,\n} from './date-time';\n\n/**\n * Immutable year object\n * @nosideeffects\n */\nexport class TuiYear implements TuiYearLike {\n constructor(readonly year: number) {\n tuiAssert.assert(TuiYear.isValidYear(year));\n }\n\n /**\n * Checks year for validity\n */\n static isValidYear(year: number): boolean {\n return Number.isInteger(year) && inRange(year, MIN_YEAR, MAX_YEAR + 1);\n }\n\n /**\n * Check if passed year is a leap year\n */\n static isLeapYear(year: number): boolean {\n tuiAssert.assert(TuiYear.isValidYear(year));\n\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n }\n\n /**\n * Returns amount of leap years from year 0 to the passed one\n */\n static getAbsoluteLeapYears(year: number): number {\n tuiAssert.assert(TuiYear.isValidYear(year));\n\n return Math.ceil(year / 400) + (Math.ceil(year / 4) - Math.ceil(year / 100));\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Returns day of week offset of the beginning of the passed year\n *\n * @param year\n * @param absoluteLeapYears amount of leap years prior to the passed one\n * @return offset in days\n */\n static getYearStartDaysOffset(year: number, absoluteLeapYears: number): number {\n tuiAssert.assert(TuiYear.isValidYear(year));\n tuiAssert.assert(Number.isInteger(absoluteLeapYears));\n tuiAssert.assert(year >= absoluteLeapYears);\n tuiAssert.assert(absoluteLeapYears >= 0);\n\n return (\n (absoluteLeapYears * DAYS_IN_LEAP_YEAR +\n (year - absoluteLeapYears) * DAYS_IN_NORMAL_YEAR +\n 5) %\n DAYS_IN_WEEK\n );\n }\n\n static lengthBetween(from: TuiYear, to: TuiYear): number {\n return to.year - from.year;\n }\n\n /**\n * Normalizes year by clamping it between min and max years\n */\n protected static normalizeYearPart(year: number): number {\n return normalizeToIntNumber(year, MIN_YEAR, MAX_YEAR);\n }\n\n get formattedYear(): string {\n return padStart(String(this.year), 4, '0');\n }\n\n get isLeapYear(): boolean {\n return TuiYear.isLeapYear(this.year);\n }\n\n /**\n * Returns amount of leap years from year 0 to current\n */\n get absoluteLeapYears(): number {\n return TuiYear.getAbsoluteLeapYears(this.year);\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Returns day of week offset of the beginning of the current year\n */\n get yearStartDaysOffset(): number {\n return TuiYear.getYearStartDaysOffset(this.year, this.absoluteLeapYears);\n }\n\n /**\n * Passed year is after current\n */\n yearBefore({year}: TuiYear): boolean {\n return this.year < year;\n }\n\n /**\n * Passed year is the same or after current\n */\n yearSameOrBefore({year}: TuiYear): boolean {\n return this.year <= year;\n }\n\n /**\n * Passed year is the same as current\n */\n yearSame({year}: TuiYear): boolean {\n return this.year === year;\n }\n\n /**\n * Passed year is either the same of before the current\n */\n yearSameOrAfter({year}: TuiYear): boolean {\n return this.year >= year;\n }\n\n /**\n * Passed year is before current\n */\n yearAfter({year}: TuiYear): boolean {\n return this.year > year;\n }\n\n // TODO: 3.0 Consider removing `backwards` option\n /**\n * Immutably offsets year\n */\n append({year = 0}: TuiYearLike, backwards: boolean = false): TuiYear {\n tuiAssert.assert(Number.isInteger(year));\n\n if (backwards) {\n year *= -1;\n }\n\n const resultYear = this.year + year;\n\n tuiAssert.assert(TuiYear.isValidYear(resultYear));\n\n return new TuiYear(resultYear);\n }\n\n toString(): string {\n return this.formattedYear;\n }\n\n valueOf(): number {\n return this.year;\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n [Symbol.toPrimitive](hint: string): string | number {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n toJSON(): string {\n return this.formattedYear;\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiMonthNumber} from '@taiga-ui/cdk/enums';\nimport {TuiMonthLike} from '@taiga-ui/cdk/interfaces';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange, normalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {DAYS_IN_WEEK, MAX_MONTH, MIN_MONTH, MONTHS_IN_YEAR} from './date-time';\nimport {TuiYear} from './year';\n\n/**\n * Immutable object consisting of year and month\n */\nexport class TuiMonth extends TuiYear implements TuiMonthLike {\n /**\n * @param year\n * @param month (starting with 0)\n */\n constructor(year: number, readonly month: number) {\n super(year);\n tuiAssert.assert(TuiMonth.isValidMonth(year, month));\n }\n\n /**\n * Tests month and year for validity\n */\n static isValidMonth(year: number, month: number): boolean {\n return TuiYear.isValidYear(year) && TuiMonth.isValidMonthPart(month);\n }\n\n /**\n * Returns number of days in a month\n */\n static getMonthDaysCount(month: number, isLeapYear: boolean): number {\n tuiAssert.assert(TuiMonth.isValidMonthPart(month));\n\n switch (month) {\n case TuiMonthNumber.February:\n return isLeapYear ? 29 : 28;\n case TuiMonthNumber.April:\n case TuiMonthNumber.June:\n case TuiMonthNumber.September:\n case TuiMonthNumber.November:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Returns current month and year based on local time zone\n * @nosideeffects\n */\n static currentLocal(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getFullYear(), nativeDate.getMonth());\n }\n\n /**\n * Returns current month and year based on UTC\n */\n static currentUtc(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getUTCFullYear(), nativeDate.getUTCMonth());\n }\n\n static lengthBetween(from: TuiMonth, to: TuiMonth): number {\n const absoluteFrom = from.month + from.year * 12;\n const absoluteTo = to.month + to.year * 12;\n\n return absoluteTo - absoluteFrom;\n }\n\n /**\n * Normalizes number by clamping it between min and max month\n */\n protected static normalizeMonthPart(month: number): number {\n return normalizeToIntNumber(month, MIN_MONTH, MAX_MONTH);\n }\n\n /**\n * Tests month for validity\n */\n private static isValidMonthPart(month: number): boolean {\n return Number.isInteger(month) && inRange(month, MIN_MONTH, MAX_MONTH + 1);\n }\n\n get formattedMonthPart(): string {\n return padStart(String(this.month + 1), 2, '0');\n }\n\n /**\n * @deprecated\n * Formatter month and year\n */\n get formattedMonth(): string {\n return `${this.formattedMonthPart}.${this.formattedYear}`;\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Calculates number of weeks in a month (counting non-full weeks)\n */\n get weeksRowsCount(): number {\n return Math.ceil((this.monthStartDaysOffset + this.daysCount) / DAYS_IN_WEEK);\n }\n\n /**\n * Returns days in a month\n */\n get daysCount(): number {\n return TuiMonth.getMonthDaysCount(this.month, this.isLeapYear);\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Computes day of week offset of the beginning of the month\n */\n get monthStartDaysOffset(): number {\n let result = this.yearStartDaysOffset;\n\n for (let currentMonth = 0; currentMonth <= this.month - 1; currentMonth++) {\n result += TuiMonth.getMonthDaysCount(currentMonth, this.isLeapYear);\n }\n\n return result % DAYS_IN_WEEK;\n }\n\n /**\n * Passed month and year are after current\n */\n monthBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month < another.month)\n );\n }\n\n /**\n * Passed month and year are after or the same as current\n */\n monthSameOrBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month <= another.month)\n );\n }\n\n /**\n * Passed month and year are the same as current\n */\n monthSame(another: TuiMonth): boolean {\n return this.yearSame(another) && this.month === another.month;\n }\n\n /**\n * Passed month and year are either before or equal to current\n */\n monthSameOrAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month >= another.month)\n );\n }\n\n /**\n * Passed month and year are before current\n */\n monthAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month > another.month)\n );\n }\n\n // TODO: 3.0 Consider removing `backwards` option\n /**\n * Immutably alters current month and year by passed offset\n *\n * @param offset\n * @param backwards shift date backwards\n * @return new month and year object as a result of offsetting current\n */\n append({year = 0, month = 0}: TuiMonthLike, backwards: boolean = false): TuiMonth {\n if (backwards) {\n year *= -1;\n month *= -1;\n }\n\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n\n return new TuiMonth(\n Math.floor(totalMonths / MONTHS_IN_YEAR),\n totalMonths % MONTHS_IN_YEAR,\n );\n }\n\n toString(): string {\n return this.formattedMonth;\n }\n\n valueOf(): number {\n return this.toLocalNativeDate().valueOf();\n }\n\n toJSON(): string {\n return `${super.toJSON()}-${this.formattedMonthPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n toLocalNativeDate(): Date {\n return new Date(this.year, this.month);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month));\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiDayOfWeek, TuiMonthNumber} from '@taiga-ui/cdk/enums';\nimport {\n InvalidDayException,\n InvalidMonthException,\n InvalidYearException,\n} from '@taiga-ui/cdk/exceptions';\nimport {TuiDayLike} from '@taiga-ui/cdk/interfaces';\nimport {TuiDateMode} from '@taiga-ui/cdk/types';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange, normalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {DATE_FILLER_LENGTH} from './date-fillers';\nimport {DAYS_IN_WEEK, MIN_DAY, MONTHS_IN_YEAR} from './date-time';\nimport {TuiMonth} from './month';\nimport {TuiYear} from './year';\n\n// TODO: Localized formatting\n/**\n * Immutable date object, consisting of day, month and year\n */\nexport class TuiDay extends TuiMonth {\n constructor(year: number, month: number, readonly day: number) {\n super(year, month);\n tuiAssert.assert(TuiDay.isValidDay(year, month, day));\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} based on local time zone\n */\n static fromLocalNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} using UTC\n */\n static fromUtcNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n /**\n * Check validity of year, month and day\n *\n * @param year\n * @param month\n * @param day\n * @return boolean validity\n */\n static isValidDay(year: number, month: number, day: number): boolean {\n return (\n TuiMonth.isValidMonth(year, month) &&\n Number.isInteger(day) &&\n inRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n );\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Calculated day on a calendar grid\n *\n * @param month\n * @param row row in a calendar\n * @param col column in a calendar\n * @return resulting day on these coordinates (could exceed passed month)\n */\n static getDayFromMonthRowCol(month: TuiMonth, row: number, col: number): TuiDay {\n tuiAssert.assert(Number.isInteger(row));\n tuiAssert.assert(inRange(row, 0, 6));\n tuiAssert.assert(Number.isInteger(col));\n tuiAssert.assert(inRange(col, 0, DAYS_IN_WEEK));\n\n let day = row * DAYS_IN_WEEK + col - month.monthStartDaysOffset + 1;\n\n if (day > month.daysCount) {\n day = day - month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n }\n\n /**\n * Current day based on local time zone\n */\n static currentLocal(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getFullYear();\n const month = nativeDate.getMonth();\n const day = nativeDate.getDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Returns current day based on UTC\n */\n static currentUtc(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getUTCFullYear();\n const month = nativeDate.getUTCMonth();\n const day = nativeDate.getUTCDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Calculates {@link TuiDay} normalizing year, month and day. {@link NaN} is turned into minimal value.\n *\n * @param year any year value, including invalid\n * @param month any month value, including invalid (months start with 0)\n * @param day any day value, including invalid\n * @return normalized date\n */\n static normalizeOf(year: number, month: number, day: number): TuiDay {\n const normalizedYear = TuiYear.normalizeYearPart(year);\n const normalizedMonth = TuiMonth.normalizeMonthPart(month);\n const normalizedDay = TuiDay.normalizeDayPart(\n day,\n normalizedMonth,\n normalizedYear,\n );\n\n return new TuiDay(normalizedYear, normalizedMonth, normalizedDay);\n }\n\n static lengthBetween(from: TuiDay, to: TuiDay): number {\n return Math.round(\n (to.toLocalNativeDate().getTime() - from.toLocalNativeDate().getTime()) /\n (1000 * 60 * 60 * 24),\n );\n }\n\n static parseRawDateString(\n date: string,\n dateMode: TuiDateMode = 'DMY',\n ): {day: number; month: number; year: number} {\n tuiAssert.assert(\n date.length === DATE_FILLER_LENGTH,\n '[parseRawDateString]: wrong date string length',\n );\n\n switch (dateMode) {\n case 'YMD':\n return {\n day: parseInt(date.slice(8, 10), 10),\n month: parseInt(date.slice(5, 7), 10) - 1,\n year: parseInt(date.slice(0, 4), 10),\n };\n\n case 'MDY':\n return {\n day: parseInt(date.slice(3, 5), 10),\n month: parseInt(date.slice(0, 2), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n\n default:\n case 'DMY':\n return {\n day: parseInt(date.slice(0, 2), 10),\n month: parseInt(date.slice(3, 5), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n }\n }\n\n // TODO: Move month and year related code corresponding classes\n /**\n * Parsing a string with date with normalization\n *\n * @param rawDate date string\n * @param dateMode date format of the date string (DMY | MDY | YMD)\n * @return normalized date\n */\n static normalizeParse(rawDate: string, dateMode: TuiDateMode = 'DMY'): TuiDay {\n const {day, month, year} = this.parseRawDateString(rawDate, dateMode);\n\n return TuiDay.normalizeOf(year, month, day);\n }\n\n /**\n * Parsing a date stringified in a toJSON format\n * @param yearMonthDayString date string in format of YYYY-MM-DD\n * @return date\n * @throws exceptions if any part of the date is invalid\n */\n static jsonParse(yearMonthDayString: string): TuiDay {\n const {day, month, year} = this.parseRawDateString(yearMonthDayString, 'YMD');\n\n if (!TuiYear.isValidYear(year)) {\n throw new InvalidYearException(year);\n }\n\n if (!TuiMonth.isValidMonth(year, month)) {\n throw new InvalidMonthException(month);\n }\n\n if (\n !Number.isInteger(day) ||\n !inRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n ) {\n throw new InvalidDayException(day);\n }\n\n return new TuiDay(year, month, day);\n }\n\n protected static normalizeDayPart(day: number, month: number, year: number): number {\n tuiAssert.assert(TuiMonth.isValidMonth(year, month));\n\n const monthDaysCount = TuiMonth.getMonthDaysCount(\n month,\n TuiYear.isLeapYear(year),\n );\n\n return normalizeToIntNumber(day, 1, monthDaysCount);\n }\n\n get formattedDayPart(): string {\n return padStart(String(this.day), 2, '0');\n }\n\n /**\n * @deprecated use {@link getFormattedDay} instead\n * Formatted whole date\n */\n get formattedDay(): string {\n return `${this.formattedDayPart}.${this.formattedMonth}`;\n }\n\n get isWeekend(): boolean {\n const dayOfWeek = this.dayOfWeek(false);\n\n return dayOfWeek === TuiDayOfWeek.Saturday || dayOfWeek === TuiDayOfWeek.Sunday;\n }\n\n /**\n * Returns day of week\n *\n * @param startFromMonday whether week starts from Monday and not from Sunday\n * @return day of week (from 0 to 6)\n */\n dayOfWeek(startFromMonday: boolean = true): number {\n const dayOfWeek = startFromMonday\n ? this.toLocalNativeDate().getDay() - 1\n : this.toLocalNativeDate().getDay();\n\n return dayOfWeek < 0 ? 6 : dayOfWeek;\n }\n\n /**\n * Passed date is after current\n */\n dayBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day < another.day)\n );\n }\n\n /**\n * Passed date is after or equals to current\n */\n daySameOrBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day <= another.day)\n );\n }\n\n /**\n * Passed date is the same as current\n */\n daySame(another: TuiDay): boolean {\n return this.monthSame(another) && this.day === another.day;\n }\n\n /**\n * Passed date is either before or the same as current\n */\n daySameOrAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day >= another.day)\n );\n }\n\n /**\n * Passed date is before current\n */\n dayAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day > another.day)\n );\n }\n\n /**\n * Clamping date between two limits\n *\n * @param min\n * @param max\n * @return clamped date\n */\n dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDay {\n if (min !== null && this.dayBefore(min)) {\n return min;\n }\n\n if (max !== null && this.dayAfter(max)) {\n return max;\n }\n\n return this;\n }\n\n // TODO: 3.0 Consider removing `backwards` option\n /**\n * Immutably alters current day by passed offset\n *\n * If resulting month has more days than original one, date is rounded to the maximum day\n * in the resulting month. Offset of days will be calculated based on the resulted year and month\n * to not interfere with parent classes methods\n *\n * @param offset\n * @param backwards shift date backwards\n * @return new date object as a result of offsetting current\n */\n append(\n {year = 0, month = 0, day = 0}: TuiDayLike,\n backwards: boolean = false,\n ): TuiDay {\n if (backwards) {\n year *= -1;\n month *= -1;\n day *= -1;\n }\n\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n let years = Math.floor(totalMonths / MONTHS_IN_YEAR);\n let months = totalMonths % MONTHS_IN_YEAR;\n\n let days =\n Math.min(\n this.day,\n TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years)),\n ) + day;\n\n while (days > TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years))) {\n days -= TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n\n if (months === TuiMonthNumber.December) {\n years++;\n months = TuiMonthNumber.January;\n } else {\n months++;\n }\n }\n\n while (days < MIN_DAY) {\n if (months === TuiMonthNumber.January) {\n years--;\n months = TuiMonthNumber.December;\n } else {\n months--;\n }\n\n days += TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n }\n\n return new TuiDay(years, months, days);\n }\n\n /**\n * Returns formatted whole date\n */\n getFormattedDay(dateFormat: TuiDateMode, separator: string): string {\n tuiAssert.assert(\n separator.length === 1,\n 'Separator should consist of only 1 symbol',\n );\n\n const dd = this.formattedDayPart;\n const mm = this.formattedMonthPart;\n const yyyy = this.formattedYear;\n\n switch (dateFormat) {\n case 'YMD':\n return `${yyyy}${separator}${mm}${separator}${dd}`;\n case 'MDY':\n return `${mm}${separator}${dd}${separator}${yyyy}`;\n case 'DMY':\n default:\n return `${dd}${separator}${mm}${separator}${yyyy}`;\n }\n }\n\n toString(dateFormat: TuiDateMode = 'DMY', separator: string = '.'): string {\n return this.getFormattedDay(dateFormat, separator);\n }\n\n toJSON(): string {\n return `${super.toJSON()}-${this.formattedDayPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n toLocalNativeDate(): Date {\n return new Date(this.year, this.month, this.day);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month, this.day));\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\n\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport {TuiMonth} from './month';\n\n/**\n * An immutable range of two {@link TuiMonth} objects\n */\nexport class TuiMonthRange {\n constructor(readonly from: TuiMonth, readonly to: TuiMonth) {\n tuiAssert.assert(from.monthSameOrBefore(to));\n }\n\n static sort(month1: TuiMonth, month2: TuiMonth): TuiMonthRange {\n return month1.monthSameOrBefore(month2)\n ? new TuiMonthRange(month1, month2)\n : new TuiMonthRange(month2, month1);\n }\n\n get isSingleMonth(): boolean {\n return this.from.monthSame(this.to);\n }\n\n /**\n * @deprecated\n */\n get formattedMonthRange(): string {\n return `${this.from.formattedMonth}${RANGE_SEPARATOR_CHAR}${this.to.formattedMonth}`;\n }\n\n monthSame(another: TuiMonthRange): boolean {\n return this.from.monthSame(another.from) && this.to.monthSame(another.to);\n }\n\n toString(): string {\n return `${this.from}${RANGE_SEPARATOR_CHAR}${this.to}`;\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiDateMode} from '@taiga-ui/cdk/types';\n\nimport {DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH} from './date-fillers';\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport {TuiDay} from './day';\nimport {TuiMonthRange} from './month-range';\n\n/**\n * Temporary type guard to satisfy ts-overloading of normalizeParse method\n * @deprecated\n */\nexport const isDateMode = (dateMode: string): dateMode is TuiDateMode =>\n ['DMY', 'YMD', 'MDY'].includes(dateMode);\n\n/**\n * An immutable range of two {@link TuiDay} objects\n */\nexport class TuiDayRange extends TuiMonthRange {\n constructor(readonly from: TuiDay, readonly to: TuiDay) {\n super(from, to);\n\n tuiAssert.assert(from.daySameOrBefore(to));\n }\n\n /**\n * Creates range from two days after sorting them\n *\n * @param day1\n * @param day2\n * @return new range with sorted days\n */\n static sort(day1: TuiDay, day2: TuiDay): TuiDayRange {\n return day1.daySameOrBefore(day2)\n ? new TuiDayRange(day1, day2)\n : new TuiDayRange(day2, day1);\n }\n\n /**\n * @deprecated\n */\n static normalizeParse(\n rangeString: string,\n dateFiller: string,\n dateRangeFiller: string,\n ): TuiDayRange;\n static normalizeParse(rangeString: string, dateMode?: TuiDateMode): TuiDayRange;\n\n /**\n * Parse and correct a day range in string format\n *\n * @param rangeString a string of dates in a format dd.mm.yyyy - dd.mm.yyyy\n * @param dateMode {@link TuiDateMode}\n * @return normalized day range object\n */\n static normalizeParse(\n rangeString: string,\n dateMode: string | TuiDateMode = 'DMY',\n ): TuiDayRange {\n const dateFormat = isDateMode(dateMode) ? dateMode : 'DMY';\n\n const leftDay = TuiDay.normalizeParse(\n rangeString.slice(0, DATE_FILLER_LENGTH),\n dateFormat,\n );\n\n if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {\n return new TuiDayRange(leftDay, leftDay);\n }\n\n return TuiDayRange.sort(\n leftDay,\n TuiDay.normalizeParse(\n rangeString.slice(DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length),\n dateFormat,\n ),\n );\n }\n\n get isSingleDay(): boolean {\n return this.from.daySame(this.to);\n }\n\n /**\n * Human readable format.\n * @deprecated use {@link getFormattedDayRange} instead\n */\n get formattedDayRange(): string {\n const from = this.from.getFormattedDay('DMY', '.');\n const to = this.to.getFormattedDay('DMY', '.');\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n\n /**\n * Tests ranges for identity\n *\n * @param another second range to test against current\n * @return `true` if days are identical\n */\n daySame(another: TuiDayRange): boolean {\n return this.from.daySame(another.from) && this.to.daySame(another.to);\n }\n\n /**\n * Locks range between two days included, or limits from one side if the other is null\n *\n * @param min\n * @param max\n * @return range — clamped range\n */\n dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDayRange {\n return new TuiDayRange(this.from.dayLimit(min, max), this.to.dayLimit(min, max));\n }\n\n /**\n * Human readable format.\n */\n getFormattedDayRange(dateFormat: TuiDateMode, dateSeparator: string): string {\n const from = this.from.getFormattedDay(dateFormat, dateSeparator);\n const to = this.to.getFormattedDay(dateFormat, dateSeparator);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n\n toString(dateFormat: TuiDateMode = 'DMY', dateSeparator: string = '.'): string {\n const from = this.from.getFormattedDay(dateFormat, dateSeparator);\n const to = this.to.getFormattedDay(dateFormat, dateSeparator);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n}\n","import {MAX_MONTH, MAX_YEAR, MIN_DAY, MIN_MONTH, MIN_YEAR} from './date-time';\nimport {TuiDay} from './day';\n\nexport const TUI_FIRST_DAY = new TuiDay(MIN_YEAR, MIN_MONTH, MIN_DAY);\n\nexport const TUI_LAST_DAY = new TuiDay(MAX_YEAR, MAX_MONTH, 31);\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiTimeLike} from '@taiga-ui/cdk/interfaces';\nimport {TuiTimeMode} from '@taiga-ui/cdk/types';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange} from '@taiga-ui/cdk/utils/math';\n\nimport {\n HOURS_IN_DAY,\n MILLISECONDS_IN_DAY,\n MILLISECONDS_IN_HOUR,\n MILLISECONDS_IN_MINUTE,\n MINUTES_IN_HOUR,\n SECONDS_IN_MINUTE,\n} from './date-time';\n\n/**\n * Immutable time object with hours, minutes, seconds and ms\n */\nexport class TuiTime implements TuiTimeLike {\n constructor(\n readonly hours: number,\n readonly minutes: number,\n readonly seconds: number = 0,\n readonly ms: number = 0,\n ) {\n tuiAssert.assert(\n TuiTime.isValidTime(hours, minutes, seconds, ms),\n 'Time must be real, but got:',\n hours,\n minutes,\n seconds,\n ms,\n );\n }\n\n /**\n * Checks if time is valid\n */\n static isValidTime(\n hours: number,\n minutes: number,\n seconds: number = 0,\n ms: number = 0,\n ): boolean {\n return (\n Number.isInteger(hours) &&\n inRange(hours, 0, HOURS_IN_DAY) &&\n Number.isInteger(minutes) &&\n inRange(minutes, 0, MINUTES_IN_HOUR) &&\n Number.isInteger(seconds) &&\n inRange(seconds, 0, SECONDS_IN_MINUTE) &&\n Number.isInteger(ms) &&\n inRange(ms, 0, 1000)\n );\n }\n\n /**\n * Current UTC time.\n */\n static current(): TuiTime {\n return TuiTime.fromAbsoluteMilliseconds(Date.now() % MILLISECONDS_IN_DAY);\n }\n\n /**\n * Current time in local timezone\n */\n static currentLocal(): TuiTime {\n const date = new Date();\n\n return TuiTime.fromAbsoluteMilliseconds(\n (Date.now() - date.getTimezoneOffset() * MILLISECONDS_IN_MINUTE) %\n MILLISECONDS_IN_DAY,\n );\n }\n\n /**\n * Calculates TuiTime from milliseconds\n */\n static fromAbsoluteMilliseconds(milliseconds: number): TuiTime {\n tuiAssert.assert(Number.isInteger(milliseconds));\n tuiAssert.assert(\n inRange(milliseconds, 0, MILLISECONDS_IN_DAY),\n `Milliseconds must be below ${MILLISECONDS_IN_DAY} (milliseconds in a day).`,\n );\n\n const hours = Math.floor(milliseconds / MILLISECONDS_IN_HOUR);\n const minutes = Math.floor(\n (milliseconds % MILLISECONDS_IN_HOUR) / MILLISECONDS_IN_MINUTE,\n );\n const seconds =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) / 1000,\n ) || 0;\n const ms =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) % 1000,\n ) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Parses string into TuiTime object\n */\n static fromString(time: string): TuiTime {\n const hours = Number(time.slice(0, 2));\n const minutes = Number(time.slice(3, 5));\n const seconds = Number(time.slice(6, 8)) || 0;\n const ms = Number(time.slice(9, 12)) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Converts Date object into TuiTime\n * @param date\n */\n static fromLocalNativeDate(date: Date): TuiTime {\n return new TuiTime(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n }\n\n /**\n * Shifts time by hours and minutes\n */\n shift({hours = 0, minutes = 0, seconds = 0, ms = 0}: TuiTimeLike): TuiTime {\n const newMs = (1000 + this.ms + (ms % 1000)) % 1000;\n\n const secondsInMs = ms < 0 ? Math.ceil(ms / 1000) : Math.floor(ms / 1000);\n const secondsToAdd = secondsInMs + seconds;\n const newSeconds = (60 + this.seconds + (secondsToAdd % 60)) % 60;\n\n const minutesInSeconds =\n secondsToAdd < 0\n ? Math.ceil(secondsToAdd / 60)\n : Math.floor(secondsToAdd / 60);\n const minutesToAdd = minutesInSeconds + minutes;\n const newMinutes = (60 + this.minutes + (minutesToAdd % 60)) % 60;\n\n const hoursInMinutes =\n minutesToAdd < 0\n ? Math.ceil(minutesToAdd / 60)\n : Math.floor(minutesToAdd / 60);\n const hoursToAdd = hoursInMinutes + hours;\n const newHours = (24 + this.hours + (hoursToAdd % 24)) % 24;\n\n return new TuiTime(newHours, newMinutes, newSeconds, newMs);\n }\n\n /**\n * Converts TuiTime to string\n */\n toString(mode?: TuiTimeMode): string {\n const needAddMs = mode === 'HH:MM:SS.MSS' || (!mode && this.ms > 0);\n const needAddSeconds =\n needAddMs || mode === 'HH:MM:SS' || (!mode && this.seconds > 0);\n\n return (\n `${this.formatTime(this.hours)}:${this.formatTime(this.minutes)}` +\n `${needAddSeconds ? `:${this.formatTime(this.seconds)}` : ''}` +\n `${needAddMs ? `.${this.formatTime(this.ms, 3)}` : ''}`\n );\n }\n\n valueOf(): number {\n return this.toAbsoluteMilliseconds();\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n [Symbol.toPrimitive](hint: string): string | number {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n /**\n * Converts TuiTime to milliseconds\n */\n toAbsoluteMilliseconds(): number {\n return (\n this.hours * MILLISECONDS_IN_HOUR +\n this.minutes * MILLISECONDS_IN_MINUTE +\n this.seconds * 1000 +\n this.ms\n );\n }\n\n private formatTime(time: number, digits: number = 2): string {\n return padStart(String(time), digits, '0');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-date-time.js","sources":["ng://@taiga-ui/cdk/date-time/date-time.ts","ng://@taiga-ui/cdk/date-time/date-fillers.ts","ng://@taiga-ui/cdk/date-time/date-format.ts","ng://@taiga-ui/cdk/date-time/date-separator.ts","ng://@taiga-ui/cdk/date-time/year.ts","ng://@taiga-ui/cdk/date-time/month.ts","ng://@taiga-ui/cdk/date-time/day.ts","ng://@taiga-ui/cdk/date-time/month-range.ts","ng://@taiga-ui/cdk/date-time/day-range.ts","ng://@taiga-ui/cdk/date-time/days.const.ts","ng://@taiga-ui/cdk/date-time/time.ts","ng://@taiga-ui/cdk/date-time/taiga-ui-cdk-date-time.ts"],"sourcesContent":["import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\n\nexport const DAYS_IN_WEEK = 7;\n\nexport const DAYS_IN_NORMAL_YEAR = 365;\n\nexport const DAYS_IN_LEAP_YEAR = 366;\n\nexport const MONTHS_IN_YEAR = 12;\n\nexport const MIN_DAY = 1;\n\nexport const MIN_MONTH = 0;\n\nexport const MAX_MONTH = 11;\n\nexport const MIN_YEAR = 0;\n\nexport const MAX_YEAR = 9999;\n\nexport const RANGE_SEPARATOR_CHAR = `${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}`;\n\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const MINUTES_IN_HOUR = 60;\n\nexport const HOURS_IN_DAY = 24;\n\nexport const MILLISECONDS_IN_MINUTE = MILLISECONDS_IN_SECOND * SECONDS_IN_MINUTE;\n\nexport const MILLISECONDS_IN_HOUR = MILLISECONDS_IN_MINUTE * MINUTES_IN_HOUR;\n\nexport const MILLISECONDS_IN_DAY = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\n\n/**\n * @deprecated dont use it. See {@link TUI_DATE_FORMAT}\n */\nexport const TUI_DATE_FILLER = new InjectionToken<string>(`date filler for Taiga UI`, {\n factory: () => `dd.mm.yyyy`,\n});\n\n/**\n * @deprecated dont use it\n */\nexport const TUI_DATE_RANGE_FILLER = new InjectionToken<string>(\n `date range filler for Taiga UI`,\n {\n factory: () => {\n const dateFiller = inject(TUI_DATE_FILLER);\n\n return `${dateFiller}${RANGE_SEPARATOR_CHAR}${dateFiller}`;\n },\n },\n);\n\n/**\n * @internal 'dd.mm.yyyy'.length\n * Used in:\n * - {@link TuiInputDateComponent}\n * - {@link TuiInputDateRangeComponent}\n * - {@link TuiInputDateTimeComponent}\n */\nexport const DATE_FILLER_LENGTH = 10;\n/**\n * @internal\n * Used in {@link TuiInputDateRangeComponent}\n */\nexport const DATE_RANGE_FILLER_LENGTH =\n 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;\n","import {InjectionToken} from '@angular/core';\nimport {TuiDateMode} from '@taiga-ui/cdk/types';\n\nexport const TUI_DATE_FORMAT = new InjectionToken<TuiDateMode>(\n `Active date format for Taiga UI`,\n {\n factory: () => `DMY`,\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_DATE_SEPARATOR = new InjectionToken<string>(\n `Date separator for Taiga UI components`,\n {\n factory: () => `.`,\n },\n);\n\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replace(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiYearLike} from '@taiga-ui/cdk/interfaces';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange, normalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {\n DAYS_IN_LEAP_YEAR,\n DAYS_IN_NORMAL_YEAR,\n DAYS_IN_WEEK,\n MAX_YEAR,\n MIN_YEAR,\n} from './date-time';\n\n/**\n * Immutable year object\n * @nosideeffects\n */\nexport class TuiYear implements TuiYearLike {\n constructor(readonly year: number) {\n tuiAssert.assert(TuiYear.isValidYear(year));\n }\n\n /**\n * Checks year for validity\n */\n static isValidYear(year: number): boolean {\n return Number.isInteger(year) && inRange(year, MIN_YEAR, MAX_YEAR + 1);\n }\n\n /**\n * Check if passed year is a leap year\n */\n static isLeapYear(year: number): boolean {\n tuiAssert.assert(TuiYear.isValidYear(year));\n\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n }\n\n /**\n * Returns amount of leap years from year 0 to the passed one\n */\n static getAbsoluteLeapYears(year: number): number {\n tuiAssert.assert(TuiYear.isValidYear(year));\n\n return Math.ceil(year / 400) + (Math.ceil(year / 4) - Math.ceil(year / 100));\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Returns day of week offset of the beginning of the passed year\n *\n * @param year\n * @param absoluteLeapYears amount of leap years prior to the passed one\n * @return offset in days\n */\n static getYearStartDaysOffset(year: number, absoluteLeapYears: number): number {\n tuiAssert.assert(TuiYear.isValidYear(year));\n tuiAssert.assert(Number.isInteger(absoluteLeapYears));\n tuiAssert.assert(year >= absoluteLeapYears);\n tuiAssert.assert(absoluteLeapYears >= 0);\n\n return (\n (absoluteLeapYears * DAYS_IN_LEAP_YEAR +\n (year - absoluteLeapYears) * DAYS_IN_NORMAL_YEAR +\n 5) %\n DAYS_IN_WEEK\n );\n }\n\n static lengthBetween(from: TuiYear, to: TuiYear): number {\n return to.year - from.year;\n }\n\n /**\n * Normalizes year by clamping it between min and max years\n */\n protected static normalizeYearPart(year: number): number {\n return normalizeToIntNumber(year, MIN_YEAR, MAX_YEAR);\n }\n\n get formattedYear(): string {\n return padStart(String(this.year), 4, `0`);\n }\n\n get isLeapYear(): boolean {\n return TuiYear.isLeapYear(this.year);\n }\n\n /**\n * Returns amount of leap years from year 0 to current\n */\n get absoluteLeapYears(): number {\n return TuiYear.getAbsoluteLeapYears(this.year);\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Returns day of week offset of the beginning of the current year\n */\n get yearStartDaysOffset(): number {\n return TuiYear.getYearStartDaysOffset(this.year, this.absoluteLeapYears);\n }\n\n /**\n * Passed year is after current\n */\n yearBefore({year}: TuiYear): boolean {\n return this.year < year;\n }\n\n /**\n * Passed year is the same or after current\n */\n yearSameOrBefore({year}: TuiYear): boolean {\n return this.year <= year;\n }\n\n /**\n * Passed year is the same as current\n */\n yearSame({year}: TuiYear): boolean {\n return this.year === year;\n }\n\n /**\n * Passed year is either the same of before the current\n */\n yearSameOrAfter({year}: TuiYear): boolean {\n return this.year >= year;\n }\n\n /**\n * Passed year is before current\n */\n yearAfter({year}: TuiYear): boolean {\n return this.year > year;\n }\n\n // TODO: 3.0 Consider removing `backwards` option\n /**\n * Immutably offsets year\n */\n append({year = 0}: TuiYearLike, backwards: boolean = false): TuiYear {\n tuiAssert.assert(Number.isInteger(year));\n\n if (backwards) {\n year *= -1;\n }\n\n const resultYear = this.year + year;\n\n tuiAssert.assert(TuiYear.isValidYear(resultYear));\n\n return new TuiYear(resultYear);\n }\n\n toString(): string {\n return this.formattedYear;\n }\n\n valueOf(): number {\n return this.year;\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n [Symbol.toPrimitive](hint: string): string | number {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n toJSON(): string {\n return this.formattedYear;\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiMonthNumber} from '@taiga-ui/cdk/enums';\nimport {TuiMonthLike} from '@taiga-ui/cdk/interfaces';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange, normalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {DAYS_IN_WEEK, MAX_MONTH, MIN_MONTH, MONTHS_IN_YEAR} from './date-time';\nimport {TuiYear} from './year';\n\n/**\n * Immutable object consisting of year and month\n */\nexport class TuiMonth extends TuiYear implements TuiMonthLike {\n /**\n * @param year\n * @param month (starting with 0)\n */\n constructor(year: number, readonly month: number) {\n super(year);\n tuiAssert.assert(TuiMonth.isValidMonth(year, month));\n }\n\n /**\n * Tests month and year for validity\n */\n static isValidMonth(year: number, month: number): boolean {\n return TuiYear.isValidYear(year) && TuiMonth.isValidMonthPart(month);\n }\n\n /**\n * Returns number of days in a month\n */\n static getMonthDaysCount(month: number, isLeapYear: boolean): number {\n tuiAssert.assert(TuiMonth.isValidMonthPart(month));\n\n switch (month) {\n case TuiMonthNumber.February:\n return isLeapYear ? 29 : 28;\n case TuiMonthNumber.April:\n case TuiMonthNumber.June:\n case TuiMonthNumber.September:\n case TuiMonthNumber.November:\n return 30;\n default:\n return 31;\n }\n }\n\n /**\n * Returns current month and year based on local time zone\n * @nosideeffects\n */\n static currentLocal(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getFullYear(), nativeDate.getMonth());\n }\n\n /**\n * Returns current month and year based on UTC\n */\n static currentUtc(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getUTCFullYear(), nativeDate.getUTCMonth());\n }\n\n static lengthBetween(from: TuiMonth, to: TuiMonth): number {\n const absoluteFrom = from.month + from.year * 12;\n const absoluteTo = to.month + to.year * 12;\n\n return absoluteTo - absoluteFrom;\n }\n\n /**\n * Normalizes number by clamping it between min and max month\n */\n protected static normalizeMonthPart(month: number): number {\n return normalizeToIntNumber(month, MIN_MONTH, MAX_MONTH);\n }\n\n /**\n * Tests month for validity\n */\n private static isValidMonthPart(month: number): boolean {\n return Number.isInteger(month) && inRange(month, MIN_MONTH, MAX_MONTH + 1);\n }\n\n get formattedMonthPart(): string {\n return padStart(String(this.month + 1), 2, `0`);\n }\n\n /**\n * @deprecated\n * Formatter month and year\n */\n get formattedMonth(): string {\n return `${this.formattedMonthPart}.${this.formattedYear}`;\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Calculates number of weeks in a month (counting non-full weeks)\n */\n get weeksRowsCount(): number {\n return Math.ceil((this.monthStartDaysOffset + this.daysCount) / DAYS_IN_WEEK);\n }\n\n /**\n * Returns days in a month\n */\n get daysCount(): number {\n return TuiMonth.getMonthDaysCount(this.month, this.isLeapYear);\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Computes day of week offset of the beginning of the month\n */\n get monthStartDaysOffset(): number {\n let result = this.yearStartDaysOffset;\n\n for (let currentMonth = 0; currentMonth <= this.month - 1; currentMonth++) {\n result += TuiMonth.getMonthDaysCount(currentMonth, this.isLeapYear);\n }\n\n return result % DAYS_IN_WEEK;\n }\n\n /**\n * Passed month and year are after current\n */\n monthBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month < another.month)\n );\n }\n\n /**\n * Passed month and year are after or the same as current\n */\n monthSameOrBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month <= another.month)\n );\n }\n\n /**\n * Passed month and year are the same as current\n */\n monthSame(another: TuiMonth): boolean {\n return this.yearSame(another) && this.month === another.month;\n }\n\n /**\n * Passed month and year are either before or equal to current\n */\n monthSameOrAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month >= another.month)\n );\n }\n\n /**\n * Passed month and year are before current\n */\n monthAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month > another.month)\n );\n }\n\n // TODO: 3.0 Consider removing `backwards` option\n /**\n * Immutably alters current month and year by passed offset\n *\n * @param offset\n * @param backwards shift date backwards\n * @return new month and year object as a result of offsetting current\n */\n append({year = 0, month = 0}: TuiMonthLike, backwards: boolean = false): TuiMonth {\n if (backwards) {\n year *= -1;\n month *= -1;\n }\n\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n\n return new TuiMonth(\n Math.floor(totalMonths / MONTHS_IN_YEAR),\n totalMonths % MONTHS_IN_YEAR,\n );\n }\n\n toString(): string {\n return this.formattedMonth;\n }\n\n valueOf(): number {\n return this.toLocalNativeDate().valueOf();\n }\n\n toJSON(): string {\n return `${super.toJSON()}-${this.formattedMonthPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n toLocalNativeDate(): Date {\n return new Date(this.year, this.month);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month));\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiDayOfWeek, TuiMonthNumber} from '@taiga-ui/cdk/enums';\nimport {\n InvalidDayException,\n InvalidMonthException,\n InvalidYearException,\n} from '@taiga-ui/cdk/exceptions';\nimport {TuiDayLike} from '@taiga-ui/cdk/interfaces';\nimport {TuiDateMode} from '@taiga-ui/cdk/types';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange, normalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {DATE_FILLER_LENGTH} from './date-fillers';\nimport {DAYS_IN_WEEK, MIN_DAY, MONTHS_IN_YEAR} from './date-time';\nimport {TuiMonth} from './month';\nimport {TuiYear} from './year';\n\n// TODO: Localized formatting\n/**\n * Immutable date object, consisting of day, month and year\n */\nexport class TuiDay extends TuiMonth {\n constructor(year: number, month: number, readonly day: number) {\n super(year, month);\n tuiAssert.assert(TuiDay.isValidDay(year, month, day));\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} based on local time zone\n */\n static fromLocalNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} using UTC\n */\n static fromUtcNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n /**\n * Check validity of year, month and day\n *\n * @param year\n * @param month\n * @param day\n * @return boolean validity\n */\n static isValidDay(year: number, month: number, day: number): boolean {\n return (\n TuiMonth.isValidMonth(year, month) &&\n Number.isInteger(day) &&\n inRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n );\n }\n\n /**\n * @deprecated DONT USE IT (will be deleted soon)\n *\n * Calculated day on a calendar grid\n *\n * @param month\n * @param row row in a calendar\n * @param col column in a calendar\n * @return resulting day on these coordinates (could exceed passed month)\n */\n static getDayFromMonthRowCol(month: TuiMonth, row: number, col: number): TuiDay {\n tuiAssert.assert(Number.isInteger(row));\n tuiAssert.assert(inRange(row, 0, 6));\n tuiAssert.assert(Number.isInteger(col));\n tuiAssert.assert(inRange(col, 0, DAYS_IN_WEEK));\n\n let day = row * DAYS_IN_WEEK + col - month.monthStartDaysOffset + 1;\n\n if (day > month.daysCount) {\n day = day - month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n }\n\n /**\n * Current day based on local time zone\n */\n static currentLocal(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getFullYear();\n const month = nativeDate.getMonth();\n const day = nativeDate.getDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Returns current day based on UTC\n */\n static currentUtc(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getUTCFullYear();\n const month = nativeDate.getUTCMonth();\n const day = nativeDate.getUTCDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Calculates {@link TuiDay} normalizing year, month and day. {@link NaN} is turned into minimal value.\n *\n * @param year any year value, including invalid\n * @param month any month value, including invalid (months start with 0)\n * @param day any day value, including invalid\n * @return normalized date\n */\n static normalizeOf(year: number, month: number, day: number): TuiDay {\n const normalizedYear = TuiYear.normalizeYearPart(year);\n const normalizedMonth = TuiMonth.normalizeMonthPart(month);\n const normalizedDay = TuiDay.normalizeDayPart(\n day,\n normalizedMonth,\n normalizedYear,\n );\n\n return new TuiDay(normalizedYear, normalizedMonth, normalizedDay);\n }\n\n static lengthBetween(from: TuiDay, to: TuiDay): number {\n return Math.round(\n (to.toLocalNativeDate().getTime() - from.toLocalNativeDate().getTime()) /\n (1000 * 60 * 60 * 24),\n );\n }\n\n static parseRawDateString(\n date: string,\n dateMode: TuiDateMode = `DMY`,\n ): {day: number; month: number; year: number} {\n tuiAssert.assert(\n date.length === DATE_FILLER_LENGTH,\n `[parseRawDateString]: wrong date string length`,\n );\n\n switch (dateMode) {\n case `YMD`:\n return {\n day: parseInt(date.slice(8, 10), 10),\n month: parseInt(date.slice(5, 7), 10) - 1,\n year: parseInt(date.slice(0, 4), 10),\n };\n\n case `MDY`:\n return {\n day: parseInt(date.slice(3, 5), 10),\n month: parseInt(date.slice(0, 2), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n\n default:\n case `DMY`:\n return {\n day: parseInt(date.slice(0, 2), 10),\n month: parseInt(date.slice(3, 5), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n }\n }\n\n // TODO: Move month and year related code corresponding classes\n /**\n * Parsing a string with date with normalization\n *\n * @param rawDate date string\n * @param dateMode date format of the date string (DMY | MDY | YMD)\n * @return normalized date\n */\n static normalizeParse(rawDate: string, dateMode: TuiDateMode = `DMY`): TuiDay {\n const {day, month, year} = this.parseRawDateString(rawDate, dateMode);\n\n return TuiDay.normalizeOf(year, month, day);\n }\n\n /**\n * Parsing a date stringified in a toJSON format\n * @param yearMonthDayString date string in format of YYYY-MM-DD\n * @return date\n * @throws exceptions if any part of the date is invalid\n */\n static jsonParse(yearMonthDayString: string): TuiDay {\n const {day, month, year} = this.parseRawDateString(yearMonthDayString, `YMD`);\n\n if (!TuiYear.isValidYear(year)) {\n throw new InvalidYearException(year);\n }\n\n if (!TuiMonth.isValidMonth(year, month)) {\n throw new InvalidMonthException(month);\n }\n\n if (\n !Number.isInteger(day) ||\n !inRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n ) {\n throw new InvalidDayException(day);\n }\n\n return new TuiDay(year, month, day);\n }\n\n protected static normalizeDayPart(day: number, month: number, year: number): number {\n tuiAssert.assert(TuiMonth.isValidMonth(year, month));\n\n const monthDaysCount = TuiMonth.getMonthDaysCount(\n month,\n TuiYear.isLeapYear(year),\n );\n\n return normalizeToIntNumber(day, 1, monthDaysCount);\n }\n\n get formattedDayPart(): string {\n return padStart(String(this.day), 2, `0`);\n }\n\n /**\n * @deprecated use {@link getFormattedDay} instead\n * Formatted whole date\n */\n get formattedDay(): string {\n return `${this.formattedDayPart}.${this.formattedMonth}`;\n }\n\n get isWeekend(): boolean {\n const dayOfWeek = this.dayOfWeek(false);\n\n return dayOfWeek === TuiDayOfWeek.Saturday || dayOfWeek === TuiDayOfWeek.Sunday;\n }\n\n /**\n * Returns day of week\n *\n * @param startFromMonday whether week starts from Monday and not from Sunday\n * @return day of week (from 0 to 6)\n */\n dayOfWeek(startFromMonday: boolean = true): number {\n const dayOfWeek = startFromMonday\n ? this.toLocalNativeDate().getDay() - 1\n : this.toLocalNativeDate().getDay();\n\n return dayOfWeek < 0 ? 6 : dayOfWeek;\n }\n\n /**\n * Passed date is after current\n */\n dayBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day < another.day)\n );\n }\n\n /**\n * Passed date is after or equals to current\n */\n daySameOrBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day <= another.day)\n );\n }\n\n /**\n * Passed date is the same as current\n */\n daySame(another: TuiDay): boolean {\n return this.monthSame(another) && this.day === another.day;\n }\n\n /**\n * Passed date is either before or the same as current\n */\n daySameOrAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day >= another.day)\n );\n }\n\n /**\n * Passed date is before current\n */\n dayAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day > another.day)\n );\n }\n\n /**\n * Clamping date between two limits\n *\n * @param min\n * @param max\n * @return clamped date\n */\n dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDay {\n if (min !== null && this.dayBefore(min)) {\n return min;\n }\n\n if (max !== null && this.dayAfter(max)) {\n return max;\n }\n\n return this;\n }\n\n // TODO: 3.0 Consider removing `backwards` option\n /**\n * Immutably alters current day by passed offset\n *\n * If resulting month has more days than original one, date is rounded to the maximum day\n * in the resulting month. Offset of days will be calculated based on the resulted year and month\n * to not interfere with parent classes methods\n *\n * @param offset\n * @param backwards shift date backwards\n * @return new date object as a result of offsetting current\n */\n append(\n {year = 0, month = 0, day = 0}: TuiDayLike,\n backwards: boolean = false,\n ): TuiDay {\n if (backwards) {\n year *= -1;\n month *= -1;\n day *= -1;\n }\n\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n let years = Math.floor(totalMonths / MONTHS_IN_YEAR);\n let months = totalMonths % MONTHS_IN_YEAR;\n\n let days =\n Math.min(\n this.day,\n TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years)),\n ) + day;\n\n while (days > TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years))) {\n days -= TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n\n if (months === TuiMonthNumber.December) {\n years++;\n months = TuiMonthNumber.January;\n } else {\n months++;\n }\n }\n\n while (days < MIN_DAY) {\n if (months === TuiMonthNumber.January) {\n years--;\n months = TuiMonthNumber.December;\n } else {\n months--;\n }\n\n days += TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n }\n\n return new TuiDay(years, months, days);\n }\n\n /**\n * Returns formatted whole date\n */\n getFormattedDay(dateFormat: TuiDateMode, separator: string): string {\n tuiAssert.assert(\n separator.length === 1,\n `Separator should consist of only 1 symbol`,\n );\n\n const dd = this.formattedDayPart;\n const mm = this.formattedMonthPart;\n const yyyy = this.formattedYear;\n\n switch (dateFormat) {\n case `YMD`:\n return `${yyyy}${separator}${mm}${separator}${dd}`;\n case `MDY`:\n return `${mm}${separator}${dd}${separator}${yyyy}`;\n case `DMY`:\n default:\n return `${dd}${separator}${mm}${separator}${yyyy}`;\n }\n }\n\n toString(dateFormat: TuiDateMode = `DMY`, separator: string = `.`): string {\n return this.getFormattedDay(dateFormat, separator);\n }\n\n toJSON(): string {\n return `${super.toJSON()}-${this.formattedDayPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n toLocalNativeDate(): Date {\n return new Date(this.year, this.month, this.day);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month, this.day));\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\n\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport {TuiMonth} from './month';\n\n/**\n * An immutable range of two {@link TuiMonth} objects\n */\nexport class TuiMonthRange {\n constructor(readonly from: TuiMonth, readonly to: TuiMonth) {\n tuiAssert.assert(from.monthSameOrBefore(to));\n }\n\n static sort(month1: TuiMonth, month2: TuiMonth): TuiMonthRange {\n return month1.monthSameOrBefore(month2)\n ? new TuiMonthRange(month1, month2)\n : new TuiMonthRange(month2, month1);\n }\n\n get isSingleMonth(): boolean {\n return this.from.monthSame(this.to);\n }\n\n /**\n * @deprecated\n */\n get formattedMonthRange(): string {\n return `${this.from.formattedMonth}${RANGE_SEPARATOR_CHAR}${this.to.formattedMonth}`;\n }\n\n monthSame(another: TuiMonthRange): boolean {\n return this.from.monthSame(another.from) && this.to.monthSame(another.to);\n }\n\n toString(): string {\n return `${this.from}${RANGE_SEPARATOR_CHAR}${this.to}`;\n }\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiDateMode} from '@taiga-ui/cdk/types';\n\nimport {DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH} from './date-fillers';\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport {TuiDay} from './day';\nimport {TuiMonthRange} from './month-range';\n\n/**\n * Temporary type guard to satisfy ts-overloading of normalizeParse method\n * @deprecated\n */\nexport const isDateMode = (dateMode: string): dateMode is TuiDateMode =>\n [`DMY`, `YMD`, `MDY`].includes(dateMode);\n\n/**\n * An immutable range of two {@link TuiDay} objects\n */\nexport class TuiDayRange extends TuiMonthRange {\n constructor(readonly from: TuiDay, readonly to: TuiDay) {\n super(from, to);\n\n tuiAssert.assert(from.daySameOrBefore(to));\n }\n\n /**\n * Creates range from two days after sorting them\n *\n * @param day1\n * @param day2\n * @return new range with sorted days\n */\n static sort(day1: TuiDay, day2: TuiDay): TuiDayRange {\n return day1.daySameOrBefore(day2)\n ? new TuiDayRange(day1, day2)\n : new TuiDayRange(day2, day1);\n }\n\n /**\n * @deprecated\n */\n static normalizeParse(\n rangeString: string,\n dateFiller: string,\n dateRangeFiller: string,\n ): TuiDayRange;\n static normalizeParse(rangeString: string, dateMode?: TuiDateMode): TuiDayRange;\n\n /**\n * Parse and correct a day range in string format\n *\n * @param rangeString a string of dates in a format dd.mm.yyyy - dd.mm.yyyy\n * @param dateMode {@link TuiDateMode}\n * @return normalized day range object\n */\n static normalizeParse(\n rangeString: string,\n dateMode: string | TuiDateMode = `DMY`,\n ): TuiDayRange {\n const dateFormat = isDateMode(dateMode) ? dateMode : `DMY`;\n\n const leftDay = TuiDay.normalizeParse(\n rangeString.slice(0, DATE_FILLER_LENGTH),\n dateFormat,\n );\n\n if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {\n return new TuiDayRange(leftDay, leftDay);\n }\n\n return TuiDayRange.sort(\n leftDay,\n TuiDay.normalizeParse(\n rangeString.slice(DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length),\n dateFormat,\n ),\n );\n }\n\n get isSingleDay(): boolean {\n return this.from.daySame(this.to);\n }\n\n /**\n * Human readable format.\n * @deprecated use {@link getFormattedDayRange} instead\n */\n get formattedDayRange(): string {\n const from = this.from.getFormattedDay(`DMY`, `.`);\n const to = this.to.getFormattedDay(`DMY`, `.`);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n\n /**\n * Tests ranges for identity\n *\n * @param another second range to test against current\n * @return `true` if days are identical\n */\n daySame(another: TuiDayRange): boolean {\n return this.from.daySame(another.from) && this.to.daySame(another.to);\n }\n\n /**\n * Locks range between two days included, or limits from one side if the other is null\n *\n * @param min\n * @param max\n * @return range — clamped range\n */\n dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDayRange {\n return new TuiDayRange(this.from.dayLimit(min, max), this.to.dayLimit(min, max));\n }\n\n /**\n * Human readable format.\n */\n getFormattedDayRange(dateFormat: TuiDateMode, dateSeparator: string): string {\n const from = this.from.getFormattedDay(dateFormat, dateSeparator);\n const to = this.to.getFormattedDay(dateFormat, dateSeparator);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n\n toString(dateFormat: TuiDateMode = `DMY`, dateSeparator: string = `.`): string {\n const from = this.from.getFormattedDay(dateFormat, dateSeparator);\n const to = this.to.getFormattedDay(dateFormat, dateSeparator);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n}\n","import {MAX_MONTH, MAX_YEAR, MIN_DAY, MIN_MONTH, MIN_YEAR} from './date-time';\nimport {TuiDay} from './day';\n\nexport const TUI_FIRST_DAY = new TuiDay(MIN_YEAR, MIN_MONTH, MIN_DAY);\n\nexport const TUI_LAST_DAY = new TuiDay(MAX_YEAR, MAX_MONTH, 31);\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiTimeLike} from '@taiga-ui/cdk/interfaces';\nimport {TuiTimeMode} from '@taiga-ui/cdk/types';\nimport {padStart} from '@taiga-ui/cdk/utils/format';\nimport {inRange} from '@taiga-ui/cdk/utils/math';\n\nimport {\n HOURS_IN_DAY,\n MILLISECONDS_IN_DAY,\n MILLISECONDS_IN_HOUR,\n MILLISECONDS_IN_MINUTE,\n MINUTES_IN_HOUR,\n SECONDS_IN_MINUTE,\n} from './date-time';\n\n/**\n * Immutable time object with hours, minutes, seconds and ms\n */\nexport class TuiTime implements TuiTimeLike {\n constructor(\n readonly hours: number,\n readonly minutes: number,\n readonly seconds: number = 0,\n readonly ms: number = 0,\n ) {\n tuiAssert.assert(\n TuiTime.isValidTime(hours, minutes, seconds, ms),\n `Time must be real, but got:`,\n hours,\n minutes,\n seconds,\n ms,\n );\n }\n\n /**\n * Checks if time is valid\n */\n static isValidTime(\n hours: number,\n minutes: number,\n seconds: number = 0,\n ms: number = 0,\n ): boolean {\n return (\n Number.isInteger(hours) &&\n inRange(hours, 0, HOURS_IN_DAY) &&\n Number.isInteger(minutes) &&\n inRange(minutes, 0, MINUTES_IN_HOUR) &&\n Number.isInteger(seconds) &&\n inRange(seconds, 0, SECONDS_IN_MINUTE) &&\n Number.isInteger(ms) &&\n inRange(ms, 0, 1000)\n );\n }\n\n /**\n * Current UTC time.\n */\n static current(): TuiTime {\n return TuiTime.fromAbsoluteMilliseconds(Date.now() % MILLISECONDS_IN_DAY);\n }\n\n /**\n * Current time in local timezone\n */\n static currentLocal(): TuiTime {\n const date = new Date();\n\n return TuiTime.fromAbsoluteMilliseconds(\n (Date.now() - date.getTimezoneOffset() * MILLISECONDS_IN_MINUTE) %\n MILLISECONDS_IN_DAY,\n );\n }\n\n /**\n * Calculates TuiTime from milliseconds\n */\n static fromAbsoluteMilliseconds(milliseconds: number): TuiTime {\n tuiAssert.assert(Number.isInteger(milliseconds));\n tuiAssert.assert(\n inRange(milliseconds, 0, MILLISECONDS_IN_DAY),\n `Milliseconds must be below ${MILLISECONDS_IN_DAY} (milliseconds in a day).`,\n );\n\n const hours = Math.floor(milliseconds / MILLISECONDS_IN_HOUR);\n const minutes = Math.floor(\n (milliseconds % MILLISECONDS_IN_HOUR) / MILLISECONDS_IN_MINUTE,\n );\n const seconds =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) / 1000,\n ) || 0;\n const ms =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) % 1000,\n ) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Parses string into TuiTime object\n */\n static fromString(time: string): TuiTime {\n const hours = Number(time.slice(0, 2));\n const minutes = Number(time.slice(3, 5));\n const seconds = Number(time.slice(6, 8)) || 0;\n const ms = Number(time.slice(9, 12)) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Converts Date object into TuiTime\n * @param date\n */\n static fromLocalNativeDate(date: Date): TuiTime {\n return new TuiTime(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n }\n\n /**\n * Shifts time by hours and minutes\n */\n shift({hours = 0, minutes = 0, seconds = 0, ms = 0}: TuiTimeLike): TuiTime {\n const newMs = (1000 + this.ms + (ms % 1000)) % 1000;\n\n const secondsInMs = ms < 0 ? Math.ceil(ms / 1000) : Math.floor(ms / 1000);\n const secondsToAdd = secondsInMs + seconds;\n const newSeconds = (60 + this.seconds + (secondsToAdd % 60)) % 60;\n\n const minutesInSeconds =\n secondsToAdd < 0\n ? Math.ceil(secondsToAdd / 60)\n : Math.floor(secondsToAdd / 60);\n const minutesToAdd = minutesInSeconds + minutes;\n const newMinutes = (60 + this.minutes + (minutesToAdd % 60)) % 60;\n\n const hoursInMinutes =\n minutesToAdd < 0\n ? Math.ceil(minutesToAdd / 60)\n : Math.floor(minutesToAdd / 60);\n const hoursToAdd = hoursInMinutes + hours;\n const newHours = (24 + this.hours + (hoursToAdd % 24)) % 24;\n\n return new TuiTime(newHours, newMinutes, newSeconds, newMs);\n }\n\n /**\n * Converts TuiTime to string\n */\n toString(mode?: TuiTimeMode): string {\n const needAddMs = mode === `HH:MM:SS.MSS` || (!mode && this.ms > 0);\n const needAddSeconds =\n needAddMs || mode === `HH:MM:SS` || (!mode && this.seconds > 0);\n\n return (\n `${this.formatTime(this.hours)}:${this.formatTime(this.minutes)}` +\n `${needAddSeconds ? `:${this.formatTime(this.seconds)}` : ``}` +\n `${needAddMs ? `.${this.formatTime(this.ms, 3)}` : ``}`\n );\n }\n\n valueOf(): number {\n return this.toAbsoluteMilliseconds();\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n [Symbol.toPrimitive](hint: string): string | number {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n /**\n * Converts TuiTime to milliseconds\n */\n toAbsoluteMilliseconds(): number {\n return (\n this.hours * MILLISECONDS_IN_HOUR +\n this.minutes * MILLISECONDS_IN_MINUTE +\n this.seconds * 1000 +\n this.ms\n );\n }\n\n private formatTime(time: number, digits: number = 2): string {\n return padStart(String(time), digits, `0`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -83,7 +83,7 @@ function tuiPure(_target, propertyKey, _a) {
83
83
  },
84
84
  };
85
85
  }
86
- if (typeof value !== 'function') {
86
+ if (typeof value !== "function") {
87
87
  throw new TuiPureException();
88
88
  }
89
89
  var original = value;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-decorators.js","sources":["ng://@taiga-ui/cdk/decorators/default-prop.ts","ng://@taiga-ui/cdk/decorators/pure.ts","ng://@taiga-ui/cdk/decorators/required-setter.ts","ng://@taiga-ui/cdk/decorators/taiga-ui-cdk-decorators.ts"],"sourcesContent":["import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input values for undefined. You can also pass\n * optional assertion to check input against.\n *\n * CAUTION: This decorator overwrites other getters and setters.\n */\nexport function tuiDefaultProp<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: unknown[]\n): PropertyDecorator {\n return (target, key) => {\n const {name} = target.constructor;\n const errorGetDefaultMessage = errorGetDefault(key, name);\n const errorSetDefaultMessage = errorSetDefault(key, name);\n\n Object.defineProperty(target, key, {\n get(): undefined {\n tuiAssert.assert(false, errorGetDefaultMessage);\n\n return undefined;\n },\n set(this: T, initialValue: T[K]) {\n const isValid = initialValue !== undefined;\n const errorMessage = errorSetDefaultInitial(key, name);\n let currentValue = initialValue;\n\n tuiAssert.assert(isValid, errorMessage);\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, initialValue),\n `${String(key)} in ${name} received:`,\n initialValue,\n ...args,\n );\n }\n\n Object.defineProperty(this, key, {\n get(): T[K] {\n return currentValue;\n },\n set(this: T, value: T[K]) {\n const isValid = value !== undefined;\n const backupValue = initialValue;\n\n tuiAssert.assert(\n isValid,\n errorSetDefaultMessage,\n String(backupValue),\n );\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n currentValue = isValid ? value : backupValue;\n },\n });\n },\n });\n };\n}\n\nfunction errorGetDefault(key: string | symbol, component: string): string {\n return `Default value for ${String(\n key,\n )} was not provided in ${component}, error in Taiga UI Angular Kit`;\n}\n\nfunction errorSetDefault(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, which is invalid input, using default value:`;\n}\n\nfunction errorSetDefaultInitial(key: string | symbol, component: string): string {\n return `Undefined was passed as default value for ${String(\n key,\n )} to ${component}, error in Taiga UI Angular Kit`;\n}\n","import {TuiPureException} from '@taiga-ui/cdk/exceptions';\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: `this` is not available inside such functions/getters, they must be pure.\n */\nexport function tuiPure<T>(\n _target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> {\n if (get) {\n return {\n enumerable,\n get(): T {\n const value = get.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n },\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n enumerable,\n get(): T {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {value: patched});\n\n return patched as unknown as T;\n },\n };\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input setter values against a custom assertion which\n * takes value passed to input setter and component instance as arguments.\n * It specifically checks for undefined values and prevents calls to the\n * original setter in this case.\n */\nexport function tuiRequiredSetter<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: any[]\n): MethodDecorator {\n return (\n target: object,\n key,\n {configurable, enumerable, get, set}: PropertyDescriptor,\n ): PropertyDescriptor => {\n const {name} = target.constructor;\n\n return {\n configurable,\n enumerable,\n get,\n set(this: T, value: T[K]) {\n if (value !== undefined && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n if (!set || value === undefined) {\n tuiAssert.assert(value !== undefined, errorSet(key, name));\n\n return;\n }\n\n set.call(this, value);\n },\n };\n };\n}\n\nfunction errorSet(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, setter will not be called`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-decorators.js","sources":["ng://@taiga-ui/cdk/decorators/default-prop.ts","ng://@taiga-ui/cdk/decorators/pure.ts","ng://@taiga-ui/cdk/decorators/required-setter.ts","ng://@taiga-ui/cdk/decorators/taiga-ui-cdk-decorators.ts"],"sourcesContent":["import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input values for undefined. You can also pass\n * optional assertion to check input against.\n *\n * CAUTION: This decorator overwrites other getters and setters.\n */\nexport function tuiDefaultProp<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: unknown[]\n): PropertyDecorator {\n return (target, key) => {\n const {name} = target.constructor;\n const errorGetDefaultMessage = errorGetDefault(key, name);\n const errorSetDefaultMessage = errorSetDefault(key, name);\n\n Object.defineProperty(target, key, {\n get(): undefined {\n tuiAssert.assert(false, errorGetDefaultMessage);\n\n return undefined;\n },\n set(this: T, initialValue: T[K]) {\n const isValid = initialValue !== undefined;\n const errorMessage = errorSetDefaultInitial(key, name);\n let currentValue = initialValue;\n\n tuiAssert.assert(isValid, errorMessage);\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, initialValue),\n `${String(key)} in ${name} received:`,\n initialValue,\n ...args,\n );\n }\n\n Object.defineProperty(this, key, {\n get(): T[K] {\n return currentValue;\n },\n set(this: T, value: T[K]) {\n const isValid = value !== undefined;\n const backupValue = initialValue;\n\n tuiAssert.assert(\n isValid,\n errorSetDefaultMessage,\n String(backupValue),\n );\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n currentValue = isValid ? value : backupValue;\n },\n });\n },\n });\n };\n}\n\nfunction errorGetDefault(key: string | symbol, component: string): string {\n return `Default value for ${String(\n key,\n )} was not provided in ${component}, error in Taiga UI Angular Kit`;\n}\n\nfunction errorSetDefault(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, which is invalid input, using default value:`;\n}\n\nfunction errorSetDefaultInitial(key: string | symbol, component: string): string {\n return `Undefined was passed as default value for ${String(\n key,\n )} to ${component}, error in Taiga UI Angular Kit`;\n}\n","import {TuiPureException} from '@taiga-ui/cdk/exceptions';\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: `this` is not available inside such functions/getters, they must be pure.\n */\nexport function tuiPure<T>(\n _target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> {\n if (get) {\n return {\n enumerable,\n get(): T {\n const value = get.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n },\n };\n }\n\n if (typeof value !== `function`) {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n enumerable,\n get(): T {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {value: patched});\n\n return patched as unknown as T;\n },\n };\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input setter values against a custom assertion which\n * takes value passed to input setter and component instance as arguments.\n * It specifically checks for undefined values and prevents calls to the\n * original setter in this case.\n */\nexport function tuiRequiredSetter<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: any[]\n): MethodDecorator {\n return (\n target: object,\n key,\n {configurable, enumerable, get, set}: PropertyDescriptor,\n ): PropertyDescriptor => {\n const {name} = target.constructor;\n\n return {\n configurable,\n enumerable,\n get,\n set(this: T, value: T[K]) {\n if (value !== undefined && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n if (!set || value === undefined) {\n tuiAssert.assert(value !== undefined, errorSet(key, name));\n\n return;\n }\n\n set.call(this, value);\n },\n };\n };\n}\n\nfunction errorSet(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, setter will not be called`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ var TuiActiveZoneDirective = /** @class */ (function () {
66
66
  { type: TuiActiveZoneDirective, decorators: [{ type: Optional }, { type: SkipSelf }, { type: Inject, args: [TuiActiveZoneDirective_1,] }] }
67
67
  ]; };
68
68
  __decorate([
69
- Input('tuiActiveZoneParent'),
69
+ Input("tuiActiveZoneParent"),
70
70
  tuiDefaultProp()
71
71
  ], TuiActiveZoneDirective.prototype, "tuiActiveZoneParentSetter", null);
72
72
  __decorate([
@@ -77,8 +77,8 @@ var TuiActiveZoneDirective = /** @class */ (function () {
77
77
  ], TuiActiveZoneDirective.prototype, "setZone", null);
78
78
  TuiActiveZoneDirective = TuiActiveZoneDirective_1 = __decorate([
79
79
  Directive({
80
- selector: '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',
81
- exportAs: 'tuiActiveZone',
80
+ selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)",
81
+ exportAs: "tuiActiveZone",
82
82
  }),
83
83
  __param(0, Inject(TUI_ACTIVE_ELEMENT)),
84
84
  __param(1, Inject(NgZone)),