@ryuzaki13/react-foundation-ui 1.0.1 → 1.0.2

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 (253) hide show
  1. package/dist/advanced-search/index.d.ts +3 -0
  2. package/dist/advanced-search/index.d.ts.map +1 -0
  3. package/dist/advanced-search/index.js +361 -0
  4. package/dist/advanced-search/index.js.map +1 -0
  5. package/dist/advanced-search/lib/index.d.ts +2 -0
  6. package/dist/advanced-search/lib/index.d.ts.map +1 -0
  7. package/dist/advanced-search/lib/searchParts.d.ts +3 -0
  8. package/dist/advanced-search/lib/searchParts.d.ts.map +1 -0
  9. package/dist/advanced-search/model/index.d.ts +5 -0
  10. package/dist/advanced-search/model/index.d.ts.map +1 -0
  11. package/dist/advanced-search/model/types.d.ts +55 -0
  12. package/dist/advanced-search/model/types.d.ts.map +1 -0
  13. package/dist/advanced-search/model/useAdvancedSearch.d.ts +11 -0
  14. package/dist/advanced-search/model/useAdvancedSearch.d.ts.map +1 -0
  15. package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts +6 -0
  16. package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts.map +1 -0
  17. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +13 -0
  18. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +1 -0
  19. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +13 -0
  20. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +1 -0
  21. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts +8 -0
  22. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +1 -0
  23. package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts +9 -0
  24. package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts.map +1 -0
  25. package/dist/advanced-search/ui/index.d.ts +2 -0
  26. package/dist/advanced-search/ui/index.d.ts.map +1 -0
  27. package/dist/badge/index.js +1 -1
  28. package/dist/badge/stories/Badge.stories.js +22 -22
  29. package/dist/base-table/index.js +2 -2
  30. package/dist/button/index.js +7 -7
  31. package/dist/button/stories/Button.stories.js +1 -1
  32. package/dist/check-box/index.js +1 -1
  33. package/dist/check-box/stories/CheckBox.stories.js +25 -25
  34. package/dist/chunks/{BadgeList-6qL9oNAp.js → BadgeList-DYgun2rf.js} +16 -16
  35. package/dist/chunks/{BadgeList-6qL9oNAp.js.map → BadgeList-DYgun2rf.js.map} +1 -1
  36. package/dist/chunks/{Button-BZ_b-Kin.js → Button-CCWuggdA.js} +16 -16
  37. package/dist/chunks/{Button-BZ_b-Kin.js.map → Button-CCWuggdA.js.map} +1 -1
  38. package/dist/chunks/CalendarView-DjeTJkTT.js +435 -0
  39. package/dist/chunks/{CalendarView-DjShdvRD.js.map → CalendarView-DjeTJkTT.js.map} +1 -1
  40. package/dist/chunks/CheckBox-BowNqqd3.js +48 -0
  41. package/dist/chunks/{CheckBox-CulnjNvJ.js.map → CheckBox-BowNqqd3.js.map} +1 -1
  42. package/dist/chunks/{DateInput-LSSvObtg.js → DateInput--tfofQ2x.js} +68 -68
  43. package/dist/chunks/{DateInput-LSSvObtg.js.map → DateInput--tfofQ2x.js.map} +1 -1
  44. package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js → DateRangePresetSelect-UgsfaOeM.js} +22 -22
  45. package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js.map → DateRangePresetSelect-UgsfaOeM.js.map} +1 -1
  46. package/dist/chunks/Detail-DHDMsg8q.js +80 -0
  47. package/dist/chunks/{Detail-DKolHye4.js.map → Detail-DHDMsg8q.js.map} +1 -1
  48. package/dist/chunks/{Dialog-BPS4BeWZ.js → Dialog-CFIvGxER.js} +8 -8
  49. package/dist/chunks/{Dialog-BPS4BeWZ.js.map → Dialog-CFIvGxER.js.map} +1 -1
  50. package/dist/chunks/DisclosureGroup-CfRTkl6Z.js +49 -0
  51. package/dist/chunks/{DisclosureGroup-Plk2M_Vl.js.map → DisclosureGroup-CfRTkl6Z.js.map} +1 -1
  52. package/dist/chunks/{DropZone-DPGTpHI6.js → DropZone-kJfbZU5g.js} +22 -22
  53. package/dist/chunks/{DropZone-DPGTpHI6.js.map → DropZone-kJfbZU5g.js.map} +1 -1
  54. package/dist/chunks/{DropdownMenu-Ds-trH4M.js → DropdownMenu-DQeR3y7M.js} +138 -138
  55. package/dist/chunks/{DropdownMenu-Ds-trH4M.js.map → DropdownMenu-DQeR3y7M.js.map} +1 -1
  56. package/dist/chunks/{Flex-DbBdq336.js → Flex-DUYSL5TE.js} +16 -16
  57. package/dist/chunks/{Flex-DbBdq336.js.map → Flex-DUYSL5TE.js.map} +1 -1
  58. package/dist/chunks/Input-BmjlpA09.js +227 -0
  59. package/dist/chunks/{Input-Wrew1puH.js.map → Input-BmjlpA09.js.map} +1 -1
  60. package/dist/chunks/{InputDateTime-2PCX8an8.js → InputDateTime-CxfAFe2L.js} +56 -56
  61. package/dist/chunks/{InputDateTime-2PCX8an8.js.map → InputDateTime-CxfAFe2L.js.map} +1 -1
  62. package/dist/chunks/{InputFile-Ca-bRo93.js → InputFile-CyZu__B_.js} +17 -17
  63. package/dist/chunks/{InputFile-Ca-bRo93.js.map → InputFile-CyZu__B_.js.map} +1 -1
  64. package/dist/chunks/{InputFiles-pI9rQXOI.js → InputFiles-CrTJV27R.js} +31 -31
  65. package/dist/chunks/{InputFiles-pI9rQXOI.js.map → InputFiles-CrTJV27R.js.map} +1 -1
  66. package/dist/chunks/{InputImage-B522AQzl.js → InputImage-Cw8rPYQu.js} +18 -18
  67. package/dist/chunks/{InputImage-B522AQzl.js.map → InputImage-Cw8rPYQu.js.map} +1 -1
  68. package/dist/chunks/{LabeledExpandableActionPanel-CWmOSWeS.js → LabeledExpandableActionPanel-D3kUvmFH.js} +26 -26
  69. package/dist/chunks/{LabeledExpandableActionPanel-CWmOSWeS.js.map → LabeledExpandableActionPanel-D3kUvmFH.js.map} +1 -1
  70. package/dist/chunks/Listbox-BZlp5qHz.js +81 -0
  71. package/dist/chunks/{Listbox-B6F_IKQv.js.map → Listbox-BZlp5qHz.js.map} +1 -1
  72. package/dist/chunks/{MultiSelect-CUXA8gx-.js → MultiSelect-D1XYuwH1.js} +113 -113
  73. package/dist/chunks/{MultiSelect-CUXA8gx-.js.map → MultiSelect-D1XYuwH1.js.map} +1 -1
  74. package/dist/chunks/{NotificationsHost-Bnq7xFKO.js → NotificationsHost-_icJx4xR.js} +44 -44
  75. package/dist/chunks/{NotificationsHost-Bnq7xFKO.js.map → NotificationsHost-_icJx4xR.js.map} +1 -1
  76. package/dist/chunks/{PresetRangeDateInput-B_8jsilZ.js → PresetRangeDateInput-CapirptQ.js} +11 -11
  77. package/dist/chunks/{PresetRangeDateInput-B_8jsilZ.js.map → PresetRangeDateInput-CapirptQ.js.map} +1 -1
  78. package/dist/chunks/RadioButton-D0uA0rX_.js +48 -0
  79. package/dist/chunks/{RadioButton-D5vPW4Yr.js.map → RadioButton-D0uA0rX_.js.map} +1 -1
  80. package/dist/chunks/RadioGroup-B9XjkcOy.js +121 -0
  81. package/dist/chunks/{RadioGroup-BAhN1d1X.js.map → RadioGroup-B9XjkcOy.js.map} +1 -1
  82. package/dist/chunks/{Select-CoAYWNOn.js → Select-CXeVjVKA.js} +11 -11
  83. package/dist/chunks/{Select-CoAYWNOn.js.map → Select-CXeVjVKA.js.map} +1 -1
  84. package/dist/chunks/{SerializableSelect-awBOWKTj.js → SerializableSelect-DkYeJtAO.js} +2 -2
  85. package/dist/chunks/{SerializableSelect-awBOWKTj.js.map → SerializableSelect-DkYeJtAO.js.map} +1 -1
  86. package/dist/chunks/{SingleDateTimeInput-o44Vlwdk.js → SingleDateTimeInput-BmeuVGQT.js} +78 -78
  87. package/dist/chunks/{SingleDateTimeInput-o44Vlwdk.js.map → SingleDateTimeInput-BmeuVGQT.js.map} +1 -1
  88. package/dist/chunks/{Splitter-NjNFuEq4.js → Splitter-BFkVGVRb.js} +32 -32
  89. package/dist/chunks/{Splitter-NjNFuEq4.js.map → Splitter-BFkVGVRb.js.map} +1 -1
  90. package/dist/chunks/StateSelect-1jH3uLz9.js +78 -0
  91. package/dist/chunks/{StateSelect-abZq176J.js.map → StateSelect-1jH3uLz9.js.map} +1 -1
  92. package/dist/chunks/{Switch-DHMnZVmN.js → Switch-B57Qmy1z.js} +19 -19
  93. package/dist/chunks/{Switch-DHMnZVmN.js.map → Switch-B57Qmy1z.js.map} +1 -1
  94. package/dist/chunks/{TextEditorLexicalClient-Dt4eaPA3.js → TextEditorLexicalClient-DRhAswpP.js} +204 -204
  95. package/dist/chunks/{TextEditorLexicalClient-Dt4eaPA3.js.map → TextEditorLexicalClient-DRhAswpP.js.map} +1 -1
  96. package/dist/chunks/{Textarea-DOVrPH4I.js → Textarea-C9UdUueF.js} +2 -2
  97. package/dist/chunks/{Textarea-DOVrPH4I.js.map → Textarea-C9UdUueF.js.map} +1 -1
  98. package/dist/chunks/{TimePanel-_kF2RtHk.js → TimePanel-b4saqoUY.js} +27 -27
  99. package/dist/chunks/{TimePanel-_kF2RtHk.js.map → TimePanel-b4saqoUY.js.map} +1 -1
  100. package/dist/chunks/{Toggle-C_fE-bkM.js → Toggle-DVqOQXmt.js} +18 -18
  101. package/dist/chunks/{Toggle-C_fE-bkM.js.map → Toggle-DVqOQXmt.js.map} +1 -1
  102. package/dist/chunks/{TreeMultiSelect-C76RYavo.js → TreeMultiSelect-CfQhlfnC.js} +6 -6
  103. package/dist/chunks/{TreeMultiSelect-C76RYavo.js.map → TreeMultiSelect-CfQhlfnC.js.map} +1 -1
  104. package/dist/chunks/{TreePickerBase-qNHIWbYL.js → TreePickerBase-BBUOWsSu.js} +49 -49
  105. package/dist/chunks/{TreePickerBase-qNHIWbYL.js.map → TreePickerBase-BBUOWsSu.js.map} +1 -1
  106. package/dist/chunks/{TreeSelect-LEhNdPCX.js → TreeSelect-2wUXs90E.js} +6 -6
  107. package/dist/chunks/{TreeSelect-LEhNdPCX.js.map → TreeSelect-2wUXs90E.js.map} +1 -1
  108. package/dist/chunks/base-table-CoQlKABk.js +514 -0
  109. package/dist/chunks/{base-table-ij2guVMB.js.map → base-table-CoQlKABk.js.map} +1 -1
  110. package/dist/chunks/{floating-arrow-CdRV69sg.js → floating-arrow-BE-z4QkE.js} +7 -7
  111. package/dist/chunks/{floating-arrow-CdRV69sg.js.map → floating-arrow-BE-z4QkE.js.map} +1 -1
  112. package/dist/chunks/input-search-Dw4rnJBq.js +30 -0
  113. package/dist/chunks/input-search-Dw4rnJBq.js.map +1 -0
  114. package/dist/chunks/{layout-picker-CzZ8Xzkk.js → layout-picker-MWaImn3L.js} +34 -34
  115. package/dist/chunks/{layout-picker-CzZ8Xzkk.js.map → layout-picker-MWaImn3L.js.map} +1 -1
  116. package/dist/chunks/{misc-Bj0y3ERC.js → misc-DoqZBMof.js} +110 -110
  117. package/dist/chunks/{misc-Bj0y3ERC.js.map → misc-DoqZBMof.js.map} +1 -1
  118. package/dist/chunks/{modal-B4ivQb2h.js → modal-B3HY3laL.js} +40 -40
  119. package/dist/chunks/{modal-B4ivQb2h.js.map → modal-B3HY3laL.js.map} +1 -1
  120. package/dist/chunks/multi-select-BzYIviCU.js +1305 -0
  121. package/dist/chunks/multi-select-BzYIviCU.js.map +1 -0
  122. package/dist/chunks/{picker-gIUs0nE_.js → picker-Dg55Ss-B.js} +74 -74
  123. package/dist/chunks/{picker-gIUs0nE_.js.map → picker-Dg55Ss-B.js.map} +1 -1
  124. package/dist/chunks/{popover-C79P5bm2.js → popover-xJJqy1v6.js} +52 -52
  125. package/dist/chunks/{popover-C79P5bm2.js.map → popover-xJJqy1v6.js.map} +1 -1
  126. package/dist/chunks/{separator-CIqnk2z9.js → separator-B72Aq-6a.js} +2 -2
  127. package/dist/chunks/{separator-CIqnk2z9.js.map → separator-B72Aq-6a.js.map} +1 -1
  128. package/dist/chunks/{slider-CigVo4Ju.js → slider-CFKsfxFp.js} +83 -83
  129. package/dist/chunks/{slider-CigVo4Ju.js.map → slider-CFKsfxFp.js.map} +1 -1
  130. package/dist/chunks/sortable-DcTIAbjD.js +185 -0
  131. package/dist/chunks/{sortable-BZqnZ_LA.js.map → sortable-DcTIAbjD.js.map} +1 -1
  132. package/dist/chunks/{table-CK-CM2zD.js → table-Dc3AqMzP.js} +21 -21
  133. package/dist/chunks/{table-CK-CM2zD.js.map → table-Dc3AqMzP.js.map} +1 -1
  134. package/dist/chunks/{table-column-interactions-DPyJDD7P.js → table-column-interactions-6RGjmiI5.js} +24 -24
  135. package/dist/chunks/{table-column-interactions-DPyJDD7P.js.map → table-column-interactions-6RGjmiI5.js.map} +1 -1
  136. package/dist/chunks/{tabs-D5ikIIng.js → tabs-DlnVVMJl.js} +96 -96
  137. package/dist/chunks/{tabs-D5ikIIng.js.map → tabs-DlnVVMJl.js.map} +1 -1
  138. package/dist/chunks/{toolbar-C-Ziw_Uh.js → toolbar-BCZNdRXM.js} +2 -2
  139. package/dist/chunks/{toolbar-C-Ziw_Uh.js.map → toolbar-BCZNdRXM.js.map} +1 -1
  140. package/dist/chunks/{wheel-picker-DUHGy7wE.js → wheel-picker-FS58cRsQ.js} +23 -23
  141. package/dist/chunks/{wheel-picker-DUHGy7wE.js.map → wheel-picker-FS58cRsQ.js.map} +1 -1
  142. package/dist/context-menu/index.js +1 -1
  143. package/dist/context-menu/stories/ContextMenu.stories.js +45 -45
  144. package/dist/date-input/index.js +2 -2
  145. package/dist/date-input/stories/DateInput.stories.js +2 -2
  146. package/dist/date-range-preset-select/index.js +1 -1
  147. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +8 -8
  148. package/dist/date-time-input/index.js +1 -1
  149. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +38 -38
  150. package/dist/date-time-input/stories/TimePanel.stories.js +9 -9
  151. package/dist/detail/index.js +1 -1
  152. package/dist/detail/stories/Detail.stories.js +1 -1
  153. package/dist/dialog/index.js +1 -1
  154. package/dist/dialog/stories/Dialog.stories.js +16 -16
  155. package/dist/disclosure/index.js +1 -1
  156. package/dist/disclosure/stories/Disclosure.stories.js +1 -1
  157. package/dist/drop-zone/index.js +1 -1
  158. package/dist/drop-zone/stories/DropZone.stories.js +14 -14
  159. package/dist/errors/index.js +47 -47
  160. package/dist/expandable-action-panel/index.js +1 -1
  161. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +28 -28
  162. package/dist/flex/index.js +2 -2
  163. package/dist/flex/stories/Flex.stories.js +2 -2
  164. package/dist/floating-arrow/index.js +1 -1
  165. package/dist/fullscreen-portal/index.js +6 -6
  166. package/dist/grid/stories/Grid.stories.js +1 -1
  167. package/dist/image/index.js +123 -123
  168. package/dist/input/index.js +1 -1
  169. package/dist/input/stories/Input.stories.js +11 -11
  170. package/dist/input-date-time/index.js +1 -1
  171. package/dist/input-date-time/stories/InputDateTime.stories.js +11 -11
  172. package/dist/input-file/index.js +1 -1
  173. package/dist/input-file/stories/InputFile.stories.js +9 -9
  174. package/dist/input-files/index.js +1 -1
  175. package/dist/input-files/stories/InputFiles.stories.js +9 -9
  176. package/dist/input-image/index.js +1 -1
  177. package/dist/input-image/stories/InputImage.stories.js +15 -15
  178. package/dist/input-search/index.js +2 -30
  179. package/dist/layout-picker/index.js +1 -1
  180. package/dist/layout-picker/stories/LayoutPicker.stories.js +52 -52
  181. package/dist/list/index.js +27 -27
  182. package/dist/listbox/index.js +1 -1
  183. package/dist/listbox/stories/Listbox.stories.js +19 -19
  184. package/dist/misc/index.js +1 -1
  185. package/dist/modal/index.js +1 -1
  186. package/dist/modal/stories/Modal.stories.js +55 -55
  187. package/dist/multi-select/index.js +3 -1141
  188. package/dist/multi-select/ui/stories/MultiSelect.stories.js +17 -17
  189. package/dist/notifications/index.js +1 -1
  190. package/dist/notifications/ui/stories/NotificationsHost.stories.js +59 -59
  191. package/dist/period-select/index.js +20 -20
  192. package/dist/period-select/stories/PeriodSelect.stories.js +17 -17
  193. package/dist/picker/index.js +1 -1
  194. package/dist/popover/index.js +1 -1
  195. package/dist/popover/stories/Popover.stories.js +16 -16
  196. package/dist/preset-range-date-input/index.js +1 -1
  197. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +9 -9
  198. package/dist/preset-select/index.js +1 -1
  199. package/dist/radio-button/index.js +1 -1
  200. package/dist/radio-button/stories/RadioButton.stories.js +11 -11
  201. package/dist/radio-group/index.js +1 -1
  202. package/dist/radio-group/stories/RadioGroup.stories.js +21 -21
  203. package/dist/select/index.js +2 -2
  204. package/dist/select/stories/Select.stories.js +23 -23
  205. package/dist/select/stories/SerializableSelect.stories.js +22 -22
  206. package/dist/separator/index.js +1 -1
  207. package/dist/simple-table/index.js +5 -5
  208. package/dist/slider/index.js +1 -1
  209. package/dist/slider/stories/Slider.stories.js +32 -32
  210. package/dist/slider/stories/SliderInput.stories.js +39 -39
  211. package/dist/sortable/index.js +1 -1
  212. package/dist/sortable/stories/Sortable.stories.js +23 -23
  213. package/dist/splitter/index.js +1 -1
  214. package/dist/splitter/stories/Splitter.stories.js +1 -1
  215. package/dist/state-select/index.js +1 -1
  216. package/dist/state-select/stories/StateSelect.stories.js +23 -23
  217. package/dist/styles.css +1 -1
  218. package/dist/switch/index.js +1 -1
  219. package/dist/switch/stories/Switch.stories.js +11 -11
  220. package/dist/table/index.js +1 -1
  221. package/dist/table-column-interactions/index.js +1 -1
  222. package/dist/table-sorting/index.js +1 -1
  223. package/dist/tabs/index.js +1 -1
  224. package/dist/tabs/stories/Tabs.stories.js +39 -39
  225. package/dist/text/index.js +20 -20
  226. package/dist/text-editor/index.js +3 -3
  227. package/dist/text-editor/toolbar/index.js +1 -1
  228. package/dist/textarea/index.js +1 -1
  229. package/dist/textarea/stories/Textarea.stories.js +8 -8
  230. package/dist/three-scene/index.js +7 -7
  231. package/dist/toggle/index.js +1 -1
  232. package/dist/toggle/stories/Toggle.stories.js +7 -7
  233. package/dist/toolbar/index.js +16 -16
  234. package/dist/tree/index.js +24 -24
  235. package/dist/tree-select/index.js +2 -2
  236. package/dist/tree-select/stories/TreeMultiSelect.stories.js +9 -9
  237. package/dist/tree-select/stories/TreeSelect.stories.js +9 -9
  238. package/dist/tree-table/index.js +32 -32
  239. package/dist/wheel-picker/index.js +1 -1
  240. package/package.json +11 -1
  241. package/dist/chunks/CalendarView-DjShdvRD.js +0 -435
  242. package/dist/chunks/CheckBox-CulnjNvJ.js +0 -48
  243. package/dist/chunks/Detail-DKolHye4.js +0 -80
  244. package/dist/chunks/DisclosureGroup-Plk2M_Vl.js +0 -49
  245. package/dist/chunks/Input-Wrew1puH.js +0 -227
  246. package/dist/chunks/Listbox-B6F_IKQv.js +0 -81
  247. package/dist/chunks/RadioButton-D5vPW4Yr.js +0 -48
  248. package/dist/chunks/RadioGroup-BAhN1d1X.js +0 -121
  249. package/dist/chunks/StateSelect-abZq176J.js +0 -78
  250. package/dist/chunks/base-table-ij2guVMB.js +0 -514
  251. package/dist/chunks/sortable-BZqnZ_LA.js +0 -185
  252. package/dist/input-search/index.js.map +0 -1
  253. package/dist/multi-select/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TimePanel-_kF2RtHk.js","names":[],"sources":["../../src/date-time-input/lib/dateTimeValue.ts","../../src/date-time-input/lib/timePanelState.ts","../../src/date-time-input/ui/TimePanel.module.scss","../../src/date-time-input/ui/TimePanel.tsx"],"sourcesContent":["import { dateToIndexedSegmentValues, indexedSegmentsToDate, parseDateSegmentMask } from \"@ryuzaki13/react-foundation-lib/date-segments\";\nimport {\n\tcreateCalendarDate,\n\ttype DateFormatPreset,\n\tformatDate,\n\tparseDate,\n\tparseDateByPattern\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nexport type DateTimeInputMode = \"date-time\" | \"time\";\n\n/**\n * Фиксированный формат нового поля даты-времени.\n */\nexport const DATE_TIME_INPUT_FORMAT = \"dd.MM.yyyy HH:mm\";\nexport const TIME_INPUT_FORMAT = \"HH:mm\";\n\nconst DATE_TIME_INPUT_PRESET_NAME = \"__date_time_input__\";\nconst TIME_INPUT_PRESET_NAME = \"__time_input__\";\nconst TIME_ONLY_BASE_YEAR = 1970;\nconst TIME_ONLY_BASE_MONTH = 0;\nconst TIME_ONLY_BASE_DAY = 1;\nconst TIME_SEGMENTS = parseDateSegmentMask(TIME_INPUT_FORMAT);\n\n/**\n * Создаёт техническую базовую дату для режима выбора только времени.\n */\nexport function createTimeOnlyBaseDate(hours = 0, minutes = 0): Date {\n\treturn createCalendarDate(TIME_ONLY_BASE_YEAR, TIME_ONLY_BASE_MONTH, TIME_ONLY_BASE_DAY, hours, minutes, 0, 0);\n}\n\n/**\n * Возвращает формат пользовательского ввода для выбранного режима.\n */\nexport function getDateTimeInputFormat(mode: DateTimeInputMode = \"date-time\"): string {\n\treturn mode === \"time\" ? TIME_INPUT_FORMAT : DATE_TIME_INPUT_FORMAT;\n}\n\n/**\n * Создаёт временную предустановку форматирования для нового поля даты-времени.\n */\nexport function createDateTimeInputPreset(mode: DateTimeInputMode = \"date-time\"): DateFormatPreset {\n\treturn {\n\t\tname: mode === \"time\" ? TIME_INPUT_PRESET_NAME : DATE_TIME_INPUT_PRESET_NAME,\n\t\tpattern: getDateTimeInputFormat(mode),\n\t\tlocale: \"ru-RU\",\n\t\tinvalidFallback: \"\"\n\t};\n}\n\n/**\n * Нормализует внешнее значение к валидному Date без timezone-сдвига.\n */\nexport function normalizeDateTimeValue(value: Date | null | undefined, mode: DateTimeInputMode = \"date-time\"): Date | null {\n\tif (value == null) return null;\n\n\tconst parsedValue = parseDate(value);\n\tif (!parsedValue) return null;\n\n\tif (mode === \"time\") {\n\t\treturn createTimeOnlyBaseDate(parsedValue.getHours(), parsedValue.getMinutes());\n\t}\n\n\treturn parsedValue;\n}\n\n/**\n * Форматирует значение поля даты-времени в фиксированный пользовательский формат.\n */\nexport function formatDateTimeInputValue(value: Date | null | undefined, mode: DateTimeInputMode = \"date-time\"): string {\n\tif (!value) return \"\";\n\treturn formatDate(normalizeDateTimeValue(value, mode), createDateTimeInputPreset(mode));\n}\n\n/**\n * Строго парсит строку пользовательского ввода в Date.\n */\nexport function parseDateTimeInputValue(value: string, mode: DateTimeInputMode = \"date-time\"): Date | null {\n\tif (mode === \"time\") {\n\t\tconst match = /^\\d{2}:\\d{2}$/.exec(value.trim());\n\t\tif (!match) return null;\n\n\t\tconst values = dateToIndexedSegmentValues(createTimeOnlyBaseDate(), TIME_SEGMENTS);\n\t\tvalues.set(0, value.slice(0, 2));\n\t\tvalues.set(2, value.slice(3, 5));\n\n\t\treturn indexedSegmentsToDate(TIME_SEGMENTS, values, {\n\t\t\tdefaultDate: createTimeOnlyBaseDate()\n\t\t});\n\t}\n\n\tconst parsed = parseDateByPattern(value, DATE_TIME_INPUT_FORMAT);\n\tif (!parsed || parsed.kind !== \"date-time\") return null;\n\n\treturn parsed.date;\n}\n\n/**\n * Проверяет, попадает ли дата-время в допустимый диапазон.\n */\nexport function isDateTimeWithinRange(value: Date, minDate?: Date, maxDate?: Date, mode: DateTimeInputMode = \"date-time\"): boolean {\n\tconst normalizedValue = normalizeDateTimeValue(value, mode);\n\tif (!normalizedValue) return false;\n\n\tif (mode === \"time\") {\n\t\tconst valueMinutes = normalizedValue.getHours() * 60 + normalizedValue.getMinutes();\n\t\tconst normalizedMinDate = minDate ? normalizeDateTimeValue(minDate, \"time\") : null;\n\t\tconst normalizedMaxDate = maxDate ? normalizeDateTimeValue(maxDate, \"time\") : null;\n\n\t\tif (normalizedMinDate) {\n\t\t\tconst minMinutes = normalizedMinDate.getHours() * 60 + normalizedMinDate.getMinutes();\n\t\t\tif (valueMinutes < minMinutes) return false;\n\t\t}\n\n\t\tif (normalizedMaxDate) {\n\t\t\tconst maxMinutes = normalizedMaxDate.getHours() * 60 + normalizedMaxDate.getMinutes();\n\t\t\tif (valueMinutes > maxMinutes) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tif (minDate && normalizedValue < minDate) return false;\n\tif (maxDate && normalizedValue > maxDate) return false;\n\n\treturn true;\n}\n\n/**\n * Переносит дату выбранного дня, сохраняя часы и минуты базового значения.\n */\nexport function mergeDateWithTime(datePart: Date, timeSource?: Date | null): Date {\n\tconst source = normalizeDateTimeValue(timeSource);\n\tconst hours = source?.getHours() ?? 0;\n\tconst minutes = source?.getMinutes() ?? 0;\n\n\treturn createCalendarDate(datePart.getFullYear(), datePart.getMonth(), datePart.getDate(), hours, minutes, 0, 0);\n}\n\n/**\n * Переносит часы и минуты в базовую календарную дату.\n */\nexport function mergeTimeIntoDate(baseDate: Date, hours: number, minutes: number, mode: DateTimeInputMode = \"date-time\"): Date {\n\tif (mode === \"time\") {\n\t\treturn createTimeOnlyBaseDate(hours, minutes);\n\t}\n\n\treturn createCalendarDate(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate(), hours, minutes, 0, 0);\n}\n\n/**\n * Создаёт рабочую дату для picker-сценариев без выбранного значения.\n */\nexport function resolvePickerBaseDate(value: Date | null | undefined, fallbackDate: Date, mode: DateTimeInputMode = \"date-time\"): Date {\n\tif (mode === \"time\") {\n\t\treturn normalizeDateTimeValue(value, \"time\") ?? createTimeOnlyBaseDate();\n\t}\n\n\treturn normalizeDateTimeValue(value, mode) ?? fallbackDate;\n}\n\n/**\n * Возвращает границы часов и минут для выбранного календарного дня.\n */\nexport function getTimeRangeForDay(\n\tday: Date,\n\tminDate?: Date,\n\tmaxDate?: Date,\n\tmode: DateTimeInputMode = \"date-time\"\n): {\n\tdisabled: boolean;\n\tminHour: number;\n\tmaxHour: number;\n\tminMinuteByHour: (hour: number) => number;\n\tmaxMinuteByHour: (hour: number) => number;\n} {\n\tconst normalizedDay = normalizeDateTimeValue(day, mode) ?? day;\n\tconst normalizedMinDate = minDate ? normalizeDateTimeValue(minDate, mode) : null;\n\tconst normalizedMaxDate = maxDate ? normalizeDateTimeValue(maxDate, mode) : null;\n\tconst isSameMinDay =\n\t\t!!normalizedMinDate &&\n\t\tnormalizedDay.getFullYear() === normalizedMinDate.getFullYear() &&\n\t\tnormalizedDay.getMonth() === normalizedMinDate.getMonth() &&\n\t\tnormalizedDay.getDate() === normalizedMinDate.getDate();\n\tconst isSameMaxDay =\n\t\t!!normalizedMaxDate &&\n\t\tnormalizedDay.getFullYear() === normalizedMaxDate.getFullYear() &&\n\t\tnormalizedDay.getMonth() === normalizedMaxDate.getMonth() &&\n\t\tnormalizedDay.getDate() === normalizedMaxDate.getDate();\n\n\tconst minHour = isSameMinDay ? normalizedMinDate!.getHours() : 0;\n\tconst maxHour = isSameMaxDay ? normalizedMaxDate!.getHours() : 23;\n\tconst minMinuteAtBoundary = isSameMinDay && minHour === maxHour ? normalizedMinDate!.getMinutes() : 0;\n\tconst maxMinuteAtBoundary = isSameMaxDay && minHour === maxHour ? normalizedMaxDate!.getMinutes() : 59;\n\tconst disabled = minHour > maxHour || (minHour === maxHour && minMinuteAtBoundary > maxMinuteAtBoundary);\n\n\treturn {\n\t\tdisabled,\n\t\tminHour,\n\t\tmaxHour,\n\t\tminMinuteByHour: (hour) => {\n\t\t\tif (disabled) return 0;\n\t\t\treturn isSameMinDay && hour === minHour ? normalizedMinDate!.getMinutes() : 0;\n\t\t},\n\t\tmaxMinuteByHour: (hour) => {\n\t\t\tif (disabled) return 59;\n\t\t\treturn isSameMaxDay && hour === maxHour ? normalizedMaxDate!.getMinutes() : 59;\n\t\t}\n\t};\n}\n\n/**\n * Ограничивает часы и минуты допустимым диапазоном текущего дня.\n */\nexport function clampTimeForDay(\n\tday: Date,\n\thours: number,\n\tminutes: number,\n\tminDate?: Date,\n\tmaxDate?: Date,\n\tmode: DateTimeInputMode = \"date-time\"\n): { hours: number; minutes: number } {\n\tconst range = getTimeRangeForDay(day, minDate, maxDate, mode);\n\tif (range.disabled) {\n\t\treturn { hours: 0, minutes: 0 };\n\t}\n\n\tconst clampedHour = Math.min(Math.max(hours, range.minHour), range.maxHour);\n\tconst minMinute = range.minMinuteByHour(clampedHour);\n\tconst maxMinute = range.maxMinuteByHour(clampedHour);\n\tconst clampedMinute = Math.min(Math.max(minutes, minMinute), maxMinute);\n\n\treturn {\n\t\thours: clampedHour,\n\t\tminutes: clampedMinute\n\t};\n}\n","import { getTimeRangeForDay } from \"./dateTimeValue\";\n\nimport type { DateTimeInputMode } from \"./dateTimeValue\";\n\n/**\n * Состояние и доступные значения для панели выбора времени.\n */\nexport interface TimePanelState {\n\tdisabled: boolean;\n\tselectedHour: number;\n\tselectedMinute: number;\n\thours: number[];\n\tminutes: number[];\n}\n\n/**\n * Собирает состояние часов и минут для панели выбора времени.\n */\nexport function buildTimePanelState(value: Date, minDate?: Date, maxDate?: Date, mode: DateTimeInputMode = \"date-time\"): TimePanelState {\n\tconst timeRange = getTimeRangeForDay(value, minDate, maxDate, mode);\n\tconst selectedHour = value.getHours();\n\tconst selectedMinute = value.getMinutes();\n\tconst minuteMin = timeRange.minMinuteByHour(selectedHour);\n\tconst minuteMax = timeRange.maxMinuteByHour(selectedHour);\n\n\tif (timeRange.disabled) {\n\t\treturn {\n\t\t\tdisabled: true,\n\t\t\tselectedHour,\n\t\t\tselectedMinute,\n\t\t\thours: [],\n\t\t\tminutes: []\n\t\t};\n\t}\n\n\treturn {\n\t\tdisabled: false,\n\t\tselectedHour,\n\t\tselectedMinute,\n\t\thours: Array.from({ length: timeRange.maxHour - timeRange.minHour + 1 }, (_, index) => timeRange.minHour + index),\n\t\tminutes: Array.from({ length: minuteMax - minuteMin + 1 }, (_, index) => minuteMin + index)\n\t};\n}\n",".timePanel {\n\theight: 100%;\n}\n\n.hint {\n\tfont-size: var(--font-size-xs);\n\tcolor: var(--content-1);\n}\n\n.fields {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\tgap: var(--space-sm);\n\tmin-height: 10em;\n\theight: 100%;\n}\n\n.field {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tgap: var(--space-xs);\n\tmin-height: 0;\n}\n\n.label {\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--content-1);\n}\n\n.wheel {\n\tmin-height: 10em;\n}\n","import { WheelPicker } from \"../../wheel-picker\";\nimport { buildTimePanelState } from \"../lib/timePanelState\";\n\nimport styles from \"./TimePanel.module.scss\";\n\nimport type { DateTimeInputMode } from \"../lib\";\n\n/**\n * Пропсы панели выбора времени.\n */\nexport interface TimePanelProps {\n\tvalue: Date;\n\tdisabled?: boolean;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tmode?: DateTimeInputMode;\n\tonChange: (hours: number, minutes: number) => void;\n}\n\n/**\n * Переиспользуемая панель выбора времени поверх internal wheel-picker.\n */\nexport function TimePanel({ value, disabled, minDate, maxDate, mode = \"date-time\", onChange }: TimePanelProps) {\n\tconst state = buildTimePanelState(value, minDate, maxDate, mode);\n\n\t/**\n\t * Форматирует двузначное значение времени.\n\t */\n\tconst formatValue = (timePart: number) => String(timePart).padStart(2, \"0\");\n\n\tif (state.disabled) {\n\t\treturn (\n\t\t\t<div className={styles.timePanel}>\n\t\t\t\t<p className={styles.hint}>Для выбранного дня нет доступного времени в заданном диапазоне.</p>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={styles.timePanel}>\n\t\t\t<div className={styles.fields}>\n\t\t\t\t<label className={styles.field}>\n\t\t\t\t\t<span className={styles.label}>Часы</span>\n\t\t\t\t\t<WheelPicker\n\t\t\t\t\t\tclassName={styles.wheel}\n\t\t\t\t\t\titems={state.hours}\n\t\t\t\t\t\tvalue={state.selectedHour}\n\t\t\t\t\t\tonChange={(hours) => onChange(hours, state.selectedMinute)}\n\t\t\t\t\t\tariaLabel=\"Выбор часов\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tformatItem={formatValue}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\n\t\t\t\t<label className={styles.field}>\n\t\t\t\t\t<span className={styles.label}>Минуты</span>\n\t\t\t\t\t<WheelPicker\n\t\t\t\t\t\tclassName={styles.wheel}\n\t\t\t\t\t\titems={state.minutes}\n\t\t\t\t\t\tvalue={state.selectedMinute}\n\t\t\t\t\t\tonChange={(minutes) => onChange(state.selectedHour, minutes)}\n\t\t\t\t\t\tariaLabel=\"Выбор минут\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tformatItem={formatValue}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TimePanel-b4saqoUY.js","names":[],"sources":["../../src/date-time-input/lib/dateTimeValue.ts","../../src/date-time-input/lib/timePanelState.ts","../../src/date-time-input/ui/TimePanel.module.scss","../../src/date-time-input/ui/TimePanel.tsx"],"sourcesContent":["import { dateToIndexedSegmentValues, indexedSegmentsToDate, parseDateSegmentMask } from \"@ryuzaki13/react-foundation-lib/date-segments\";\nimport {\n\tcreateCalendarDate,\n\ttype DateFormatPreset,\n\tformatDate,\n\tparseDate,\n\tparseDateByPattern\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nexport type DateTimeInputMode = \"date-time\" | \"time\";\n\n/**\n * Фиксированный формат нового поля даты-времени.\n */\nexport const DATE_TIME_INPUT_FORMAT = \"dd.MM.yyyy HH:mm\";\nexport const TIME_INPUT_FORMAT = \"HH:mm\";\n\nconst DATE_TIME_INPUT_PRESET_NAME = \"__date_time_input__\";\nconst TIME_INPUT_PRESET_NAME = \"__time_input__\";\nconst TIME_ONLY_BASE_YEAR = 1970;\nconst TIME_ONLY_BASE_MONTH = 0;\nconst TIME_ONLY_BASE_DAY = 1;\nconst TIME_SEGMENTS = parseDateSegmentMask(TIME_INPUT_FORMAT);\n\n/**\n * Создаёт техническую базовую дату для режима выбора только времени.\n */\nexport function createTimeOnlyBaseDate(hours = 0, minutes = 0): Date {\n\treturn createCalendarDate(TIME_ONLY_BASE_YEAR, TIME_ONLY_BASE_MONTH, TIME_ONLY_BASE_DAY, hours, minutes, 0, 0);\n}\n\n/**\n * Возвращает формат пользовательского ввода для выбранного режима.\n */\nexport function getDateTimeInputFormat(mode: DateTimeInputMode = \"date-time\"): string {\n\treturn mode === \"time\" ? TIME_INPUT_FORMAT : DATE_TIME_INPUT_FORMAT;\n}\n\n/**\n * Создаёт временную предустановку форматирования для нового поля даты-времени.\n */\nexport function createDateTimeInputPreset(mode: DateTimeInputMode = \"date-time\"): DateFormatPreset {\n\treturn {\n\t\tname: mode === \"time\" ? TIME_INPUT_PRESET_NAME : DATE_TIME_INPUT_PRESET_NAME,\n\t\tpattern: getDateTimeInputFormat(mode),\n\t\tlocale: \"ru-RU\",\n\t\tinvalidFallback: \"\"\n\t};\n}\n\n/**\n * Нормализует внешнее значение к валидному Date без timezone-сдвига.\n */\nexport function normalizeDateTimeValue(value: Date | null | undefined, mode: DateTimeInputMode = \"date-time\"): Date | null {\n\tif (value == null) return null;\n\n\tconst parsedValue = parseDate(value);\n\tif (!parsedValue) return null;\n\n\tif (mode === \"time\") {\n\t\treturn createTimeOnlyBaseDate(parsedValue.getHours(), parsedValue.getMinutes());\n\t}\n\n\treturn parsedValue;\n}\n\n/**\n * Форматирует значение поля даты-времени в фиксированный пользовательский формат.\n */\nexport function formatDateTimeInputValue(value: Date | null | undefined, mode: DateTimeInputMode = \"date-time\"): string {\n\tif (!value) return \"\";\n\treturn formatDate(normalizeDateTimeValue(value, mode), createDateTimeInputPreset(mode));\n}\n\n/**\n * Строго парсит строку пользовательского ввода в Date.\n */\nexport function parseDateTimeInputValue(value: string, mode: DateTimeInputMode = \"date-time\"): Date | null {\n\tif (mode === \"time\") {\n\t\tconst match = /^\\d{2}:\\d{2}$/.exec(value.trim());\n\t\tif (!match) return null;\n\n\t\tconst values = dateToIndexedSegmentValues(createTimeOnlyBaseDate(), TIME_SEGMENTS);\n\t\tvalues.set(0, value.slice(0, 2));\n\t\tvalues.set(2, value.slice(3, 5));\n\n\t\treturn indexedSegmentsToDate(TIME_SEGMENTS, values, {\n\t\t\tdefaultDate: createTimeOnlyBaseDate()\n\t\t});\n\t}\n\n\tconst parsed = parseDateByPattern(value, DATE_TIME_INPUT_FORMAT);\n\tif (!parsed || parsed.kind !== \"date-time\") return null;\n\n\treturn parsed.date;\n}\n\n/**\n * Проверяет, попадает ли дата-время в допустимый диапазон.\n */\nexport function isDateTimeWithinRange(value: Date, minDate?: Date, maxDate?: Date, mode: DateTimeInputMode = \"date-time\"): boolean {\n\tconst normalizedValue = normalizeDateTimeValue(value, mode);\n\tif (!normalizedValue) return false;\n\n\tif (mode === \"time\") {\n\t\tconst valueMinutes = normalizedValue.getHours() * 60 + normalizedValue.getMinutes();\n\t\tconst normalizedMinDate = minDate ? normalizeDateTimeValue(minDate, \"time\") : null;\n\t\tconst normalizedMaxDate = maxDate ? normalizeDateTimeValue(maxDate, \"time\") : null;\n\n\t\tif (normalizedMinDate) {\n\t\t\tconst minMinutes = normalizedMinDate.getHours() * 60 + normalizedMinDate.getMinutes();\n\t\t\tif (valueMinutes < minMinutes) return false;\n\t\t}\n\n\t\tif (normalizedMaxDate) {\n\t\t\tconst maxMinutes = normalizedMaxDate.getHours() * 60 + normalizedMaxDate.getMinutes();\n\t\t\tif (valueMinutes > maxMinutes) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tif (minDate && normalizedValue < minDate) return false;\n\tif (maxDate && normalizedValue > maxDate) return false;\n\n\treturn true;\n}\n\n/**\n * Переносит дату выбранного дня, сохраняя часы и минуты базового значения.\n */\nexport function mergeDateWithTime(datePart: Date, timeSource?: Date | null): Date {\n\tconst source = normalizeDateTimeValue(timeSource);\n\tconst hours = source?.getHours() ?? 0;\n\tconst minutes = source?.getMinutes() ?? 0;\n\n\treturn createCalendarDate(datePart.getFullYear(), datePart.getMonth(), datePart.getDate(), hours, minutes, 0, 0);\n}\n\n/**\n * Переносит часы и минуты в базовую календарную дату.\n */\nexport function mergeTimeIntoDate(baseDate: Date, hours: number, minutes: number, mode: DateTimeInputMode = \"date-time\"): Date {\n\tif (mode === \"time\") {\n\t\treturn createTimeOnlyBaseDate(hours, minutes);\n\t}\n\n\treturn createCalendarDate(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate(), hours, minutes, 0, 0);\n}\n\n/**\n * Создаёт рабочую дату для picker-сценариев без выбранного значения.\n */\nexport function resolvePickerBaseDate(value: Date | null | undefined, fallbackDate: Date, mode: DateTimeInputMode = \"date-time\"): Date {\n\tif (mode === \"time\") {\n\t\treturn normalizeDateTimeValue(value, \"time\") ?? createTimeOnlyBaseDate();\n\t}\n\n\treturn normalizeDateTimeValue(value, mode) ?? fallbackDate;\n}\n\n/**\n * Возвращает границы часов и минут для выбранного календарного дня.\n */\nexport function getTimeRangeForDay(\n\tday: Date,\n\tminDate?: Date,\n\tmaxDate?: Date,\n\tmode: DateTimeInputMode = \"date-time\"\n): {\n\tdisabled: boolean;\n\tminHour: number;\n\tmaxHour: number;\n\tminMinuteByHour: (hour: number) => number;\n\tmaxMinuteByHour: (hour: number) => number;\n} {\n\tconst normalizedDay = normalizeDateTimeValue(day, mode) ?? day;\n\tconst normalizedMinDate = minDate ? normalizeDateTimeValue(minDate, mode) : null;\n\tconst normalizedMaxDate = maxDate ? normalizeDateTimeValue(maxDate, mode) : null;\n\tconst isSameMinDay =\n\t\t!!normalizedMinDate &&\n\t\tnormalizedDay.getFullYear() === normalizedMinDate.getFullYear() &&\n\t\tnormalizedDay.getMonth() === normalizedMinDate.getMonth() &&\n\t\tnormalizedDay.getDate() === normalizedMinDate.getDate();\n\tconst isSameMaxDay =\n\t\t!!normalizedMaxDate &&\n\t\tnormalizedDay.getFullYear() === normalizedMaxDate.getFullYear() &&\n\t\tnormalizedDay.getMonth() === normalizedMaxDate.getMonth() &&\n\t\tnormalizedDay.getDate() === normalizedMaxDate.getDate();\n\n\tconst minHour = isSameMinDay ? normalizedMinDate!.getHours() : 0;\n\tconst maxHour = isSameMaxDay ? normalizedMaxDate!.getHours() : 23;\n\tconst minMinuteAtBoundary = isSameMinDay && minHour === maxHour ? normalizedMinDate!.getMinutes() : 0;\n\tconst maxMinuteAtBoundary = isSameMaxDay && minHour === maxHour ? normalizedMaxDate!.getMinutes() : 59;\n\tconst disabled = minHour > maxHour || (minHour === maxHour && minMinuteAtBoundary > maxMinuteAtBoundary);\n\n\treturn {\n\t\tdisabled,\n\t\tminHour,\n\t\tmaxHour,\n\t\tminMinuteByHour: (hour) => {\n\t\t\tif (disabled) return 0;\n\t\t\treturn isSameMinDay && hour === minHour ? normalizedMinDate!.getMinutes() : 0;\n\t\t},\n\t\tmaxMinuteByHour: (hour) => {\n\t\t\tif (disabled) return 59;\n\t\t\treturn isSameMaxDay && hour === maxHour ? normalizedMaxDate!.getMinutes() : 59;\n\t\t}\n\t};\n}\n\n/**\n * Ограничивает часы и минуты допустимым диапазоном текущего дня.\n */\nexport function clampTimeForDay(\n\tday: Date,\n\thours: number,\n\tminutes: number,\n\tminDate?: Date,\n\tmaxDate?: Date,\n\tmode: DateTimeInputMode = \"date-time\"\n): { hours: number; minutes: number } {\n\tconst range = getTimeRangeForDay(day, minDate, maxDate, mode);\n\tif (range.disabled) {\n\t\treturn { hours: 0, minutes: 0 };\n\t}\n\n\tconst clampedHour = Math.min(Math.max(hours, range.minHour), range.maxHour);\n\tconst minMinute = range.minMinuteByHour(clampedHour);\n\tconst maxMinute = range.maxMinuteByHour(clampedHour);\n\tconst clampedMinute = Math.min(Math.max(minutes, minMinute), maxMinute);\n\n\treturn {\n\t\thours: clampedHour,\n\t\tminutes: clampedMinute\n\t};\n}\n","import { getTimeRangeForDay } from \"./dateTimeValue\";\n\nimport type { DateTimeInputMode } from \"./dateTimeValue\";\n\n/**\n * Состояние и доступные значения для панели выбора времени.\n */\nexport interface TimePanelState {\n\tdisabled: boolean;\n\tselectedHour: number;\n\tselectedMinute: number;\n\thours: number[];\n\tminutes: number[];\n}\n\n/**\n * Собирает состояние часов и минут для панели выбора времени.\n */\nexport function buildTimePanelState(value: Date, minDate?: Date, maxDate?: Date, mode: DateTimeInputMode = \"date-time\"): TimePanelState {\n\tconst timeRange = getTimeRangeForDay(value, minDate, maxDate, mode);\n\tconst selectedHour = value.getHours();\n\tconst selectedMinute = value.getMinutes();\n\tconst minuteMin = timeRange.minMinuteByHour(selectedHour);\n\tconst minuteMax = timeRange.maxMinuteByHour(selectedHour);\n\n\tif (timeRange.disabled) {\n\t\treturn {\n\t\t\tdisabled: true,\n\t\t\tselectedHour,\n\t\t\tselectedMinute,\n\t\t\thours: [],\n\t\t\tminutes: []\n\t\t};\n\t}\n\n\treturn {\n\t\tdisabled: false,\n\t\tselectedHour,\n\t\tselectedMinute,\n\t\thours: Array.from({ length: timeRange.maxHour - timeRange.minHour + 1 }, (_, index) => timeRange.minHour + index),\n\t\tminutes: Array.from({ length: minuteMax - minuteMin + 1 }, (_, index) => minuteMin + index)\n\t};\n}\n",".timePanel {\n\theight: 100%;\n}\n\n.hint {\n\tfont-size: var(--font-size-xs);\n\tcolor: var(--content-1);\n}\n\n.fields {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\tgap: var(--space-sm);\n\tmin-height: 10em;\n\theight: 100%;\n}\n\n.field {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tgap: var(--space-xs);\n\tmin-height: 0;\n}\n\n.label {\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--content-1);\n}\n\n.wheel {\n\tmin-height: 10em;\n}\n","import { WheelPicker } from \"../../wheel-picker\";\nimport { buildTimePanelState } from \"../lib/timePanelState\";\n\nimport styles from \"./TimePanel.module.scss\";\n\nimport type { DateTimeInputMode } from \"../lib\";\n\n/**\n * Пропсы панели выбора времени.\n */\nexport interface TimePanelProps {\n\tvalue: Date;\n\tdisabled?: boolean;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tmode?: DateTimeInputMode;\n\tonChange: (hours: number, minutes: number) => void;\n}\n\n/**\n * Переиспользуемая панель выбора времени поверх internal wheel-picker.\n */\nexport function TimePanel({ value, disabled, minDate, maxDate, mode = \"date-time\", onChange }: TimePanelProps) {\n\tconst state = buildTimePanelState(value, minDate, maxDate, mode);\n\n\t/**\n\t * Форматирует двузначное значение времени.\n\t */\n\tconst formatValue = (timePart: number) => String(timePart).padStart(2, \"0\");\n\n\tif (state.disabled) {\n\t\treturn (\n\t\t\t<div className={styles.timePanel}>\n\t\t\t\t<p className={styles.hint}>Для выбранного дня нет доступного времени в заданном диапазоне.</p>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={styles.timePanel}>\n\t\t\t<div className={styles.fields}>\n\t\t\t\t<label className={styles.field}>\n\t\t\t\t\t<span className={styles.label}>Часы</span>\n\t\t\t\t\t<WheelPicker\n\t\t\t\t\t\tclassName={styles.wheel}\n\t\t\t\t\t\titems={state.hours}\n\t\t\t\t\t\tvalue={state.selectedHour}\n\t\t\t\t\t\tonChange={(hours) => onChange(hours, state.selectedMinute)}\n\t\t\t\t\t\tariaLabel=\"Выбор часов\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tformatItem={formatValue}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\n\t\t\t\t<label className={styles.field}>\n\t\t\t\t\t<span className={styles.label}>Минуты</span>\n\t\t\t\t\t<WheelPicker\n\t\t\t\t\t\tclassName={styles.wheel}\n\t\t\t\t\t\titems={state.minutes}\n\t\t\t\t\t\tvalue={state.selectedMinute}\n\t\t\t\t\t\tonChange={(minutes) => onChange(state.selectedHour, minutes)}\n\t\t\t\t\t\tariaLabel=\"Выбор минут\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tformatItem={formatValue}\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./ui.module-BisoTevy.js";
2
- import { cn as t } from "@ryuzaki13/react-foundation-lib/utils";
3
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
- import { useId as i } from "react";
2
+ import { useId as t } from "react";
3
+ import { cn as n } from "@ryuzaki13/react-foundation-lib/utils";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
5
  var a = {
6
6
  row: "FFyoOs",
7
7
  wrapper: "zPYy7T",
@@ -15,21 +15,21 @@ var a = {
15
15
  //#endregion
16
16
  //#region src/toggle/Toggle.tsx
17
17
  function o({ label: o, description: s, placeholder: c, disabled: l, size: u, className: d, onChange: f, value: p, id: m, checkedText: h = "ВКЛ", uncheckedText: g = "ВЫКЛ", labelPosition: _ = "before", ...v }) {
18
- let y = i(), b = m ?? y, x = s ? `${b}-description` : void 0, S = o ?? c, C = !!p, w = !S && !v["aria-label"] ? `${g} / ${h}` : void 0, T = S ? /* @__PURE__ */ n("label", {
18
+ let y = t(), b = m ?? y, x = s ? `${b}-description` : void 0, S = o ?? c, C = !!p, w = !S && !v["aria-label"] ? `${g} / ${h}` : void 0, T = S ? /* @__PURE__ */ r("label", {
19
19
  htmlFor: b,
20
20
  className: e.uiLabel,
21
21
  children: S
22
22
  }) : null;
23
- return /* @__PURE__ */ r("div", {
24
- className: t(e.uiElement, l && e.disabled, u && e.uiSizable, u && e[u], d),
23
+ return /* @__PURE__ */ i("div", {
24
+ className: n(e.uiElement, l && e.disabled, u && e.uiSizable, u && e[u], d),
25
25
  "aria-disabled": l || void 0,
26
- children: [/* @__PURE__ */ r("div", {
26
+ children: [/* @__PURE__ */ i("div", {
27
27
  className: a.row,
28
28
  children: [
29
29
  _ === "before" && T,
30
- /* @__PURE__ */ r("div", {
30
+ /* @__PURE__ */ i("div", {
31
31
  className: a.wrapper,
32
- children: [/* @__PURE__ */ n("input", {
32
+ children: [/* @__PURE__ */ r("input", {
33
33
  ...v,
34
34
  id: b,
35
35
  type: "checkbox",
@@ -39,20 +39,20 @@ function o({ label: o, description: s, placeholder: c, disabled: l, size: u, cla
39
39
  "aria-checked": C,
40
40
  "aria-describedby": x,
41
41
  "aria-label": w,
42
- className: t(e.uiInputControl, a.input),
42
+ className: n(e.uiInputControl, a.input),
43
43
  onChange: (e) => f?.(e.currentTarget.checked)
44
- }), /* @__PURE__ */ r("div", {
44
+ }), /* @__PURE__ */ i("div", {
45
45
  className: a.track,
46
46
  "data-disabled": l || void 0,
47
47
  "aria-hidden": "true",
48
48
  children: [
49
- /* @__PURE__ */ n("div", { className: a.thumb }),
50
- /* @__PURE__ */ n("div", {
51
- className: t(a.option, a.unchecked),
49
+ /* @__PURE__ */ r("div", { className: a.thumb }),
50
+ /* @__PURE__ */ r("div", {
51
+ className: n(a.option, a.unchecked),
52
52
  children: g
53
53
  }),
54
- /* @__PURE__ */ n("div", {
55
- className: t(a.option, a.checked),
54
+ /* @__PURE__ */ r("div", {
55
+ className: n(a.option, a.checked),
56
56
  children: h
57
57
  })
58
58
  ]
@@ -60,7 +60,7 @@ function o({ label: o, description: s, placeholder: c, disabled: l, size: u, cla
60
60
  }),
61
61
  _ === "after" && T
62
62
  ]
63
- }), s && /* @__PURE__ */ n("p", {
63
+ }), s && /* @__PURE__ */ r("p", {
64
64
  id: x,
65
65
  className: e.uiDescription,
66
66
  children: s
@@ -70,4 +70,4 @@ function o({ label: o, description: s, placeholder: c, disabled: l, size: u, cla
70
70
  //#endregion
71
71
  export { o as t };
72
72
 
73
- //# sourceMappingURL=Toggle-C_fE-bkM.js.map
73
+ //# sourceMappingURL=Toggle-DVqOQXmt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle-C_fE-bkM.js","names":[],"sources":["../../src/toggle/Toggle.module.scss","../../src/toggle/Toggle.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-sm);\n}\n\n.wrapper {\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 0 auto;\n\tmin-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n}\n\n.input {\n\twidth: 100%;\n\tmargin: 0;\n\tpadding: 0;\n\tappearance: none;\n\tcursor: pointer;\n\n\t&:checked + .track {\n\t\t.thumb {\n\t\t\ttransform: translateX(100%);\n\t\t}\n\n\t\t.unchecked {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.checked {\n\t\t\tcolor: var(--status-neutral-on-fill);\n\t\t}\n\t}\n\n\t&:focus-visible + .track {\n\t\t@include focusVisible;\n\t}\n}\n\n.track {\n\t.unchecked {\n\t\tcolor: var(--status-neutral-on-fill);\n\t}\n\n\t.checked {\n\t\tcolor: var(--content-2);\n\t}\n\n\tposition: absolute;\n\tinset: calc(var(--border-width) * 2);\n\tpointer-events: none;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\talign-items: center;\n\tmin-width: 6.5em;\n\tpadding: 0;\n\toverflow: hidden;\n\n\t&[data-disabled] {\n\t\t.thumb {\n\t\t\topacity: var(--disabled-opacity);\n\t\t}\n\t}\n}\n\n.option {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0 var(--space-sm);\n\tline-height: 1;\n\twhite-space: nowrap;\n\tuser-select: none;\n\tpointer-events: none;\n\tposition: relative;\n\tz-index: 1;\n\ttransition: color var(--transition-fast) linear;\n}\n\n.thumb {\n\tposition: absolute;\n\ttop: 0; // var(--border-width);\n\tleft: 0; //var(--border-width);\n\twidth: 50%; // calc(50% - var(--border-width));\n\theight: 100%; // calc(100% - var(--border-width) * 2);\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--status-neutral-fill);\n\ttransition:\n\t\ttransform var(--transition-fast) ease-in-out,\n\t\topacity var(--transition-fast) ease-in-out;\n}\n","import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Toggle.module.scss\";\n\ntype ToggleLabelPosition = \"before\" | \"after\";\n\nexport interface ToggleProps\n\textends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"checked\" | \"value\" | \"onChange\" | \"type\">, UiBaseProps<boolean> {\n\tcheckedText?: string;\n\tuncheckedText?: string;\n\tlabelPosition?: ToggleLabelPosition;\n}\n\n/**\n * Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.\n */\nexport function Toggle({\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize,\n\tclassName,\n\tonChange,\n\tvalue,\n\tid: externalId,\n\tcheckedText = \"ВКЛ\",\n\tuncheckedText = \"ВЫКЛ\",\n\tlabelPosition = \"before\",\n\t...props\n}: ToggleProps) {\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst text = label ?? placeholder;\n\tconst isChecked = Boolean(value);\n\tconst fallbackAriaLabel = !text && !props[\"aria-label\"] ? `${uncheckedText} / ${checkedText}` : undefined;\n\n\tconst labelElement = text ? (\n\t\t<label htmlFor={id} className={uiStyles.uiLabel}>\n\t\t\t{text}\n\t\t</label>\n\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, disabled && uiStyles.disabled, size && uiStyles.uiSizable, size && uiStyles[size], className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t<div className={styles.row}>\n\t\t\t\t{labelPosition === \"before\" && labelElement}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-checked={isChecked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\taria-label={fallbackAriaLabel}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input)}\n\t\t\t\t\t\tonChange={(event) => onChange?.(event.currentTarget.checked)}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={styles.track} data-disabled={disabled || undefined} aria-hidden=\"true\">\n\t\t\t\t\t\t<div className={styles.thumb} />\n\t\t\t\t\t\t<div className={cn(styles.option, styles.unchecked)}>{uncheckedText}</div>\n\t\t\t\t\t\t<div className={cn(styles.option, styles.checked)}>{checkedText}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{labelPosition === \"after\" && labelElement}\n\t\t\t</div>\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;ACqBA,SAAgB,EAAO,EACtB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,IAAI,GACJ,iBAAc,OACd,mBAAgB,QAChB,mBAAgB,UAChB,GAAG,KACY;CACf,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAY,EAAQ,GACpB,IAAoB,CAAC,KAAQ,CAAC,EAAM,gBAAgB,GAAG,EAAc,KAAK,MAAgB,KAAA,GAE1F,IAAe,IACpB,kBAAC,SAAD;EAAO,SAAS;EAAI,WAAW,EAAS;YACtC;CACK,CAAA,IACJ;CAEJ,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,KAAY,EAAS,UAAU,KAAQ,EAAS,WAAW,KAAQ,EAAS,IAAO,CAAS;EAC9H,iBAAe,KAAY,KAAA;YAF5B,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,MAAkB,YAAY;IAC/B,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACC,kBAAC,SAAD;MACC,GAAI;MACA;MACJ,MAAK;MACL,MAAK;MACL,SAAS;MACC;MACV,gBAAc;MACd,oBAAkB;MAClB,cAAY;MACZ,WAAW,EAAG,EAAS,gBAAgB,EAAO,KAAK;MACnD,WAAW,MAAU,IAAW,EAAM,cAAc,OAAO;KAC3D,CAAA,GACD,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAO,iBAAe,KAAY,KAAA;MAAW,eAAY;gBAAhF;OACC,kBAAC,OAAD,EAAK,WAAW,EAAO,MAAQ,CAAA;OAC/B,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,SAAS;kBAAI;OAAmB,CAAA;OACzE,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,OAAO;kBAAI;OAAiB,CAAA;MACjE;OACD;;IACJ,MAAkB,WAAW;GAC1B;MACJ,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;aACxC;EACC,CAAA,CAEA;;AAEP"}
1
+ {"version":3,"file":"Toggle-DVqOQXmt.js","names":[],"sources":["../../src/toggle/Toggle.module.scss","../../src/toggle/Toggle.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-sm);\n}\n\n.wrapper {\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 0 auto;\n\tmin-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n}\n\n.input {\n\twidth: 100%;\n\tmargin: 0;\n\tpadding: 0;\n\tappearance: none;\n\tcursor: pointer;\n\n\t&:checked + .track {\n\t\t.thumb {\n\t\t\ttransform: translateX(100%);\n\t\t}\n\n\t\t.unchecked {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.checked {\n\t\t\tcolor: var(--status-neutral-on-fill);\n\t\t}\n\t}\n\n\t&:focus-visible + .track {\n\t\t@include focusVisible;\n\t}\n}\n\n.track {\n\t.unchecked {\n\t\tcolor: var(--status-neutral-on-fill);\n\t}\n\n\t.checked {\n\t\tcolor: var(--content-2);\n\t}\n\n\tposition: absolute;\n\tinset: calc(var(--border-width) * 2);\n\tpointer-events: none;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\talign-items: center;\n\tmin-width: 6.5em;\n\tpadding: 0;\n\toverflow: hidden;\n\n\t&[data-disabled] {\n\t\t.thumb {\n\t\t\topacity: var(--disabled-opacity);\n\t\t}\n\t}\n}\n\n.option {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0 var(--space-sm);\n\tline-height: 1;\n\twhite-space: nowrap;\n\tuser-select: none;\n\tpointer-events: none;\n\tposition: relative;\n\tz-index: 1;\n\ttransition: color var(--transition-fast) linear;\n}\n\n.thumb {\n\tposition: absolute;\n\ttop: 0; // var(--border-width);\n\tleft: 0; //var(--border-width);\n\twidth: 50%; // calc(50% - var(--border-width));\n\theight: 100%; // calc(100% - var(--border-width) * 2);\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--status-neutral-fill);\n\ttransition:\n\t\ttransform var(--transition-fast) ease-in-out,\n\t\topacity var(--transition-fast) ease-in-out;\n}\n","import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Toggle.module.scss\";\n\ntype ToggleLabelPosition = \"before\" | \"after\";\n\nexport interface ToggleProps\n\textends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"checked\" | \"value\" | \"onChange\" | \"type\">, UiBaseProps<boolean> {\n\tcheckedText?: string;\n\tuncheckedText?: string;\n\tlabelPosition?: ToggleLabelPosition;\n}\n\n/**\n * Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.\n */\nexport function Toggle({\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize,\n\tclassName,\n\tonChange,\n\tvalue,\n\tid: externalId,\n\tcheckedText = \"ВКЛ\",\n\tuncheckedText = \"ВЫКЛ\",\n\tlabelPosition = \"before\",\n\t...props\n}: ToggleProps) {\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst text = label ?? placeholder;\n\tconst isChecked = Boolean(value);\n\tconst fallbackAriaLabel = !text && !props[\"aria-label\"] ? `${uncheckedText} / ${checkedText}` : undefined;\n\n\tconst labelElement = text ? (\n\t\t<label htmlFor={id} className={uiStyles.uiLabel}>\n\t\t\t{text}\n\t\t</label>\n\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, disabled && uiStyles.disabled, size && uiStyles.uiSizable, size && uiStyles[size], className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t<div className={styles.row}>\n\t\t\t\t{labelPosition === \"before\" && labelElement}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\trole=\"switch\"\n\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-checked={isChecked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\taria-label={fallbackAriaLabel}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input)}\n\t\t\t\t\t\tonChange={(event) => onChange?.(event.currentTarget.checked)}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={styles.track} data-disabled={disabled || undefined} aria-hidden=\"true\">\n\t\t\t\t\t\t<div className={styles.thumb} />\n\t\t\t\t\t\t<div className={cn(styles.option, styles.unchecked)}>{uncheckedText}</div>\n\t\t\t\t\t\t<div className={cn(styles.option, styles.checked)}>{checkedText}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{labelPosition === \"after\" && labelElement}\n\t\t\t</div>\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;ACqBA,SAAgB,EAAO,EACtB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,IAAI,GACJ,iBAAc,OACd,mBAAgB,QAChB,mBAAgB,UAChB,GAAG,KACY;CACf,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAY,EAAQ,GACpB,IAAoB,CAAC,KAAQ,CAAC,EAAM,gBAAgB,GAAG,EAAc,KAAK,MAAgB,KAAA,GAE1F,IAAe,IACpB,kBAAC,SAAD;EAAO,SAAS;EAAI,WAAW,EAAS;YACtC;CACK,CAAA,IACJ;CAEJ,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,KAAY,EAAS,UAAU,KAAQ,EAAS,WAAW,KAAQ,EAAS,IAAO,CAAS;EAC9H,iBAAe,KAAY,KAAA;YAF5B,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,MAAkB,YAAY;IAC/B,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACC,kBAAC,SAAD;MACC,GAAI;MACA;MACJ,MAAK;MACL,MAAK;MACL,SAAS;MACC;MACV,gBAAc;MACd,oBAAkB;MAClB,cAAY;MACZ,WAAW,EAAG,EAAS,gBAAgB,EAAO,KAAK;MACnD,WAAW,MAAU,IAAW,EAAM,cAAc,OAAO;KAC3D,CAAA,GACD,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAO,iBAAe,KAAY,KAAA;MAAW,eAAY;gBAAhF;OACC,kBAAC,OAAD,EAAK,WAAW,EAAO,MAAQ,CAAA;OAC/B,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,SAAS;kBAAI;OAAmB,CAAA;OACzE,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,OAAO;kBAAI;OAAiB,CAAA;MACjE;OACD;;IACJ,MAAkB,WAAW;GAC1B;MACJ,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;aACxC;EACC,CAAA,CAEA;;AAEP"}
@@ -1,6 +1,6 @@
1
- import { a as e, i as t, n, r, t as i } from "./TreePickerBase-qNHIWbYL.js";
2
- import { jsx as a } from "react/jsx-runtime";
3
- import { useMemo as o } from "react";
1
+ import { a as e, i as t, n, r, t as i } from "./TreePickerBase-BBUOWsSu.js";
2
+ import { useMemo as a } from "react";
3
+ import { jsx as o } from "react/jsx-runtime";
4
4
  //#region src/tree-select/TreeMultiSelect.tsx
5
5
  function s(e, t) {
6
6
  if (e.size !== 0) {
@@ -12,8 +12,8 @@ function s(e, t) {
12
12
  }
13
13
  }
14
14
  function c({ label: c, description: l, disabled: u, placeholder: d = "Выберите значения", size: f, nodes: p, value: m, onChange: h, query: g, defaultQuery: _, onQuery: v, isLoading: y, error: b }) {
15
- let x = o(() => n(p), [p]), S = o(() => e(m, x), [x, m]), C = o(() => r(S, x), [S, x]), w = o(() => s(S, x), [S, x]);
16
- return /* @__PURE__ */ a(i, {
15
+ let x = a(() => n(p), [p]), S = a(() => e(m, x), [x, m]), C = a(() => r(S, x), [S, x]), w = a(() => s(S, x), [S, x]);
16
+ return /* @__PURE__ */ o(i, {
17
17
  label: c,
18
18
  description: l,
19
19
  disabled: u,
@@ -37,4 +37,4 @@ function c({ label: c, description: l, disabled: u, placeholder: d = "Выбер
37
37
  //#endregion
38
38
  export { c as t };
39
39
 
40
- //# sourceMappingURL=TreeMultiSelect-C76RYavo.js.map
40
+ //# sourceMappingURL=TreeMultiSelect-CfQhlfnC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeMultiSelect-C76RYavo.js","names":[],"sources":["../../src/tree-select/TreeMultiSelect.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { UiBaseProps } from \"../types\";\n\nimport { createTreeNodeIndex, getTreeNodeSelectionState, toggleTreeMultiSelection, treeMultiValueToSelectedIds } from \"./model/treeUtils\";\nimport { TreePickerBase } from \"./TreePickerBase\";\nimport { TreeMultiSelectValue, TreeSelectNode } from \"./types\";\n\nexport interface TreeMultiSelectProps extends Omit<UiBaseProps<TreeMultiSelectValue>, \"placeholder\"> {\n\tnodes: readonly TreeSelectNode[];\n\tplaceholder?: string;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tisLoading?: boolean;\n\terror?: string;\n}\n\nfunction formatTreeMultiSummary(selectedIds: Set<string>, treeIndex: ReturnType<typeof createTreeNodeIndex>) {\n\tif (selectedIds.size === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (selectedIds.size === 1) {\n\t\tconst selectedNode = treeIndex.nodeById.get([...selectedIds][0]);\n\n\t\tif (!selectedNode) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (selectedNode.code && selectedNode.code !== selectedNode.label) {\n\t\t\treturn `${selectedNode.label} · ${selectedNode.code}`;\n\t\t}\n\n\t\treturn selectedNode.label;\n\t}\n\n\treturn `Выбрано ${selectedIds.size} узл.`;\n}\n\nexport function TreeMultiSelect({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder = \"Выберите значения\",\n\tsize,\n\tnodes,\n\tvalue,\n\tonChange,\n\tquery,\n\tdefaultQuery,\n\tonQuery,\n\tisLoading,\n\terror\n}: TreeMultiSelectProps) {\n\tconst treeIndex = useMemo(() => createTreeNodeIndex(nodes), [nodes]);\n\tconst selectedIds = useMemo(() => treeMultiValueToSelectedIds(value, treeIndex), [treeIndex, value]);\n\tconst selectionState = useMemo(() => getTreeNodeSelectionState(selectedIds, treeIndex), [selectedIds, treeIndex]);\n\tconst selectedSummary = useMemo(() => formatTreeMultiSummary(selectedIds, treeIndex), [selectedIds, treeIndex]);\n\n\treturn (\n\t\t<TreePickerBase\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\tnodes={nodes}\n\t\t\tselectedIds={selectionState.selectedIds}\n\t\t\tpartialIds={selectionState.partialIds}\n\t\t\tselectionMode=\"multi\"\n\t\t\ttriggerMode=\"search\"\n\t\t\tselectedSummary={selectedSummary}\n\t\t\tquery={query}\n\t\t\tdefaultQuery={defaultQuery}\n\t\t\tonQuery={onQuery}\n\t\t\tonNodeActivate={(node) => onChange(toggleTreeMultiSelection(value, node.id, treeIndex))}\n\t\t\tonClearSelection={() => onChange({})}\n\t\t\tisLoading={isLoading}\n\t\t\terror={error}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;AAkBA,SAAS,EAAuB,GAA0B,GAAmD;CACxG,MAAY,SAAS,GAIzB;MAAI,EAAY,SAAS,GAAG;GAC3B,IAAM,IAAe,EAAU,SAAS,IAAI,CAAC,GAAG,CAAW,CAAC,CAAC,EAAE;GAU/D,OARK,IAID,EAAa,QAAQ,EAAa,SAAS,EAAa,QACpD,GAAG,EAAa,MAAM,KAAK,EAAa,SAGzC,EAAa,QAPnB;EAQF;EAEA,OAAO,WAAW,EAAY,KAAK;CAFnC;AAGD;AAEA,SAAgB,EAAgB,EAC/B,UACA,gBACA,aACA,iBAAc,qBACd,SACA,UACA,UACA,aACA,UACA,iBACA,YACA,cACA,YACwB;CACxB,IAAM,IAAY,QAAc,EAAoB,CAAK,GAAG,CAAC,CAAK,CAAC,GAC7D,IAAc,QAAc,EAA4B,GAAO,CAAS,GAAG,CAAC,GAAW,CAAK,CAAC,GAC7F,IAAiB,QAAc,EAA0B,GAAa,CAAS,GAAG,CAAC,GAAa,CAAS,CAAC,GAC1G,IAAkB,QAAc,EAAuB,GAAa,CAAS,GAAG,CAAC,GAAa,CAAS,CAAC;CAE9G,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACC;EACP,aAAa,EAAe;EAC5B,YAAY,EAAe;EAC3B,eAAc;EACd,aAAY;EACK;EACV;EACO;EACL;EACT,iBAAiB,MAAS,EAAS,EAAyB,GAAO,EAAK,IAAI,CAAS,CAAC;EACtF,wBAAwB,EAAS,CAAC,CAAC;EACxB;EACJ;CACP,CAAA;AAEH"}
1
+ {"version":3,"file":"TreeMultiSelect-CfQhlfnC.js","names":[],"sources":["../../src/tree-select/TreeMultiSelect.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { UiBaseProps } from \"../types\";\n\nimport { createTreeNodeIndex, getTreeNodeSelectionState, toggleTreeMultiSelection, treeMultiValueToSelectedIds } from \"./model/treeUtils\";\nimport { TreePickerBase } from \"./TreePickerBase\";\nimport { TreeMultiSelectValue, TreeSelectNode } from \"./types\";\n\nexport interface TreeMultiSelectProps extends Omit<UiBaseProps<TreeMultiSelectValue>, \"placeholder\"> {\n\tnodes: readonly TreeSelectNode[];\n\tplaceholder?: string;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tisLoading?: boolean;\n\terror?: string;\n}\n\nfunction formatTreeMultiSummary(selectedIds: Set<string>, treeIndex: ReturnType<typeof createTreeNodeIndex>) {\n\tif (selectedIds.size === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (selectedIds.size === 1) {\n\t\tconst selectedNode = treeIndex.nodeById.get([...selectedIds][0]);\n\n\t\tif (!selectedNode) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (selectedNode.code && selectedNode.code !== selectedNode.label) {\n\t\t\treturn `${selectedNode.label} · ${selectedNode.code}`;\n\t\t}\n\n\t\treturn selectedNode.label;\n\t}\n\n\treturn `Выбрано ${selectedIds.size} узл.`;\n}\n\nexport function TreeMultiSelect({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder = \"Выберите значения\",\n\tsize,\n\tnodes,\n\tvalue,\n\tonChange,\n\tquery,\n\tdefaultQuery,\n\tonQuery,\n\tisLoading,\n\terror\n}: TreeMultiSelectProps) {\n\tconst treeIndex = useMemo(() => createTreeNodeIndex(nodes), [nodes]);\n\tconst selectedIds = useMemo(() => treeMultiValueToSelectedIds(value, treeIndex), [treeIndex, value]);\n\tconst selectionState = useMemo(() => getTreeNodeSelectionState(selectedIds, treeIndex), [selectedIds, treeIndex]);\n\tconst selectedSummary = useMemo(() => formatTreeMultiSummary(selectedIds, treeIndex), [selectedIds, treeIndex]);\n\n\treturn (\n\t\t<TreePickerBase\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\tnodes={nodes}\n\t\t\tselectedIds={selectionState.selectedIds}\n\t\t\tpartialIds={selectionState.partialIds}\n\t\t\tselectionMode=\"multi\"\n\t\t\ttriggerMode=\"search\"\n\t\t\tselectedSummary={selectedSummary}\n\t\t\tquery={query}\n\t\t\tdefaultQuery={defaultQuery}\n\t\t\tonQuery={onQuery}\n\t\t\tonNodeActivate={(node) => onChange(toggleTreeMultiSelection(value, node.id, treeIndex))}\n\t\t\tonClearSelection={() => onChange({})}\n\t\t\tisLoading={isLoading}\n\t\t\terror={error}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;AAkBA,SAAS,EAAuB,GAA0B,GAAmD;CACxG,MAAY,SAAS,GAIzB;MAAI,EAAY,SAAS,GAAG;GAC3B,IAAM,IAAe,EAAU,SAAS,IAAI,CAAC,GAAG,CAAW,CAAC,CAAC,EAAE;GAU/D,OARK,IAID,EAAa,QAAQ,EAAa,SAAS,EAAa,QACpD,GAAG,EAAa,MAAM,KAAK,EAAa,SAGzC,EAAa,QAPnB;EAQF;EAEA,OAAO,WAAW,EAAY,KAAK;CAFnC;AAGD;AAEA,SAAgB,EAAgB,EAC/B,UACA,gBACA,aACA,iBAAc,qBACd,SACA,UACA,UACA,aACA,UACA,iBACA,YACA,cACA,YACwB;CACxB,IAAM,IAAY,QAAc,EAAoB,CAAK,GAAG,CAAC,CAAK,CAAC,GAC7D,IAAc,QAAc,EAA4B,GAAO,CAAS,GAAG,CAAC,GAAW,CAAK,CAAC,GAC7F,IAAiB,QAAc,EAA0B,GAAa,CAAS,GAAG,CAAC,GAAa,CAAS,CAAC,GAC1G,IAAkB,QAAc,EAAuB,GAAa,CAAS,GAAG,CAAC,GAAa,CAAS,CAAC;CAE9G,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACC;EACP,aAAa,EAAe;EAC5B,YAAY,EAAe;EAC3B,eAAc;EACd,aAAY;EACK;EACV;EACO;EACL;EACT,iBAAiB,MAAS,EAAS,EAAyB,GAAO,EAAK,IAAI,CAAS,CAAC;EACtF,wBAAwB,EAAS,CAAC,CAAC;EACxB;EACJ;CACP,CAAA;AAEH"}
@@ -1,11 +1,11 @@
1
1
  import { t as e } from "./ui.module-BisoTevy.js";
2
- import { a as t } from "./Input-Wrew1puH.js";
3
- import { c as n, d as r, f as i, i as a, l as o, r as s, t as c, u as ee } from "./picker-gIUs0nE_.js";
4
- import { t as l } from "./SelectOptionContent-CI7wq9Oi.js";
5
- import { cn as u } from "@ryuzaki13/react-foundation-lib/utils";
6
- import { CheckIcon as d, ChevronRightIcon as f, MinusIcon as p, XIcon as te } from "lucide-react";
7
- import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
8
- import { useEffect as ne, useMemo as _, useRef as v, useState as re } from "react";
2
+ import { a as t } from "./Input-BmjlpA09.js";
3
+ import { c as n, d as r, f as i, i as a, l as o, r as s, t as c, u as l } from "./picker-Dg55Ss-B.js";
4
+ import { t as u } from "./SelectOptionContent-CI7wq9Oi.js";
5
+ import { useEffect as ee, useMemo as d, useRef as f, useState as te } from "react";
6
+ import { cn as p } from "@ryuzaki13/react-foundation-lib/utils";
7
+ import { CheckIcon as m, ChevronRightIcon as h, MinusIcon as g, XIcon as ne } from "lucide-react";
8
+ import { Fragment as _, jsx as v, jsxs as re } from "react/jsx-runtime";
9
9
  //#region src/tree-select/model/treeUtils.ts
10
10
  function y(e, t) {
11
11
  return `${e}::${t}`;
@@ -13,8 +13,8 @@ function y(e, t) {
13
13
  function b(e) {
14
14
  let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = 0, s = (e, c) => {
15
15
  t.set(e.id, e), n.set(e.id, c), i.set(e.id, o++), a.set(y(e.codeKey, e.value), e.id);
16
- let ee = (e.children ?? []).map((e) => e.id);
17
- r.set(e.id, ee);
16
+ let l = (e.children ?? []).map((e) => e.id);
17
+ r.set(e.id, l);
18
18
  for (let t of e.children ?? []) s(t, e.id);
19
19
  };
20
20
  for (let t of e) s(t);
@@ -203,13 +203,13 @@ var P = {
203
203
  //#endregion
204
204
  //#region src/tree-select/TreeNodeContent.tsx
205
205
  function le({ node: e, level: t, highlight: n, hasChildren: r, isExpanded: i, selected: a, partial: o, selectionMode: s, onToggleExpand: c }) {
206
- return /* @__PURE__ */ g(m, { children: [
207
- /* @__PURE__ */ h("span", {
206
+ return /* @__PURE__ */ re(_, { children: [
207
+ /* @__PURE__ */ v("span", {
208
208
  className: P.treeIndent,
209
209
  style: { "--tree-level": t },
210
210
  "aria-hidden": "true"
211
211
  }),
212
- r ? /* @__PURE__ */ h("button", {
212
+ r ? /* @__PURE__ */ v("button", {
213
213
  type: "button",
214
214
  className: P.treeExpander,
215
215
  onClick: (e) => {
@@ -218,17 +218,17 @@ function le({ node: e, level: t, highlight: n, hasChildren: r, isExpanded: i, se
218
218
  "aria-label": i ? "Свернуть ветку" : "Развернуть ветку",
219
219
  "data-ui": "tree-select-expander",
220
220
  "data-action": i ? "collapse-tree-select-node" : "expand-tree-select-node",
221
- children: /* @__PURE__ */ h(f, { className: u(P.treeExpanderIcon, i && P.treeExpanderIconExpanded) })
222
- }) : /* @__PURE__ */ h("span", {
221
+ children: /* @__PURE__ */ v(h, { className: p(P.treeExpanderIcon, i && P.treeExpanderIconExpanded) })
222
+ }) : /* @__PURE__ */ v("span", {
223
223
  className: P.treeExpanderPlaceholder,
224
224
  "aria-hidden": "true"
225
225
  }),
226
- s === "multi" && /* @__PURE__ */ h("span", {
227
- className: u(P.treeSelection, a && P.treeSelectionChecked, o && P.treeSelectionPartial),
226
+ s === "multi" && /* @__PURE__ */ v("span", {
227
+ className: p(P.treeSelection, a && P.treeSelectionChecked, o && P.treeSelectionPartial),
228
228
  "aria-hidden": "true",
229
- children: a ? /* @__PURE__ */ h(d, { className: P.treeSelectionIcon }) : o ? /* @__PURE__ */ h(p, { className: P.treeSelectionIcon }) : null
229
+ children: a ? /* @__PURE__ */ v(m, { className: P.treeSelectionIcon }) : o ? /* @__PURE__ */ v(g, { className: P.treeSelectionIcon }) : null
230
230
  }),
231
- /* @__PURE__ */ h(l, {
231
+ /* @__PURE__ */ v(u, {
232
232
  label: e.label,
233
233
  code: e.code,
234
234
  highlight: n
@@ -237,14 +237,14 @@ function le({ node: e, level: t, highlight: n, hasChildren: r, isExpanded: i, se
237
237
  }
238
238
  //#endregion
239
239
  //#region src/tree-select/TreePickerBase.tsx
240
- function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nodes: x, selectedIds: S, partialIds: C, selectionMode: w, triggerMode: T = "display", selectedSummary: E, selectedSummaryText: D, query: O, defaultQuery: ie, onQuery: ae, onNodeActivate: k, onClearSelection: A, isLoading: j, error: M }) {
241
- let N = v(null), F = v(!1), [I, ue] = re(() => /* @__PURE__ */ new Set()), L = T === "search" ? "search-single" : "display", R = _(() => b(x), [x]), { query: z, setQuery: B } = s({
240
+ function F({ label: u, description: m, disabled: h, placeholder: g, size: y, nodes: x, selectedIds: S, partialIds: C, selectionMode: w, triggerMode: T = "display", selectedSummary: E, selectedSummaryText: D, query: O, defaultQuery: ie, onQuery: ae, onNodeActivate: k, onClearSelection: A, isLoading: j, error: M }) {
241
+ let N = f(null), F = f(!1), [I, ue] = te(() => /* @__PURE__ */ new Set()), L = T === "search" ? "search-single" : "display", R = d(() => b(x), [x]), { query: z, setQuery: B } = s({
242
242
  open: !0,
243
243
  query: O,
244
244
  defaultQuery: ie,
245
245
  onQuery: ae,
246
246
  triggerMode: "display"
247
- }), { nodes: V, expandedIds: H } = _(() => se(x, z), [x, z]), U = _(() => oe(S, R), [S, R]), W = _(() => /* @__PURE__ */ new Set([
247
+ }), { nodes: V, expandedIds: H } = d(() => se(x, z), [x, z]), U = d(() => oe(S, R), [S, R]), W = d(() => /* @__PURE__ */ new Set([
248
248
  ...I,
249
249
  ...H,
250
250
  ...U
@@ -252,11 +252,11 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
252
252
  I,
253
253
  H,
254
254
  U
255
- ]), G = _(() => ce(V, W), [V, W]), { open: K, activeIndex: q, context: de, floatingStyles: fe, getFloatingProps: pe, setReference: me, setFloating: he, setOptionRef: ge, close: J, openList: _e, toggleOpen: ve, selectOption: Y, handleReferenceKeyDown: ye, handleFloatingKeyDown: be, getOptionId: xe, getActiveOptionId: Se } = a({
255
+ ]), G = d(() => ce(V, W), [V, W]), { open: K, activeIndex: q, context: de, floatingStyles: fe, getFloatingProps: pe, setReference: me, setFloating: he, setOptionRef: ge, close: J, openList: _e, toggleOpen: ve, selectOption: Y, handleReferenceKeyDown: ye, handleFloatingKeyDown: be, getOptionId: xe, getActiveOptionId: Se } = a({
256
256
  options: G,
257
- selectedIndex: _(() => G.findIndex((e) => S.has(e.node.id)), [S, G]),
257
+ selectedIndex: d(() => G.findIndex((e) => S.has(e.node.id)), [S, G]),
258
258
  onSelect: (e) => k(e.node),
259
- disabled: f || j,
259
+ disabled: h || j,
260
260
  closeOnSelect: w === "single",
261
261
  allowOpenWithoutOptions: !0,
262
262
  triggerMode: L
@@ -271,7 +271,7 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
271
271
  close: J,
272
272
  toggleOpen: ve
273
273
  });
274
- ne(() => {
274
+ ee(() => {
275
275
  F.current && !K && $.policy.resetQueryOnClose && B(""), F.current = K;
276
276
  }, [
277
277
  K,
@@ -288,25 +288,25 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
288
288
  return n.has(e.node.id) ? n.delete(e.node.id) : n.add(e.node.id), n;
289
289
  });
290
290
  };
291
- return /* @__PURE__ */ h(i, {
292
- label: l,
293
- description: d,
294
- disabled: f,
295
- placeholder: p,
291
+ return /* @__PURE__ */ v(i, {
292
+ label: u,
293
+ description: m,
294
+ disabled: h,
295
+ placeholder: g,
296
296
  size: y,
297
297
  children: ({ controlId: i, labelId: a, describedBy: s }) => {
298
298
  let c = `${i}-listbox`;
299
- return /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(n, {
299
+ return /* @__PURE__ */ re(_, { children: [/* @__PURE__ */ v(n, {
300
300
  ref: we,
301
301
  rootRef: me,
302
302
  id: i,
303
303
  type: "text",
304
304
  role: "combobox",
305
305
  autoComplete: "off",
306
- disabled: f || j,
306
+ disabled: h || j,
307
307
  readOnly: T !== "search",
308
308
  value: T === "display" && Q ? "" : Ce,
309
- placeholder: T === "search" ? !D || Z ? p : void 0 : X ? void 0 : p,
309
+ placeholder: T === "search" ? !D || Z ? g : void 0 : X ? void 0 : g,
310
310
  "aria-labelledby": a,
311
311
  "aria-describedby": s,
312
312
  "aria-haspopup": "listbox",
@@ -314,17 +314,17 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
314
314
  "aria-controls": K ? c : void 0,
315
315
  "aria-autocomplete": T === "search" ? "list" : "none",
316
316
  "aria-activedescendant": K && G.length > 0 ? Se(c) : void 0,
317
- inputClassName: u(X && P.treeSummary, Q && P.inputWithOverlay),
318
- overlay: Q ? /* @__PURE__ */ h("div", {
317
+ inputClassName: p(X && P.treeSummary, Q && P.inputWithOverlay),
318
+ overlay: Q ? /* @__PURE__ */ v("div", {
319
319
  className: P.valueOverlay,
320
320
  children: E
321
321
  }) : void 0,
322
- endAdornment: /* @__PURE__ */ h(o, {
322
+ endAdornment: /* @__PURE__ */ v(o, {
323
323
  open: K,
324
- disabled: f || j,
324
+ disabled: h || j,
325
325
  onToggleMouseDown: $.handleToggleMouseDown,
326
326
  onToggleClick: $.handleToggleClick,
327
- children: X && A ? /* @__PURE__ */ h("button", {
327
+ children: X && A ? /* @__PURE__ */ v("button", {
328
328
  type: "button",
329
329
  className: P.treeClearButton,
330
330
  onMouseDown: (e) => {
@@ -334,7 +334,7 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
334
334
  e.preventDefault(), e.stopPropagation(), Te();
335
335
  },
336
336
  "aria-label": "Очистить выбор",
337
- children: /* @__PURE__ */ h(te, {})
337
+ children: /* @__PURE__ */ v(ne, {})
338
338
  }) : null
339
339
  }),
340
340
  onChange: (e) => {
@@ -354,7 +354,7 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
354
354
  enableSpaceActivation: T === "display"
355
355
  });
356
356
  }
357
- }), /* @__PURE__ */ h(r, {
357
+ }), /* @__PURE__ */ v(r, {
358
358
  open: K,
359
359
  context: de,
360
360
  floatingStyles: fe,
@@ -365,8 +365,8 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
365
365
  setFloating: he,
366
366
  getFloatingProps: pe,
367
367
  onKeyDown: be,
368
- className: u(e.uiPopupOptions, "scrollable"),
369
- header: T === "display" ? /* @__PURE__ */ h(t, {
368
+ className: p(e.uiPopupOptions, "scrollable"),
369
+ header: T === "display" ? /* @__PURE__ */ v(t, {
370
370
  value: z,
371
371
  onChange: B,
372
372
  onClear: () => B(""),
@@ -378,27 +378,27 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
378
378
  e.stopPropagation();
379
379
  }
380
380
  }) : void 0,
381
- children: /* @__PURE__ */ h("div", {
381
+ children: /* @__PURE__ */ v("div", {
382
382
  className: "",
383
- children: G.length === 0 ? /* @__PURE__ */ h(ee, {
383
+ children: G.length === 0 ? /* @__PURE__ */ v(l, {
384
384
  errorState: M,
385
385
  loadingState: j ? "Загрузка..." : void 0,
386
386
  emptyState: !M && !j ? "Нет данных" : void 0
387
387
  }) : G.map((e, t) => {
388
388
  let n = S.has(e.node.id), r = !n && C.has(e.node.id), i = t === q;
389
- return /* @__PURE__ */ h("div", {
389
+ return /* @__PURE__ */ v("div", {
390
390
  id: xe(c, t),
391
391
  ref: (e) => ge(t, e),
392
392
  role: "option",
393
393
  "aria-selected": n,
394
- className: u(P.treeRow, i && P.treeRowActive, n && P.treeRowSelected),
394
+ className: p(P.treeRow, i && P.treeRowActive, n && P.treeRowSelected),
395
395
  onMouseDown: (e) => {
396
396
  e.preventDefault();
397
397
  },
398
398
  onClick: () => Y(e),
399
- children: /* @__PURE__ */ h("div", {
399
+ children: /* @__PURE__ */ v("div", {
400
400
  className: P.treeNodeButton,
401
- children: /* @__PURE__ */ h(le, {
401
+ children: /* @__PURE__ */ v(le, {
402
402
  node: e.node,
403
403
  level: e.level,
404
404
  highlight: z,
@@ -420,4 +420,4 @@ function F({ label: l, description: d, disabled: f, placeholder: p, size: y, nod
420
420
  //#endregion
421
421
  export { S as a, j as i, b as n, x as o, A as r, F as t };
422
422
 
423
- //# sourceMappingURL=TreePickerBase-qNHIWbYL.js.map
423
+ //# sourceMappingURL=TreePickerBase-BBUOWsSu.js.map