@skbkontur/react-ui 6.0.7-b5d2c.0 → 6.0.7-eab55.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 (232) hide show
  1. package/components/Autocomplete/Autocomplete.js +15 -4
  2. package/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/components/Calendar/Calendar.d.ts +14 -14
  4. package/components/Calendar/Calendar.js +2 -2
  5. package/components/Calendar/Calendar.js.map +1 -1
  6. package/components/Calendar/CalendarDay.d.ts +2 -2
  7. package/components/Calendar/CalendarDay.js +4 -1
  8. package/components/Calendar/CalendarDay.js.map +1 -1
  9. package/components/Calendar/DayCellView.styles.d.ts +1 -0
  10. package/components/Calendar/DayCellView.styles.js +6 -3
  11. package/components/Calendar/DayCellView.styles.js.map +1 -1
  12. package/components/Center/Center.d.ts +3 -3
  13. package/components/Center/Center.js +2 -2
  14. package/components/Center/Center.js.map +1 -1
  15. package/components/Checkbox/Checkbox.d.ts +14 -11
  16. package/components/Checkbox/Checkbox.js +6 -3
  17. package/components/Checkbox/Checkbox.js.map +1 -1
  18. package/components/ComboBox/ComboBox.d.ts +3 -3
  19. package/components/ComboBox/ComboBox.js.map +1 -1
  20. package/components/DateInput/DateInput.d.ts +15 -15
  21. package/components/DateInput/DateInput.js +1 -1
  22. package/components/DateInput/DateInput.js.map +1 -1
  23. package/components/DatePicker/DatePicker.d.ts +16 -14
  24. package/components/DatePicker/DatePicker.js +5 -4
  25. package/components/DatePicker/DatePicker.js.map +1 -1
  26. package/components/DatePicker/MobilePicker.js +1 -1
  27. package/components/DatePicker/MobilePicker.js.map +1 -1
  28. package/components/DateRangePicker/DateRangePicker.d.ts +3 -4
  29. package/components/DateRangePicker/DateRangePicker.js +4 -6
  30. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  31. package/components/DateRangePicker/DateRangePickerInput.js +4 -6
  32. package/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  33. package/components/Dropdown/Dropdown.d.ts +15 -8
  34. package/components/Dropdown/Dropdown.js +8 -1
  35. package/components/Dropdown/Dropdown.js.map +1 -1
  36. package/components/DropdownMenu/DropdownMenu.d.ts +1 -2
  37. package/components/DropdownMenu/DropdownMenu.js +1 -2
  38. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  39. package/components/FileUploader/FileUploader.d.ts +6 -4
  40. package/components/FileUploader/FileUploader.js +3 -1
  41. package/components/FileUploader/FileUploader.js.map +1 -1
  42. package/components/FileUploader/FileUploaderFile.d.ts +3 -3
  43. package/components/FileUploader/FileUploaderFile.js +1 -1
  44. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  45. package/components/Input/Input.d.ts +2 -2
  46. package/components/Input/Input.js.map +1 -1
  47. package/components/Loader/Loader.d.ts +12 -4
  48. package/components/Loader/Loader.js +18 -7
  49. package/components/Loader/Loader.js.map +1 -1
  50. package/components/MenuFooter/MenuFooter.d.ts +1 -1
  51. package/components/MenuFooter/MenuFooter.js +1 -1
  52. package/components/MenuFooter/MenuFooter.js.map +1 -1
  53. package/components/MenuHeader/MenuHeader.d.ts +2 -2
  54. package/components/MenuHeader/MenuHeader.js +1 -1
  55. package/components/MenuHeader/MenuHeader.js.map +1 -1
  56. package/components/MenuItem/MenuItem.d.ts +1 -0
  57. package/components/MenuItem/MenuItem.js +17 -1
  58. package/components/MenuItem/MenuItem.js.map +1 -1
  59. package/components/MenuItem/MenuItem.styles.d.ts +3 -0
  60. package/components/MenuItem/MenuItem.styles.js +25 -16
  61. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  62. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  63. package/components/MenuSeparator/MenuSeparator.js +1 -1
  64. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  65. package/components/MiniModal/MiniModal.d.ts +1 -1
  66. package/components/MiniModal/MiniModal.js +1 -1
  67. package/components/MiniModal/MiniModal.js.map +1 -1
  68. package/components/MiniModal/MiniModalBody.d.ts +1 -1
  69. package/components/MiniModal/MiniModalBody.js +1 -1
  70. package/components/MiniModal/MiniModalBody.js.map +1 -1
  71. package/components/MiniModal/MiniModalFooter.d.ts +1 -1
  72. package/components/MiniModal/MiniModalFooter.js +1 -1
  73. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  74. package/components/MiniModal/MiniModalHeader.d.ts +1 -1
  75. package/components/MiniModal/MiniModalHeader.js +1 -1
  76. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  77. package/components/Paging/Paging.d.ts +2 -2
  78. package/components/Paging/Paging.js.map +1 -1
  79. package/components/Radio/Radio.d.ts +7 -7
  80. package/components/Radio/Radio.js.map +1 -1
  81. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  82. package/components/RadioGroup/RadioGroup.js.map +1 -1
  83. package/components/Select/Select.d.ts +4 -4
  84. package/components/Select/Select.js +11 -1
  85. package/components/Select/Select.js.map +1 -1
  86. package/components/SingleToast/SingleToast.d.ts +10 -7
  87. package/components/SingleToast/SingleToast.js +10 -7
  88. package/components/SingleToast/SingleToast.js.map +1 -1
  89. package/components/Spinner/Spinner.d.ts +23 -33
  90. package/components/Spinner/Spinner.js +23 -19
  91. package/components/Spinner/Spinner.js.map +1 -1
  92. package/components/Spinner/Spinner.styles.d.ts +0 -3
  93. package/components/Spinner/Spinner.styles.js +6 -15
  94. package/components/Spinner/Spinner.styles.js.map +1 -1
  95. package/components/Sticky/Sticky.d.ts +4 -0
  96. package/components/Sticky/Sticky.js +4 -0
  97. package/components/Sticky/Sticky.js.map +1 -1
  98. package/components/Switcher/Switcher.d.ts +10 -8
  99. package/components/Switcher/Switcher.js +3 -1
  100. package/components/Switcher/Switcher.js.map +1 -1
  101. package/components/Textarea/Textarea.js +1 -1
  102. package/components/Textarea/Textarea.js.map +1 -1
  103. package/components/Textarea/Textarea.styles.d.ts +1 -0
  104. package/components/Textarea/Textarea.styles.js +7 -4
  105. package/components/Textarea/Textarea.styles.js.map +1 -1
  106. package/components/Textarea/TextareaCounter.d.ts +2 -0
  107. package/components/Textarea/TextareaCounter.js +22 -4
  108. package/components/Textarea/TextareaCounter.js.map +1 -1
  109. package/components/TimePicker/TimeFragmentsView.js.map +1 -1
  110. package/components/TimePicker/TimeFragmentsView.styles.js +4 -4
  111. package/components/TimePicker/TimeFragmentsView.styles.js.map +1 -1
  112. package/components/TimePicker/TimeInput.d.ts +5 -7
  113. package/components/TimePicker/TimeInput.js +19 -7
  114. package/components/TimePicker/TimeInput.js.map +1 -1
  115. package/components/TimePicker/TimePicker.d.ts +39 -7
  116. package/components/TimePicker/TimePicker.js +275 -148
  117. package/components/TimePicker/TimePicker.js.map +1 -1
  118. package/components/TimePicker/TimePicker.styles.d.ts +3 -4
  119. package/components/TimePicker/TimePicker.styles.js +11 -14
  120. package/components/TimePicker/TimePicker.styles.js.map +1 -1
  121. package/components/TimePicker/TimePickerMobilePopup.d.ts +31 -0
  122. package/components/TimePicker/TimePickerMobilePopup.js +21 -0
  123. package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
  124. package/components/TimePicker/TimePickerPopup.d.ts +19 -0
  125. package/components/TimePicker/TimePickerPopup.js +18 -0
  126. package/components/TimePicker/TimePickerPopup.js.map +1 -0
  127. package/components/TimePicker/TimePickerSlots.d.ts +16 -0
  128. package/components/TimePicker/TimePickerSlots.js +67 -0
  129. package/components/TimePicker/TimePickerSlots.js.map +1 -0
  130. package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -1
  131. package/components/TimePicker/helpers/TimePicker.constants.js +0 -1
  132. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -1
  133. package/components/TimePicker/helpers/TimePicker.editing.js +10 -1
  134. package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -1
  135. package/components/TimePicker/helpers/TimePicker.shared.d.ts +1 -2
  136. package/components/TimePicker/helpers/TimePicker.shared.js +4 -4
  137. package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -1
  138. package/components/TimePicker/helpers/TimePicker.value.d.ts +3 -5
  139. package/components/TimePicker/helpers/TimePicker.value.js +21 -7
  140. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -1
  141. package/components/TimePicker/hooks/useTimePickerValue.d.ts +1 -1
  142. package/components/TimePicker/hooks/useTimePickerValue.js +8 -7
  143. package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -1
  144. package/components/Toast/Toast.d.ts +13 -14
  145. package/components/Toast/Toast.js +3 -3
  146. package/components/Toast/Toast.js.map +1 -1
  147. package/components/Toast/ToastView.d.ts +8 -5
  148. package/components/Toast/ToastView.js +28 -8
  149. package/components/Toast/ToastView.js.map +1 -1
  150. package/components/Toast/ToastView.styles.d.ts +7 -0
  151. package/components/Toast/ToastView.styles.js +30 -8
  152. package/components/Toast/ToastView.styles.js.map +1 -1
  153. package/components/Tooltip/Tooltip.d.ts +4 -4
  154. package/components/Tooltip/Tooltip.js.map +1 -1
  155. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  156. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  157. package/internal/CommonWrapper/CommonWrapper.js +5 -0
  158. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  159. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  160. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  161. package/internal/CustomComboBox/ComboBoxView.js +13 -2
  162. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  163. package/internal/Menu/Menu.js +3 -0
  164. package/internal/Menu/Menu.js.map +1 -1
  165. package/internal/Menu/Menu.styles.d.ts +1 -0
  166. package/internal/Menu/Menu.styles.js +13 -10
  167. package/internal/Menu/Menu.styles.js.map +1 -1
  168. package/internal/MenuMessage/MenuMessage.js +17 -1
  169. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  170. package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
  171. package/internal/MenuMessage/MenuMessage.styles.js +13 -4
  172. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  173. package/internal/MobilePopup/MobilePopup.d.ts +8 -0
  174. package/internal/MobilePopup/MobilePopup.js +34 -11
  175. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  176. package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
  177. package/internal/MobilePopup/MobilePopup.styles.js +34 -10
  178. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  179. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
  180. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
  181. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  182. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
  183. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
  184. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  185. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
  186. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
  187. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  188. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
  189. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
  190. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  191. package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
  192. package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
  193. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
  194. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
  195. package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
  196. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
  197. package/internal/NativeTimeInput/index.d.ts +1 -0
  198. package/internal/NativeTimeInput/index.js +2 -0
  199. package/internal/NativeTimeInput/index.js.map +1 -0
  200. package/internal/NativeTimeInput/utils.d.ts +7 -0
  201. package/internal/NativeTimeInput/utils.js +28 -0
  202. package/internal/NativeTimeInput/utils.js.map +1 -0
  203. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  204. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  205. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  206. package/internal/icons2022/LoadingIcon.js +1 -1
  207. package/internal/icons2022/LoadingIcon.js.map +1 -1
  208. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
  209. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
  210. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
  211. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
  212. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
  213. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
  214. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
  215. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
  216. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
  217. package/internal/themes/BasicTheme.d.ts +48 -4
  218. package/internal/themes/BasicTheme.js +139 -5
  219. package/internal/themes/BasicTheme.js.map +1 -1
  220. package/internal/themes/DarkTheme6_1.d.ts +1 -0
  221. package/internal/themes/DarkTheme6_1.js +164 -0
  222. package/internal/themes/DarkTheme6_1.js.map +1 -0
  223. package/internal/themes/LightTheme6_1.d.ts +1 -0
  224. package/internal/themes/LightTheme6_1.js +164 -0
  225. package/internal/themes/LightTheme6_1.js.map +1 -0
  226. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  227. package/lib/theming/themes/DarkTheme.js +3 -1
  228. package/lib/theming/themes/DarkTheme.js.map +1 -1
  229. package/lib/theming/themes/LightTheme.d.ts +1 -0
  230. package/lib/theming/themes/LightTheme.js +3 -1
  231. package/lib/theming/themes/LightTheme.js.map +1 -1
  232. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExH,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE/F,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA2BnD,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,0BAA0B;CAChC,CAAC;AAEX,MAAM,CAAC,IAAM,UAAU,GAAG,iBAAiB,CAAiC,YAAY,EAAE,UAAC,KAAK,EAAE,GAAG;IAEjG,IAAA,QAAQ,GAgBN,KAAK,SAhBC,EACR,KAeE,KAAK,SAfS,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,KAcE,KAAK,UAda,EAApB,SAAS,mBAAG,QAAQ,KAAA,EACpB,KAaE,KAAK,KAbO,EAAd,IAAI,mBAAG,OAAO,KAAA,EACd,KAAK,GAYH,KAAK,MAZF,EACL,OAAO,GAWL,KAAK,QAXA,EACP,SAAS,GAUP,KAAK,UAVE,EACT,YAAY,GASV,KAAK,aATK,EACL,SAAS,GAQd,KAAK,MARS,EAChB,aAAa,GAOX,KAAK,cAPM,EACb,OAAO,GAML,KAAK,QANA,EACP,MAAM,GAKJ,KAAK,OALD,EACN,OAAO,GAIL,KAAK,QAJA,EACP,SAAS,GAGP,KAAK,UAHE,EACT,OAAO,GAEL,KAAK,QAFA,EACJ,UAAU,UACX,KAAK,EAjBH,gLAiBL,CADc,CACL;IAEV,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEvC,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9B,IAAA,KAAsC,QAAQ,CAAC,KAAK,CAAC,EAApD,cAAc,QAAA,EAAE,iBAAiB,QAAmB,CAAC;IAE5D,IAAM,QAAQ,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC5C,IAAM,OAAO,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAC9C,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,EAA2B,CAAC,CAAC;IAC5D,IAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,IAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAM,mBAAmB,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAE7D,IAAM,aAAa,GAAG,OAAO,CAAC,cAAM,OAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,yBAAyB,EAAlC,CAAkC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3E,IAAA,KACJ,kBAAkB,CAAC,EAAE,cAAc,gBAAA,EAAE,SAAS,WAAA,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,eAAA,EAAE,CAAC,EAD5E,YAAY,kBAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA,EAAE,kBAAkB,wBAAA,EAAE,kBAAkB,wBAAA,EAAE,iBAAiB,uBAC7B,CAAC;IAErF,IAAI,YAAY,GAAG,YAAY,CAAC;IAEhC,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,GAAG,YAAY,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,YAAY,GAAG,EAAE,CAAC;IACpB,CAAC;IAEK,IAAA,KAAqC,sBAAsB,CAAC;QAChE,cAAc,gBAAA;QACd,SAAS,WAAA;QACT,YAAY,cAAA;QACZ,QAAQ,UAAA;KACT,CAAC,EALM,eAAe,qBAAA,EAAE,aAAa,mBAKpC,CAAC;IAEH,IAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhE,IAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,IAAI,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAEvF,IAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAC/C,UAAC,IAAI,IAAK,OAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,eAAe,EAA5D,CAA4D,CACvE,CAAC;IAEF,IAAM,+BAA+B,GAAG,WAAW,CACjD,UAAC,OAAoB;QACnB,IAAM,gBAAgB,GAAG,wBAAwB,CAC/C,YAAY,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAC/C,OAAO,EACP,SAAS,CACV,CAAC;QAEF,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC,EACD,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAC9C,CAAC;IAEF,IAAM,UAAU,GAAG,WAAW,CAAC;;QAC7B,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,SAAS,GAAG,WAAW,CAAC;;QAC5B,MAAA,QAAQ,CAAC,OAAO,0CAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAED,IAAA,KAOF,qBAAqB,CAAC;QACxB,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,KAAK,EAAE,aAAa;QACpB,iBAAiB,EAAE,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;KACrE,CAAC,EAXA,gBAAgB,sBAAA,EAChB,oBAAoB,0BAAA,EACpB,YAAY,kBAAA,EACZ,aAAa,mBAAA,EACb,oBAAoB,0BAAA,EACpB,gBAAgB,sBAMhB,CAAC;IAEH,IAAM,UAAU,GAAG,WAAW,CAC5B,UAAC,IAAc;QACb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE3D,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,SAAS,CAAC,CAAC;QAC3B,aAAa,EAAE,CAAC;IAClB,CAAC,EACD,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAC3D,CAAC;IAEF,IAAM,uBAAuB,GAAG,WAAW,CAAC;QAC1C,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAM,IAAI,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,oBAAoB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtD,eAAe,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAM,aAAa,GAAG,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,iBAAiB,CAAC;QAEhE,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEvD,IAAI,UAAU,EAAE,CAAC;YACf,0BAA0B,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEhE,mBAAmB,CACjB,GAAG,EACH,cAAM,OAAA,CAAC;QACL,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,0BAAM,OAAA,MAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,EAAE,mCAAI,IAAI,CAAA,EAAA;QAClD,WAAW,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,EAAf,CAAe;KACnC,CAAC,EALI,CAKJ,EACF,CAAC,SAAS,EAAE,UAAU,CAAC,CACxB,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,KAAyC;QAC5D,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,YAAY,EAAE,CAAC;QAEf,IAAI,wBAAwB,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,IAAI,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,aAAa,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBACvC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,KAAyC;QAC3D,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;QAChC,wBAAwB,CAAC,OAAO,GAAG,KAAK,CAAC;QACzC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;QACnC,aAAa,EAAE,CAAC;QAEhB,IAAI,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,iBAAiB,EAAE,CAAC;YACpB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,kBAAkB,EAAE,CAAC;QACrB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,KAAyC;QAC5D,YAAY,EAAE,CAAC;QAEf,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,IAAM,sBAAsB,GAAG,UAAC,KAAyC;;QACvE,IAAM,OAAO,GAAG,MAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAI,IAAI,CAAC;QACnE,IAAM,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC;QAEpC,IAAI,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,eAAe,CAAC,OAAO,GAAG,CAAC,cAAc,CAAC;QAC1C,wBAAwB,CAAC,OAAO,GAAG,UAAU,CAAC;QAC9C,mBAAmB,CAAC,OAAO,GAAG,OAAO,CAAC;IACxC,CAAC,CAAC;IAEF,IAAM,0BAA0B,GAAG,UAAC,OAAoB;QACtD,YAAY,EAAE,CAAC;QAEf,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,IAAI,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;YAC7G,+BAA+B,CAAC,eAAe,CAAC,CAAC;YACjD,aAAa,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;QAChC,wBAAwB,CAAC,OAAO,GAAG,KAAK,CAAC;QACzC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;IACrC,CAAC,CAAC;IAEF,IAAM,2BAA2B,GAAG,UAAC,KAAwC;QAC3E,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,IAAM,aAAa,GAAG,UAAC,KAA4C;;QACjE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,KAAK,CAAC,CAAC;QAEnB,IAAI,KAAK,CAAC,gBAAgB,IAAI,QAAQ,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAA,QAAQ,CAAC,OAAO,0CAAE,SAAS,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAM,mBAAmB,GAAG,YAAY,CAAC;QACzC,IAAM,cAAc,GAAG,eAAe,CAAC;QACvC,IAAM,aAAa,GAAG,MAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,aAAa,EAAE,mCAAI,KAAK,CAAC;QAEjE,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC3E,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,kBAAkB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;YACpD,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,oBAAoB,EAAE,CAAC;YAEvB,IAAM,MAAM,GAAG,wBAAwB,CAAC,mBAAmB,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEnG,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,+BAA+B,CAAC,cAAc,CAAC,CAAC;gBAChD,aAAa,CAAC,MAAA,sBAAsB,CAAC,cAAc,CAAC,mCAAI,cAAc,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,+BAA+B,CAAC,cAAc,CAAC,CAAC;gBAChD,aAAa,CAAC,MAAA,kBAAkB,CAAC,cAAc,EAAE,SAAS,CAAC,mCAAI,cAAc,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,KAAK,SAAS,CAAC;YACf,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAElD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBAED,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9C,kBAAkB,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBAChG,aAAa,CAAC,cAAc,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;gBAC9F,IAAI,WAAW,GAAG,cAAc,CAAC;gBAEjC,IAAI,gBAAgB,KAAK,mBAAmB,EAAE,CAAC;oBAC7C,IAAM,eAAe,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;oBAE/D,IAAI,eAAe,EAAE,CAAC;wBACpB,WAAW,GAAG,eAAe,CAAC;wBAC9B,gBAAgB,GAAG,sBAAsB,CAAC,mBAAmB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;oBAC7F,CAAC;gBACH,CAAC;gBAED,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;gBACrC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,kBAAkB,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrF,aAAa,CAAC,cAAc,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,uBAAuB,EAAE,EAAE,CAAC;oBAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,IAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;gBAClE,IAAM,gBAAgB,GAAG,wBAAwB,CAAC,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;gBAElG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;gBAErC,IAAI,WAAW,EAAE,CAAC;oBAChB,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,cAAc,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO;YACT,CAAC;YACD;gBACE,OAAO;QACX,CAAC;IACH,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,KAA6C;;QAChE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;QAEjB,IAAI,KAAK,CAAC,gBAAgB,IAAI,QAAQ,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAM,WAAW,GAAG,MAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,OAAO,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;QAC/D,IAAM,gBAAgB,GAAG,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEtE,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACzC,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACrC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,aAAa,eAAK,KAAK;QACtB,8BAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,cAAY,kBAAkB,CAAC,IAAI;YAC7E,oBAAC,SAAS,eACJ,UAAU,gBACJ,kBAAkB,CAAC,KAAK,EAClC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,uBAAuB,EAAE,2BAA2B,EACpD,kBAAkB,EAAE,sBAAsB,EAC1C,SAAS,EAAE,aAAa,EACxB,eAAe,EAAE,0BAA0B,EAC3C,OAAO,EAAE,WAAW,IACpB;YAED,QAAQ,IAAI,gBAAgB,IAAI,OAAO,CAAC,OAAO,IAAI,CAClD,oBAAC,KAAK,IACJ,MAAM,QACN,SAAS,oBACC,kBAAkB,CAAC,KAAK,EAClC,aAAa,EAAE,OAAO,CAAC,OAAO,EAC9B,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,EACrC,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAC/C,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;gBAEvC,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,cAAc,EAAE,EAAtB,CAAsB;oBACjF,oBAAC,IAAI,IAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,IAC7D,aAAa,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK;wBAC7B,IAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;wBAEhE,IAAI,KAAuC,CAAC;wBAE5C,IAAI,oBAAoB,KAAK,KAAK,EAAE,CAAC;4BACnC,KAAK,GAAG,OAAO,CAAC;wBAClB,CAAC;6BAAM,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;4BAC9C,KAAK,GAAG,UAAU,CAAC;wBACrB,CAAC;wBAED,OAAO,CACL,oBAAC,QAAQ,IACP,GAAG,EAAE,UAAG,IAAI,CAAC,IAAI,cAAI,KAAK,CAAE,EAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,EAAhB,CAAgB;4BAE/B,8BACE,GAAG,EAAE,UAAC,IAAI;oCACR,IAAI,IAAI,EAAE,CAAC;wCACT,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oCACpC,CAAC;yCAAM,CAAC;wCACN,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACjC,CAAC;gCACH,CAAC,cACS,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE;gCAExB,8BAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAG,cAAc,CAAQ;gCAC1D,IAAI,CAAC,IAAI,IAAI,8BAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,IAAI,CAAQ,CACpE,CACE,CACZ,CAAC;oBACJ,CAAC,CAAC,CACG,CACH,CACA,CACT,CACI,CACO,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { AriaAttributes, ReactNode } from 'react';\nimport React, { useCallback, useContext, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { Menu } from '../../internal/Menu/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { isShortcutSelectAll } from '../../lib/events/keyboard/identifiers.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { InputProps } from '../Input/index.js';\nimport { MenuItem } from '../MenuItem/index.js';\nimport { scrollSelectedSlotIntoView } from './helpers/scrollSelectedSlotIntoView.js';\nimport { DIGIT_REGEXP } from './helpers/TimePicker.constants.js';\nimport {\n clearTimeSegment,\n commitTimeSegmentOnLeave,\n deleteTimeSegmentDigit,\n formatDigitToTimeSegment,\n shiftTimeSegmentValue,\n} from './helpers/TimePicker.editing.js';\nimport { DEFAULT_TIME_PICKER_SLOTS, getTimePickerPopupMaxHeight } from './helpers/TimePicker.layout.js';\nimport { getNextTimeSegment, getPreviousTimeSegment } from './helpers/TimePicker.selection.js';\nimport type { TimePrecision, TimeSegment, TimeSlot } from './helpers/TimePicker.shared.js';\nimport {\n getEmptyDisplayValue,\n isTimeDisplayEmpty,\n normalizeSlotValue,\n normalizeTimeValue,\n parsePastedTimeValue,\n} from './helpers/TimePicker.value.js';\nimport { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';\nimport { useTimePickerSelection } from './hooks/useTimePickerSelection.js';\nimport { useTimePickerValue } from './hooks/useTimePickerValue.js';\nimport type { TimeInputRef } from './TimeInput.js';\nimport { TimeInput } from './TimeInput.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nexport interface TimePickerProps\n extends\n Omit<InputProps, 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'rightIcon' | 'inputMode'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'> {\n dropdown?: boolean;\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n precision?: TimePrecision;\n slots?: TimeSlot[];\n rightContent?: ReactNode;\n value?: string | null;\n\n onValueChange?(value: string): void;\n}\n\nexport interface TimePickerRef {\n focus(): void;\n\n blur(): void;\n\n getNode(): HTMLElement | null;\n\n getRootNode(): HTMLElement | null;\n}\n\nexport const TimePickerDataTids = {\n root: 'TimePicker__root',\n input: 'TimePicker__input',\n popup: 'TimePicker__popup',\n slot: 'TimePicker__slot',\n rightContent: 'TimePicker__rightContent',\n} as const;\n\nexport const TimePicker = forwardRefAndName<TimePickerRef, TimePickerProps>('TimePicker', (props, ref) => {\n const {\n disabled,\n dropdown = false,\n precision = 'minute',\n size = 'small',\n slots,\n menuPos,\n menuAlign,\n rightContent,\n value: valueProp,\n onValueChange,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n onPaste,\n ...inputProps\n } = props;\n\n const theme = useContext(ThemeContext);\n\n const styles = useStyles(getStyles);\n\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const inputRef = useRef<TimeInputRef>(null);\n const rootRef = useRef<HTMLSpanElement>(null);\n const slotRefs = useRef(new Map<number, HTMLSpanElement>());\n const isMouseFocusRef = useRef(false);\n const isMouseDownOnFragmentRef = useRef(false);\n const mouseDownSegmentRef = useRef<TimeSegment | null>(null);\n\n const resolvedSlots = useMemo(() => slots ?? DEFAULT_TIME_PICKER_SLOTS, [slots]);\n\n const { editingValue, editingValueRef, setEditingValue, updateEditingValue, commitEditingValue, clearEditingValue } =\n useTimePickerValue({ isInputFocused, precision, value: valueProp, onValueChange });\n\n let displayValue = editingValue;\n\n if (isInputFocused) {\n displayValue = editingValue || getEmptyDisplayValue(precision);\n } else if (isTimeDisplayEmpty(editingValue)) {\n displayValue = '';\n }\n\n const { selectedSegment, selectSegment } = useTimePickerSelection({\n isInputFocused,\n precision,\n displayValue,\n inputRef,\n });\n\n const popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);\n\n const normalizedValue = normalizeTimeValue(editingValue || valueProp || '', precision);\n\n const selectedSlotIndex = resolvedSlots.findIndex(\n (slot) => normalizeSlotValue(slot.time, precision) === normalizedValue,\n );\n\n const normalizeCurrentSegmentIfNeeded = useCallback(\n (segment: TimeSegment) => {\n const nextDisplayValue = commitTimeSegmentOnLeave(\n editingValue || getEmptyDisplayValue(precision),\n segment,\n precision,\n );\n\n updateEditingValue(nextDisplayValue);\n },\n [editingValue, precision, updateEditingValue],\n );\n\n const focusInput = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n\n const blurInput = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n const {\n isDropdownOpened,\n highlightedSlotIndex,\n openDropdown,\n closeDropdown,\n resetHighlightedSlot,\n tryNavigateSlots,\n } = useTimePickerDropdown({\n disabled,\n dropdown,\n slots: resolvedSlots,\n selectedSlotIndex: selectedSlotIndex >= 0 ? selectedSlotIndex : null,\n });\n\n const selectSlot = useCallback(\n (slot: TimeSlot) => {\n if (slot.disabled) {\n return;\n }\n\n const nextValue = normalizeSlotValue(slot.time, precision);\n\n setEditingValue(nextValue);\n onValueChange?.(nextValue);\n closeDropdown();\n },\n [closeDropdown, onValueChange, precision, setEditingValue],\n );\n\n const isSelectHighlightedSlot = useCallback(() => {\n if (highlightedSlotIndex === null) {\n return false;\n }\n\n const slot = resolvedSlots[highlightedSlotIndex];\n\n if (!slot || slot.disabled) {\n return true;\n }\n\n selectSlot(slot);\n return true;\n }, [highlightedSlotIndex, resolvedSlots, selectSlot]);\n\n useLayoutEffect(() => {\n if (!isDropdownOpened) {\n return;\n }\n\n const selectedIndex = highlightedSlotIndex ?? selectedSlotIndex;\n\n if (selectedIndex < 0) {\n return;\n }\n\n const targetNode = slotRefs.current.get(selectedIndex);\n\n if (targetNode) {\n scrollSelectedSlotIntoView(targetNode);\n }\n }, [highlightedSlotIndex, isDropdownOpened, selectedSlotIndex]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: focusInput,\n blur: blurInput,\n getNode: () => inputRef.current?.getNode() ?? null,\n getRootNode: () => rootRef.current,\n }),\n [blurInput, focusInput],\n );\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setIsInputFocused(true);\n openDropdown();\n\n if (isMouseDownOnFragmentRef.current && !isInputFocused) {\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n selectSegment('hours');\n } else if (mouseDownSegmentRef.current) {\n selectSegment(mouseDownSegmentRef.current);\n }\n } else {\n selectSegment('hours');\n }\n\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setIsInputFocused(false);\n isMouseFocusRef.current = false;\n isMouseDownOnFragmentRef.current = false;\n mouseDownSegmentRef.current = null;\n closeDropdown();\n\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n clearEditingValue();\n onBlur?.(event);\n return;\n }\n\n commitEditingValue();\n onBlur?.(event);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLInputElement>) => {\n openDropdown();\n\n onClick?.(event);\n };\n\n const handleMouseDownCapture = (event: React.MouseEvent<HTMLInputElement>) => {\n const segment = inputRef.current?.getSegment(event.target) ?? null;\n const isFragment = segment !== null;\n\n if (isInputFocused && !isFragment) {\n event.preventDefault();\n }\n\n isMouseFocusRef.current = !isInputFocused;\n isMouseDownOnFragmentRef.current = isFragment;\n mouseDownSegmentRef.current = segment;\n };\n\n const handleSelectSegmentByMouse = (segment: TimeSegment) => {\n openDropdown();\n\n if (disabled) {\n return;\n }\n\n if (!(isMouseFocusRef.current && isTimeDisplayEmpty(editingValueRef.current)) && selectedSegment !== segment) {\n normalizeCurrentSegmentIfNeeded(selectedSegment);\n selectSegment(segment);\n }\n\n isMouseFocusRef.current = false;\n isMouseDownOnFragmentRef.current = false;\n mouseDownSegmentRef.current = null;\n };\n\n const handleRightContentMouseDown = (event: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) {\n return;\n }\n\n event.preventDefault();\n openDropdown();\n focusInput();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (isShortcutSelectAll(event)) {\n event.preventDefault();\n inputRef.current?.selectAll();\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n const currentDisplayValue = displayValue;\n const currentSegment = selectedSegment;\n const isAllSelected = inputRef.current?.isAllSelected() ?? false;\n\n if (isAllSelected && (event.key === 'Backspace' || event.key === 'Delete')) {\n event.preventDefault();\n updateEditingValue(getEmptyDisplayValue(precision));\n selectSegment('hours');\n return;\n }\n\n if (DIGIT_REGEXP.test(event.key)) {\n event.preventDefault();\n\n resetHighlightedSlot();\n\n const result = formatDigitToTimeSegment(currentDisplayValue, currentSegment, event.key, precision);\n\n if (result.shouldBlink) {\n inputRef.current?.blink();\n return;\n }\n\n updateEditingValue(result.nextValue);\n selectSegment(result.selectedSegment);\n return;\n }\n\n switch (event.key) {\n case 'ArrowLeft': {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(getPreviousTimeSegment(currentSegment) ?? currentSegment);\n return;\n }\n\n case 'ArrowRight': {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(getNextTimeSegment(currentSegment, precision) ?? currentSegment);\n return;\n }\n\n case 'ArrowUp':\n case 'ArrowDown': {\n event.preventDefault();\n\n const slotStep = event.key === 'ArrowUp' ? -1 : 1;\n\n if (tryNavigateSlots(slotStep)) {\n return;\n }\n\n const step = event.key === 'ArrowUp' ? 1 : -1;\n\n updateEditingValue(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, precision));\n selectSegment(currentSegment);\n return;\n }\n\n case 'Backspace': {\n event.preventDefault();\n\n let nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, precision);\n let nextSegment = currentSegment;\n\n if (nextDisplayValue === currentDisplayValue) {\n const previousSegment = getPreviousTimeSegment(currentSegment);\n\n if (previousSegment) {\n nextSegment = previousSegment;\n nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, precision);\n }\n }\n\n updateEditingValue(nextDisplayValue);\n selectSegment(nextSegment);\n return;\n }\n\n case 'Delete': {\n event.preventDefault();\n updateEditingValue(clearTimeSegment(currentDisplayValue, currentSegment, precision));\n selectSegment(currentSegment);\n return;\n }\n\n case 'Enter': {\n if (isSelectHighlightedSlot()) {\n event.preventDefault();\n }\n return;\n }\n\n case ' ': {\n event.preventDefault();\n\n const nextSegment = getNextTimeSegment(currentSegment, precision);\n const nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, precision);\n\n updateEditingValue(nextDisplayValue);\n\n if (nextSegment) {\n selectSegment(nextSegment);\n } else {\n selectSegment(currentSegment);\n }\n return;\n }\n default:\n return;\n }\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n onPaste?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n const pastedValue = event.clipboardData?.getData('text') ?? '';\n const nextDisplayValue = parsePastedTimeValue(pastedValue, precision);\n\n event.preventDefault();\n\n if (isTimeDisplayEmpty(nextDisplayValue)) {\n inputRef.current?.blink();\n return;\n }\n\n updateEditingValue(nextDisplayValue);\n selectSegment('hours');\n };\n\n return (\n <CommonWrapper {...props}>\n <span ref={rootRef} className={styles.root()} data-tid={TimePickerDataTids.root}>\n <TimeInput\n {...inputProps}\n data-tid={TimePickerDataTids.input}\n ref={inputRef}\n disabled={disabled}\n size={size}\n precision={precision}\n rightContent={rightContent}\n value={displayValue}\n onClick={handleClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onRightContentMouseDown={handleRightContentMouseDown}\n onMouseDownCapture={handleMouseDownCapture}\n onKeyDown={handleKeyDown}\n onSelectSegment={handleSelectSegmentByMouse}\n onPaste={handlePaste}\n />\n\n {dropdown && isDropdownOpened && rootRef.current && (\n <Popup\n opened\n hasShadow\n data-tid={TimePickerDataTids.popup}\n anchorElement={rootRef.current}\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(theme.menuOffsetY) - 1}\n >\n <div className={styles.popup(theme)} onMouseDown={(event) => event.preventDefault()}>\n <Menu hasMargin={false} width={'auto'} maxHeight={popupMaxHeight}>\n {resolvedSlots.map((slot, index) => {\n const normalizedSlot = normalizeSlotValue(slot.time, precision);\n\n let state: 'hover' | 'selected' | undefined;\n\n if (highlightedSlotIndex === index) {\n state = 'hover';\n } else if (normalizedSlot === normalizedValue) {\n state = 'selected';\n }\n\n return (\n <MenuItem\n key={`${slot.time}-${index}`}\n disabled={slot.disabled}\n size={size}\n state={state}\n onClick={() => selectSlot(slot)}\n >\n <span\n ref={(node) => {\n if (node) {\n slotRefs.current.set(index, node);\n } else {\n slotRefs.current.delete(index);\n }\n }}\n data-tid={TimePickerDataTids.slot}\n className={styles.slot()}\n >\n <span className={styles.slotTime()}>{normalizedSlot}</span>\n {slot.info && <span className={styles.slotInfo(theme)}>{slot.info}</span>}\n </span>\n </MenuItem>\n );\n })}\n </Menu>\n </div>\n </Popup>\n )}\n </span>\n </CommonWrapper>\n );\n});\n"]}
1
+ {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { AriaAttributes } from 'react';\n\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { NativeTimeInput } from '../../internal/NativeTimeInput/index.js';\nimport type { NativeTimeInputRef } from '../../internal/NativeTimeInput/index.js';\nimport { isIOS, isMobile } from '../../lib/client.js';\nimport {\n isKeyArrowDown,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyBackspace,\n isKeyChar,\n isKeyDelete,\n isKeyEnter,\n isKeySpace,\n isKeyTab,\n isModShift,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { InputProps } from '../Input/index.js';\nimport { scrollSelectedSlotIntoView } from './helpers/scrollSelectedSlotIntoView.js';\nimport { DIGIT_REGEXP, EMPTY_VALUE } from './helpers/TimePicker.constants.js';\nimport {\n clearTimeSegment,\n commitTimeSegmentOnLeave,\n deleteTimeSegmentDigit,\n formatDigitToTimeSegment,\n shiftTimeSegmentValue,\n} from './helpers/TimePicker.editing.js';\nimport { DEFAULT_TIME_PICKER_SLOTS, getTimePickerPopupMaxHeight } from './helpers/TimePicker.layout.js';\nimport { getNextTimeSegment, getPreviousTimeSegment } from './helpers/TimePicker.selection.js';\nimport type { TimePrecision, TimeSegment, TimeSlot } from './helpers/TimePicker.shared.js';\nimport {\n getEmptyDisplayValue,\n isTimeDisplayEmpty,\n isTimeValueInRange,\n normalizeTimeValue,\n parsePastedTimeValue,\n} from './helpers/TimePicker.value.js';\nimport { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';\nimport { useTimePickerSelection } from './hooks/useTimePickerSelection.js';\nimport { useTimePickerValue } from './hooks/useTimePickerValue.js';\nimport type { TimeInputRef } from './TimeInput.js';\nimport { TimeInput } from './TimeInput.js';\nimport { getStyles } from './TimePicker.styles.js';\nimport { TimePickerMobilePopup } from './TimePickerMobilePopup.js';\nimport { TimePickerPopup } from './TimePickerPopup.js';\n\ntype UnsupportedInputProps =\n | 'autofocus'\n | 'type'\n | 'defaultValue'\n | 'value'\n | 'leftIcon'\n | 'rightIcon'\n | 'showClearIcon'\n | 'inputMode'\n | 'element'\n | 'align'\n | 'suffix'\n | 'prefix'\n | 'borderless'\n | 'selectAllOnFocus'\n | 'onValueChange'\n | 'onUnexpectedInput';\n\nexport interface TimePickerProps\n extends Omit<InputProps, UnsupportedInputProps>, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'> {\n /** Добавляет выпадающее меню с часовыми слотами в рабочее время @default false */\n dropdown?: boolean;\n /** Устанавливает точность времени @default minute */\n precision?: TimePrecision;\n /** Определяет массив объектов с кастомными слотами в формате TimeSlot */\n slots?: TimeSlot[];\n /** Задает нижнюю границу времени. Слоты за границей становятся disabled */\n minValue?: string;\n /** Задает верхнюю границу времени. Слоты за границей становятся disabled */\n maxValue?: string;\n /** Значение поля @param value 'hh.mm.[:ss]' */\n value?: string;\n /** Событие изменения значения `value` в поле @param value - 'hh.mm.[:ss]' */\n onValueChange?(value: string): void;\n /** Устанавливает фокус на поле ввода после окончания загрузки страницы @default false */\n autoFocus?: boolean;\n /** Включает нативный системный выбор времени на мобильных устройствах */\n useMobileNativeTimePicker?: boolean;\n /** Расположение выпадающего меню */\n menuPos?: 'top' | 'bottom';\n /** Выравнивание выпадающего меню */\n menuAlign?: 'left' | 'right';\n /** Ширина выпадающего меню. @default Равна ширине поля ввода */\n menuWidth?: React.CSSProperties['width'];\n /** Размер поля ввода и выпадающего меню */\n size?: SizeProp;\n}\n\nexport interface TimePickerRef {\n /** Устанавливает фокус на поле ввода */\n focus(): void;\n /** Снимает фокус с поля ввода */\n blur(): void;\n /** Запускает анимацию blink у поля ввода времени */\n blink(): void;\n /** Возвращает DOM-узел поля ввода */\n getNode(): HTMLElement | null;\n /** Возвращает корневой DOM-узел компонента */\n getRootNode(): HTMLElement | null;\n}\n\nexport type TimePicker = TimePickerRef;\n\nexport const TimePickerDataTids = {\n root: 'TimePicker__root',\n input: 'TimePicker__input',\n mobileInput: 'TimePicker__mobileInput',\n nativeInput: 'TimePicker__nativeInput',\n popup: 'TimePicker__popup',\n mobilePopup: 'TimePicker__mobilePopup',\n slot: 'TimePicker__slot',\n} as const;\n\n/** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */\nexport const TimePicker = forwardRefAndName<TimePickerRef, TimePickerProps>('TimePicker', (props, ref) => {\n const {\n disabled,\n useMobileNativeTimePicker = false,\n dropdown = false,\n precision = 'minute',\n size = 'small',\n slots,\n menuPos,\n menuAlign,\n menuWidth,\n minValue,\n maxValue,\n value,\n onValueChange,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n onPaste,\n ...inputProps\n } = props;\n\n const theme = useContext(ThemeContext);\n\n const styles = useStyles(getStyles);\n\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const inputRef = useRef<TimeInputRef>(null);\n const mobileInputRef = useRef<TimeInputRef>(null);\n const activeInputRef = useRef<TimeInputRef>(null);\n const nativeInputRef = useRef<NativeTimeInputRef>(null);\n const rootRef = useRef<HTMLSpanElement>(null);\n const slotRefs = useRef(new Map<number, HTMLSpanElement>());\n const isMouseFocusRef = useRef(false);\n const isMouseDownOnFragmentRef = useRef(false);\n const mouseDownSegmentRef = useRef<TimeSegment | null>(null);\n\n const [isMobileDevice, setIsMobileDevice] = useState(false);\n const [canUseMobileNativeTimePicker, setCanUseMobileNativeTimePicker] = useState(false);\n\n const { editingValue, editingValueRef, setEditingValue, updateEditingValue, commitEditingValue, clearEditingValue } =\n useTimePickerValue({ isInputFocused, precision, value, onValueChange });\n\n const resolvedSlots = useMemo(\n () =>\n (slots ?? DEFAULT_TIME_PICKER_SLOTS).map((slot) => ({\n ...slot,\n disabled: Boolean(slot.disabled) || !isTimeValueInRange(slot.time, precision, minValue, maxValue),\n })),\n [maxValue, minValue, precision, slots],\n );\n\n const popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);\n\n const normalizedValue = normalizeTimeValue(editingValue, precision);\n\n const selectedSlotIndex = resolvedSlots.findIndex(\n (slot) => normalizeTimeValue(slot.time, precision) === normalizedValue,\n );\n\n const canUseMobileDropdownTimePicker = dropdown && isMobileDevice && !canUseMobileNativeTimePicker;\n\n let displayValue = editingValue;\n\n if (isInputFocused) {\n displayValue = editingValue === EMPTY_VALUE ? getEmptyDisplayValue(precision) : editingValue;\n } else if (isTimeDisplayEmpty(editingValue)) {\n displayValue = EMPTY_VALUE;\n }\n\n const { selectedSegment, selectSegment } = useTimePickerSelection({\n isInputFocused,\n precision,\n displayValue,\n inputRef: activeInputRef,\n });\n\n const resetMouseInteractionState = useCallback(() => {\n isMouseFocusRef.current = false;\n isMouseDownOnFragmentRef.current = false;\n mouseDownSegmentRef.current = null;\n }, []);\n\n const normalizeCurrentSegmentIfNeeded = useCallback(\n (segment: TimeSegment) => {\n const nextDisplayValue = commitTimeSegmentOnLeave(\n editingValue === EMPTY_VALUE ? getEmptyDisplayValue(precision) : editingValue,\n segment,\n precision,\n );\n\n updateEditingValue(nextDisplayValue);\n },\n [editingValue, precision, updateEditingValue],\n );\n\n const openNativeTimePicker = useCallback(() => {\n if (!canUseMobileNativeTimePicker || disabled) {\n return;\n }\n\n if (isIOS) {\n nativeInputRef.current?.focus();\n } else {\n nativeInputRef.current?.click();\n }\n }, [canUseMobileNativeTimePicker, disabled]);\n\n const {\n isDropdownOpened,\n highlightedSlotIndex,\n openDropdown,\n closeDropdown,\n resetHighlightedSlot,\n tryNavigateSlots,\n } = useTimePickerDropdown({\n disabled,\n dropdown,\n slots: resolvedSlots,\n selectedSlotIndex: selectedSlotIndex >= 0 ? selectedSlotIndex : null,\n });\n\n useEffect(() => {\n activeInputRef.current =\n canUseMobileDropdownTimePicker && isDropdownOpened ? mobileInputRef.current : inputRef.current;\n }, [canUseMobileDropdownTimePicker, isDropdownOpened]);\n\n const selectSlot = useCallback(\n (slot: TimeSlot) => {\n if (slot.disabled) {\n return;\n }\n\n const nextValue = normalizeTimeValue(slot.time, precision);\n\n setEditingValue(nextValue);\n onValueChange?.(nextValue);\n\n if (canUseMobileDropdownTimePicker) {\n setIsInputFocused(false);\n resetMouseInteractionState();\n }\n\n closeDropdown();\n },\n [\n canUseMobileDropdownTimePicker,\n closeDropdown,\n onValueChange,\n precision,\n resetMouseInteractionState,\n setEditingValue,\n ],\n );\n\n const isSelectHighlightedSlot = useCallback(() => {\n if (highlightedSlotIndex === null) {\n return false;\n }\n\n const slot = resolvedSlots[highlightedSlotIndex];\n\n if (!slot || slot.disabled) {\n return true;\n }\n\n selectSlot(slot);\n return true;\n }, [highlightedSlotIndex, resolvedSlots, selectSlot]);\n\n const focusInput = useCallback(() => {\n activeInputRef.current?.focus();\n }, []);\n\n const blurInput = useCallback(() => {\n activeInputRef.current?.blur();\n }, []);\n\n const blinkInput = useCallback(() => {\n activeInputRef.current?.blink();\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: focusInput,\n blur: blurInput,\n blink: blinkInput,\n getNode: () => activeInputRef.current?.getNode() ?? null,\n getRootNode: () => rootRef.current,\n }),\n [blinkInput, blurInput, focusInput],\n );\n\n useLayoutEffect(() => {\n if (!isDropdownOpened) {\n return;\n }\n\n const selectedIndex = highlightedSlotIndex ?? selectedSlotIndex;\n\n if (selectedIndex < 0) {\n return;\n }\n\n const targetNode = slotRefs.current.get(selectedIndex);\n\n if (targetNode) {\n scrollSelectedSlotIntoView(targetNode);\n }\n }, [highlightedSlotIndex, isDropdownOpened, selectedSlotIndex]);\n\n useEffect(() => {\n setIsMobileDevice(Boolean(isMobile));\n setCanUseMobileNativeTimePicker(useMobileNativeTimePicker && Boolean(isMobile));\n }, [useMobileNativeTimePicker]);\n\n const handleCloseMobileDropdown = useCallback(() => {\n setIsInputFocused(false);\n resetMouseInteractionState();\n\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n clearEditingValue();\n } else {\n commitEditingValue();\n }\n\n closeDropdown();\n }, [clearEditingValue, closeDropdown, commitEditingValue, editingValueRef, resetMouseInteractionState]);\n\n const handleFocusBySource = (event: React.FocusEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n onFocus?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n onFocus?.(event);\n return;\n }\n\n setIsInputFocused(true);\n openDropdown();\n\n if (isMouseDownOnFragmentRef.current && !isInputFocused) {\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n selectSegment('hours');\n } else if (mouseDownSegmentRef.current) {\n selectSegment(mouseDownSegmentRef.current);\n }\n } else {\n selectSegment('hours');\n }\n\n onFocus?.(event);\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => handleFocusBySource(event, false);\n\n const handleMobileFocus = (event: React.FocusEvent<HTMLInputElement>) => handleFocusBySource(event, true);\n\n const handleBlurBySource = (event: React.FocusEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n onBlur?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n onBlur?.(event);\n return;\n }\n\n setIsInputFocused(false);\n resetMouseInteractionState();\n\n if (isMobilePopupInput) {\n onBlur?.(event);\n return;\n }\n\n closeDropdown();\n\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n clearEditingValue();\n onBlur?.(event);\n return;\n }\n\n commitEditingValue();\n onBlur?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => handleBlurBySource(event, false);\n\n const handleMobileBlur = (event: React.FocusEvent<HTMLInputElement>) => handleBlurBySource(event, true);\n\n const handleClickBySource = (event: React.MouseEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n onClick?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n onClick?.(event);\n return;\n }\n\n openDropdown();\n\n onClick?.(event);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLInputElement>) => handleClickBySource(event, false);\n\n const handleMobileClick = (event: React.MouseEvent<HTMLInputElement>) => handleClickBySource(event, true);\n\n const handleMouseDownCaptureBySource = (event: React.MouseEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {\n return;\n }\n\n const currentInputRef = isMobilePopupInput ? mobileInputRef : inputRef;\n const segment = currentInputRef.current?.getSegment(event.target) ?? null;\n const isFragment = segment !== null;\n\n if (isInputFocused && !isFragment) {\n event.preventDefault();\n }\n\n isMouseFocusRef.current = !isInputFocused;\n isMouseDownOnFragmentRef.current = isFragment;\n mouseDownSegmentRef.current = segment;\n };\n\n const handleMouseDownCapture = (event: React.MouseEvent<HTMLInputElement>) =>\n handleMouseDownCaptureBySource(event, false);\n\n const handleMobileMouseDownCapture = (event: React.MouseEvent<HTMLInputElement>) =>\n handleMouseDownCaptureBySource(event, true);\n\n const handleSelectSegmentByMouseBySource = (segment: TimeSegment, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n return;\n }\n\n openDropdown();\n\n if (disabled) {\n return;\n }\n\n if (!(isMouseFocusRef.current && isTimeDisplayEmpty(editingValueRef.current)) && selectedSegment !== segment) {\n normalizeCurrentSegmentIfNeeded(selectedSegment);\n selectSegment(segment);\n }\n\n resetMouseInteractionState();\n };\n\n const handleSelectSegmentByMouse = (segment: TimeSegment) => handleSelectSegmentByMouseBySource(segment, false);\n\n const handleMobileSelectSegmentByMouse = (segment: TimeSegment) => handleSelectSegmentByMouseBySource(segment, true);\n\n const handleKeyDownBySource = (event: React.KeyboardEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n return;\n }\n\n if (isShortcutSelectAll(event)) {\n event.preventDefault();\n activeInputRef.current?.selectAll();\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n const currentDisplayValue = displayValue;\n const currentSegment = selectedSegment;\n const isAllSelected = activeInputRef.current?.isAllSelected() ?? false;\n\n if (isAllSelected && (isKeyBackspace(event) || isKeyDelete(event))) {\n event.preventDefault();\n updateEditingValue(getEmptyDisplayValue(precision));\n selectSegment('hours');\n return;\n }\n\n if (DIGIT_REGEXP.test(event.key)) {\n event.preventDefault();\n\n resetHighlightedSlot();\n\n const result = formatDigitToTimeSegment(currentDisplayValue, currentSegment, event.key, precision);\n\n if (result.shouldBlink) {\n activeInputRef.current?.blink();\n return;\n }\n\n updateEditingValue(result.nextValue);\n selectSegment(result.selectedSegment);\n return;\n }\n\n if (isKeyArrowLeft(event)) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(getPreviousTimeSegment(currentSegment) ?? currentSegment);\n return;\n }\n\n if (isModShift(isKeyTab)(event)) {\n const previousSegment = getPreviousTimeSegment(currentSegment);\n\n if (previousSegment) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(previousSegment);\n }\n return;\n }\n\n if (isKeyArrowRight(event)) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(getNextTimeSegment(currentSegment, precision) ?? currentSegment);\n return;\n }\n\n if (isKeyTab(event)) {\n const nextSegment = getNextTimeSegment(currentSegment, precision);\n\n if (nextSegment) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(nextSegment);\n }\n return;\n }\n\n if (isKeyArrowUp(event) || isKeyArrowDown(event)) {\n event.preventDefault();\n\n const slotStep = isKeyArrowUp(event) ? -1 : 1;\n\n if (tryNavigateSlots(slotStep)) {\n return;\n }\n\n const step = isKeyArrowUp(event) ? 1 : -1;\n\n updateEditingValue(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, precision));\n selectSegment(currentSegment);\n return;\n }\n\n if (isKeyBackspace(event)) {\n event.preventDefault();\n\n let nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, precision);\n let nextSegment = currentSegment;\n\n if (nextDisplayValue === currentDisplayValue) {\n const previousSegment = getPreviousTimeSegment(currentSegment);\n\n if (previousSegment) {\n nextSegment = previousSegment;\n nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, precision);\n }\n }\n\n updateEditingValue(nextDisplayValue);\n selectSegment(nextSegment);\n return;\n }\n\n if (isKeyDelete(event)) {\n event.preventDefault();\n updateEditingValue(clearTimeSegment(currentDisplayValue, currentSegment, precision));\n selectSegment(currentSegment);\n return;\n }\n\n if (isKeyEnter(event)) {\n if (isSelectHighlightedSlot()) {\n event.preventDefault();\n }\n return;\n }\n\n if (isKeySpace(event)) {\n event.preventDefault();\n\n const nextSegment = getNextTimeSegment(currentSegment, precision);\n const nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, precision);\n\n updateEditingValue(nextDisplayValue);\n\n if (nextSegment) {\n selectSegment(nextSegment);\n } else {\n selectSegment(currentSegment);\n }\n return;\n }\n\n if (isKeyChar(event)) {\n activeInputRef.current?.blink();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => handleKeyDownBySource(event, false);\n\n const handleMobileKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => handleKeyDownBySource(event, true);\n\n const handlePasteBySource = (event: React.ClipboardEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n onPaste?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {\n return;\n }\n\n const pastedValue = event.clipboardData?.getData('text');\n const nextDisplayValue = parsePastedTimeValue(pastedValue, precision);\n\n event.preventDefault();\n\n if (isTimeDisplayEmpty(nextDisplayValue)) {\n activeInputRef.current?.blink();\n return;\n }\n\n updateEditingValue(nextDisplayValue);\n selectSegment('hours');\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => handlePasteBySource(event, false);\n\n const handleMobilePaste = (event: React.ClipboardEvent<HTMLInputElement>) => handlePasteBySource(event, true);\n\n const handleNativeValueChange = useCallback(\n (nextValue: string) => {\n setEditingValue(nextValue);\n onValueChange?.(nextValue);\n },\n [onValueChange, setEditingValue],\n );\n\n return (\n <CommonWrapper {...props}>\n <span ref={rootRef} className={styles.root()} data-tid={TimePickerDataTids.root}>\n <TimeInput\n {...inputProps}\n data-tid={TimePickerDataTids.input}\n ref={inputRef}\n disabled={disabled}\n dropdown={dropdown}\n size={size}\n precision={precision}\n value={displayValue}\n onClick={handleClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onMouseDownCapture={handleMouseDownCapture}\n onKeyDown={handleKeyDown}\n onSelectSegment={handleSelectSegmentByMouse}\n onPaste={handlePaste}\n />\n\n {canUseMobileNativeTimePicker && (\n <NativeTimeInput\n data-tid={TimePickerDataTids.nativeInput}\n disabled={disabled}\n ref={nativeInputRef}\n precision={precision}\n minValue={minValue}\n maxValue={maxValue}\n value={editingValue}\n onValueChange={handleNativeValueChange}\n />\n )}\n\n {canUseMobileDropdownTimePicker && isDropdownOpened && (\n <TimePickerMobilePopup\n opened={isDropdownOpened}\n value={displayValue}\n inputRef={mobileInputRef}\n disabled={disabled}\n precision={precision}\n size={size}\n resolvedSlots={resolvedSlots}\n highlightedSlotIndex={highlightedSlotIndex}\n normalizedValue={normalizedValue}\n slotRefs={slotRefs}\n error={props.error}\n warning={props.warning}\n aria-describedby={props['aria-describedby']}\n aria-label={props['aria-label']}\n onFocus={handleMobileFocus}\n onBlur={handleMobileBlur}\n onClick={handleMobileClick}\n onKeyDown={handleMobileKeyDown}\n onMouseDownCapture={handleMobileMouseDownCapture}\n onPaste={handleMobilePaste}\n onSelectSegment={handleMobileSelectSegmentByMouse}\n onSelectSlot={selectSlot}\n onCloseRequest={handleCloseMobileDropdown}\n />\n )}\n\n {dropdown &&\n !canUseMobileNativeTimePicker &&\n !canUseMobileDropdownTimePicker &&\n isDropdownOpened &&\n rootRef.current && (\n <TimePickerPopup\n anchorElement={rootRef.current}\n menuPos={menuPos}\n menuAlign={menuAlign}\n menuWidth={menuWidth}\n popupMaxHeight={popupMaxHeight}\n precision={precision}\n size={size}\n resolvedSlots={resolvedSlots}\n highlightedSlotIndex={highlightedSlotIndex}\n normalizedValue={normalizedValue}\n slotRefs={slotRefs}\n onSelectSlot={selectSlot}\n />\n )}\n </span>\n </CommonWrapper>\n );\n});\n"]}
@@ -1,11 +1,10 @@
1
1
  import type { Theme } from '../../lib/theming/Theme.js';
2
2
  export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
3
3
  root(): string;
4
- inputRoot(): string;
5
4
  popup(t: Theme): string;
6
- rightContent(): string;
7
- rightContentInteractive(): string;
8
- rightContentDefault(t: Theme): string;
5
+ rightIcon(): string;
6
+ rightIconInteractive(): string;
7
+ rightIconDefault(t: Theme): string;
9
8
  slot(): string;
10
9
  slotTime(): string;
11
10
  slotInfo(t: Theme): string;
@@ -9,31 +9,28 @@ export var getStyles = memoizeGetStyles(function (_a) {
9
9
  root: function () {
10
10
  return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: inline-block;\n position: relative;\n line-height: normal;\n "], ["\n display: inline-block;\n position: relative;\n line-height: normal;\n "])));
11
11
  },
12
- inputRoot: function () {
13
- return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n input {\n font-variant-numeric: tabular-nums;\n }\n "], ["\n input {\n font-variant-numeric: tabular-nums;\n }\n "])));
14
- },
15
12
  popup: function (t) {
16
- return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n "], ["\n background: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n "])), t.calendarBg, t.calendarBorderRadius, t.pickerShadow);
13
+ return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n "], ["\n background: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n "])), t.calendarBg, t.calendarBorderRadius, t.pickerShadow);
17
14
  },
18
- rightContent: function () {
19
- return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n user-select: none;\n "], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n user-select: none;\n "])));
15
+ rightIcon: function () {
16
+ return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n user-select: none;\n "], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n user-select: none;\n "])));
20
17
  },
21
- rightContentInteractive: function () {
22
- return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n cursor: pointer;\n "], ["\n cursor: pointer;\n "])));
18
+ rightIconInteractive: function () {
19
+ return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n cursor: pointer;\n "], ["\n cursor: pointer;\n "])));
23
20
  },
24
- rightContentDefault: function (t) {
25
- return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.textColorDefault);
21
+ rightIconDefault: function (t) {
22
+ return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.textColorDefault);
26
23
  },
27
24
  slot: function () {
28
- return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n font-variant-numeric: tabular-nums;\n "], ["\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n font-variant-numeric: tabular-nums;\n "])));
25
+ return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n font-variant-numeric: tabular-nums;\n "], ["\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n font-variant-numeric: tabular-nums;\n "])));
29
26
  },
30
27
  slotTime: function () {
31
- return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])));
28
+ return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])));
32
29
  },
33
30
  slotInfo: function (t) {
34
- return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])), t.menuItemCommentColor);
31
+ return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])), t.menuItemCommentColor);
35
32
  },
36
33
  });
37
34
  });
38
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
35
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
39
36
  //# sourceMappingURL=TimePicker.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.styles.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePicker.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,gKAAA,6FAIT,KAAC;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,gJAAA,6EAIT,KAAC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,GAAG,6NAAA,sBACM,EAAY,0BACT,EAAsB,uBACzB,EAAc,6EAG7B,KALe,CAAC,CAAC,UAAU,EACT,CAAC,CAAC,oBAAoB,EACzB,CAAC,CAAC,YAAY,EAG5B;QACJ,CAAC;QAED,YAAY;YACV,OAAO,GAAG,6PAAA,0LAOT,KAAC;QACJ,CAAC;QAED,uBAAuB;YACrB,OAAO,GAAG,mGAAA,gCAET,KAAC;QACJ,CAAC;QAED,mBAAmB,YAAC,CAAQ;YAC1B,OAAO,GAAG,+FAAA,iBACC,EAAkB,SAC5B,KADU,CAAC,CAAC,gBAAgB,EAC3B;QACJ,CAAC;QAED,IAAI;YACF,OAAO,GAAG,6MAAA,0IAMT,KAAC;QACJ,CAAC;QAED,QAAQ;YACN,OAAO,GAAG,kJAAA,+EAGT,KAAC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,OAAO,GAAG,sKAAA,iBACC,EAAsB,gFAGhC,KAHU,CAAC,CAAC,oBAAoB,EAG/B;QACJ,CAAC;KACF,CAAC;AA1E8D,CA0E9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n display: inline-block;\n position: relative;\n line-height: normal;\n `;\n },\n\n inputRoot() {\n return css`\n input {\n font-variant-numeric: tabular-nums;\n }\n `;\n },\n\n popup(t: Theme) {\n return css`\n background: ${t.calendarBg};\n border-radius: ${t.calendarBorderRadius};\n box-shadow: ${t.pickerShadow};\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n `;\n },\n\n rightContent() {\n return css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n user-select: none;\n `;\n },\n\n rightContentInteractive() {\n return css`\n cursor: pointer;\n `;\n },\n\n rightContentDefault(t: Theme) {\n return css`\n color: ${t.textColorDefault};\n `;\n },\n\n slot() {\n return css`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n font-variant-numeric: tabular-nums;\n `;\n },\n\n slotTime() {\n return css`\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n slotInfo(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"TimePicker.styles.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePicker.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,gKAAA,6FAIT,KAAC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,GAAG,6NAAA,sBACM,EAAY,0BACT,EAAsB,uBACzB,EAAc,6EAG7B,KALe,CAAC,CAAC,UAAU,EACT,CAAC,CAAC,oBAAoB,EACzB,CAAC,CAAC,YAAY,EAG5B;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,kNAAA,+IAMT,KAAC;QACJ,CAAC;QAED,oBAAoB;YAClB,OAAO,GAAG,mGAAA,gCAET,KAAC;QACJ,CAAC;QAED,gBAAgB,YAAC,CAAQ;YACvB,OAAO,GAAG,+FAAA,iBACC,EAAkB,SAC5B,KADU,CAAC,CAAC,gBAAgB,EAC3B;QACJ,CAAC;QAED,IAAI;YACF,OAAO,GAAG,6MAAA,0IAMT,KAAC;QACJ,CAAC;QAED,QAAQ;YACN,OAAO,GAAG,kJAAA,+EAGT,KAAC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,OAAO,GAAG,sKAAA,iBACC,EAAsB,gFAGhC,KAHU,CAAC,CAAC,oBAAoB,EAG/B;QACJ,CAAC;KACF,CAAC;AAjE8D,CAiE9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n display: inline-block;\n position: relative;\n line-height: normal;\n `;\n },\n\n popup(t: Theme) {\n return css`\n background: ${t.calendarBg};\n border-radius: ${t.calendarBorderRadius};\n box-shadow: ${t.pickerShadow};\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n `;\n },\n\n rightIcon() {\n return css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n user-select: none;\n `;\n },\n\n rightIconInteractive() {\n return css`\n cursor: pointer;\n `;\n },\n\n rightIconDefault(t: Theme) {\n return css`\n color: ${t.textColorDefault};\n `;\n },\n\n slot() {\n return css`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n font-variant-numeric: tabular-nums;\n `;\n },\n\n slotTime() {\n return css`\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n slotInfo(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n}));\n"]}
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../lib/types/props.js';
3
+ import type { TimeSegment, TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';
4
+ import type { TimeInputRef } from './TimeInput.js';
5
+ interface TimePickerMobilePopupProps {
6
+ opened: boolean;
7
+ value: string;
8
+ inputRef: React.RefObject<TimeInputRef | null>;
9
+ disabled?: boolean;
10
+ precision: TimePrecision;
11
+ size: SizeProp;
12
+ resolvedSlots: TimeSlot[];
13
+ highlightedSlotIndex: number | null;
14
+ normalizedValue: string;
15
+ slotRefs: React.RefObject<Map<number, HTMLSpanElement>>;
16
+ error?: boolean;
17
+ warning?: boolean;
18
+ 'aria-describedby'?: string;
19
+ 'aria-label'?: string;
20
+ onFocus(event: React.FocusEvent<HTMLInputElement>): void;
21
+ onBlur(event: React.FocusEvent<HTMLInputElement>): void;
22
+ onClick(event: React.MouseEvent<HTMLInputElement>): void;
23
+ onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void;
24
+ onMouseDownCapture(event: React.MouseEvent<HTMLInputElement>): void;
25
+ onPaste(event: React.ClipboardEvent<HTMLInputElement>): void;
26
+ onSelectSegment(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;
27
+ onSelectSlot(slot: TimeSlot): void;
28
+ onCloseRequest(): void;
29
+ }
30
+ export declare const TimePickerMobilePopup: (props: TimePickerMobilePopupProps) => React.JSX.Element;
31
+ export {};
@@ -0,0 +1,21 @@
1
+ import React, { useLayoutEffect } from 'react';
2
+ import { MobilePopup } from '../../internal/MobilePopup/index.js';
3
+ import { TimeInput } from './TimeInput.js';
4
+ import { TimePickerDataTids } from './TimePicker.js';
5
+ import { TimePickerSlots } from './TimePickerSlots.js';
6
+ export var TimePickerMobilePopup = function (props) {
7
+ var opened = props.opened, value = props.value, inputRef = props.inputRef, disabled = props.disabled, precision = props.precision, size = props.size, resolvedSlots = props.resolvedSlots, highlightedSlotIndex = props.highlightedSlotIndex, normalizedValue = props.normalizedValue, slotRefs = props.slotRefs, error = props.error, warning = props.warning, ariaDescribedby = props["aria-describedby"], ariaLabel = props["aria-label"], onFocus = props.onFocus, onBlur = props.onBlur, onClick = props.onClick, onKeyDown = props.onKeyDown, onMouseDownCapture = props.onMouseDownCapture, onPaste = props.onPaste, onSelectSegment = props.onSelectSegment, onSelectSlot = props.onSelectSlot, onCloseRequest = props.onCloseRequest;
8
+ useLayoutEffect(function () {
9
+ var timer = setTimeout(function () {
10
+ var _a;
11
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
12
+ });
13
+ return function () {
14
+ clearTimeout(timer);
15
+ };
16
+ }, [inputRef]);
17
+ return (React.createElement(MobilePopup, { opened: opened, verticalAlign: 'center', size: size, headerChildComponent: React.createElement(TimeInput, { ref: inputRef, "data-tid": TimePickerDataTids.mobileInput, width: "100%", disabled: disabled, precision: precision, size: size, value: value, error: error, warning: warning, "aria-describedby": ariaDescribedby, "aria-label": ariaLabel, onFocus: onFocus, onBlur: onBlur, onClick: onClick, onKeyDown: onKeyDown, onMouseDownCapture: onMouseDownCapture, onPaste: onPaste, onSelectSegment: onSelectSegment }), onCloseRequest: onCloseRequest },
18
+ React.createElement("div", { "data-tid": TimePickerDataTids.mobilePopup },
19
+ React.createElement(TimePickerSlots, { precision: precision, size: size, resolvedSlots: resolvedSlots, highlightedSlotIndex: highlightedSlotIndex, normalizedValue: normalizedValue, slotRefs: slotRefs, maxHeight: 'auto', disableScrollContainer: true, onSelectSlot: onSelectSlot }))));
20
+ };
21
+ //# sourceMappingURL=TimePickerMobilePopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerMobilePopup.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePickerMobilePopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAIlE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA4BvD,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,KAAiC;IAEnE,IAAA,MAAM,GAuBJ,KAAK,OAvBD,EACN,KAAK,GAsBH,KAAK,MAtBF,EACL,QAAQ,GAqBN,KAAK,SArBC,EACR,QAAQ,GAoBN,KAAK,SApBC,EACR,SAAS,GAmBP,KAAK,UAnBE,EACT,IAAI,GAkBF,KAAK,KAlBH,EACJ,aAAa,GAiBX,KAAK,cAjBM,EACb,oBAAoB,GAgBlB,KAAK,qBAhBa,EACpB,eAAe,GAeb,KAAK,gBAfQ,EACf,QAAQ,GAcN,KAAK,SAdC,EACR,KAAK,GAaH,KAAK,MAbF,EACL,OAAO,GAYL,KAAK,QAZA,EACa,eAAe,GAWjC,KAAK,oBAX4B,EACrB,SAAS,GAUrB,KAAK,cAVgB,EACvB,OAAO,GASL,KAAK,QATA,EACP,MAAM,GAQJ,KAAK,OARD,EACN,OAAO,GAOL,KAAK,QAPA,EACP,SAAS,GAMP,KAAK,UANE,EACT,kBAAkB,GAKhB,KAAK,mBALW,EAClB,OAAO,GAIL,KAAK,QAJA,EACP,eAAe,GAGb,KAAK,gBAHQ,EACf,YAAY,GAEV,KAAK,aAFK,EACZ,cAAc,GACZ,KAAK,eADO,CACN;IAEV,eAAe,CAAC;QACd,IAAM,KAAK,GAAG,UAAU,CAAC;;YACvB,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,oBAAC,WAAW,IACV,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,QAAQ,EACvB,IAAI,EAAE,IAAI,EACV,oBAAoB,EAClB,oBAAC,SAAS,IACR,GAAG,EAAE,QAAQ,cACH,kBAAkB,CAAC,WAAW,EACxC,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,sBACE,eAAe,gBACrB,SAAS,EACrB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,GAChC,EAEJ,cAAc,EAAE,cAAc;QAE9B,yCAAe,kBAAkB,CAAC,WAAW;YAC3C,oBAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,sBAAsB,QACtB,YAAY,EAAE,YAAY,GAC1B,CACE,CACM,CACf,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useLayoutEffect } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { TimeSegment, TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';\nimport type { TimeInputRef } from './TimeInput.js';\nimport { TimeInput } from './TimeInput.js';\nimport { TimePickerDataTids } from './TimePicker.js';\nimport { TimePickerSlots } from './TimePickerSlots.js';\n\ninterface TimePickerMobilePopupProps {\n opened: boolean;\n value: string;\n inputRef: React.RefObject<TimeInputRef | null>;\n disabled?: boolean;\n precision: TimePrecision;\n size: SizeProp;\n resolvedSlots: TimeSlot[];\n highlightedSlotIndex: number | null;\n normalizedValue: string;\n slotRefs: React.RefObject<Map<number, HTMLSpanElement>>;\n error?: boolean;\n warning?: boolean;\n 'aria-describedby'?: string;\n 'aria-label'?: string;\n onFocus(event: React.FocusEvent<HTMLInputElement>): void;\n onBlur(event: React.FocusEvent<HTMLInputElement>): void;\n onClick(event: React.MouseEvent<HTMLInputElement>): void;\n onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void;\n onMouseDownCapture(event: React.MouseEvent<HTMLInputElement>): void;\n onPaste(event: React.ClipboardEvent<HTMLInputElement>): void;\n onSelectSegment(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n onSelectSlot(slot: TimeSlot): void;\n onCloseRequest(): void;\n}\n\nexport const TimePickerMobilePopup = (props: TimePickerMobilePopupProps) => {\n const {\n opened,\n value,\n inputRef,\n disabled,\n precision,\n size,\n resolvedSlots,\n highlightedSlotIndex,\n normalizedValue,\n slotRefs,\n error,\n warning,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n onMouseDownCapture,\n onPaste,\n onSelectSegment,\n onSelectSlot,\n onCloseRequest,\n } = props;\n\n useLayoutEffect(() => {\n const timer = setTimeout(() => {\n inputRef.current?.focus();\n });\n\n return () => {\n clearTimeout(timer);\n };\n }, [inputRef]);\n\n return (\n <MobilePopup\n opened={opened}\n verticalAlign={'center'}\n size={size}\n headerChildComponent={\n <TimeInput\n ref={inputRef}\n data-tid={TimePickerDataTids.mobileInput}\n width=\"100%\"\n disabled={disabled}\n precision={precision}\n size={size}\n value={value}\n error={error}\n warning={warning}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseDownCapture={onMouseDownCapture}\n onPaste={onPaste}\n onSelectSegment={onSelectSegment}\n />\n }\n onCloseRequest={onCloseRequest}\n >\n <div data-tid={TimePickerDataTids.mobilePopup}>\n <TimePickerSlots\n precision={precision}\n size={size}\n resolvedSlots={resolvedSlots}\n highlightedSlotIndex={highlightedSlotIndex}\n normalizedValue={normalizedValue}\n slotRefs={slotRefs}\n maxHeight={'auto'}\n disableScrollContainer\n onSelectSlot={onSelectSlot}\n />\n </div>\n </MobilePopup>\n );\n};\n"]}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../lib/types/props.js';
3
+ import type { TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';
4
+ interface TimePickerPopupProps {
5
+ anchorElement: HTMLElement;
6
+ menuPos?: 'top' | 'bottom';
7
+ menuAlign?: 'left' | 'right';
8
+ menuWidth?: React.CSSProperties['width'];
9
+ popupMaxHeight: string;
10
+ precision: TimePrecision;
11
+ size: SizeProp;
12
+ resolvedSlots: TimeSlot[];
13
+ highlightedSlotIndex: number | null;
14
+ normalizedValue: string;
15
+ slotRefs: React.RefObject<Map<number, HTMLSpanElement>>;
16
+ onSelectSlot(slot: TimeSlot): void;
17
+ }
18
+ export declare const TimePickerPopup: (props: TimePickerPopupProps) => React.JSX.Element;
19
+ export {};
@@ -0,0 +1,18 @@
1
+ import React, { useContext } from 'react';
2
+ import { Popup } from '../../internal/Popup/index.js';
3
+ import { ZIndex } from '../../internal/ZIndex/index.js';
4
+ import { getMenuPositions } from '../../lib/getMenuPositions.js';
5
+ import { useStyles } from '../../lib/renderEnvironment/index.js';
6
+ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
7
+ import { TimePickerDataTids } from './TimePicker.js';
8
+ import { getStyles } from './TimePicker.styles.js';
9
+ import { TimePickerSlots } from './TimePickerSlots.js';
10
+ export var TimePickerPopup = function (props) {
11
+ var anchorElement = props.anchorElement, menuPos = props.menuPos, menuAlign = props.menuAlign, menuWidth = props.menuWidth, popupMaxHeight = props.popupMaxHeight, precision = props.precision, size = props.size, resolvedSlots = props.resolvedSlots, highlightedSlotIndex = props.highlightedSlotIndex, normalizedValue = props.normalizedValue, slotRefs = props.slotRefs, onSelectSlot = props.onSelectSlot;
12
+ var theme = useContext(ThemeContext);
13
+ var styles = useStyles(getStyles);
14
+ return (React.createElement(Popup, { opened: true, hasShadow: true, anchorElement: anchorElement, "data-tid": TimePickerDataTids.popup, priority: ZIndex.priorities.PopupMenu, margin: parseInt(theme.menuOffsetY) - 1, width: menuWidth, minWidth: menuWidth === undefined ? '100%' : undefined, positions: getMenuPositions(menuPos, menuAlign) },
15
+ React.createElement("div", { className: styles.popup(theme), onMouseDown: function (event) { return event.preventDefault(); } },
16
+ React.createElement(TimePickerSlots, { precision: precision, size: size, resolvedSlots: resolvedSlots, highlightedSlotIndex: highlightedSlotIndex, normalizedValue: normalizedValue, slotRefs: slotRefs, maxHeight: popupMaxHeight, onSelectSlot: onSelectSlot }))));
17
+ };
18
+ //# sourceMappingURL=TimePickerPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerPopup.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePickerPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAiBvD,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,KAA2B;IAEvD,IAAA,aAAa,GAYX,KAAK,cAZM,EACb,OAAO,GAWL,KAAK,QAXA,EACP,SAAS,GAUP,KAAK,UAVE,EACT,SAAS,GASP,KAAK,UATE,EACT,cAAc,GAQZ,KAAK,eARO,EACd,SAAS,GAOP,KAAK,UAPE,EACT,IAAI,GAMF,KAAK,KANH,EACJ,aAAa,GAKX,KAAK,cALM,EACb,oBAAoB,GAIlB,KAAK,qBAJa,EACpB,eAAe,GAGb,KAAK,gBAHQ,EACf,QAAQ,GAEN,KAAK,SAFC,EACR,YAAY,GACV,KAAK,aADK,CACJ;IAEV,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,KAAK,IACJ,MAAM,QACN,SAAS,QACT,aAAa,EAAE,aAAa,cAClB,kBAAkB,CAAC,KAAK,EAClC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,EACrC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EACvC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACtD,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC;QAE/C,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,cAAc,EAAE,EAAtB,CAAsB;YACjF,oBAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,YAAY,GAC1B,CACE,CACA,CACT,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Popup } from '../../internal/Popup/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';\nimport { TimePickerDataTids } from './TimePicker.js';\nimport { getStyles } from './TimePicker.styles.js';\nimport { TimePickerSlots } from './TimePickerSlots.js';\n\ninterface TimePickerPopupProps {\n anchorElement: HTMLElement;\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n popupMaxHeight: string;\n precision: TimePrecision;\n size: SizeProp;\n resolvedSlots: TimeSlot[];\n highlightedSlotIndex: number | null;\n normalizedValue: string;\n slotRefs: React.RefObject<Map<number, HTMLSpanElement>>;\n onSelectSlot(slot: TimeSlot): void;\n}\n\nexport const TimePickerPopup = (props: TimePickerPopupProps) => {\n const {\n anchorElement,\n menuPos,\n menuAlign,\n menuWidth,\n popupMaxHeight,\n precision,\n size,\n resolvedSlots,\n highlightedSlotIndex,\n normalizedValue,\n slotRefs,\n onSelectSlot,\n } = props;\n\n const theme = useContext(ThemeContext);\n const styles = useStyles(getStyles);\n\n return (\n <Popup\n opened\n hasShadow\n anchorElement={anchorElement}\n data-tid={TimePickerDataTids.popup}\n priority={ZIndex.priorities.PopupMenu}\n margin={parseInt(theme.menuOffsetY) - 1}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n >\n <div className={styles.popup(theme)} onMouseDown={(event) => event.preventDefault()}>\n <TimePickerSlots\n precision={precision}\n size={size}\n resolvedSlots={resolvedSlots}\n highlightedSlotIndex={highlightedSlotIndex}\n normalizedValue={normalizedValue}\n slotRefs={slotRefs}\n maxHeight={popupMaxHeight}\n onSelectSlot={onSelectSlot}\n />\n </div>\n </Popup>\n );\n};\n"]}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../lib/types/props.js';
3
+ import type { TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';
4
+ interface TimePickerSlotsProps {
5
+ precision: TimePrecision;
6
+ size: SizeProp;
7
+ resolvedSlots: TimeSlot[];
8
+ highlightedSlotIndex: number | null;
9
+ normalizedValue: string;
10
+ slotRefs?: React.RefObject<Map<number, HTMLSpanElement>>;
11
+ maxHeight?: React.CSSProperties['maxHeight'];
12
+ disableScrollContainer?: boolean;
13
+ onSelectSlot(slot: TimeSlot): void;
14
+ }
15
+ export declare const TimePickerSlots: (props: TimePickerSlotsProps) => React.JSX.Element;
16
+ export {};
@@ -0,0 +1,67 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React, { useContext } from 'react';
24
+ import { Menu } from '../../internal/Menu/index.js';
25
+ import { useStyles } from '../../lib/renderEnvironment/index.js';
26
+ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
27
+ import { MenuItem } from '../MenuItem/index.js';
28
+ import { normalizeTimeValue } from './helpers/TimePicker.value.js';
29
+ import { TimePickerDataTids } from './TimePicker.js';
30
+ import { getStyles } from './TimePicker.styles.js';
31
+ var SlotRoot = React.forwardRef(function (_a, ref) {
32
+ var _b = _a.disabled, disabled = _b === void 0 ? false : _b, _state = _a.state, props = __rest(_a, ["disabled", "state"]);
33
+ if (disabled) {
34
+ return React.createElement("div", __assign({}, props, { ref: ref }));
35
+ }
36
+ return React.createElement("button", __assign({}, props, { ref: ref, type: "button", disabled: disabled }));
37
+ });
38
+ export var TimePickerSlots = function (props) {
39
+ var precision = props.precision, size = props.size, resolvedSlots = props.resolvedSlots, highlightedSlotIndex = props.highlightedSlotIndex, normalizedValue = props.normalizedValue, slotRefs = props.slotRefs, maxHeight = props.maxHeight, disableScrollContainer = props.disableScrollContainer, onSelectSlot = props.onSelectSlot;
40
+ var theme = useContext(ThemeContext);
41
+ var styles = useStyles(getStyles);
42
+ return (React.createElement(Menu, { hasMargin: false, width: '100%', maxHeight: maxHeight, disableScrollContainer: disableScrollContainer }, resolvedSlots.map(function (slot, index) {
43
+ var normalizedSlot = normalizeTimeValue(slot.time, precision);
44
+ var state;
45
+ if (highlightedSlotIndex === index) {
46
+ state = 'hover';
47
+ }
48
+ else if (normalizedSlot === normalizedValue) {
49
+ state = 'selected';
50
+ }
51
+ return (React.createElement(MenuItem, { key: "".concat(slot.time, "-").concat(index), component: SlotRoot, disabled: slot.disabled, isNotSelectable: slot.disabled, size: size, state: state, onClick: slot.disabled ? undefined : function () { return onSelectSlot(slot); } },
52
+ React.createElement("span", { "data-tid": TimePickerDataTids.slot, className: styles.slot(), ref: function (node) {
53
+ if (!slotRefs) {
54
+ return;
55
+ }
56
+ if (node) {
57
+ slotRefs.current.set(index, node);
58
+ }
59
+ else {
60
+ slotRefs.current.delete(index);
61
+ }
62
+ } },
63
+ React.createElement("span", { className: styles.slotTime() }, normalizedSlot),
64
+ slot.info && React.createElement("span", { className: styles.slotInfo(theme) }, slot.info))));
65
+ })));
66
+ };
67
+ //# sourceMappingURL=TimePickerSlots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerSlots.js","sourceRoot":"","sources":["../../../components/TimePicker/TimePickerSlots.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,IAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,UAAC,EAA6C,EAAE,GAAG;IAAhD,IAAA,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAAS,MAAM,WAAA,EAAK,KAAK,cAA3C,qBAA6C,CAAF;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,wCAAS,KAAK,IAAE,GAAG,EAAE,GAAgC,IAAI,CAAC;IACnE,CAAC;IAED,OAAO,2CAAY,KAAK,IAAE,GAAG,EAAE,GAAmC,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC;AAC3G,CAAC,CAAC,CAAC;AAcH,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,KAA2B;IAEvD,IAAA,SAAS,GASP,KAAK,UATE,EACT,IAAI,GAQF,KAAK,KARH,EACJ,aAAa,GAOX,KAAK,cAPM,EACb,oBAAoB,GAMlB,KAAK,qBANa,EACpB,eAAe,GAKb,KAAK,gBALQ,EACf,QAAQ,GAIN,KAAK,SAJC,EACR,SAAS,GAGP,KAAK,UAHE,EACT,sBAAsB,GAEpB,KAAK,uBAFe,EACtB,YAAY,GACV,KAAK,aADK,CACJ;IAEV,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,sBAAsB,IACxG,aAAa,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK;QAC7B,IAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,KAAuC,CAAC;QAE5C,IAAI,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACnC,KAAK,GAAG,OAAO,CAAC;QAClB,CAAC;aAAM,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;YAC9C,KAAK,GAAG,UAAU,CAAC;QACrB,CAAC;QAED,OAAO,CACL,oBAAC,QAAQ,IACP,GAAG,EAAE,UAAG,IAAI,CAAC,IAAI,cAAI,KAAK,CAAE,EAC5B,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,eAAe,EAAE,IAAI,CAAC,QAAQ,EAC9B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB;YAE7D,0CACY,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,EACxB,GAAG,EAAE,UAAC,IAAI;oBACR,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,EAAE,CAAC;wBACT,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBAED,8BAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAG,cAAc,CAAQ;gBAC1D,IAAI,CAAC,IAAI,IAAI,8BAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,IAAI,CAAQ,CACpE,CACE,CACZ,CAAC;IACJ,CAAC,CAAC,CACG,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Menu } from '../../internal/Menu/index.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { MenuItem } from '../MenuItem/index.js';\nimport type { TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';\nimport { normalizeTimeValue } from './helpers/TimePicker.value.js';\nimport { TimePickerDataTids } from './TimePicker.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nconst SlotRoot = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement> & { disabled?: boolean; state?: unknown }\n>(({ disabled = false, state: _state, ...props }, ref) => {\n if (disabled) {\n return <div {...props} ref={ref as React.Ref<HTMLDivElement>} />;\n }\n\n return <button {...props} ref={ref as React.Ref<HTMLButtonElement>} type=\"button\" disabled={disabled} />;\n});\n\ninterface TimePickerSlotsProps {\n precision: TimePrecision;\n size: SizeProp;\n resolvedSlots: TimeSlot[];\n highlightedSlotIndex: number | null;\n normalizedValue: string;\n slotRefs?: React.RefObject<Map<number, HTMLSpanElement>>;\n maxHeight?: React.CSSProperties['maxHeight'];\n disableScrollContainer?: boolean;\n onSelectSlot(slot: TimeSlot): void;\n}\n\nexport const TimePickerSlots = (props: TimePickerSlotsProps) => {\n const {\n precision,\n size,\n resolvedSlots,\n highlightedSlotIndex,\n normalizedValue,\n slotRefs,\n maxHeight,\n disableScrollContainer,\n onSelectSlot,\n } = props;\n\n const theme = useContext(ThemeContext);\n const styles = useStyles(getStyles);\n\n return (\n <Menu hasMargin={false} width={'100%'} maxHeight={maxHeight} disableScrollContainer={disableScrollContainer}>\n {resolvedSlots.map((slot, index) => {\n const normalizedSlot = normalizeTimeValue(slot.time, precision);\n\n let state: 'hover' | 'selected' | undefined;\n\n if (highlightedSlotIndex === index) {\n state = 'hover';\n } else if (normalizedSlot === normalizedValue) {\n state = 'selected';\n }\n\n return (\n <MenuItem\n key={`${slot.time}-${index}`}\n component={SlotRoot}\n disabled={slot.disabled}\n isNotSelectable={slot.disabled}\n size={size}\n state={state}\n onClick={slot.disabled ? undefined : () => onSelectSlot(slot)}\n >\n <span\n data-tid={TimePickerDataTids.slot}\n className={styles.slot()}\n ref={(node) => {\n if (!slotRefs) {\n return;\n }\n\n if (node) {\n slotRefs.current.set(index, node);\n } else {\n slotRefs.current.delete(index);\n }\n }}\n >\n <span className={styles.slotTime()}>{normalizedSlot}</span>\n {slot.info && <span className={styles.slotInfo(theme)}>{slot.info}</span>}\n </span>\n </MenuItem>\n );\n })}\n </Menu>\n );\n};\n"]}
@@ -9,7 +9,6 @@ export declare const ZERO_PAD_CHAR = "0";
9
9
  export declare const EMPTY_VALUE = "";
10
10
  export declare const DIGIT_REGEXP: RegExp;
11
11
  export declare const NON_DIGIT_REGEXP: RegExp;
12
- export declare const TIME_VALUE_SPLIT_REGEXP: RegExp;
13
12
  export declare const EMPTY_SEGMENT: string;
14
13
  export declare const TIME_SEGMENTS_BY_PRECISION: Record<TimePrecision, TimeSegment[]>;
15
14
  export declare const MAX_DIGITS_BY_PRECISION: Record<TimePrecision, number>;
@@ -11,7 +11,6 @@ export var ZERO_PAD_CHAR = '0';
11
11
  export var EMPTY_VALUE = '';
12
12
  export var DIGIT_REGEXP = /\d/;
13
13
  export var NON_DIGIT_REGEXP = /\D/g;
14
- export var TIME_VALUE_SPLIT_REGEXP = /:/;
15
14
  export var EMPTY_SEGMENT = TIME_PLACEHOLDER_CHAR.repeat(TIME_SEGMENT_LENGTH);
16
15
  export var TIME_SEGMENTS_BY_PRECISION = {
17
16
  minute: ['hours', 'minutes'],
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.constants.js","sourceRoot":"","sources":["../../../../components/TimePicker/helpers/TimePicker.constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,qBAAqB,GAAG,QAAQ,CAAC;AAC9C,MAAM,CAAC,IAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,IAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,IAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,IAAM,mCAAmC,GAAG,CAAC,CAAC;AAC9C,IAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,IAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,IAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,IAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,IAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,IAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,IAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,IAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,IAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,IAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE/E,MAAM,CAAC,IAAM,0BAA0B,GAAyC;IAC9E,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,CAAC,IAAM,uBAAuB,GAAkC;IACpE,MAAM,EAAE,6BAA6B;IACrC,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,IAAM,0BAA0B,GAAgC;IACrE,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,mCAAmC;IAC5C,OAAO,EAAE,mCAAmC;CAC7C,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAA6B;IAC3D,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,IAAM,gCAAgC,GAA6B;IACxE,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,IAAM,yBAAyB,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,CAAC;IAC7F,IAAI,EAAE,UAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,SAAG,cAAc,OAAI;CAC7F,CAAC,EAF4F,CAE5F,CAAC,CAAC","sourcesContent":["import type { SizeProp } from '../../../lib/types/props.js';\nimport type { TimePrecision, TimeSegment, TimeSlot } from './TimePicker.shared.js';\n\nexport const TIME_PLACEHOLDER_CHAR = '\\u2212';\nexport const TIME_SEPARATOR = ':';\nexport const TIME_SEGMENT_LENGTH = 2;\n\nconst HOURS_FIRST_DIGIT_MAX = 2;\nconst MINUTES_AND_SECONDS_FIRST_DIGIT_MAX = 5;\nconst MINUTE_PRECISION_DIGITS_COUNT = 4;\nconst SECOND_PRECISION_DIGITS_COUNT = 6;\n\nexport const HOURS_MAX_VALUE = 23;\nexport const MINUTES_AND_SECONDS_MAX_VALUE = 59;\nexport const ZERO_PAD_CHAR = '0';\nexport const EMPTY_VALUE = '';\nexport const DIGIT_REGEXP = /\\d/;\nexport const NON_DIGIT_REGEXP = /\\D/g;\nexport const TIME_VALUE_SPLIT_REGEXP = /:/;\nexport const EMPTY_SEGMENT = TIME_PLACEHOLDER_CHAR.repeat(TIME_SEGMENT_LENGTH);\n\nexport const TIME_SEGMENTS_BY_PRECISION: Record<TimePrecision, TimeSegment[]> = {\n minute: ['hours', 'minutes'],\n second: ['hours', 'minutes', 'seconds'],\n};\n\nexport const MAX_DIGITS_BY_PRECISION: Record<TimePrecision, number> = {\n minute: MINUTE_PRECISION_DIGITS_COUNT,\n second: SECOND_PRECISION_DIGITS_COUNT,\n};\n\nexport const FIRST_DIGIT_MAX_BY_SEGMENT: Record<TimeSegment, number> = {\n hours: HOURS_FIRST_DIGIT_MAX,\n minutes: MINUTES_AND_SECONDS_FIRST_DIGIT_MAX,\n seconds: MINUTES_AND_SECONDS_FIRST_DIGIT_MAX,\n};\n\nexport const INPUT_WIDTH_BY_SIZE: Record<SizeProp, number> = {\n small: 80,\n medium: 100,\n large: 120,\n};\n\nexport const INPUT_WIDTH_WITH_SECONDS_BY_SIZE: Record<SizeProp, number> = {\n small: 106,\n medium: 128,\n large: 152,\n};\n\nexport const DEFAULT_TIME_PICKER_SLOTS: TimeSlot[] = Array.from({ length: 10 }, (_, index) => ({\n time: `${String(index + 9).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR)}${TIME_SEPARATOR}00`,\n}));\n"]}
1
+ {"version":3,"file":"TimePicker.constants.js","sourceRoot":"","sources":["../../../../components/TimePicker/helpers/TimePicker.constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,IAAM,qBAAqB,GAAG,QAAQ,CAAC;AAC9C,MAAM,CAAC,IAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,IAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,IAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,IAAM,mCAAmC,GAAG,CAAC,CAAC;AAC9C,IAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,IAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,IAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,IAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,IAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,IAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,IAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,IAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,IAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE/E,MAAM,CAAC,IAAM,0BAA0B,GAAyC;IAC9E,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,CAAC,IAAM,uBAAuB,GAAkC;IACpE,MAAM,EAAE,6BAA6B;IACrC,MAAM,EAAE,6BAA6B;CACtC,CAAC;AAEF,MAAM,CAAC,IAAM,0BAA0B,GAAgC;IACrE,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,mCAAmC;IAC5C,OAAO,EAAE,mCAAmC;CAC7C,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAA6B;IAC3D,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,IAAM,gCAAgC,GAA6B;IACxE,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,IAAM,yBAAyB,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,CAAC;IAC7F,IAAI,EAAE,UAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,SAAG,cAAc,OAAI;CAC7F,CAAC,EAF4F,CAE5F,CAAC,CAAC","sourcesContent":["import type { SizeProp } from '../../../lib/types/props.js';\nimport type { TimePrecision, TimeSegment, TimeSlot } from './TimePicker.shared.js';\n\nexport const TIME_PLACEHOLDER_CHAR = '\\u2212';\nexport const TIME_SEPARATOR = ':';\nexport const TIME_SEGMENT_LENGTH = 2;\n\nconst HOURS_FIRST_DIGIT_MAX = 2;\nconst MINUTES_AND_SECONDS_FIRST_DIGIT_MAX = 5;\nconst MINUTE_PRECISION_DIGITS_COUNT = 4;\nconst SECOND_PRECISION_DIGITS_COUNT = 6;\n\nexport const HOURS_MAX_VALUE = 23;\nexport const MINUTES_AND_SECONDS_MAX_VALUE = 59;\nexport const ZERO_PAD_CHAR = '0';\nexport const EMPTY_VALUE = '';\nexport const DIGIT_REGEXP = /\\d/;\nexport const NON_DIGIT_REGEXP = /\\D/g;\nexport const EMPTY_SEGMENT = TIME_PLACEHOLDER_CHAR.repeat(TIME_SEGMENT_LENGTH);\n\nexport const TIME_SEGMENTS_BY_PRECISION: Record<TimePrecision, TimeSegment[]> = {\n minute: ['hours', 'minutes'],\n second: ['hours', 'minutes', 'seconds'],\n};\n\nexport const MAX_DIGITS_BY_PRECISION: Record<TimePrecision, number> = {\n minute: MINUTE_PRECISION_DIGITS_COUNT,\n second: SECOND_PRECISION_DIGITS_COUNT,\n};\n\nexport const FIRST_DIGIT_MAX_BY_SEGMENT: Record<TimeSegment, number> = {\n hours: HOURS_FIRST_DIGIT_MAX,\n minutes: MINUTES_AND_SECONDS_FIRST_DIGIT_MAX,\n seconds: MINUTES_AND_SECONDS_FIRST_DIGIT_MAX,\n};\n\nexport const INPUT_WIDTH_BY_SIZE: Record<SizeProp, number> = {\n small: 80,\n medium: 100,\n large: 120,\n};\n\nexport const INPUT_WIDTH_WITH_SECONDS_BY_SIZE: Record<SizeProp, number> = {\n small: 106,\n medium: 128,\n large: 152,\n};\n\nexport const DEFAULT_TIME_PICKER_SLOTS: TimeSlot[] = Array.from({ length: 10 }, (_, index) => ({\n time: `${String(index + 9).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR)}${TIME_SEPARATOR}00`,\n}));\n"]}
@@ -38,7 +38,7 @@ export var formatDigitToTimeSegment = function (value, segment, digit, precision
38
38
  var currentDigits = shouldAppend ? getDigits(currentSegmentValue) : '';
39
39
  var firstDigitThreshold = FIRST_DIGIT_MAX_BY_SEGMENT[segment];
40
40
  if (currentDigits.length === 0) {
41
- if (Number(digit) > firstDigitThreshold) {
41
+ if (segment === 'hours' && Number(digit) > firstDigitThreshold) {
42
42
  var nextValue_1 = replaceTimeSegment(value, segment, "0".concat(digit), precision);
43
43
  return {
44
44
  isFinalPart: nextSegment === null,
@@ -65,6 +65,15 @@ export var formatDigitToTimeSegment = function (value, segment, digit, precision
65
65
  shouldBlink: true,
66
66
  };
67
67
  }
68
+ if (segment !== 'hours' && Number("".concat(currentDigits).concat(digit)) > getTimeSegmentMax(segment)) {
69
+ return {
70
+ isFinalPart: false,
71
+ isCompletedPart: false,
72
+ selectedSegment: segment,
73
+ nextValue: value,
74
+ shouldBlink: true,
75
+ };
76
+ }
68
77
  var nextValue = replaceTimeSegment(value, segment, String(Number("".concat(currentDigits).concat(digit))).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR), precision);
69
78
  return {
70
79
  isFinalPart: nextSegment === null,
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.editing.js","sourceRoot":"","sources":["../../../../components/TimePicker/helpers/TimePicker.editing.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DIGIT_REGEXP,\n EMPTY_SEGMENT,\n EMPTY_VALUE,\n FIRST_DIGIT_MAX_BY_SEGMENT,\n TIME_PLACEHOLDER_CHAR,\n TIME_SEGMENT_LENGTH,\n ZERO_PAD_CHAR,\n} from './TimePicker.constants.js';\nimport { getNextTimeSegment } from './TimePicker.selection.js';\nimport {\n getDigits,\n getTimeSegmentMax,\n hasPendingSingleDigit,\n normalizeEditableSegment,\n type TimeDigitInputResult,\n type TimePrecision,\n type TimeSegment,\n} from './TimePicker.shared.js';\nimport { getTimeSegmentValue, replaceTimeSegment } from './TimePicker.value.js';\n\nexport const clearTimeSegment = (value: string, segment: TimeSegment, precision: TimePrecision): string =>\n replaceTimeSegment(value, segment, EMPTY_SEGMENT, precision);\n\nexport const deleteTimeSegmentDigit = (value: string, segment: TimeSegment, precision: TimePrecision): string => {\n const currentSegmentValue = getTimeSegmentValue(value, segment, precision);\n\n const [first, second] = Array.from(currentSegmentValue);\n\n if (DIGIT_REGEXP.test(second ?? EMPTY_VALUE)) {\n return replaceTimeSegment(value, segment, `${first}${TIME_PLACEHOLDER_CHAR}`, precision);\n }\n\n if (DIGIT_REGEXP.test(first ?? EMPTY_VALUE)) {\n return replaceTimeSegment(value, segment, EMPTY_SEGMENT, precision);\n }\n\n return value;\n};\n\nexport const commitTimeSegmentOnLeave = (value: string, segment: TimeSegment, precision: TimePrecision): string => {\n const nextValue = normalizeEditableSegment(getTimeSegmentValue(value, segment, precision), segment);\n\n if (nextValue === EMPTY_SEGMENT) {\n return replaceTimeSegment(value, segment, EMPTY_SEGMENT, precision);\n }\n\n return replaceTimeSegment(value, segment, nextValue, precision);\n};\n\nexport const shiftTimeSegmentValue = (\n value: string,\n segment: TimeSegment,\n step: 1 | -1,\n precision: TimePrecision,\n): string => {\n const currentSegmentValue = getTimeSegmentValue(value, segment, precision);\n\n const normalizedSegmentValue = normalizeEditableSegment(currentSegmentValue, segment);\n\n const max = getTimeSegmentMax(segment);\n\n const current = normalizedSegmentValue === EMPTY_SEGMENT ? 0 : Number(normalizedSegmentValue);\n const next = (current + step + max + 1) % (max + 1);\n\n return replaceTimeSegment(value, segment, String(next).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR), precision);\n};\n\nexport const formatDigitToTimeSegment = (\n value: string,\n segment: TimeSegment,\n digit: string,\n precision: TimePrecision,\n): TimeDigitInputResult => {\n const currentSegmentValue = getTimeSegmentValue(value, segment, precision);\n\n const nextSegment = getNextTimeSegment(segment, precision);\n\n const shouldAppend = hasPendingSingleDigit(currentSegmentValue);\n\n const currentDigits = shouldAppend ? getDigits(currentSegmentValue) : '';\n const firstDigitThreshold = FIRST_DIGIT_MAX_BY_SEGMENT[segment];\n\n if (currentDigits.length === 0) {\n if (Number(digit) > firstDigitThreshold) {\n const nextValue = replaceTimeSegment(value, segment, `0${digit}`, precision);\n\n return {\n isFinalPart: nextSegment === null,\n isCompletedPart: true,\n selectedSegment: nextSegment ?? segment,\n nextValue,\n shouldBlink: false,\n };\n }\n\n return {\n isFinalPart: false,\n isCompletedPart: false,\n selectedSegment: segment,\n nextValue: replaceTimeSegment(value, segment, `${digit}${TIME_PLACEHOLDER_CHAR}`, precision),\n shouldBlink: false,\n };\n }\n\n if (segment === 'hours' && currentDigits === '2' && Number(digit) > 3) {\n return {\n isFinalPart: false,\n isCompletedPart: false,\n selectedSegment: segment,\n nextValue: value,\n shouldBlink: true,\n };\n }\n\n const nextValue = replaceTimeSegment(\n value,\n segment,\n String(Number(`${currentDigits}${digit}`)).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR),\n precision,\n );\n\n return {\n isFinalPart: nextSegment === null,\n isCompletedPart: true,\n selectedSegment: nextSegment ?? segment,\n nextValue,\n shouldBlink: false,\n };\n};\n"]}
1
+ {"version":3,"file":"TimePicker.editing.js","sourceRoot":"","sources":["../../../../components/TimePicker/helpers/TimePicker.editing.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DIGIT_REGEXP,\n EMPTY_SEGMENT,\n EMPTY_VALUE,\n FIRST_DIGIT_MAX_BY_SEGMENT,\n TIME_PLACEHOLDER_CHAR,\n TIME_SEGMENT_LENGTH,\n ZERO_PAD_CHAR,\n} from './TimePicker.constants.js';\nimport { getNextTimeSegment } from './TimePicker.selection.js';\nimport {\n getDigits,\n getTimeSegmentMax,\n hasPendingSingleDigit,\n normalizeEditableSegment,\n type TimeDigitInputResult,\n type TimePrecision,\n type TimeSegment,\n} from './TimePicker.shared.js';\nimport { getTimeSegmentValue, replaceTimeSegment } from './TimePicker.value.js';\n\nexport const clearTimeSegment = (value: string, segment: TimeSegment, precision: TimePrecision): string =>\n replaceTimeSegment(value, segment, EMPTY_SEGMENT, precision);\n\nexport const deleteTimeSegmentDigit = (value: string, segment: TimeSegment, precision: TimePrecision): string => {\n const currentSegmentValue = getTimeSegmentValue(value, segment, precision);\n\n const [first, second] = Array.from(currentSegmentValue);\n\n if (DIGIT_REGEXP.test(second ?? EMPTY_VALUE)) {\n return replaceTimeSegment(value, segment, `${first}${TIME_PLACEHOLDER_CHAR}`, precision);\n }\n\n if (DIGIT_REGEXP.test(first ?? EMPTY_VALUE)) {\n return replaceTimeSegment(value, segment, EMPTY_SEGMENT, precision);\n }\n\n return value;\n};\n\nexport const commitTimeSegmentOnLeave = (value: string, segment: TimeSegment, precision: TimePrecision): string => {\n const nextValue = normalizeEditableSegment(getTimeSegmentValue(value, segment, precision), segment);\n\n if (nextValue === EMPTY_SEGMENT) {\n return replaceTimeSegment(value, segment, EMPTY_SEGMENT, precision);\n }\n\n return replaceTimeSegment(value, segment, nextValue, precision);\n};\n\nexport const shiftTimeSegmentValue = (\n value: string,\n segment: TimeSegment,\n step: 1 | -1,\n precision: TimePrecision,\n): string => {\n const currentSegmentValue = getTimeSegmentValue(value, segment, precision);\n\n const normalizedSegmentValue = normalizeEditableSegment(currentSegmentValue, segment);\n\n const max = getTimeSegmentMax(segment);\n\n const current = normalizedSegmentValue === EMPTY_SEGMENT ? 0 : Number(normalizedSegmentValue);\n const next = (current + step + max + 1) % (max + 1);\n\n return replaceTimeSegment(value, segment, String(next).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR), precision);\n};\n\nexport const formatDigitToTimeSegment = (\n value: string,\n segment: TimeSegment,\n digit: string,\n precision: TimePrecision,\n): TimeDigitInputResult => {\n const currentSegmentValue = getTimeSegmentValue(value, segment, precision);\n\n const nextSegment = getNextTimeSegment(segment, precision);\n\n const shouldAppend = hasPendingSingleDigit(currentSegmentValue);\n\n const currentDigits = shouldAppend ? getDigits(currentSegmentValue) : '';\n const firstDigitThreshold = FIRST_DIGIT_MAX_BY_SEGMENT[segment];\n\n if (currentDigits.length === 0) {\n if (segment === 'hours' && Number(digit) > firstDigitThreshold) {\n const nextValue = replaceTimeSegment(value, segment, `0${digit}`, precision);\n\n return {\n isFinalPart: nextSegment === null,\n isCompletedPart: true,\n selectedSegment: nextSegment ?? segment,\n nextValue,\n shouldBlink: false,\n };\n }\n\n return {\n isFinalPart: false,\n isCompletedPart: false,\n selectedSegment: segment,\n nextValue: replaceTimeSegment(value, segment, `${digit}${TIME_PLACEHOLDER_CHAR}`, precision),\n shouldBlink: false,\n };\n }\n\n if (segment === 'hours' && currentDigits === '2' && Number(digit) > 3) {\n return {\n isFinalPart: false,\n isCompletedPart: false,\n selectedSegment: segment,\n nextValue: value,\n shouldBlink: true,\n };\n }\n\n if (segment !== 'hours' && Number(`${currentDigits}${digit}`) > getTimeSegmentMax(segment)) {\n return {\n isFinalPart: false,\n isCompletedPart: false,\n selectedSegment: segment,\n nextValue: value,\n shouldBlink: true,\n };\n }\n\n const nextValue = replaceTimeSegment(\n value,\n segment,\n String(Number(`${currentDigits}${digit}`)).padStart(TIME_SEGMENT_LENGTH, ZERO_PAD_CHAR),\n precision,\n );\n\n return {\n isFinalPart: nextSegment === null,\n isCompletedPart: true,\n selectedSegment: nextSegment ?? segment,\n nextValue,\n shouldBlink: false,\n };\n};\n"]}