@gravity-ui/date-components 3.4.2 → 4.1.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 (405) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/components/Calendar/Calendar.d.ts +6 -2
  3. package/dist/cjs/components/Calendar/Calendar.js +1 -1
  4. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/dist/cjs/components/CalendarView/Calendar.css +3 -0
  6. package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
  7. package/dist/cjs/components/CalendarView/CalendarView.d.ts +2 -1
  8. package/dist/cjs/components/CalendarView/CalendarView.js +8 -8
  9. package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
  10. package/dist/cjs/components/CalendarView/hooks/types.d.ts +5 -3
  11. package/dist/cjs/components/CalendarView/hooks/types.js.map +1 -1
  12. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  13. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  14. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  15. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  16. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +7 -1
  17. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  18. package/dist/cjs/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  19. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js +74 -30
  20. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  21. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +16 -9
  22. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  23. package/dist/cjs/components/DateField/DateField.d.ts +1 -1
  24. package/dist/cjs/components/DateField/DateField.js +5 -17
  25. package/dist/cjs/components/DateField/DateField.js.map +1 -1
  26. package/dist/cjs/components/DateField/IncompleteDate.d.ts +28 -0
  27. package/dist/cjs/components/DateField/IncompleteDate.js +116 -0
  28. package/dist/cjs/components/DateField/IncompleteDate.js.map +1 -0
  29. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  30. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +18 -249
  31. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  32. package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  33. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +250 -54
  34. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  35. package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  36. package/dist/cjs/components/DateField/hooks/useDateFieldState.js +84 -118
  37. package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
  38. package/dist/cjs/components/DateField/hooks/useFocusManager.d.ts +29 -0
  39. package/dist/cjs/components/DateField/hooks/useFocusManager.js +116 -0
  40. package/dist/cjs/components/DateField/hooks/useFocusManager.js.map +1 -0
  41. package/dist/cjs/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  42. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js +236 -0
  43. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  44. package/dist/cjs/components/DateField/i18n/ru.json +1 -1
  45. package/dist/cjs/components/DateField/index.d.ts +2 -1
  46. package/dist/cjs/components/DateField/index.js +1 -1
  47. package/dist/cjs/components/DateField/index.js.map +1 -1
  48. package/dist/cjs/components/DateField/types.d.ts +2 -22
  49. package/dist/cjs/components/DateField/types.js.map +1 -1
  50. package/dist/cjs/components/DateField/utils.d.ts +21 -34
  51. package/dist/cjs/components/DateField/utils.js +180 -132
  52. package/dist/cjs/components/DateField/utils.js.map +1 -1
  53. package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -3
  54. package/dist/cjs/components/DatePicker/DatePicker.js +3 -4
  55. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  56. package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +1 -1
  57. package/dist/cjs/components/DatePicker/MobileCalendar.js +3 -5
  58. package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
  59. package/dist/cjs/components/DatePicker/StubButton.d.ts +1 -1
  60. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  61. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  62. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  63. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  64. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +30 -17
  65. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  66. package/dist/cjs/components/HiddenInput/HiddenInput.d.ts +2 -5
  67. package/dist/cjs/components/HiddenInput/HiddenInput.js +2 -4
  68. package/dist/cjs/components/HiddenInput/HiddenInput.js.map +1 -1
  69. package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  70. package/dist/cjs/components/RangeCalendar/RangeCalendar.js +2 -3
  71. package/dist/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
  72. package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
  73. package/dist/cjs/components/RangeDateField/RangeDateField.js +6 -19
  74. package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
  75. package/dist/cjs/components/RangeDateField/index.d.ts +0 -1
  76. package/dist/cjs/components/RangeDateField/index.js +0 -1
  77. package/dist/cjs/components/RangeDateField/index.js.map +1 -1
  78. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  79. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +4 -5
  80. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  81. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  82. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +3 -4
  83. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  84. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  85. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +4 -5
  86. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  87. package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  88. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  89. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  90. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  91. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  92. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  93. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  94. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -21
  95. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  96. package/dist/cjs/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  97. package/dist/cjs/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  98. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  99. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  100. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  101. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +0 -3
  102. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  103. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  104. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  105. package/dist/cjs/components/RangeDateSelection/utils/span.d.ts +2 -1
  106. package/dist/cjs/components/RangeDateSelection/utils/span.js.map +1 -1
  107. package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  108. package/dist/cjs/components/RelativeDateField/RelativeDateField.js +3 -40
  109. package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
  110. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  111. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  112. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  113. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  114. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  115. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  116. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  117. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  118. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  119. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  120. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -21
  121. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  122. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  123. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  124. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  125. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  126. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  127. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  128. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  129. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  130. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  131. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  132. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  133. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  134. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  135. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  136. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -16
  137. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  138. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
  139. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +34 -7
  140. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  141. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  142. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  143. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  144. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  145. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +9 -12
  146. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  147. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  148. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  149. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  150. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +27 -16
  151. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  152. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  153. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  154. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  155. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  156. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  157. package/dist/cjs/components/RelativeRangeDatePicker/types.d.ts +3 -1
  158. package/dist/cjs/components/RelativeRangeDatePicker/types.js.map +1 -1
  159. package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  160. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
  161. package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
  162. package/dist/cjs/components/utils/constants.d.ts +2 -0
  163. package/dist/cjs/components/utils/constants.js +7 -1
  164. package/dist/cjs/components/utils/constants.js.map +1 -1
  165. package/dist/cjs/components/utils/dates.d.ts +6 -1
  166. package/dist/cjs/components/utils/dates.js +6 -1
  167. package/dist/cjs/components/utils/dates.js.map +1 -1
  168. package/dist/cjs/components/utils/filterDOMProps.js +1 -1
  169. package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
  170. package/dist/cjs/components/utils/mergeProps.js +1 -1
  171. package/dist/cjs/components/utils/mergeProps.js.map +1 -1
  172. package/dist/cjs/components/utils/validation/datePicker.js +1 -1
  173. package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
  174. package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
  175. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  176. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
  177. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  178. package/dist/cjs/hooks/useEventHandler.js +1 -2
  179. package/dist/cjs/hooks/useEventHandler.js.map +1 -1
  180. package/dist/cjs/hooks/useMove.d.ts +2 -2
  181. package/dist/cjs/hooks/useMove.js +6 -9
  182. package/dist/cjs/hooks/useMove.js.map +1 -1
  183. package/dist/cjs/hooks/useResizeObserver.js +1 -1
  184. package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
  185. package/dist/cjs/package.json +1 -1
  186. package/dist/docs/INDEX.md +131 -0
  187. package/dist/docs/components/Calendar.md +125 -0
  188. package/dist/docs/components/DateField.md +206 -0
  189. package/dist/docs/components/DatePicker.md +194 -0
  190. package/dist/docs/components/RangeCalendar.md +125 -0
  191. package/dist/docs/components/RelativeDateField.md +73 -0
  192. package/dist/docs/components/RelativeDatePicker.md +59 -0
  193. package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
  194. package/dist/esm/components/Calendar/Calendar.js +1 -1
  195. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  196. package/dist/esm/components/CalendarView/Calendar.css +3 -0
  197. package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
  198. package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
  199. package/dist/esm/components/CalendarView/CalendarView.js +8 -8
  200. package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
  201. package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
  202. package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
  203. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  204. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  205. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  206. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  207. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
  208. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  209. package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  210. package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
  211. package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  212. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
  213. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  214. package/dist/esm/components/DateField/DateField.d.ts +1 -1
  215. package/dist/esm/components/DateField/DateField.js +6 -18
  216. package/dist/esm/components/DateField/DateField.js.map +1 -1
  217. package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
  218. package/dist/esm/components/DateField/IncompleteDate.js +112 -0
  219. package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
  220. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  221. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
  222. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  223. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  224. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
  225. package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  226. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  227. package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
  228. package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
  229. package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
  230. package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
  231. package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
  232. package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  233. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
  234. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  235. package/dist/esm/components/DateField/i18n/ru.json +1 -1
  236. package/dist/esm/components/DateField/index.d.ts +2 -1
  237. package/dist/esm/components/DateField/index.js +1 -1
  238. package/dist/esm/components/DateField/index.js.map +1 -1
  239. package/dist/esm/components/DateField/types.d.ts +2 -22
  240. package/dist/esm/components/DateField/types.js.map +1 -1
  241. package/dist/esm/components/DateField/utils.d.ts +21 -34
  242. package/dist/esm/components/DateField/utils.js +179 -125
  243. package/dist/esm/components/DateField/utils.js.map +1 -1
  244. package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
  245. package/dist/esm/components/DatePicker/DatePicker.js +3 -5
  246. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  247. package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
  248. package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
  249. package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
  250. package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
  251. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  252. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  253. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  254. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  255. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
  256. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  257. package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
  258. package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
  259. package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
  260. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  261. package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
  262. package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  263. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
  264. package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
  265. package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
  266. package/dist/esm/components/RangeDateField/index.d.ts +0 -1
  267. package/dist/esm/components/RangeDateField/index.js +0 -1
  268. package/dist/esm/components/RangeDateField/index.js.map +1 -1
  269. package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  270. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
  271. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  272. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  273. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
  274. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  275. package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  276. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
  277. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  278. package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  279. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  280. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  281. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  282. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  283. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  284. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  285. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
  286. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  287. package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  288. package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  289. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  290. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  291. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  292. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
  293. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  294. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  295. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  296. package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
  297. package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
  298. package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  299. package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
  300. package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
  301. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  302. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  303. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  304. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  305. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  306. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  307. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  308. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  309. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  310. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  311. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
  312. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  313. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  314. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  315. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  316. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  317. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  318. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  319. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  320. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  321. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  322. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  323. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  324. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  325. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  326. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  327. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
  328. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  329. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
  330. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -7
  331. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  332. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  333. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  334. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  335. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  336. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
  337. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  338. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  339. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  340. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  341. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
  342. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  343. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  344. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  345. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  346. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  347. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  348. package/dist/esm/components/RelativeRangeDatePicker/types.d.ts +3 -1
  349. package/dist/esm/components/RelativeRangeDatePicker/types.js.map +1 -1
  350. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  351. package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
  352. package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
  353. package/dist/esm/components/utils/constants.d.ts +2 -0
  354. package/dist/esm/components/utils/constants.js +6 -0
  355. package/dist/esm/components/utils/constants.js.map +1 -1
  356. package/dist/esm/components/utils/dates.d.ts +6 -1
  357. package/dist/esm/components/utils/dates.js +5 -1
  358. package/dist/esm/components/utils/dates.js.map +1 -1
  359. package/dist/esm/components/utils/filterDOMProps.js +1 -1
  360. package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
  361. package/dist/esm/components/utils/mergeProps.js +1 -1
  362. package/dist/esm/components/utils/mergeProps.js.map +1 -1
  363. package/dist/esm/components/utils/validation/datePicker.js +1 -1
  364. package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
  365. package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
  366. package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  367. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
  368. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  369. package/dist/esm/hooks/useEventHandler.js +1 -2
  370. package/dist/esm/hooks/useEventHandler.js.map +1 -1
  371. package/dist/esm/hooks/useMove.d.ts +2 -2
  372. package/dist/esm/hooks/useMove.js +6 -9
  373. package/dist/esm/hooks/useMove.js.map +1 -1
  374. package/dist/esm/hooks/useResizeObserver.js +1 -1
  375. package/dist/esm/hooks/useResizeObserver.js.map +1 -1
  376. package/dist/esm/package.json +1 -1
  377. package/package.json +34 -27
  378. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
  379. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  380. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  381. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
  382. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  383. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  384. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
  385. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  386. package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
  387. package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
  388. package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
  389. package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  390. package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
  391. package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
  392. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
  393. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  394. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  395. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
  396. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  397. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  398. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
  399. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  400. package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
  401. package/dist/esm/components/RangeDateField/utils/index.js +0 -4
  402. package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
  403. package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  404. package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
  405. package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/utils.ts"],"names":[],"mappings":";;AASA,0CAMC;AAED,8CAOC;AAED,8CAEC;AAWD,0CA2CC;AAlFD,uDAA+D;AAM/D,6DAA+C;AAC/C,yDAA0D;AAE1D,SAAgB,eAAe,CAAC,QAAgB;IAC5C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAgB;IAC9C,OAAO,OAAO,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,CAAC;AAWD,SAAgB,eAAe,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,oBAAoB,EACpB,MAAM,GAAG,GAAG,EACZ,OAAO,EACP,mBAAmB,GAAG,WAAI,EAC1B,IAAI,GAAG,IAAI,GACO;;IAClB,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;IAE7E,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI;YACA,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,oBAAoB;gBACpD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;gBACnB,CAAC,CAAC,CAAC,MAAA,MAAA,IAAA,0BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,0CAAE,MAAM,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,EAAE;YACE,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,oBAAoB;gBAClD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;gBACjB,CAAC,CAAC,CAAC,MAAA,MAAA,IAAA,0BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,0CAAE,MAAM,CACpE,MAAM,CACT,mCAAI,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,IACI,CAAC,oBAAoB;QACrB,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,MAAK,UAAU;QAChC,CAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,IAAI,MAAK,UAAU,EAChC,CAAC;QACC,OAAO,IAAA,sBAAc,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC;IAExB,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC3C,CAAC","sourcesContent":["import {dateTime, dateTimeParse} from '@gravity-ui/date-utils';\n\nimport type {Value} from '../RelativeDatePicker';\nimport type {ExtractFunctionType, RangeValue} from '../types';\n\nimport type {Preset} from './components/Presets/defaultPresets';\nimport {i18n} from './components/Presets/i18n';\nimport {getPresetTitle} from './components/Presets/utils';\n\nexport function resolveTimeZone(timeZone: string) {\n if (timeZone === 'default' || timeZone === 'system') {\n return dateTime({timeZone}).timeZone();\n }\n\n return timeZone;\n}\n\nexport function normalizeTimeZone(timeZone: string) {\n const lowered = timeZone.toLowerCase();\n if (lowered === 'default' || lowered === 'system') {\n return lowered;\n }\n\n return resolveTimeZone(timeZone);\n}\n\nexport function getTimeZoneOffset(timeZone: string) {\n return `UTC ${dateTime({timeZone}).format('Z')}`;\n}\n\ninterface GetDefaultTitleArgs {\n value: RangeValue<Value | null> | null;\n timeZone: string;\n alwaysShowAsAbsolute?: boolean;\n format?: string;\n presets?: Preset[];\n presetsTranslations?: ExtractFunctionType<typeof i18n>;\n lang?: string;\n}\nexport function getDefaultTitle({\n value,\n timeZone,\n alwaysShowAsAbsolute,\n format = 'L',\n presets,\n presetsTranslations = i18n,\n lang = 'en',\n}: GetDefaultTitleArgs): string {\n if (!value) {\n return '';\n }\n\n const tz = timeZone === 'default' ? '' : ` (${getTimeZoneOffset(timeZone)})`;\n\n let from = '';\n if (value.start) {\n from =\n value.start.type === 'relative' && !alwaysShowAsAbsolute\n ? value.start.value\n : (dateTimeParse(value.start.value, {timeZone, lang})?.format(format) ?? '');\n }\n let to = '';\n if (value.end) {\n to =\n value.end.type === 'relative' && !alwaysShowAsAbsolute\n ? value.end.value\n : (dateTimeParse(value.end.value, {timeZone, roundUp: true, lang})?.format(\n format,\n ) ?? '');\n }\n\n if (\n !alwaysShowAsAbsolute &&\n value.start?.type === 'relative' &&\n value.end?.type === 'relative'\n ) {\n return getPresetTitle(value.start.value, value.end.value, presets, presetsTranslations);\n }\n\n const delimiter = ' — ';\n\n return `${from}${delimiter}${to}${tz}`;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {dateTime, dateTimeParse} from '@gravity-ui/date-utils';\n\nimport type {Value} from '../RelativeDatePicker';\nimport type {ExtractFunctionType, RangeValue} from '../types';\n\nimport type {Preset} from './components/Presets/defaultPresets';\nimport {i18n} from './components/Presets/i18n';\nimport {getPresetTitle} from './components/Presets/utils';\n\nfunction resolveTimeZone(timeZone: string) {\n if (timeZone === 'default' || timeZone === 'system') {\n return dateTime({timeZone}).timeZone();\n }\n\n return timeZone;\n}\n\nexport function normalizeTimeZone(timeZone: string) {\n const lowered = timeZone.toLowerCase();\n if (lowered === 'default' || lowered === 'system') {\n return lowered;\n }\n\n return resolveTimeZone(timeZone);\n}\n\nexport function getTimeZoneOffset(timeZone: string) {\n return `UTC ${dateTime({timeZone}).format('Z')}`;\n}\n\ninterface GetDefaultTitleArgs {\n value: RangeValue<Value | null> | null;\n timeZone: string;\n alwaysShowAsAbsolute?: boolean;\n allowNullableValues?: boolean;\n format?: string;\n presets?: Preset[];\n presetsTranslations?: ExtractFunctionType<typeof i18n>;\n lang?: string;\n}\n\nconst isPresetValue = (value: RangeValue<Value | null> | null, allowNullableValues?: boolean) => {\n if (!value || value.start?.type === 'absolute' || value.end?.type === 'absolute') {\n return null;\n }\n if (!allowNullableValues && (value.start === null || value.end === null)) {\n // we can't get here with no nullable values allowed but just in case...\n return null;\n }\n let start = null;\n let end = null;\n if (value.start?.type === 'relative') {\n start = value.start.value;\n }\n if (value.end?.type === 'relative') {\n end = value.end.value;\n }\n return {start, end};\n};\nexport function getDefaultTitle({\n value,\n timeZone,\n alwaysShowAsAbsolute,\n allowNullableValues,\n format = 'L',\n presets,\n presetsTranslations = i18n,\n lang = 'en',\n}: GetDefaultTitleArgs): string {\n if (!value) {\n return '';\n }\n\n const tz = timeZone === 'default' ? '' : ` (${getTimeZoneOffset(timeZone)})`;\n\n let from = '';\n if (value.start) {\n from =\n value.start.type === 'relative' && !alwaysShowAsAbsolute\n ? value.start.value\n : (dateTimeParse(value.start.value, {timeZone, lang})?.format(format) ?? '');\n }\n let to = '';\n if (value.end) {\n to =\n value.end.type === 'relative' && !alwaysShowAsAbsolute\n ? value.end.value\n : (dateTimeParse(value.end.value, {timeZone, roundUp: true, lang})?.format(\n format,\n ) ?? '');\n }\n\n const presetSearch = isPresetValue(value, allowNullableValues);\n if (!alwaysShowAsAbsolute && presetSearch) {\n return getPresetTitle(presetSearch.start, presetSearch.end, presets, presetsTranslations);\n }\n\n if (allowNullableValues) {\n if (!from) {\n return `${presetsTranslations('To')}: ${to}${tz}`;\n }\n if (!to) {\n return `${presetsTranslations('From')}: ${from}${tz}`;\n }\n }\n\n const delimiter = ' — ';\n\n return `${from}${delimiter}${to}${tz}`;\n}\n"]}
@@ -5,3 +5,5 @@ export declare const DAY: number;
5
5
  export declare const WEEK: number;
6
6
  export declare const MONTH: number;
7
7
  export declare const YEAR: number;
8
+ export declare const isMac: boolean;
9
+ export declare const CtrlCmd: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.YEAR = exports.MONTH = exports.WEEK = exports.DAY = exports.HOUR = exports.MINUTE = exports.SECOND = void 0;
3
+ exports.CtrlCmd = exports.isMac = exports.YEAR = exports.MONTH = exports.WEEK = exports.DAY = exports.HOUR = exports.MINUTE = exports.SECOND = void 0;
4
4
  exports.SECOND = 1000;
5
5
  exports.MINUTE = 60 * exports.SECOND;
6
6
  exports.HOUR = 60 * exports.MINUTE;
@@ -8,4 +8,10 @@ exports.DAY = 24 * exports.HOUR;
8
8
  exports.WEEK = 7 * exports.DAY;
9
9
  exports.MONTH = 30 * exports.DAY;
10
10
  exports.YEAR = 365 * exports.DAY;
11
+ const platform = typeof window !== 'undefined' && window.navigator
12
+ ? // @ts-expect-error
13
+ window.navigator['userAgentData']?.platform || window.navigator.platform
14
+ : '';
15
+ exports.isMac = /^Mac/i.test(platform);
16
+ exports.CtrlCmd = exports.isMac ? 'metaKey' : 'ctrlKey';
11
17
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,EAAE,GAAG,cAAM,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE,GAAG,cAAM,CAAC;AACnB,QAAA,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,GAAG,WAAG,CAAC;AACf,QAAA,KAAK,GAAG,EAAE,GAAG,WAAG,CAAC;AACjB,QAAA,IAAI,GAAG,GAAG,GAAG,WAAG,CAAC","sourcesContent":["export const SECOND = 1000;\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const WEEK = 7 * DAY;\nexport const MONTH = 30 * DAY;\nexport const YEAR = 365 * DAY;\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,EAAE,GAAG,cAAM,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE,GAAG,cAAM,CAAC;AACnB,QAAA,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,GAAG,WAAG,CAAC;AACf,QAAA,KAAK,GAAG,EAAE,GAAG,WAAG,CAAC;AACjB,QAAA,IAAI,GAAG,GAAG,GAAG,WAAG,CAAC;AAE9B,MAAM,QAAQ,GACV,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS;IAC7C,CAAC,CAAC,mBAAmB;QACnB,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ;IAC1E,CAAC,CAAC,EAAE,CAAC;AAEA,QAAA,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,aAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["export const SECOND = 1000;\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const WEEK = 7 * DAY;\nexport const MONTH = 30 * DAY;\nexport const YEAR = 365 * DAY;\n\nconst platform =\n typeof window !== 'undefined' && window.navigator\n ? // @ts-expect-error\n window.navigator['userAgentData']?.platform || window.navigator.platform\n : '';\n\nexport const isMac = /^Mac/i.test(platform);\nexport const CtrlCmd = isMac ? 'metaKey' : 'ctrlKey';\n"]}
@@ -1,11 +1,16 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
2
  export declare function isWeekend(date: DateTime): boolean;
3
- export interface PlaceholderValueOptions {
3
+ interface PlaceholderValueOptions {
4
4
  placeholderValue?: DateTime;
5
5
  timeZone?: string;
6
6
  }
7
7
  export declare function createPlaceholderValue({ placeholderValue, timeZone }: PlaceholderValueOptions): DateTime;
8
+ export declare function createPlaceholderRangeValue({ placeholderValue, timeZone }: PlaceholderValueOptions): {
9
+ start: DateTime;
10
+ end: DateTime;
11
+ };
8
12
  export declare function isInvalid(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined): boolean;
9
13
  export declare function constrainValue(value: DateTime, minValue: DateTime | undefined, maxValue: DateTime | undefined): DateTime;
10
14
  export declare function mergeDateTime(date: DateTime, time: DateTime): DateTime;
11
15
  export declare function formatDateTime(date: DateTime, format: string, timezone: string, lang: string): string;
16
+ export {};
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isWeekend = isWeekend;
4
4
  exports.createPlaceholderValue = createPlaceholderValue;
5
+ exports.createPlaceholderRangeValue = createPlaceholderRangeValue;
5
6
  exports.isInvalid = isInvalid;
6
7
  exports.constrainValue = constrainValue;
7
8
  exports.mergeDateTime = mergeDateTime;
@@ -11,7 +12,11 @@ function isWeekend(date) {
11
12
  return [0, 6].includes(date.day());
12
13
  }
13
14
  function createPlaceholderValue({ placeholderValue, timeZone }) {
14
- return placeholderValue !== null && placeholderValue !== void 0 ? placeholderValue : (0, date_utils_1.dateTime)({ timeZone }).startOf('day');
15
+ return placeholderValue ?? (0, date_utils_1.dateTime)({ timeZone }).startOf('day');
16
+ }
17
+ function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
18
+ const date = createPlaceholderValue({ placeholderValue, timeZone });
19
+ return { start: date.startOf('day'), end: date.endOf('day') };
15
20
  }
16
21
  function isInvalid(value, minValue, maxValue) {
17
22
  if (!value) {
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":";;AAGA,8BAEC;AAMD,wDAEC;AAED,8BAiBC;AAED,wCAaC;AAED,sCAKC;AAED,wCAEC;AA1DD,uDAAgD;AAGhD,SAAgB,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,SAAgB,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,IAAA,qBAAQ,EAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\nexport interface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\n\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string, lang: string) {\n return dateTime({input: date, timeZone: timezone, lang}).format(format);\n}\n"]}
1
+ {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":";;AAGA,8BAEC;AAMD,wDAEC;AAED,kEAGC;AAED,8BAiBC;AAED,wCAaC;AAED,sCAKC;AAED,wCAEC;AA/DD,uDAAgD;AAGhD,SAAgB,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,SAAgB,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,IAAI,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,2BAA2B,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IAC7F,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAAC,CAAC,CAAC;IAClE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;AAChE,CAAC;AAED,SAAgB,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,IAAA,qBAAQ,EAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\ninterface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\n\nexport function createPlaceholderRangeValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n const date = createPlaceholderValue({placeholderValue, timeZone});\n return {start: date.startOf('day'), end: date.endOf('day')};\n}\n\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string, lang: string) {\n return dateTime({input: date, timeZone: timezone, lang}).format(format);\n}\n"]}
@@ -17,7 +17,7 @@ function filterDOMProps(props, options = {}) {
17
17
  if (Object.prototype.hasOwnProperty.call(props, prop) &&
18
18
  (DOMPropNames.has(prop) ||
19
19
  (labelable && labelablePropNames.has(prop)) ||
20
- (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) ||
20
+ propNames?.has(prop) ||
21
21
  propRe.test(prop))) {
22
22
  // @ts-expect-error
23
23
  filteredProps[prop] = props[prop];
@@ -1 +1 @@
1
- {"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":";;AAyBA,wCAqBC;AA5CD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACjB,CAAC,CAAC;AAaH,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,yDAAyD;AACzD,SAAgB,cAAc,CAC1B,KAAyC,EACzC,UAAmB,EAAE;IAErB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IACI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACjD,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC3C,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxB,CAAC;YACC,mBAAmB;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC","sourcesContent":["import type {AccessibilityProps} from '../types';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details',\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/* FIXME: use the same function from @gravity-ui/uikit */\nexport function filterDOMProps(\n props: {id?: string} & AccessibilityProps,\n options: Options = {},\n): {id?: string} & AccessibilityProps {\n const {labelable, propNames} = options;\n const filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n // @ts-expect-error\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n"]}
1
+ {"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":";;AAyBA,wCAqBC;AA5CD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACjB,CAAC,CAAC;AAaH,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,yDAAyD;AACzD,SAAgB,cAAc,CAC1B,KAAyC,EACzC,UAAmB,EAAE;IAErB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IACI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACjD,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxB,CAAC;YACC,mBAAmB;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC","sourcesContent":["import type {AccessibilityProps} from '../types';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details',\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/* FIXME: use the same function from @gravity-ui/uikit */\nexport function filterDOMProps(\n props: {id?: string} & AccessibilityProps,\n options: Options = {},\n): {id?: string} & AccessibilityProps {\n const {labelable, propNames} = options;\n const filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n // @ts-expect-error\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeProps = mergeProps;
4
4
  function mergeProps(...args) {
5
- const result = Object.assign({}, args[0]);
5
+ const result = { ...args[0] };
6
6
  for (let i = 1; i < args.length; i++) {
7
7
  const props = args[i];
8
8
  if (!props) {
@@ -1 +1 @@
1
- {"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":";;AAgBA,gCAuCC;AAvCD,SAAgB,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,qBAAc,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,SAAS;QACb,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzB,IACI,OAAO,IAAI,KAAK,UAAU;gBAC1B,OAAO,KAAK,KAAK,UAAU;gBAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EACjC,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,WAAW;gBACnB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,cAAc;gBACtB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAA4C,CAAC;AACxD,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,GAAc;IAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC3B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["interface Props {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\ntype PropsArgs = Props | undefined | null;\n\ntype TupleTypes<T> = {[P in keyof T]: T[P]} extends {[key: number]: infer V}\n ? NullToObject<V>\n : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport function mergeProps<T extends PropsArgs[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\n const result: Props = {...args[0]};\n\n for (let i = 1; i < args.length; i++) {\n const props = args[i];\n if (!props) {\n continue;\n }\n for (const key of Object.keys(props)) {\n const left = result[key];\n const right = props[key];\n\n if (\n typeof left === 'function' &&\n typeof right === 'function' &&\n key.startsWith('on') &&\n key.charCodeAt(2) >= /* A */ 65 &&\n key.charCodeAt(2) <= /* Z */ 90\n ) {\n result[key] = chain(left, right);\n } else if (\n key === 'className' &&\n typeof left === 'string' &&\n typeof right === 'string'\n ) {\n result[key] = left + ' ' + right;\n } else if (\n key === 'controlProps' &&\n typeof left === 'object' &&\n typeof right === 'object'\n ) {\n result[key] = mergeProps(left, right);\n } else {\n result[key] = right === undefined ? left : right;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n\nfunction chain(...fns: unknown[]) {\n return (...args: unknown[]) => {\n for (const fn of fns) {\n if (typeof fn === 'function') {\n fn(...args);\n }\n }\n };\n}\n"]}
1
+ {"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":";;AAgBA,gCAuCC;AAvCD,SAAgB,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,GAAU,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,SAAS;QACb,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzB,IACI,OAAO,IAAI,KAAK,UAAU;gBAC1B,OAAO,KAAK,KAAK,UAAU;gBAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EACjC,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,WAAW;gBACnB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,cAAc;gBACtB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAA4C,CAAC;AACxD,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,GAAc;IAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC3B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["interface Props {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\ntype PropsArgs = Props | undefined | null;\n\ntype TupleTypes<T> = {[P in keyof T]: T[P]} extends {[key: number]: infer V}\n ? NullToObject<V>\n : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport function mergeProps<T extends PropsArgs[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\n const result: Props = {...args[0]};\n\n for (let i = 1; i < args.length; i++) {\n const props = args[i];\n if (!props) {\n continue;\n }\n for (const key of Object.keys(props)) {\n const left = result[key];\n const right = props[key];\n\n if (\n typeof left === 'function' &&\n typeof right === 'function' &&\n key.startsWith('on') &&\n key.charCodeAt(2) >= /* A */ 65 &&\n key.charCodeAt(2) <= /* Z */ 90\n ) {\n result[key] = chain(left, right);\n } else if (\n key === 'className' &&\n typeof left === 'string' &&\n typeof right === 'string'\n ) {\n result[key] = left + ' ' + right;\n } else if (\n key === 'controlProps' &&\n typeof left === 'object' &&\n typeof right === 'object'\n ) {\n result[key] = mergeProps(left, right);\n } else {\n result[key] = right === undefined ? left : right;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n\nfunction chain(...fns: unknown[]) {\n return (...args: unknown[]) => {\n for (const fn of fns) {\n if (typeof fn === 'function') {\n fn(...args);\n }\n }\n };\n}\n"]}
@@ -5,7 +5,7 @@ const i18n_1 = require("./i18n/index.js");
5
5
  function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value', t = i18n_1.i18n) {
6
6
  const rangeOverflow = value && maxValue && maxValue.isBefore(value);
7
7
  const rangeUnderflow = value && minValue && value.isBefore(minValue);
8
- const isUnavailable = (value && (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(value))) || false;
8
+ const isUnavailable = (value && isDateUnavailable?.(value)) || false;
9
9
  const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
10
10
  const errors = [];
11
11
  if (isInvalid) {
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":";;AAWA,kDAwCC;AA/CD,0CAA4B;AAO5B,SAAgB,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,WAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,KAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,KAAK,CAAC,CAAA,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,oCAAoC,EAAE;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,sCAAsC,EAAE;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../types';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n t: ExtractFunctionType<typeof i18n> = i18n,\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n t('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n t('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(t('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
1
+ {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":";;AAWA,kDAwCC;AA/CD,0CAA4B;AAO5B,SAAgB,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,WAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,oCAAoC,EAAE;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,sCAAsC,EAAE;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../types';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n t: ExtractFunctionType<typeof i18n> = i18n,\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n t('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n t('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(t('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
- "Value must be {minValue} or later.": "{{value}} должно ровняться {{minValue}} или быть позже.",
3
- "Value must be {maxValue} or earlier.": "{{value}} должно ровняться {{maxValue}} или быть раньше.",
2
+ "Value must be {minValue} or later.": "{{value}} должно равняться {{minValue}} или быть позже.",
3
+ "Value must be {maxValue} or earlier.": "{{value}} должно равняться {{maxValue}} или быть раньше.",
4
4
  "Selected date unavailable.": "Выбранная дата недоступна.",
5
5
  "Value is required.": "{{value}} обязательно.",
6
6
  "\"From\"": "«От»",
@@ -1,15 +1,11 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
2
  import type { RelativeRangeDatePickerValue } from "../../RelativeRangeDatePicker/index.js";
3
3
  import type { ExtractFunctionType } from "../../types/index.js";
4
+ import type { ValidationResult } from "./datePicker.js";
4
5
  import { i18n } from "./i18n/index.js";
5
- export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string, t?: ExtractFunctionType<typeof i18n>): {
6
- isInvalid: boolean;
7
- errors: never[];
8
- startValidationResult?: undefined;
9
- endValidationResult?: undefined;
10
- } | {
11
- isInvalid: boolean;
12
- startValidationResult: import("./datePicker.js").ValidationResult;
13
- endValidationResult: import("./datePicker.js").ValidationResult;
14
- errors: string[];
15
- };
6
+ interface RangeValidationResult extends ValidationResult {
7
+ startValidationResult: ValidationResult;
8
+ endValidationResult: ValidationResult;
9
+ }
10
+ export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string, t?: ExtractFunctionType<typeof i18n>): RangeValidationResult;
11
+ export {};
@@ -6,7 +6,12 @@ const datePicker_1 = require("./datePicker.js");
6
6
  const i18n_1 = require("./i18n/index.js");
7
7
  function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone, t = i18n_1.i18n) {
8
8
  if (!value) {
9
- return { isInvalid: false, errors: [] };
9
+ return {
10
+ isInvalid: false,
11
+ errors: [],
12
+ startValidationResult: { isInvalid: false, errors: [] },
13
+ endValidationResult: { isInvalid: false, errors: [] },
14
+ };
10
15
  }
11
16
  const startDate = value.start ? (0, date_utils_1.dateTimeParse)(value.start.value, { timeZone }) : null;
12
17
  const endDate = value.end ? (0, date_utils_1.dateTimeParse)(value.end.value, { timeZone, roundUp: true }) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":";;AASA,4DAyDC;AAlED,uDAAqD;AAMrD,gDAAiD;AACjD,0CAA4B;AAE5B,SAAgB,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,WAAI;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,IAAA,gCAAmB,EAC7C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,EACR,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAA,gCAAmB,EAC3C,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACxE,QAAQ,EACR,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACrC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACH,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;QAC3E,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;KAC1E,CAAC;AACN,CAAC","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RelativeRangeDatePickerValue} from '../../RelativeRangeDatePicker';\nimport type {ExtractFunctionType} from '../../types';\n\nimport {getValidationResult} from './datePicker';\nimport {i18n} from './i18n';\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n t: ExtractFunctionType<typeof i18n> = i18n,\n) {\n if (!value) {\n return {isInvalid: false, errors: []};\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n t('\"From\"'),\n t,\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n t('\"To\"'),\n t,\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(t('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
1
+ {"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":";;AAeA,4DA8DC;AA7ED,uDAAqD;AAMrD,gDAAiD;AAEjD,0CAA4B;AAO5B,SAAgB,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,WAAI;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO;YACH,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,EAAE;YACV,qBAAqB,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC;YACrD,mBAAmB,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC;SACtD,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,IAAA,gCAAmB,EAC7C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,EACR,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAA,gCAAmB,EAC3C,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACxE,QAAQ,EACR,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACrC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACH,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;QAC3E,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;KAC1E,CAAC;AACN,CAAC","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RelativeRangeDatePickerValue} from '../../RelativeRangeDatePicker';\nimport type {ExtractFunctionType} from '../../types';\n\nimport {getValidationResult} from './datePicker';\nimport type {ValidationResult} from './datePicker';\nimport {i18n} from './i18n';\n\ninterface RangeValidationResult extends ValidationResult {\n startValidationResult: ValidationResult;\n endValidationResult: ValidationResult;\n}\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n t: ExtractFunctionType<typeof i18n> = i18n,\n): RangeValidationResult {\n if (!value) {\n return {\n isInvalid: false,\n errors: [],\n startValidationResult: {isInvalid: false, errors: []},\n endValidationResult: {isInvalid: false, errors: []},\n };\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n t('\"From\"'),\n t,\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n t('\"To\"'),\n t,\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(t('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
@@ -16,8 +16,7 @@ function useEventHandler(handler) {
16
16
  }, [handler]);
17
17
  // @ts-expect-error
18
18
  return react_1.default.useCallback((...args) => {
19
- var _a;
20
- return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref, ...args);
19
+ return ref.current?.(...args);
21
20
  }, []);
22
21
  }
23
22
  //# sourceMappingURL=useEventHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":";;AAQA,0CASC;;AAjBD,0DAA0B;AAE1B;;;;;GAKG;AACH,SAAgB,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,eAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE;;QACpC,OAAO,MAAA,GAAG,CAAC,OAAO,oDAAG,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import React from 'react';\n\n/*\n * TODO: move to @gravity-ui/uikit\n * The hook returns a stable function (an empty list of dependencies),\n * but this function always calls the actual function associated with the last render.\n * The returned function should be used as an event handler or inside a useEffect.\n */\nexport function useEventHandler<T extends Function>(handler?: T) {\n const ref = React.useRef<T | undefined>(handler);\n React.useLayoutEffect(() => {\n ref.current = handler;\n }, [handler]);\n // @ts-expect-error\n return React.useCallback<T>((...args) => {\n return ref.current?.(...args);\n }, []);\n}\n"]}
1
+ {"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":";;AAQA,0CASC;;AAjBD,0DAA0B;AAE1B;;;;;GAKG;AACH,SAAgB,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,eAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE;QACpC,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import React from 'react';\n\n/*\n * TODO: move to @gravity-ui/uikit\n * The hook returns a stable function (an empty list of dependencies),\n * but this function always calls the actual function associated with the last render.\n * The returned function should be used as an event handler or inside a useEffect.\n */\nexport function useEventHandler<T extends Function>(handler?: T) {\n const ref = React.useRef<T | undefined>(handler);\n React.useLayoutEffect(() => {\n ref.current = handler;\n }, [handler]);\n // @ts-expect-error\n return React.useCallback<T>((...args) => {\n return ref.current?.(...args);\n }, []);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';
2
+ type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';
3
3
  interface EventBase {
4
4
  shiftKey: boolean;
5
5
  ctrlKey: boolean;
@@ -20,7 +20,7 @@ export interface MoveMoveEvent extends BaseMoveEvent {
20
20
  export interface MoveEndEvent extends BaseMoveEvent {
21
21
  type: 'moveend';
22
22
  }
23
- export interface MoveEvents {
23
+ interface MoveEvents {
24
24
  onMoveStart?: (e: MoveStartEvent) => void;
25
25
  onMove?: (e: MoveMoveEvent) => void;
26
26
  onMoveEnd?: (e: MoveEndEvent) => void;
@@ -17,7 +17,7 @@ function useMove(props) {
17
17
  }
18
18
  if (!state.current.isMoving) {
19
19
  state.current.isMoving = true;
20
- onMoveStart === null || onMoveStart === void 0 ? void 0 : onMoveStart({
20
+ onMoveStart?.({
21
21
  type: 'movestart',
22
22
  pointerType,
23
23
  shiftKey: originalEvent.shiftKey,
@@ -26,7 +26,7 @@ function useMove(props) {
26
26
  altKey: originalEvent.altKey,
27
27
  });
28
28
  }
29
- onMove === null || onMove === void 0 ? void 0 : onMove({
29
+ onMove?.({
30
30
  type: 'move',
31
31
  pointerType,
32
32
  deltaX,
@@ -40,7 +40,7 @@ function useMove(props) {
40
40
  const end = (0, useEventHandler_1.useEventHandler)((originalEvent, pointerType) => {
41
41
  if (state.current.isMoving) {
42
42
  state.current.isMoving = false;
43
- onMoveEnd === null || onMoveEnd === void 0 ? void 0 : onMoveEnd({
43
+ onMoveEnd?.({
44
44
  type: 'moveend',
45
45
  pointerType,
46
46
  shiftKey: originalEvent.shiftKey,
@@ -59,9 +59,8 @@ function useMove(props) {
59
59
  e.preventDefault();
60
60
  state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
61
61
  const handleMouseMove = (ev) => {
62
- var _a, _b;
63
62
  if (ev.buttons === 0) {
64
- move(ev, ev.pageX - (((_a = state.current.lastPosition) === null || _a === void 0 ? void 0 : _a.pageX) || 0), ev.pageY - (((_b = state.current.lastPosition) === null || _b === void 0 ? void 0 : _b.pageY) || 0), 'mouse');
63
+ move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), 'mouse');
65
64
  state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
66
65
  }
67
66
  };
@@ -85,11 +84,10 @@ function useMove(props) {
85
84
  state.current.lastPosition = { pageX, pageY };
86
85
  e.preventDefault();
87
86
  const handleTouchMove = (ev) => {
88
- var _a, _b;
89
87
  const touch = [...ev.changedTouches].findIndex((el) => el.identifier === state.current.id);
90
88
  if (touch !== -1) {
91
89
  const { pageX, pageY } = e.changedTouches[touch];
92
- move(ev, pageX - (((_a = state.current.lastPosition) === null || _a === void 0 ? void 0 : _a.pageX) || 0), pageY - (((_b = state.current.lastPosition) === null || _b === void 0 ? void 0 : _b.pageY) || 0), 'touch');
90
+ move(ev, pageX - (state.current.lastPosition?.pageX || 0), pageY - (state.current.lastPosition?.pageY || 0), 'touch');
93
91
  state.current.lastPosition = { pageX, pageY };
94
92
  }
95
93
  };
@@ -116,9 +114,8 @@ function useMove(props) {
116
114
  state.current.id = e.pointerId;
117
115
  state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
118
116
  const handlePointerMove = (ev) => {
119
- var _a, _b;
120
117
  if (ev.pointerId === state.current.id) {
121
- move(ev, ev.pageX - (((_a = state.current.lastPosition) === null || _a === void 0 ? void 0 : _a.pageX) || 0), ev.pageY - (((_b = state.current.lastPosition) === null || _b === void 0 ? void 0 : _b.pageY) || 0), (ev.pointerType || 'mouse'));
118
+ move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), (ev.pointerType || 'mouse'));
122
119
  state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
123
120
  }
124
121
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":";;AAqCA,0BAuMC;;AA5OD,0DAA0B;AAE1B,0DAAkD;AAmClD,SAAgB,OAAO,CAAC,KAAiB;IACrC,MAAM,EAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAE/C,MAAM,KAAK,GAAG,eAAK,CAAC,MAAM,CAIvB;QACC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;QAClB,EAAE,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAA,iCAAe,EACxB,CAAC,aAAwB,EAAE,MAAc,EAAE,MAAc,EAAE,WAAwB,EAAE,EAAE;QACnF,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC9B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG;gBACV,IAAI,EAAE,WAAW;gBACjB,WAAW;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;aAC/B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG;YACL,IAAI,EAAE,MAAM;YACZ,WAAW;YACX,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;SAC/B,CAAC,CAAC;IACP,CAAC,CACJ,CAAC;IAEF,MAAM,GAAG,GAAG,IAAA,iCAAe,EAAC,CAAC,aAAwB,EAAE,WAAwB,EAAE,EAAE;QAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC/B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;aAC/B,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtB,MAAM,SAAS,GAAqC,EAAE,CAAC;QAEvD,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACtC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC;oBAE9D,MAAM,eAAe,GAAG,CAAC,EAAc,EAAE,EAAE;;wBACvC,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;4BACnB,IAAI,CACA,EAAE,EACF,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,OAAO,CACV,CAAC;4BACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;wBACpE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,aAAa,GAAG,CAAC,EAAc,EAAE,EAAE;wBACrC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAClB,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;4BACjB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;4BACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;wBACzD,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACtD,CAAC;YACL,CAAC,CAAC;YAEF,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBACtD,OAAO;gBACX,CAAC;gBAED,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC;gBAC9B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;gBAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;gBAEnB,MAAM,eAAe,GAAG,CAAC,EAAc,EAAE,EAAE;;oBACvC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,SAAS,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;oBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/C,IAAI,CACA,EAAE,EACF,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EAChD,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EAChD,OAAO,CACV,CAAC;wBACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;oBAChD,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,cAAc,GAAG,CAAC,EAAc,EAAE,EAAE;oBACtC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,SAAS,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;oBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBACjB,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;wBACzD,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;wBACvD,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;oBAC9D,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBACtD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACpD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAC3D,CAAC,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC/B,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC/B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC;oBAE9D,MAAM,iBAAiB,GAAG,CAAC,EAAgB,EAAE,EAAE;;wBAC3C,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;4BACpC,IAAI,CACA,EAAE,EACF,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,CAAC,EAAE,CAAC,WAAW,IAAI,OAAO,CAAgB,CAC7C,CAAC;4BACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;wBACpE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,eAAe,GAAG,CAAC,EAAgB,EAAE,EAAE;wBACzC,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;4BACpC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,OAAO,CAAgB,CAAC,CAAC;4BACpD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;4BACxB,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;4BAC7D,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;4BACzD,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;wBACjE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;oBAC1D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,CAAY,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;YACxE,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;YACxB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;gBACZ,KAAK,WAAW,CAAC,CAAC,CAAC;oBACf,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACV,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,WAAW,CAAC,CAAC,CAAC;oBACf,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,EAAC,SAAS,EAAC,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACpB,CAAC","sourcesContent":["import React from 'react';\n\nimport {useEventHandler} from './useEventHandler';\n\nexport type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';\n\ninterface EventBase {\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}\n\ninterface BaseMoveEvent extends EventBase {\n pointerType: PointerType;\n}\n\nexport interface MoveStartEvent extends BaseMoveEvent {\n type: 'movestart';\n}\n\nexport interface MoveMoveEvent extends BaseMoveEvent {\n type: 'move';\n deltaX: number;\n deltaY: number;\n}\n\nexport interface MoveEndEvent extends BaseMoveEvent {\n type: 'moveend';\n}\n\nexport interface MoveEvents {\n onMoveStart?: (e: MoveStartEvent) => void;\n onMove?: (e: MoveMoveEvent) => void;\n onMoveEnd?: (e: MoveEndEvent) => void;\n}\n\nexport function useMove(props: MoveEvents) {\n const {onMoveStart, onMove, onMoveEnd} = props;\n\n const state = React.useRef<{\n isMoving: boolean;\n lastPosition: null | {pageX: number; pageY: number};\n id: null | number;\n }>({\n isMoving: false,\n lastPosition: null,\n id: null,\n });\n\n const move = useEventHandler(\n (originalEvent: EventBase, deltaX: number, deltaY: number, pointerType: PointerType) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.isMoving) {\n state.current.isMoving = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX,\n deltaY,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n },\n );\n\n const end = useEventHandler((originalEvent: EventBase, pointerType: PointerType) => {\n if (state.current.isMoving) {\n state.current.isMoving = false;\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n });\n\n return React.useMemo(() => {\n const moveProps: React.DOMAttributes<HTMLElement> = {};\n\n if (typeof PointerEvent === 'undefined') {\n moveProps.onMouseDown = (e) => {\n if (e.button === 0) {\n state.current.isMoving = false;\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handleMouseMove = (ev: MouseEvent) => {\n if (ev.buttons === 0) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n 'mouse',\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handleMouseUp = (ev: MouseEvent) => {\n if (ev.button === 0) {\n end(ev, 'mouse');\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n };\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n };\n\n moveProps.onTouchStart = (e) => {\n if (e.touches.length === 0 || state.current.id !== null) {\n return;\n }\n\n const {pageX, pageY, identifier} = e.touches[0];\n state.current.id = identifier;\n state.current.lastPosition = {pageX, pageY};\n e.preventDefault();\n\n const handleTouchMove = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n const {pageX, pageY} = e.changedTouches[touch];\n move(\n ev,\n pageX - (state.current.lastPosition?.pageX || 0),\n pageY - (state.current.lastPosition?.pageY || 0),\n 'touch',\n );\n state.current.lastPosition = {pageX, pageY};\n }\n };\n const handleTouchEnd = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n end(ev, 'touch');\n state.current.id = null;\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.removeEventListener('touchcancel', handleTouchEnd);\n }\n };\n window.addEventListener('touchmove', handleTouchMove);\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n };\n } else {\n moveProps.onPointerDown = (e) => {\n if (e.button === 0 && state.current.id === null) {\n e.preventDefault();\n state.current.isMoving = false;\n state.current.id = e.pointerId;\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handlePointerMove = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n (ev.pointerType || 'mouse') as PointerType,\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handlePointerUp = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n end(ev, (ev.pointerType || 'mouse') as PointerType);\n state.current.id = null;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n window.removeEventListener('pointercancel', handlePointerUp);\n }\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerUp);\n }\n };\n }\n\n const handleKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n state.current.isMoving = false;\n move(e, deltaX, deltaY, 'keyboard');\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft': {\n e.preventDefault();\n handleKeyboardMove(e, -1, 0);\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n handleKeyboardMove(e, 1, 0);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n handleKeyboardMove(e, 0, -1);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n handleKeyboardMove(e, 0, 1);\n break;\n }\n }\n };\n\n return {moveProps};\n }, [end, move]);\n}\n"]}
1
+ {"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useEventHandler} from './useEventHandler';\n\ntype PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';\n\ninterface EventBase {\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}\n\ninterface BaseMoveEvent extends EventBase {\n pointerType: PointerType;\n}\n\nexport interface MoveStartEvent extends BaseMoveEvent {\n type: 'movestart';\n}\n\nexport interface MoveMoveEvent extends BaseMoveEvent {\n type: 'move';\n deltaX: number;\n deltaY: number;\n}\n\nexport interface MoveEndEvent extends BaseMoveEvent {\n type: 'moveend';\n}\n\ninterface MoveEvents {\n onMoveStart?: (e: MoveStartEvent) => void;\n onMove?: (e: MoveMoveEvent) => void;\n onMoveEnd?: (e: MoveEndEvent) => void;\n}\n\nexport function useMove(props: MoveEvents) {\n const {onMoveStart, onMove, onMoveEnd} = props;\n\n const state = React.useRef<{\n isMoving: boolean;\n lastPosition: null | {pageX: number; pageY: number};\n id: null | number;\n }>({\n isMoving: false,\n lastPosition: null,\n id: null,\n });\n\n const move = useEventHandler(\n (originalEvent: EventBase, deltaX: number, deltaY: number, pointerType: PointerType) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.isMoving) {\n state.current.isMoving = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX,\n deltaY,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n },\n );\n\n const end = useEventHandler((originalEvent: EventBase, pointerType: PointerType) => {\n if (state.current.isMoving) {\n state.current.isMoving = false;\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n });\n\n return React.useMemo(() => {\n const moveProps: React.DOMAttributes<HTMLElement> = {};\n\n if (typeof PointerEvent === 'undefined') {\n moveProps.onMouseDown = (e) => {\n if (e.button === 0) {\n state.current.isMoving = false;\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handleMouseMove = (ev: MouseEvent) => {\n if (ev.buttons === 0) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n 'mouse',\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handleMouseUp = (ev: MouseEvent) => {\n if (ev.button === 0) {\n end(ev, 'mouse');\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n };\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n };\n\n moveProps.onTouchStart = (e) => {\n if (e.touches.length === 0 || state.current.id !== null) {\n return;\n }\n\n const {pageX, pageY, identifier} = e.touches[0];\n state.current.id = identifier;\n state.current.lastPosition = {pageX, pageY};\n e.preventDefault();\n\n const handleTouchMove = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n const {pageX, pageY} = e.changedTouches[touch];\n move(\n ev,\n pageX - (state.current.lastPosition?.pageX || 0),\n pageY - (state.current.lastPosition?.pageY || 0),\n 'touch',\n );\n state.current.lastPosition = {pageX, pageY};\n }\n };\n const handleTouchEnd = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n end(ev, 'touch');\n state.current.id = null;\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.removeEventListener('touchcancel', handleTouchEnd);\n }\n };\n window.addEventListener('touchmove', handleTouchMove);\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n };\n } else {\n moveProps.onPointerDown = (e) => {\n if (e.button === 0 && state.current.id === null) {\n e.preventDefault();\n state.current.isMoving = false;\n state.current.id = e.pointerId;\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handlePointerMove = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n (ev.pointerType || 'mouse') as PointerType,\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handlePointerUp = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n end(ev, (ev.pointerType || 'mouse') as PointerType);\n state.current.id = null;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n window.removeEventListener('pointercancel', handlePointerUp);\n }\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerUp);\n }\n };\n }\n\n const handleKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n state.current.isMoving = false;\n move(e, deltaX, deltaY, 'keyboard');\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft': {\n e.preventDefault();\n handleKeyboardMove(e, -1, 0);\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n handleKeyboardMove(e, 1, 0);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n handleKeyboardMove(e, 0, -1);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n handleKeyboardMove(e, 0, 1);\n break;\n }\n }\n };\n\n return {moveProps};\n }, [end, move]);\n}\n"]}
@@ -6,7 +6,7 @@ const react_1 = tslib_1.__importDefault(require("react"));
6
6
  /* FIXME: use the same hook from @gravity-ui/uikit */
7
7
  function useResizeObserver({ ref, onResize, box, }) {
8
8
  react_1.default.useEffect(() => {
9
- const element = ref === null || ref === void 0 ? void 0 : ref.current;
9
+ const element = ref?.current;
10
10
  if (!element) {
11
11
  return undefined;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":";;AASA,8CA8BC;;AAvCD,0DAA0B;AAQ1B,qDAAqD;AACrD,SAAgB,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,GAAG,EAAE;gBACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC;QACN,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import React from 'react';\n\ninterface UseResizeObserverProps<T> {\n ref: React.RefObject<T | null | undefined> | undefined;\n onResize: () => void;\n box?: ResizeObserverBoxOptions;\n}\n\n/* FIXME: use the same hook from @gravity-ui/uikit */\nexport function useResizeObserver<T extends Element>({\n ref,\n onResize,\n box,\n}: UseResizeObserverProps<T>) {\n React.useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return undefined;\n }\n\n if (typeof window.ResizeObserver === 'undefined') {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }\n\n const observer = new ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n onResize();\n });\n\n observer.observe(element, {box});\n return () => {\n observer.disconnect();\n };\n }, [ref, onResize, box]);\n}\n"]}
1
+ {"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":";;AASA,8CA8BC;;AAvCD,0DAA0B;AAQ1B,qDAAqD;AACrD,SAAgB,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,GAAG,EAAE;gBACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC;QACN,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import React from 'react';\n\ninterface UseResizeObserverProps<T> {\n ref: React.RefObject<T | null | undefined> | undefined;\n onResize: () => void;\n box?: ResizeObserverBoxOptions;\n}\n\n/* FIXME: use the same hook from @gravity-ui/uikit */\nexport function useResizeObserver<T extends Element>({\n ref,\n onResize,\n box,\n}: UseResizeObserverProps<T>) {\n React.useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return undefined;\n }\n\n if (typeof window.ResizeObserver === 'undefined') {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }\n\n const observer = new ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n onResize();\n });\n\n observer.observe(element, {box});\n return () => {\n observer.disconnect();\n };\n }, [ref, onResize, box]);\n}\n"]}
@@ -1 +1 @@
1
- {"type":"commonjs","version":"3.4.2","sideEffects":["*.css","*.scss"]}
1
+ {"type":"commonjs","version":"4.1.0","sideEffects":["*.css","*.scss"]}