@skbkontur/react-ui 4.23.0 → 4.25.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 (264) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/components/Calendar/Calendar.d.ts +40 -5
  3. package/cjs/components/Calendar/Calendar.js +92 -36
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/Calendar/Calendar.md +42 -1
  6. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  7. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  8. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  9. package/cjs/components/Calendar/CalendarContext.js +16 -0
  10. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  11. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  12. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  13. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  14. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  15. package/cjs/components/Calendar/CalendarDay.js +77 -0
  16. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  17. package/cjs/components/Calendar/CalendarDay.md +70 -0
  18. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  19. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  20. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  21. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  22. package/cjs/components/Calendar/DayCellView.js +20 -43
  23. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  24. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  25. package/cjs/components/Calendar/DayCellView.styles.js +17 -24
  26. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  27. package/cjs/components/Calendar/Month.d.ts +0 -10
  28. package/cjs/components/Calendar/Month.js +33 -86
  29. package/cjs/components/Calendar/Month.js.map +1 -1
  30. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  31. package/cjs/components/Calendar/MonthView.js +47 -37
  32. package/cjs/components/Calendar/MonthView.js.map +1 -1
  33. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  34. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  35. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  36. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  37. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  38. package/cjs/components/Calendar/config.js +12 -6
  39. package/cjs/components/Calendar/config.js.map +1 -1
  40. package/cjs/components/Calendar/index.d.ts +1 -0
  41. package/cjs/components/Calendar/index.js +2 -1
  42. package/cjs/components/Calendar/index.js.map +1 -1
  43. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  44. package/cjs/components/DatePicker/DatePicker.js +71 -44
  45. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  46. package/cjs/components/DatePicker/DatePicker.md +36 -1
  47. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  48. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  49. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  50. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  51. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  52. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  53. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  54. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  55. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  56. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  57. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  58. package/cjs/components/Input/Input.js +1 -1
  59. package/cjs/components/Input/Input.js.map +1 -1
  60. package/cjs/components/Input/Input.styles.d.ts +1 -1
  61. package/cjs/components/Input/Input.styles.js +3 -2
  62. package/cjs/components/Input/Input.styles.js.map +1 -1
  63. package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  64. package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
  65. package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  66. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
  67. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  68. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  69. package/cjs/internal/DateSelect/DateSelect.js +50 -4
  70. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  71. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  72. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  73. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  74. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  75. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  76. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  77. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  78. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  79. package/cjs/internal/InputLikeText/InputLikeText.js +1 -1
  80. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  81. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  82. package/cjs/internal/MobilePopup/MobilePopup.js +8 -2
  83. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  84. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  85. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  86. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  87. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  88. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  89. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  90. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  91. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  92. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  93. package/cjs/internal/NativeDateInput/utils.js +3 -2
  94. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  95. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
  96. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  97. package/cjs/internal/ThemePlayground/constants.js +2 -1
  98. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  99. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  100. package/cjs/internal/themes/DarkTheme.d.ts +2 -0
  101. package/cjs/internal/themes/DarkTheme.js +6 -1
  102. package/cjs/internal/themes/DarkTheme.js.map +1 -1
  103. package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
  104. package/cjs/internal/themes/DefaultTheme.js +32 -4
  105. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  106. package/cjs/lib/date/InternalDate.d.ts +2 -0
  107. package/cjs/lib/date/InternalDate.js +8 -1
  108. package/cjs/lib/date/InternalDate.js.map +1 -1
  109. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  110. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  111. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  112. package/cjs/lib/date/InternalDateValidator.js +2 -1
  113. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  114. package/cjs/lib/date/comparison.d.ts +6 -0
  115. package/cjs/lib/date/comparison.js +44 -0
  116. package/cjs/lib/date/comparison.js.map +1 -0
  117. package/cjs/lib/locale/constants.d.ts +3 -0
  118. package/cjs/lib/locale/constants.js +6 -2
  119. package/cjs/lib/locale/constants.js.map +1 -1
  120. package/cjs/lib/theming/ThemeContext.md +3 -1
  121. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  122. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
  123. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
  124. package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  125. package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
  126. package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
  127. package/components/Calendar/Calendar/Calendar.js +81 -64
  128. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  129. package/components/Calendar/Calendar.d.ts +40 -5
  130. package/components/Calendar/Calendar.md +42 -1
  131. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  132. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  133. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  134. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  135. package/components/Calendar/CalendarContext/package.json +6 -0
  136. package/components/Calendar/CalendarContext.d.ts +12 -0
  137. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  138. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  139. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  140. package/components/Calendar/CalendarDay/CalendarDay.js +62 -0
  141. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  142. package/components/Calendar/CalendarDay/package.json +6 -0
  143. package/components/Calendar/CalendarDay.d.ts +12 -0
  144. package/components/Calendar/CalendarDay.md +70 -0
  145. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  146. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  147. package/components/Calendar/CalendarUtils.d.ts +2 -1
  148. package/components/Calendar/DayCellView/DayCellView.js +32 -46
  149. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  150. package/components/Calendar/DayCellView.d.ts +4 -12
  151. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -13
  152. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  153. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  154. package/components/Calendar/Month/Month.js +45 -80
  155. package/components/Calendar/Month/Month.js.map +1 -1
  156. package/components/Calendar/Month.d.ts +0 -10
  157. package/components/Calendar/MonthView/MonthView.js +49 -44
  158. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  159. package/components/Calendar/MonthView.d.ts +3 -2
  160. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  161. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  162. package/components/Calendar/MonthView.styles.d.ts +3 -0
  163. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  164. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  165. package/components/Calendar/config/config.js +6 -4
  166. package/components/Calendar/config/config.js.map +1 -1
  167. package/components/Calendar/index/index.js +2 -1
  168. package/components/Calendar/index/index.js.map +1 -1
  169. package/components/Calendar/index.d.ts +1 -0
  170. package/components/DatePicker/DatePicker/DatePicker.js +60 -38
  171. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  172. package/components/DatePicker/DatePicker.d.ts +4 -1
  173. package/components/DatePicker/DatePicker.md +36 -1
  174. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  175. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  176. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  177. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  178. package/components/DatePicker/MobilePicker/package.json +6 -0
  179. package/components/DatePicker/MobilePicker.d.ts +10 -0
  180. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  181. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  182. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  183. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  184. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  185. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  186. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  187. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  188. package/components/Input/Input/Input.js +1 -1
  189. package/components/Input/Input/Input.js.map +1 -1
  190. package/components/Input/Input.styles/Input.styles.js +2 -2
  191. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  192. package/components/Input/Input.styles.d.ts +1 -1
  193. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
  194. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
  195. package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  196. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
  197. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  198. package/internal/DateSelect/DateSelect/DateSelect.js +56 -4
  199. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  200. package/internal/DateSelect/DateSelect.d.ts +2 -0
  201. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  202. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  203. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  204. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  205. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  206. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  207. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  208. package/internal/DateSelect/locale/types.d.ts +1 -0
  209. package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
  210. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  211. package/internal/MobilePopup/MobilePopup/MobilePopup.js +2 -1
  212. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  213. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  214. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  215. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  216. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  217. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  218. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  219. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  220. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  221. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  222. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  223. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  224. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  225. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  226. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  227. package/internal/NativeDateInput/utils/utils.js +2 -1
  228. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  229. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +8 -5
  230. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  231. package/internal/ThemePlayground/constants/constants.js +3 -0
  232. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  233. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  234. package/internal/themes/DarkTheme/DarkTheme.js +2 -0
  235. package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
  236. package/internal/themes/DarkTheme.d.ts +2 -0
  237. package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
  238. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  239. package/internal/themes/DefaultTheme.d.ts +18 -0
  240. package/lib/date/InternalDate/InternalDate.js +7 -1
  241. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  242. package/lib/date/InternalDate.d.ts +2 -0
  243. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  244. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  245. package/lib/date/InternalDateTransformer.d.ts +3 -0
  246. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  247. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  248. package/lib/date/comparison/comparison.js +45 -0
  249. package/lib/date/comparison/comparison.js.map +1 -0
  250. package/lib/date/comparison/package.json +6 -0
  251. package/lib/date/comparison.d.ts +6 -0
  252. package/lib/locale/constants/constants.js +4 -1
  253. package/lib/locale/constants/constants.js.map +1 -1
  254. package/lib/locale/constants.d.ts +3 -0
  255. package/lib/theming/ThemeContext.md +3 -1
  256. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
  257. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
  258. package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
  259. package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  260. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
  261. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
  262. package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
  263. package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  264. package/package.json +2 -2
@@ -0,0 +1,75 @@
1
+ "use strict";exports.__esModule = true;exports.THEME_2022_UPDATE_2024 = void 0;var _ThemeFactory = require("../ThemeFactory");
2
+
3
+ var _Theme = require("./Theme2022");
4
+
5
+ var THEME_2022_UPDATE_2024 = _ThemeFactory.ThemeFactory.create(
6
+ {
7
+ green: '#1C8A3F',
8
+ greenXxLight: '#C7F9CC',
9
+ greenDark: '#197F39',
10
+
11
+ red: '#DD3333',
12
+ redXxLight: '#FFEBEB',
13
+ redDark: '#CC2626',
14
+
15
+ errorMain: '#FE4C4C',
16
+ errorText: '#CC2626',
17
+
18
+ linkSuccessColor: '#1C8A3F',
19
+ linkSuccessHoverColor: '#197F39',
20
+ linkSuccessActiveColor: '#167333',
21
+
22
+ linkDangerColor: '#CC2626',
23
+ linkDangerHoverColor: '#BB1919',
24
+ linkDangerActiveColor: '#AB0D0D',
25
+
26
+ btnSuccessBg: '#26AD50',
27
+ btnSuccessBorderColor: '#26AD50',
28
+
29
+ btnSuccessHoverBg: '#23A14A',
30
+ btnSuccessHoverBorderColor: '#23A14A',
31
+
32
+ btnSuccessActiveBg: '#209644',
33
+ btnSuccessActiveBorderColor: '#209644',
34
+
35
+ btnDangerBg: '#FE4C4C',
36
+ btnDangerBorderColor: '#FE4C4C',
37
+
38
+ btnDangerHoverBg: '#ED3F3F',
39
+ btnDangerHoverBorderColor: '#ED3F3F',
40
+
41
+ btnDangerActiveBg: '#DD3333',
42
+ btnDangerActiveBorderColor: '#DD3333',
43
+
44
+ calendarCellWeekendColor: '#CC2626',
45
+
46
+ inputBorderColorError: '#DD3333',
47
+
48
+ validationsTextColorError: '#CC2626',
49
+ // error background for button use=link
50
+ btnErrorSecondary: '#FFEBEB',
51
+
52
+ // disabled colors
53
+ btnDisabledTextColor: '#ADADAD',
54
+
55
+ inputIconColorDisabled: '#ADADAD',
56
+ inputTextColorDisabled: '#ADADAD',
57
+ inputPlaceholderColorDisabled: '#ADADAD',
58
+
59
+ textareaTextColorDisabled: '#ADADAD',
60
+ textareaPlaceholderColorDisabled: '#ADADAD',
61
+
62
+ tokenTextColorDisabled: '#ADADAD',
63
+
64
+ selectPlaceholderColorDisabled: '#ADADAD',
65
+ selectMenuArrowColorDisabled: '#ADADAD',
66
+
67
+ menuItemDisabledColor: '#ADADAD',
68
+
69
+ linkDisabledColor: '#ADADAD',
70
+
71
+ fileUploaderDisabledTextColor: '#ADADAD',
72
+ fileUploaderDisabledLinkColor: '#ADADAD',
73
+ fileUploaderDisabledIconColor: '#ADADAD' },
74
+
75
+ _Theme.THEME_2022);exports.THEME_2022_UPDATE_2024 = THEME_2022_UPDATE_2024;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Theme2022Update2024.ts"],"names":["THEME_2022_UPDATE_2024","ThemeFactory","create","green","greenXxLight","greenDark","red","redXxLight","redDark","errorMain","errorText","linkSuccessColor","linkSuccessHoverColor","linkSuccessActiveColor","linkDangerColor","linkDangerHoverColor","linkDangerActiveColor","btnSuccessBg","btnSuccessBorderColor","btnSuccessHoverBg","btnSuccessHoverBorderColor","btnSuccessActiveBg","btnSuccessActiveBorderColor","btnDangerBg","btnDangerBorderColor","btnDangerHoverBg","btnDangerHoverBorderColor","btnDangerActiveBg","btnDangerActiveBorderColor","calendarCellWeekendColor","inputBorderColorError","validationsTextColorError","btnErrorSecondary","btnDisabledTextColor","inputIconColorDisabled","inputTextColorDisabled","inputPlaceholderColorDisabled","textareaTextColorDisabled","textareaPlaceholderColorDisabled","tokenTextColorDisabled","selectPlaceholderColorDisabled","selectMenuArrowColorDisabled","menuItemDisabledColor","linkDisabledColor","fileUploaderDisabledTextColor","fileUploaderDisabledLinkColor","fileUploaderDisabledIconColor","THEME_2022"],"mappings":"+EAAA;;AAEA;;AAEO,IAAMA,sBAAsB,GAAGC,2BAAaC,MAAb;AACpC;AACEC,EAAAA,KAAK,EAAE,SADT;AAEEC,EAAAA,YAAY,EAAE,SAFhB;AAGEC,EAAAA,SAAS,EAAE,SAHb;;AAKEC,EAAAA,GAAG,EAAE,SALP;AAMEC,EAAAA,UAAU,EAAE,SANd;AAOEC,EAAAA,OAAO,EAAE,SAPX;;AASEC,EAAAA,SAAS,EAAE,SATb;AAUEC,EAAAA,SAAS,EAAE,SAVb;;AAYEC,EAAAA,gBAAgB,EAAE,SAZpB;AAaEC,EAAAA,qBAAqB,EAAE,SAbzB;AAcEC,EAAAA,sBAAsB,EAAE,SAd1B;;AAgBEC,EAAAA,eAAe,EAAE,SAhBnB;AAiBEC,EAAAA,oBAAoB,EAAE,SAjBxB;AAkBEC,EAAAA,qBAAqB,EAAE,SAlBzB;;AAoBEC,EAAAA,YAAY,EAAE,SApBhB;AAqBEC,EAAAA,qBAAqB,EAAE,SArBzB;;AAuBEC,EAAAA,iBAAiB,EAAE,SAvBrB;AAwBEC,EAAAA,0BAA0B,EAAE,SAxB9B;;AA0BEC,EAAAA,kBAAkB,EAAE,SA1BtB;AA2BEC,EAAAA,2BAA2B,EAAE,SA3B/B;;AA6BEC,EAAAA,WAAW,EAAE,SA7Bf;AA8BEC,EAAAA,oBAAoB,EAAE,SA9BxB;;AAgCEC,EAAAA,gBAAgB,EAAE,SAhCpB;AAiCEC,EAAAA,yBAAyB,EAAE,SAjC7B;;AAmCEC,EAAAA,iBAAiB,EAAE,SAnCrB;AAoCEC,EAAAA,0BAA0B,EAAE,SApC9B;;AAsCEC,EAAAA,wBAAwB,EAAE,SAtC5B;;AAwCEC,EAAAA,qBAAqB,EAAE,SAxCzB;;AA0CEC,EAAAA,yBAAyB,EAAE,SA1C7B;AA2CE;AACAC,EAAAA,iBAAiB,EAAE,SA5CrB;;AA8CE;AACAC,EAAAA,oBAAoB,EAAE,SA/CxB;;AAiDEC,EAAAA,sBAAsB,EAAE,SAjD1B;AAkDEC,EAAAA,sBAAsB,EAAE,SAlD1B;AAmDEC,EAAAA,6BAA6B,EAAE,SAnDjC;;AAqDEC,EAAAA,yBAAyB,EAAE,SArD7B;AAsDEC,EAAAA,gCAAgC,EAAE,SAtDpC;;AAwDEC,EAAAA,sBAAsB,EAAE,SAxD1B;;AA0DEC,EAAAA,8BAA8B,EAAE,SA1DlC;AA2DEC,EAAAA,4BAA4B,EAAE,SA3DhC;;AA6DEC,EAAAA,qBAAqB,EAAE,SA7DzB;;AA+DEC,EAAAA,iBAAiB,EAAE,SA/DrB;;AAiEEC,EAAAA,6BAA6B,EAAE,SAjEjC;AAkEEC,EAAAA,6BAA6B,EAAE,SAlEjC;AAmEEC,EAAAA,6BAA6B,EAAE,SAnEjC,EADoC;;AAsEpCC,iBAtEoC,CAA/B,C","sourcesContent":["import { ThemeFactory } from '../ThemeFactory';\n\nimport { THEME_2022 } from './Theme2022';\n\nexport const THEME_2022_UPDATE_2024 = ThemeFactory.create(\n {\n green: '#1C8A3F',\n greenXxLight: '#C7F9CC',\n greenDark: '#197F39',\n\n red: '#DD3333',\n redXxLight: '#FFEBEB',\n redDark: '#CC2626',\n\n errorMain: '#FE4C4C',\n errorText: '#CC2626',\n\n linkSuccessColor: '#1C8A3F',\n linkSuccessHoverColor: '#197F39',\n linkSuccessActiveColor: '#167333',\n\n linkDangerColor: '#CC2626',\n linkDangerHoverColor: '#BB1919',\n linkDangerActiveColor: '#AB0D0D',\n\n btnSuccessBg: '#26AD50',\n btnSuccessBorderColor: '#26AD50',\n\n btnSuccessHoverBg: '#23A14A',\n btnSuccessHoverBorderColor: '#23A14A',\n\n btnSuccessActiveBg: '#209644',\n btnSuccessActiveBorderColor: '#209644',\n\n btnDangerBg: '#FE4C4C',\n btnDangerBorderColor: '#FE4C4C',\n\n btnDangerHoverBg: '#ED3F3F',\n btnDangerHoverBorderColor: '#ED3F3F',\n\n btnDangerActiveBg: '#DD3333',\n btnDangerActiveBorderColor: '#DD3333',\n\n calendarCellWeekendColor: '#CC2626',\n\n inputBorderColorError: '#DD3333',\n\n validationsTextColorError: '#CC2626',\n // error background for button use=link\n btnErrorSecondary: '#FFEBEB',\n\n // disabled colors\n btnDisabledTextColor: '#ADADAD',\n\n inputIconColorDisabled: '#ADADAD',\n inputTextColorDisabled: '#ADADAD',\n inputPlaceholderColorDisabled: '#ADADAD',\n\n textareaTextColorDisabled: '#ADADAD',\n textareaPlaceholderColorDisabled: '#ADADAD',\n\n tokenTextColorDisabled: '#ADADAD',\n\n selectPlaceholderColorDisabled: '#ADADAD',\n selectMenuArrowColorDisabled: '#ADADAD',\n\n menuItemDisabledColor: '#ADADAD',\n\n linkDisabledColor: '#ADADAD',\n\n fileUploaderDisabledTextColor: '#ADADAD',\n fileUploaderDisabledLinkColor: '#ADADAD',\n fileUploaderDisabledIconColor: '#ADADAD',\n },\n THEME_2022,\n);\n"]}
@@ -13,7 +13,6 @@ import shallowEqual from 'shallowequal';
13
13
  import { globalObject } from '@skbkontur/global-object';
14
14
  import { isInstanceOf } from "../../../lib/isInstanceOf";
15
15
  import { InternalDate } from "../../../lib/date/InternalDate";
16
- import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
17
16
  import { rootNode } from "../../../lib/rootNode";
18
17
  import { cx } from "../../../lib/theming/Emotion";
19
18
  import { CommonWrapper } from "../../../internal/CommonWrapper";
@@ -22,6 +21,7 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
22
21
  import { animation } from "../../../lib/animation";
23
22
  import { isMobile } from "../../../lib/client";
24
23
  import { createPropsGetter } from "../../../lib/createPropsGetter";
24
+ import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
25
25
  import { themeConfig } from "../config";
26
26
  import { MonthViewModel } from "../MonthViewModel";
27
27
  import * as CalendarScrollEvents from "../CalendarScrollEvents";
@@ -29,12 +29,16 @@ import { Month } from "../Month";
29
29
  import { styles } from "../Calendar.styles";
30
30
  import { create, isGreater, isLess } from "../CalendarDateShape";
31
31
  import * as CalendarUtils from "../CalendarUtils";
32
+ import { CalendarContext } from "../CalendarContext";
33
+ import { CalendarDay } from "../CalendarDay";
32
34
  export var CalendarDataTids = {
33
35
  root: 'Calendar__root',
34
36
  month: 'MonthView__month',
35
37
  dayCell: 'DayCellView__root',
36
38
  headerMonth: 'MonthView__headerMonth',
37
- headerYear: 'MonthView__headerYear'
39
+ monthSelectMobile: 'MonthView__monthSelectMobile',
40
+ headerYear: 'MonthView__headerYear',
41
+ yearSelectMobile: 'MonthView__yearSelectMobile'
38
42
  };
39
43
  export
40
44
  /**
@@ -54,7 +58,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
54
58
  };
55
59
 
56
60
  function Calendar(_props) {
57
- var _CalendarUtils$getMon, _this$props$initialYe;
61
+ var _this$props$initialYe;
58
62
 
59
63
  var _this;
60
64
 
@@ -215,8 +219,21 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
215
219
  };
216
220
  }();
217
221
 
222
+ _this.handleMonthChange = function (visibleMonths) {
223
+ var currentMonth = visibleMonths[0];
224
+ var changeInfo = {
225
+ month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),
226
+ year: currentMonth.year
227
+ };
228
+ _this.props.onMonthChange == null ? void 0 : _this.props.onMonthChange(changeInfo);
229
+ };
230
+
231
+ _this.getViewModel = function (item) {
232
+ return item[1];
233
+ };
234
+
218
235
  _this.renderMain = function () {
219
- var positions = _this.getMonthPositions();
236
+ var monthsForRender = _this.getVisibleMonths(_this.state);
220
237
 
221
238
  var wrapperStyle = {
222
239
  height: themeConfig(_this.theme).WRAPPER_HEIGHT
@@ -224,6 +241,15 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
224
241
 
225
242
  var props = _this.getProps();
226
243
 
244
+ var context = {
245
+ value: _this.getDateInNativeFormat(props.value),
246
+ minDate: _this.getDateInNativeFormat(props.minDate),
247
+ maxDate: _this.getDateInNativeFormat(props.maxDate),
248
+ isHoliday: props.isHoliday,
249
+ renderDay: props.renderDay,
250
+ today: CalendarUtils.getTodayDate(),
251
+ onDateClick: _this.handleDateClick
252
+ };
227
253
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
228
254
  rootNodeRef: _this.setRootNode
229
255
  }, props), /*#__PURE__*/React.createElement("div", {
@@ -233,13 +259,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
233
259
  }, /*#__PURE__*/React.createElement("div", {
234
260
  style: wrapperStyle,
235
261
  className: styles.wrapper()
236
- }, _this.state.months.map(function (x, i) {
237
- return [positions[i], x];
238
- }).filter(function (_ref2) {
239
- var top = _ref2[0],
240
- month = _ref2[1];
241
- return CalendarUtils.isMonthVisible(top, month, _this.theme);
242
- }).map(_this.renderMonth, _assertThisInitialized(_this))), /*#__PURE__*/React.createElement("div", {
262
+ }, /*#__PURE__*/React.createElement(CalendarContext.Provider, {
263
+ value: context
264
+ }, monthsForRender.map(_this.renderMonth, _assertThisInitialized(_this)))), /*#__PURE__*/React.createElement("div", {
243
265
  className: styles.separator(_this.theme)
244
266
  })));
245
267
  };
@@ -269,29 +291,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
269
291
  _this.root = element;
270
292
  };
271
293
 
272
- _this.isHoliday = function (_ref3) {
273
- var date = _ref3.date,
274
- month = _ref3.month,
275
- year = _ref3.year,
276
- isWeekend = _ref3.isWeekend;
277
- var dateString = InternalDateTransformer.dateToInternalString({
278
- date: date,
279
- month: month + 1,
280
- year: year
281
- });
282
- return _this.getProps().isHoliday(dateString, isWeekend);
283
- };
284
-
285
- _this.handleDateChange = function (dateShape) {
286
- var value = InternalDateTransformer.dateToInternalString({
287
- date: dateShape.date,
288
- month: dateShape.month + 1,
289
- year: dateShape.year
290
- });
291
-
292
- if (_this.props.onValueChange) {
293
- _this.props.onValueChange(value);
294
- }
294
+ _this.handleDateClick = function (dateShape) {
295
+ var value = InternalDateTransformer.dateToHumanString(dateShape);
296
+ _this.props.onValueChange == null ? void 0 : _this.props.onValueChange(value);
295
297
  };
296
298
 
297
299
  _this.handleMonthYearChange = function (month, year) {
@@ -299,9 +301,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
299
301
  };
300
302
 
301
303
  _this.executeAnimations = function (pixelY) {
302
- _this.setState(function (_ref4) {
303
- var months = _ref4.months,
304
- scrollPosition = _ref4.scrollPosition;
304
+ _this.setState(function (_ref2) {
305
+ var months = _ref2.months,
306
+ scrollPosition = _ref2.scrollPosition;
305
307
  var targetPosition = CalendarUtils.calculateScrollPosition(months, scrollPosition, pixelY, _this.theme).scrollPosition;
306
308
  return {
307
309
  scrollTarget: targetPosition
@@ -364,13 +366,13 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
364
366
  var _this$state = _this.state,
365
367
  scrollTarget = _this$state.scrollTarget,
366
368
  scrollDirection = _this$state.scrollDirection;
367
- var trasholdHeight = themeConfig(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(_this.theme).DAY_SIZE;
369
+ var thresholdHeight = themeConfig(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(_this.theme).DAY_HEIGHT;
368
370
 
369
- if (scrollTarget < trasholdHeight) {
371
+ if (scrollTarget < thresholdHeight) {
370
372
  var targetPosition = 0;
371
373
 
372
374
  if (scrollDirection < 0) {
373
- targetPosition = trasholdHeight;
375
+ targetPosition = thresholdHeight;
374
376
  }
375
377
 
376
378
  _this.setState({
@@ -393,8 +395,8 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
393
395
 
394
396
  _this.scrollAmount = function (scrollAmmount, onEnd) {
395
397
  return _this.animation.animate(scrollAmmount, function (deltaY) {
396
- _this.setState(function (_ref5) {
397
- var scrollPosition = _ref5.scrollPosition;
398
+ _this.setState(function (_ref3) {
399
+ var scrollPosition = _ref3.scrollPosition;
398
400
  return {
399
401
  scrollPosition: scrollPosition + deltaY
400
402
  };
@@ -420,12 +422,11 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
420
422
  minDate: minDateShape,
421
423
  maxDate: maxDateShape
422
424
  });
423
- var initialMonth = (_CalendarUtils$getMon = CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth)) != null ? _CalendarUtils$getMon : initialDate.month;
425
+ var initialMonth = _this.props.initialMonth ? CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth) : initialDate.month;
424
426
  var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;
425
427
  _this.state = {
426
428
  scrollPosition: 0,
427
429
  months: CalendarUtils.getMonths(initialMonth, initialYear),
428
- today: today,
429
430
  scrollDirection: 1,
430
431
  scrollTarget: 0
431
432
  };
@@ -434,14 +435,27 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
434
435
 
435
436
  var _proto = Calendar.prototype;
436
437
 
437
- _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
438
- var value = this.props.value;
438
+ _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
439
+ var _this$props = this.props,
440
+ value = _this$props.value,
441
+ onMonthChange = _this$props.onMonthChange;
439
442
 
440
443
  if (value && !shallowEqual(value, prevProps.value)) {
441
444
  var _date = new InternalDate().parseValue(value).getComponentsLikeNumber();
442
445
 
443
446
  this.scrollToMonth(_date.month - 1, _date.year);
444
447
  }
448
+
449
+ if (onMonthChange) {
450
+ var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);
451
+ var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);
452
+ var currentMonth = visibleMonthsModels[0].month;
453
+ var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;
454
+
455
+ if (currentMonth !== prevCurrentMonth) {
456
+ this.handleMonthChange(visibleMonthsModels);
457
+ }
458
+ }
445
459
  };
446
460
 
447
461
  _proto.componentWillUnmount = function componentWillUnmount() {
@@ -464,23 +478,14 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
464
478
  */
465
479
  ;
466
480
 
467
- _proto.renderMonth = function renderMonth(_ref6) {
468
- var top = _ref6[0],
469
- month = _ref6[1];
470
- var date = this.getDateInNativeFormat(this.props.value);
471
- var minDate = this.getDateInNativeFormat(this.props.minDate);
472
- var maxDate = this.getDateInNativeFormat(this.props.maxDate);
481
+ _proto.renderMonth = function renderMonth(_ref4) {
482
+ var top = _ref4[0],
483
+ month = _ref4[1];
473
484
  return /*#__PURE__*/React.createElement(Month, {
474
485
  key: month.month + '-' + month.year,
475
486
  top: top,
476
487
  month: month,
477
- maxDate: maxDate,
478
- minDate: minDate,
479
- today: this.state.today,
480
- value: date,
481
- onDateClick: this.handleDateChange,
482
- onMonthYearChange: this.handleMonthYearChange,
483
- isHoliday: this.isHoliday
488
+ onMonthYearChange: this.handleMonthYearChange
484
489
  });
485
490
  };
486
491
 
@@ -488,10 +493,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
488
493
  return new InternalDate().parseValue(date).toNativeFormat();
489
494
  };
490
495
 
491
- _proto.getMonthPositions = function getMonthPositions() {
492
- var _this$state2 = this.state,
493
- scrollPosition = _this$state2.scrollPosition,
494
- months = _this$state2.months;
496
+ _proto.getMonthPositions = function getMonthPositions(months, scrollPosition) {
495
497
  var positions = [scrollPosition - months[0].getHeight(this.theme)];
496
498
 
497
499
  for (var i = 1; i < months.length; i++) {
@@ -502,8 +504,23 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
502
504
  return positions;
503
505
  };
504
506
 
507
+ _proto.getVisibleMonths = function getVisibleMonths(state) {
508
+ var _this3 = this;
509
+
510
+ var months = state.months,
511
+ scrollPosition = state.scrollPosition;
512
+ var positions = this.getMonthPositions(months, scrollPosition);
513
+ return months.map(function (x, i) {
514
+ return [positions[i], x];
515
+ }).filter(function (_ref5) {
516
+ var top = _ref5[0],
517
+ month = _ref5[1];
518
+ return CalendarUtils.isMonthVisible(top, month, _this3.theme);
519
+ });
520
+ };
521
+
505
522
  return Calendar;
506
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.defaultProps = {
523
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.Day = CalendarDay, _class2.defaultProps = {
507
524
  minDate: _class2.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),
508
525
  maxDate: _class2.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),
509
526
  isHoliday: function isHoliday(_day, isWeekend) {
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","InternalDateTransformer","rootNode","cx","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","createPropsGetter","themeConfig","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarUtils","CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","formatDate","date","year","setComponents","toString","withPad","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","setRootNode","refRoot","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","isHoliday","isWeekend","dateString","dateToInternalString","handleDateChange","dateShape","value","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","today","getTodayDate","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","parseValue","getComponentsLikeNumber","componentWillUnmount","cancel","render","toNativeFormat","position","push","Component","__KONTUR_REACT_UI__","displayName","_day"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { cx } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = CalendarUtils.getMonthInNativeFormat(this.props.initialMonth) ?? initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>): void {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => globalObject.setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n const date = this.getDateInNativeFormat(this.props.value);\n const minDate = this.getDateInNativeFormat(this.props.minDate);\n const maxDate = this.getDateInNativeFormat(this.props.maxDate);\n\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={maxDate}\n minDate={minDate}\n today={this.state.today}\n value={date}\n onDateClick={this.handleDateChange}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.isHoliday}\n />\n );\n }\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n\n return this.getProps().isHoliday(dateString, isWeekend);\n };\n\n private handleDateChange = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({\n date: dateShape.date,\n month: dateShape.month + 1,\n year: dateShape.year,\n });\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","rootNode","cx","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","createPropsGetter","InternalDateTransformer","themeConfig","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarUtils","CalendarContext","CalendarDay","CalendarDataTids","root","month","dayCell","headerMonth","monthSelectMobile","headerYear","yearSelectMobile","Calendar","formatDate","date","year","setComponents","toString","withPad","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","handleMonthChange","visibleMonths","changeInfo","getMonthInHumanFormat","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","setRootNode","refRoot","wrapper","map","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","prevState","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","top","toNativeFormat","getMonthPositions","positions","i","position","push","x","filter","isMonthVisible","Component","__KONTUR_REACT_UI__","displayName","Day","_day","isWeekend"],"mappings":"0XAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,cAAP,MAA2B,iBAA3B;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,YAAP,MAAyB,cAAzB;AACA,SAASC,YAAT,QAAwC,0BAAxC;;AAEA,SAASC,YAAT,QAA6B,wBAA7B;AACA,SAASC,YAAT,QAA6B,6BAA7B;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,QAAT,EAAmBC,SAAnB,EAA8BC,QAA9B,EAAwCC,QAAxC,EAAkDC,SAAlD,EAA6DC,QAA7D,QAA6E,0BAA7E;;;AAGA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,uBAAT,QAAwC,wCAAxC;;AAEA,SAASC,WAAT,QAA4B,UAA5B;AACA,SAASC,cAAT,QAA+B,kBAA/B;AACA,OAAO,KAAKC,oBAAZ,MAAsC,wBAAtC;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAA4BC,MAA5B,EAAoCC,SAApC,EAA+CC,MAA/C,QAA6D,qBAA7D;AACA,OAAO,KAAKC,aAAZ,MAA+B,iBAA/B;AACA,SAASC,eAAT,QAAsD,mBAAtD;AACA,SAASC,WAAT,QAA8C,eAA9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,OAAO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,gBADwB;AAE9BC,EAAAA,KAAK,EAAE,kBAFuB;AAG9BC,EAAAA,OAAO,EAAE,mBAHqB;AAI9BC,EAAAA,WAAW,EAAE,wBAJiB;AAK9BC,EAAAA,iBAAiB,EAAE,8BALW;AAM9BC,EAAAA,UAAU,EAAE,uBANkB;AAO9BC,EAAAA,gBAAgB,EAAE,6BAPY,EAAzB;;;;;;;;;AAgBP,OAJA;AACA;AACA,GAEA,IAAaC,QAAb,GADCjC,QACD;;;;AAMiBkC,EAAAA,UANjB,GAME,oBAA0BC,IAA1B,EAAwCR,KAAxC,EAAuDS,IAAvD,EAAqE;AACnE,WAAO,IAAIrC,YAAJ,GAAmBsC,aAAnB,CAAiC,EAAEF,IAAI,EAAJA,IAAF,EAAQR,KAAK,EAALA,KAAR,EAAeS,IAAI,EAAJA,IAAf,EAAjC,EAAwDE,QAAxD,CAAiE,EAAEC,OAAO,EAAE,IAAX,EAAjE,CAAP;AACD,GARH;;;;;;;;;;;;;;;;;AAyBE,oBAAYC,MAAZ,EAAkC;AAChC,wCAAMA,MAAN,UADgC,MAT1BC,QAS0B,GATf7B,iBAAiB,CAACqB,QAAQ,CAACS,YAAV,CASF,OAJ1BhC,SAI0B,GAJdA,SAAS,EAIK,OAH1BiC,WAG0B,GAHM,IAGN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsE3BC,IAAAA,aAtE2B,iGAsEX,iBAAOjB,KAAP,EAAsBS,IAAtB;AACjB,sBAAK1B,SAAL,CAAemC,UAAf,EADiB;AAEnB,sBAAKnC,SAAL,CAAeoC,MAAf;AACA;AAHmB,yCAIb,IAAIC,OAAJ,CAAY,UAACC,CAAD,UAAOnD,YAAY,CAACoD,UAAb,CAAwBD,CAAxB,EAA2B,CAA3B,CAAP,EAAZ,CAJa;;;AAOfE,gBAAAA,OAPe,GAOL,MAAKC,qBAAL,CAA2B,MAAKV,QAAL,GAAgBS,OAA3C,CAPK;AAQfE,gBAAAA,OARe,GAQL,MAAKD,qBAAL,CAA2B,MAAKV,QAAL,GAAgBW,OAA3C,CARK;;AAUjBF,gBAAAA,OAAO,IAAI9B,SAAS,CAAC8B,OAAD,EAAU/B,MAAM,CAAC,EAAD,EAAKQ,KAAL,EAAYS,IAAZ,CAAhB,CAVH;AAWnB,sBAAKQ,aAAL,CAAmBM,OAAO,CAACvB,KAA3B,EAAkCuB,OAAO,CAACd,IAA1C,EAXmB;;;;AAejBgB,gBAAAA,OAAO,IAAI/B,MAAM,CAAC+B,OAAD,EAAUjC,MAAM,CAAC,CAAD,EAAIQ,KAAJ,EAAWS,IAAX,CAAhB,CAfA;AAgBnB,sBAAKQ,aAAL,CAAmBQ,OAAO,CAACzB,KAA3B,EAAkCyB,OAAO,CAAChB,IAA1C,EAhBmB;;;;AAoBfiB,gBAAAA,YApBe,GAoBA,MAAKC,KAAL,CAAWC,MAAX,CAAkB,CAAlB,CApBA;AAqBfC,gBAAAA,YArBe,GAqBAH,YAAY,CAAC1B,KAAb,GAAqB0B,YAAY,CAACjB,IAAb,GAAoB,EAAzC,GAA8CT,KAA9C,GAAsDS,IAAI,GAAG,EArB7D;;AAuBjBoB,gBAAAA,YAAY,KAAK,CAvBA;AAwBnB,sBAAKC,QAAL,CAAc,CAAd,EAxBmB;;;;AA4BfC,gBAAAA,cA5Be,GA4BE5C,WAAW,CAAC,MAAK6C,KAAN,CAAX,CAAwBC,8BA5B1B;;AA8BfC,gBAAAA,KA9Be,GA8BP,SAARA,KAAQ,GAAM;AAClB,wBAAKC,QAAL,CAAc;AACZP,oBAAAA,MAAM,EAAEjC,aAAa,CAACyC,SAAd,CAAwBpC,KAAxB,EAA+BS,IAA/B,CADI;AAEZ4B,oBAAAA,cAAc,EAAE,CAFJ,EAAd;;AAID,iBAnCoB;;AAqCfC,gBAAAA,aArCe,GAqCC,SAAhBA,aAAgB,CAACX,KAAD,EAA0B;AAC9C;AACEA,oBAAAA,KAAK,CAACC,MAAN,CAAa,CAAb,EAAgBnB,IAAhB,KAAyBA,IAAzB;AACA;AACA;AACA;AACA8B,oBAAAA,IAAI,CAACC,GAAL,CAASX,YAAT,IAAyB,CAL3B;;AAOD,iBA7CoB;;AA+CrB;AACA;AACA,oBAAIA,YAAY,GAAG,CAAnB,EAAsB;AACdY,kBAAAA,oBADc,GACSF,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASX,YAAT,IAAyB,CAAlC,EAAqCE,cAArC,CADT;AAEdY,kBAAAA,eAFc,GAEIC,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEL,oBAAV,EAAX,EAA6C,UAACM,CAAD,EAAIC,KAAJ,EAAc;AACjF,2BAAO5D,cAAc,CAACI,MAAf,CAAsBQ,KAAK,GAAGgD,KAA9B,EAAqCvC,IAArC,CAAP;AACD,mBAFuB,CAFJ;AAKpB,wBAAK0B,QAAL;AACE,4BAACR,KAAD,EAAW;AACT,wBAAMsB,WAAW,GAAGX,aAAa,CAACX,KAAD,CAAjC;AACA,wBAAIsB,WAAJ,EAAiB;AACf;AACA;AACAtB,sBAAAA,KAAK,CAACC,MAAN,CAAa,CAAb,EAAgBsB,aAAhB,GAAgC,IAAhC;AACA,0BAAIP,eAAe,CAACG,MAApB,EAA4B;AAC1B;AACAH,wBAAAA,eAAe,CAACA,eAAe,CAACG,MAAhB,GAAyB,CAA1B,CAAf,CAA4CK,YAA5C,GAA2D,IAA3D;AACD;AACF;AACD,2BAAO;AACLvB,sBAAAA,MAAM,EAAEe,eAAe,CAACS,MAAhB,CAAuBzB,KAAK,CAACC,MAA7B,CADH;AAELS,sBAAAA,cAAc,EAAE,CAAC1C,aAAa,CAAC0D,eAAd,CAA8BV,eAA9B,EAA+C,MAAKX,KAApD,CAFZ,EAAP;;AAID,mBAhBH;AAiBE,8BAAM;AACJ,wBAAMsB,cAAc,GAAG,MAAK3B,KAAL,CAAWC,MAAX,CAAkB,CAAlB,EAAqB2B,SAArB,CAA+B,MAAKvB,KAApC,CAAvB;AACA,0BAAKF,QAAL,CAAcwB,cAAd,EAA8BpB,KAA9B;AACD,mBApBH;;AAsBD;;AAED;AACA;AACA,oBAAIL,YAAY,GAAG,CAAnB,EAAsB;AACd2B,kBAAAA,mBADc,GACQjB,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASX,YAAT,CAAT,EAAiCE,cAAjC,CADR;AAEd0B,kBAAAA,cAFc,GAEGb,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEU,mBAAV,EAAX,EAA4C,UAACT,CAAD,EAAIC,KAAJ,EAAc;AAC/E,2BAAO5D,cAAc,CAACI,MAAf,CAAsBQ,KAAK,GAAGgD,KAAR,GAAgBQ,mBAAhB,GAAsC,CAA5D,EAA+D/C,IAA/D,CAAP;AACD,mBAFsB,CAFH;AAKpB,wBAAK0B,QAAL;AACE,4BAACR,KAAD,EAAW;AACT,wBAAIW,aAAa,CAACX,KAAD,CAAjB,EAA0B;AACxB;AACA;AACAA,sBAAAA,KAAK,CAACC,MAAN,CAAaD,KAAK,CAACC,MAAN,CAAakB,MAAb,GAAsB,CAAnC,EAAsCK,YAAtC,GAAqD,IAArD;AACA;AACA,0BAAIM,cAAc,CAAC,CAAD,CAAlB,EAAuB;AACrBA,wBAAAA,cAAc,CAAC,CAAD,CAAd,CAAkBP,aAAlB,GAAkC,IAAlC;AACD;AACF;AACD,2BAAO,EAAEtB,MAAM,EAAED,KAAK,CAACC,MAAN,CAAawB,MAAb,CAAoBK,cAApB,CAAV,EAAP;AACD,mBAZH;AAaE,8BAAM;AACJ,wBAAMH,cAAc,GAAG,CAAC,CAAD,GAAK3D,aAAa,CAAC0D,eAAd,CAA8B,MAAK1B,KAAL,CAAWC,MAAX,CAAkB8B,KAAlB,CAAwB,CAAxB,EAA2B,CAAC,CAA5B,CAA9B,EAA8D,MAAK1B,KAAnE,CAA5B;AACA,0BAAKF,QAAL,CAAcwB,cAAd,EAA8BpB,KAA9B;AACD,mBAhBH;;AAkBD,iBAvGoB,yDAtEW;;;AAgL1ByB,IAAAA,iBAhL0B,GAgLN,UAACC,aAAD,EAA2C;AACrE,UAAMlC,YAAY,GAAGkC,aAAa,CAAC,CAAD,CAAlC;AACA,UAAMC,UAAU,GAAG;AACjB7D,QAAAA,KAAK,EAAEL,aAAa,CAACmE,qBAAd,CAAoCpC,YAAY,CAAC1B,KAAjD,CADU;AAEjBS,QAAAA,IAAI,EAAEiB,YAAY,CAACjB,IAFF,EAAnB;;;AAKA,YAAKI,KAAL,CAAWkD,aAAX,0BAAKlD,KAAL,CAAWkD,aAAX,CAA2BF,UAA3B;AACD,KAxLiC;;AA0L1BG,IAAAA,YA1L0B,GA0LX,UAACC,IAAD,UAAoDA,IAAI,CAAC,CAAD,CAAxD,EA1LW;;AA4L1BC,IAAAA,UA5L0B,GA4Lb,YAAM;AACzB,UAAMC,eAAe,GAAG,MAAKC,gBAAL,CAAsB,MAAKzC,KAA3B,CAAxB;AACA,UAAM0C,YAAY,GAAG,EAAEC,MAAM,EAAEnF,WAAW,CAAC,MAAK6C,KAAN,CAAX,CAAwBuC,cAAlC,EAArB;;AAEA,UAAM1D,KAAK,GAAG,MAAKC,QAAL,EAAd;;AAEA,UAAM0D,OAA6B,GAAG;AACpCC,QAAAA,KAAK,EAAE,MAAKjD,qBAAL,CAA2BX,KAAK,CAAC4D,KAAjC,CAD6B;AAEpClD,QAAAA,OAAO,EAAE,MAAKC,qBAAL,CAA2BX,KAAK,CAACU,OAAjC,CAF2B;AAGpCE,QAAAA,OAAO,EAAE,MAAKD,qBAAL,CAA2BX,KAAK,CAACY,OAAjC,CAH2B;AAIpCiD,QAAAA,SAAS,EAAE7D,KAAK,CAAC6D,SAJmB;AAKpCC,QAAAA,SAAS,EAAE9D,KAAK,CAAC8D,SALmB;AAMpCC,QAAAA,KAAK,EAAEjF,aAAa,CAACkF,YAAd,EAN6B;AAOpCC,QAAAA,WAAW,EAAE,MAAKC,eAPkB,EAAtC;;;AAUA;AACE,4BAAC,aAAD,aAAe,WAAW,EAAE,MAAKC,WAAjC,IAAkDnE,KAAlD;AACE,qCAAK,GAAG,EAAE,MAAKoE,OAAf,EAAwB,YAAUnF,gBAAgB,CAACC,IAAnD,EAAyD,SAAS,EAAEzB,EAAE,CAACiB,MAAM,CAACQ,IAAP,CAAY,MAAKiC,KAAjB,CAAD,CAAtE;AACE,qCAAK,KAAK,EAAEqC,YAAZ,EAA0B,SAAS,EAAE9E,MAAM,CAAC2F,OAAP,EAArC;AACE,4BAAC,eAAD,CAAiB,QAAjB,IAA0B,KAAK,EAAEV,OAAjC;AACGL,QAAAA,eAAe,CAACgB,GAAhB,CAAoB,MAAKC,WAAzB,gCADH,CADF,CADF;;;AAME,qCAAK,SAAS,EAAE7F,MAAM,CAAC8F,SAAP,CAAiB,MAAKrD,KAAtB,CAAhB,GANF,CADF,CADF;;;;AAYD,KAxNiC;;AA0N1BiD,IAAAA,OA1N0B,GA0NhB,UAACK,OAAD,EAAiC;AACjD,UAAI,CAAC,MAAKvF,IAAN,IAAcuF,OAAlB,EAA2B;AACzB,YAAItG,QAAJ,EAAc;AACZsG,UAAAA,OAAO,CAACC,gBAAR,CAAyB,YAAzB,EAAuC,MAAKC,gBAA5C;AACAF,UAAAA,OAAO,CAACC,gBAAR,CAAyB,WAAzB,EAAsC,MAAKE,wBAA3C;AACD,SAHD,MAGO;AACLH,UAAAA,OAAO,CAACC,gBAAR,CAAyB,OAAzB,EAAkC,MAAKG,WAAvC,EAAoD,EAAEC,OAAO,EAAE,KAAX,EAApD;AACD;AACF;AACD,UAAI,MAAK5F,IAAL,IAAa,CAACuF,OAAlB,EAA2B;AACzB,YAAItG,QAAJ,EAAc;AACZ,gBAAKe,IAAL,CAAU6F,mBAAV,CAA8B,YAA9B,EAA4C,MAAKJ,gBAAjD;AACA,gBAAKzF,IAAL,CAAU6F,mBAAV,CAA8B,WAA9B,EAA2C,MAAKH,wBAAhD;AACD,SAHD,MAGO;AACL,gBAAK1F,IAAL,CAAU6F,mBAAV,CAA8B,OAA9B,EAAuC,MAAKF,WAA5C;AACD;AACF;AACD,YAAK3F,IAAL,GAAYuF,OAAZ;AACD,KA5OiC;;;;;;;;;;;;;AAyP1BP,IAAAA,eAzP0B,GAyPR,UAACc,SAAD,EAAkC;AAC1D,UAAMpB,KAAK,GAAGvF,uBAAuB,CAAC4G,iBAAxB,CAA0CD,SAA1C,CAAd;;AAEA,YAAKhF,KAAL,CAAWkF,aAAX,0BAAKlF,KAAL,CAAWkF,aAAX,CAA2BtB,KAA3B;AACD,KA7PiC;;;;;;;;;;;;;;;;;;;;;;;;AAqR1BuB,IAAAA,qBArR0B,GAqRF,UAAChG,KAAD,EAAgBS,IAAhB,EAAiC;AAC/D,YAAKQ,aAAL,CAAmBjB,KAAnB,EAA0BS,IAA1B;AACD,KAvRiC;;AAyR1BwF,IAAAA,iBAzR0B,GAyRN,UAACC,MAAD,EAAoB;AAC9C,YAAK/D,QAAL,CAAc,iBAAgC,KAA7BP,MAA6B,SAA7BA,MAA6B,CAArBS,cAAqB,SAArBA,cAAqB;AAC5C,YAAMiB,cAAc,GAAG3D,aAAa,CAACwG,uBAAd;AACrBvE,QAAAA,MADqB;AAErBS,QAAAA,cAFqB;AAGrB6D,QAAAA,MAHqB;AAIrB,cAAKlE,KAJgB;AAKrBK,QAAAA,cALF;AAMA,eAAO,EAAE+D,YAAY,EAAE9C,cAAhB,EAAP;AACD,OARD,EAQG,MAAK+C,cARR;;AAUA,YAAKtH,SAAL,CAAeuH,OAAf,CAAuBJ,MAAvB,EAA+B,UAACK,MAAD,EAAY;AACzC;AACA,cAAKpE,QAAL,CAAcxC,aAAa,CAAC6G,UAAd,CAAyBD,MAAzB,EAAiC,MAAKvE,KAAtC,CAAd;AACD,OAHD;;AAKA3C,MAAAA,oBAAoB,CAACoH,IAArB;AACD,KA1SiC;;AA4S1BjB,IAAAA,gBA5S0B,GA4SP,UAACkB,KAAD,EAAkB;AAC3C,UAAI,CAACvI,YAAY,CAACuI,KAAD,EAAQxI,YAAY,CAACyI,UAArB,CAAjB,EAAmD;AACjD;AACD;;AAED,UAAMC,OAAO,GAAGF,KAAK,CAACG,aAAN,CAAoB,CAApB,EAAuBD,OAAvC;AACA,YAAK5F,WAAL,GAAmB4F,OAAnB;AACD,KAnTiC;;AAqT1BE,IAAAA,eArT0B,GAqTR,UAACJ,KAAD,EAAkB;AAC1C,UAAI,CAACvI,YAAY,CAACuI,KAAD,EAAQxI,YAAY,CAACyI,UAArB,CAAjB,EAAmD;AACjD;AACD;;AAED,UAAQC,OAAR,GAAoBF,KAAK,CAACK,cAAN,CAAqB,CAArB,CAApB,CAAQH,OAAR;;AAEA,UAAML,MAAM,GAAG,CAAC,MAAKvF,WAAL,IAAoB,CAArB,IAA0B4F,OAAzC;AACA,YAAK5F,WAAL,GAAmB4F,OAAnB;;AAEA,YAAKX,iBAAL,CAAuBM,MAAvB;AACD,KAhUiC;;AAkU1Bd,IAAAA,wBAlU0B,GAkUCzH,QAAQ,CAAC,MAAK8I,eAAN,EAAuB,EAAvB,CAlUT;;AAoU1BpB,IAAAA,WApU0B,GAoUZ,UAACgB,KAAD,EAAkB;AACtC,UAAI,CAACvI,YAAY,CAACuI,KAAD,EAAQxI,YAAY,CAAC8I,UAArB,CAAjB,EAAmD;AACjD;AACD;AACDN,MAAAA,KAAK,CAACO,cAAN;AACA,4BAAmBlJ,cAAc,CAAC2I,KAAD,CAAjC,CAAQR,MAAR,mBAAQA,MAAR;;AAEA,YAAKD,iBAAL,CAAuBC,MAAvB;AACD,KA5UiC;;AA8U1BG,IAAAA,cA9U0B,GA8UT,YAAM;AAC7B,UAAI,MAAKa,eAAT,EAA0B;AACxBhJ,QAAAA,YAAY,CAACiJ,YAAb,CAA0B,MAAKD,eAA/B;AACD;AACD,YAAKA,eAAL,GAAuBhJ,YAAY,CAACoD,UAAb,CAAwB,MAAK8F,mBAA7B,EAAkD,GAAlD,CAAvB;AACD,KAnViC;AAoV1BA,IAAAA,mBApV0B,GAoVJ,YAAM;AAClC,wBAA0C,MAAKzF,KAA/C,CAAQyE,YAAR,eAAQA,YAAR,CAAsBiB,eAAtB,eAAsBA,eAAtB;;AAEA,UAAMC,eAAe,GAAGnI,WAAW,CAAC,MAAK6C,KAAN,CAAX,CAAwBuF,yBAAxB,GAAoDpI,WAAW,CAAC,MAAK6C,KAAN,CAAX,CAAwBwF,UAApG;;AAEA,UAAIpB,YAAY,GAAGkB,eAAnB,EAAoC;AAClC,YAAIhE,cAAc,GAAG,CAArB;AACA,YAAI+D,eAAe,GAAG,CAAtB,EAAyB;AACvB/D,UAAAA,cAAc,GAAGgE,eAAjB;AACD;;AAED,cAAKnF,QAAL,CAAc,EAAEiE,YAAY,EAAE9C,cAAhB,EAAd,EAAgD,YAAM;AACpD,cAAMmE,MAAM,GAAGrB,YAAY,GAAG9C,cAA9B;AACA,gBAAKvE,SAAL,CAAeuH,OAAf,CAAuBmB,MAAvB,EAA+B,UAAClB,MAAD,EAAY;AACzC;AACA,kBAAKpE,QAAL,CAAcxC,aAAa,CAAC6G,UAAd,CAAyBD,MAAzB,EAAiC,MAAKvE,KAAtC,CAAd;AACD,WAHD;AAID,SAND;AAOD;AACF,KAvWiC;;AAyW1BF,IAAAA,QAzW0B,GAyWf,UAAC4F,GAAD,EAAcxF,KAAd,EAAqC;AACtD,UAAMyF,aAAa,GAAGD,GAAG,GAAG,MAAK/F,KAAL,CAAWU,cAAvC;AACA,aAAO,MAAKuF,YAAL,CAAkBD,aAAlB,EAAiCzF,KAAjC,CAAP;AACD,KA5WiC;;AA8W1B0F,IAAAA,YA9W0B,GA8WX,UAACD,aAAD,EAAwBzF,KAAxB,EAA+C;AACpE,aAAO,MAAKnD,SAAL,CAAeuH,OAAf;AACLqB,MAAAA,aADK;AAEL,gBAACpB,MAAD,EAAY;AACV,cAAKpE,QAAL,CAAc,sBAAGE,cAAH,SAAGA,cAAH,QAAyB;AACrCA,YAAAA,cAAc,EAAEA,cAAc,GAAGkE,MADI,EAAzB,EAAd;;AAGD,OANI;AAOLrE,MAAAA,KAPK,CAAP;;AASD,KAxXiC,CAGhC,qBAAoC,MAAKpB,QAAL,EAApC,CAAQS,QAAR,kBAAQA,OAAR,CAAiBE,QAAjB,kBAAiBA,OAAjB,CAA0BgD,MAA1B,kBAA0BA,KAA1B,CAEA,IAAMoD,YAAY,GAAG,MAAKrG,qBAAL,CAA2BD,QAA3B,CAArB,CACA,IAAMuG,YAAY,GAAG,MAAKtG,qBAAL,CAA2BC,QAA3B,CAArB,CACA,IAAMoE,UAAS,GAAG,MAAKrE,qBAAL,CAA2BiD,MAA3B,CAAlB,CAEA,IAAMG,KAAK,GAAGjF,aAAa,CAACkF,YAAd,EAAd,CACA,IAAMkD,WAAW,GAAGpI,aAAa,CAACqI,cAAd,CAA6B,EAC/CpD,KAAK,EAALA,KAD+C,EAE/CpE,IAAI,EAAEqF,UAFyC,EAG/CtE,OAAO,EAAEsG,YAHsC,EAI/CpG,OAAO,EAAEqG,YAJsC,EAA7B,CAApB,CAOA,IAAMG,YAAY,GAAG,MAAKpH,KAAL,CAAWoH,YAAX,GACjBtI,aAAa,CAACuI,sBAAd,CAAqC,MAAKrH,KAAL,CAAWoH,YAAhD,CADiB,GAEjBF,WAAW,CAAC/H,KAFhB,CAGA,IAAMmI,WAAW,4BAAG,MAAKtH,KAAL,CAAWsH,WAAd,oCAA6BJ,WAAW,CAACtH,IAA1D,CAEA,MAAKkB,KAAL,GAAa,EACXU,cAAc,EAAE,CADL,EAEXT,MAAM,EAAEjC,aAAa,CAACyC,SAAd,CAAwB6F,YAAxB,EAAsCE,WAAtC,CAFG,EAGXd,eAAe,EAAE,CAHN,EAIXjB,YAAY,EAAE,CAJH,EAAb,CAtBgC,aA4BjC,CArDH,uCAuDSgC,kBAvDT,GAuDE,4BAA0BC,SAA1B,EAA8DC,SAA9D,EAAwG,CACtG,kBAAiC,KAAKzH,KAAtC,CAAQ4D,KAAR,eAAQA,KAAR,CAAeV,aAAf,eAAeA,aAAf,CACA,IAAIU,KAAK,IAAI,CAACxG,YAAY,CAACwG,KAAD,EAAQ4D,SAAS,CAAC5D,KAAlB,CAA1B,EAAoD,CAClD,IAAMjE,KAAI,GAAG,IAAIpC,YAAJ,GAAmBmK,UAAnB,CAA8B9D,KAA9B,EAAqC+D,uBAArC,EAAb,CACA,KAAKvH,aAAL,CAAmBT,KAAI,CAACR,KAAL,GAAa,CAAhC,EAAmCQ,KAAI,CAACC,IAAxC,EACD,CAED,IAAIsD,aAAJ,EAAmB,CACjB,IAAM0E,mBAAmB,GAAG,KAAKrE,gBAAL,CAAsB,KAAKzC,KAA3B,EAAkCwD,GAAlC,CAAsC,KAAKnB,YAA3C,CAA5B,CACA,IAAM0E,2BAA2B,GAAG,KAAKtE,gBAAL,CAAsBkE,SAAtB,EAAiCnD,GAAjC,CAAqC,KAAKnB,YAA1C,CAApC,CACA,IAAMtC,YAAY,GAAG+G,mBAAmB,CAAC,CAAD,CAAnB,CAAuBzI,KAA5C,CACA,IAAM2I,gBAAgB,GAAGD,2BAA2B,CAAC,CAAD,CAA3B,CAA+B1I,KAAxD,CAEA,IAAI0B,YAAY,KAAKiH,gBAArB,EAAuC,CACrC,KAAKhF,iBAAL,CAAuB8E,mBAAvB,EACD,CACF,CACF,CAxEH,QA0ESG,oBA1ET,GA0EE,gCAA8B,CAC5B,IAAI,KAAK7J,SAAL,CAAemC,UAAf,EAAJ,EAAiC,CAC/B,KAAKnC,SAAL,CAAe8J,MAAf,GACD,CACF,CA9EH,QAgFSC,MAhFT,GAgFE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAAC9G,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACkC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CAzFH,CA2FE;AACF;AACA;AACA,KA9FA,QAuQUkB,WAvQV,GAuQE,4BAA4D,KAAvC2D,GAAuC,YAAlC/I,KAAkC,YAC1D,oBACE,oBAAC,KAAD,IACE,GAAG,EAAEA,KAAK,CAACA,KAAN,GAAc,GAAd,GAAoBA,KAAK,CAACS,IADjC,EAEE,GAAG,EAAEsI,GAFP,EAGE,KAAK,EAAE/I,KAHT,EAIE,iBAAiB,EAAE,KAAKgG,qBAJ1B,GADF,CAQD,CAhRH,QAwRUxE,qBAxRV,GAwRE,+BAA8BhB,IAA9B,EAAsD,CACpD,OAAO,IAAIpC,YAAJ,GAAmBmK,UAAnB,CAA8B/H,IAA9B,EAAoCwI,cAApC,EAAP,CACD,CA1RH,QA4RUC,iBA5RV,GA4RE,2BAA0BrH,MAA1B,EAAoDS,cAApD,EAA4E,CAC1E,IAAM6G,SAAS,GAAG,CAAC7G,cAAc,GAAGT,MAAM,CAAC,CAAD,CAAN,CAAU2B,SAAV,CAAoB,KAAKvB,KAAzB,CAAlB,CAAlB,CACA,KAAK,IAAImH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvH,MAAM,CAACkB,MAA3B,EAAmCqG,CAAC,EAApC,EAAwC,CACtC,IAAMC,QAAQ,GAAGF,SAAS,CAACC,CAAC,GAAG,CAAL,CAAT,GAAmBvH,MAAM,CAACuH,CAAC,GAAG,CAAL,CAAN,CAAc5F,SAAd,CAAwB,KAAKvB,KAA7B,CAApC,CACAkH,SAAS,CAACG,IAAV,CAAeD,QAAf,EACD,CACD,OAAOF,SAAP,CACD,CAnSH,QAqSU9E,gBArSV,GAqSE,0BAAyBzC,KAAzB,EAA0F,mBACxF,IAAQC,MAAR,GAAmCD,KAAnC,CAAQC,MAAR,CAAgBS,cAAhB,GAAmCV,KAAnC,CAAgBU,cAAhB,CACA,IAAM6G,SAAS,GAAG,KAAKD,iBAAL,CAAuBrH,MAAvB,EAA+BS,cAA/B,CAAlB,CAEA,OAAOT,MAAM,CACVuD,GADI,CAC0B,UAACmE,CAAD,EAAIH,CAAJ,UAAU,CAACD,SAAS,CAACC,CAAD,CAAV,EAAeG,CAAf,CAAV,EAD1B,EAEJC,MAFI,CAEG,sBAAER,GAAF,YAAO/I,KAAP,mBAAkBL,aAAa,CAAC6J,cAAd,CAA6BT,GAA7B,EAAkC/I,KAAlC,EAAyC,MAAI,CAACgC,KAA9C,CAAlB,EAFH,CAAP,CAGD,CA5SH,mBAA8BlE,KAAK,CAAC2L,SAApC,WACgBC,mBADhB,GACsC,UADtC,UAEgBC,WAFhB,GAE8B,UAF9B,UAIgBC,GAJhB,GAIsB/J,WAJtB,UAUgBkB,YAVhB,GAU6C,EACzCQ,OAAO,EAAEjB,OAAQ,CAACC,UAAT,CAAoB5B,QAApB,EAA8BC,SAA9B,EAAyCC,QAAzC,CADgC,EAEzC4C,OAAO,EAAEnB,OAAQ,CAACC,UAAT,CAAoB/B,QAApB,EAA8BC,SAA9B,EAAyCC,QAAzC,CAFgC,EAGzCgG,SAAS,EAAE,mBAACmF,IAAD,EAAeC,SAAf,UAAsCA,SAAtC,EAH8B,EAV7C","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { cx } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\nimport { CalendarContext, CalendarContextProps } from './CalendarContext';\nimport { CalendarDay, CalendarDayProps } from './CalendarDay';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Задаёт начальную дату периода\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n periodStartDate?: string;\n /**\n * Задаёт конечную дату периода\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n periodEndDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n /**\n * Метод отрисовки дат в календаре\n * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props\n *\n * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.\n */\n renderDay?: (props: CalendarDayProps) => React.ReactElement;\n\n /**\n * Вызывается при каждом изменении месяца\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год,\n */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\n month: number;\n year: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n monthSelectMobile: 'MonthView__monthSelectMobile',\n headerYear: 'MonthView__headerYear',\n yearSelectMobile: 'MonthView__yearSelectMobile',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n\n if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => globalObject.setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\n\n private renderMain = () => {\n const monthsForRender = this.getVisibleMonths(this.state);\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n const context: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n <CalendarContext.Provider value={context}>\n {monthsForRender.map(this.renderMonth, this)}\n </CalendarContext.Provider>\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n onMonthYearChange={this.handleMonthYearChange}\n />\n );\n }\n\n private handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions(months: MonthViewModel[], scrollPosition: number) {\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private getVisibleMonths(state: Readonly<CalendarState>): Array<[number, MonthViewModel]> {\n const { months, scrollPosition } = state;\n const positions = this.getMonthPositions(months, scrollPosition);\n\n return months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme));\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const thresholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_HEIGHT;\n\n if (scrollTarget < thresholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = thresholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { CommonProps } from '../../internal/CommonWrapper';
3
3
  import { Nullable, Range } from '../../typings/utility-types';
4
4
  import { MonthViewModel } from './MonthViewModel';
5
- import { CalendarDateShape } from './CalendarDateShape';
5
+ import { CalendarDayProps } from './CalendarDay';
6
6
  export interface CalendarProps extends CommonProps {
7
7
  /**
8
8
  * Вызывается при изменении `value`
@@ -28,6 +28,18 @@ export interface CalendarProps extends CommonProps {
28
28
  * Дата задаётся в формате `dd.mm.yyyy`
29
29
  */
30
30
  minDate?: string;
31
+ /**
32
+ * Задаёт начальную дату периода
33
+ *
34
+ * Дата задаётся в формате `dd.mm.yyyy`
35
+ */
36
+ periodStartDate?: string;
37
+ /**
38
+ * Задаёт конечную дату периода
39
+ *
40
+ * Дата задаётся в формате `dd.mm.yyyy`
41
+ */
42
+ periodEndDate?: string;
31
43
  /**
32
44
  * Функция для определения праздничных дней
33
45
  * @default (_day, isWeekend) => isWeekend
@@ -45,20 +57,40 @@ export interface CalendarProps extends CommonProps {
45
57
  * Позволяет задать начальный год
46
58
  */
47
59
  initialYear?: number;
60
+ /**
61
+ * Метод отрисовки дат в календаре
62
+ * @default (props: CalendarDayProps) => <CalendarDay {...props} />
63
+ * @param {CalendarDayProps} props
64
+ *
65
+ * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.
66
+ */
67
+ renderDay?: (props: CalendarDayProps) => React.ReactElement;
68
+ /**
69
+ * Вызывается при каждом изменении месяца
70
+ * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где
71
+ * `month: number` - номер текущего отображаемого месяца от 1 до 12,
72
+ * `year: number` - отображаемый год,
73
+ */
74
+ onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;
48
75
  }
49
76
  export interface CalendarState {
50
77
  scrollPosition: number;
51
78
  months: MonthViewModel[];
52
- today: CalendarDateShape;
53
79
  scrollDirection: number;
54
80
  scrollTarget: number;
55
81
  }
82
+ export interface CalendarMonthChangeInfo {
83
+ month: number;
84
+ year: number;
85
+ }
56
86
  export declare const CalendarDataTids: {
57
87
  readonly root: "Calendar__root";
58
88
  readonly month: "MonthView__month";
59
89
  readonly dayCell: "DayCellView__root";
60
90
  readonly headerMonth: "MonthView__headerMonth";
91
+ readonly monthSelectMobile: "MonthView__monthSelectMobile";
61
92
  readonly headerYear: "MonthView__headerYear";
93
+ readonly yearSelectMobile: "MonthView__yearSelectMobile";
62
94
  };
63
95
  declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;
64
96
  /**
@@ -67,6 +99,7 @@ declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' |
67
99
  export declare class Calendar extends React.Component<CalendarProps, CalendarState> {
68
100
  static __KONTUR_REACT_UI__: string;
69
101
  static displayName: string;
102
+ static Day: React.MemoExoticComponent<import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLButtonElement, CalendarDayProps> & Record<string, unknown>>;
70
103
  private static formatDate;
71
104
  static defaultProps: DefaultProps;
72
105
  private getProps;
@@ -77,7 +110,7 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
77
110
  private touchStartY;
78
111
  private setRootNode;
79
112
  constructor(props: CalendarProps);
80
- componentDidUpdate(prevProps: Readonly<CalendarProps>): void;
113
+ componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void;
81
114
  componentWillUnmount(): void;
82
115
  render(): JSX.Element;
83
116
  /**
@@ -85,13 +118,15 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
85
118
  * @public
86
119
  */
87
120
  scrollToMonth: (month: number, year: number) => Promise<void>;
121
+ private handleMonthChange;
122
+ private getViewModel;
88
123
  private renderMain;
89
124
  private refRoot;
90
125
  private renderMonth;
91
- private isHoliday;
92
- private handleDateChange;
126
+ private handleDateClick;
93
127
  private getDateInNativeFormat;
94
128
  private getMonthPositions;
129
+ private getVisibleMonths;
95
130
  private handleMonthYearChange;
96
131
  private executeAnimations;
97
132
  private handleTouchStart;