@ryuzaki13/react-foundation-ui 1.4.2 → 1.4.3

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 (505) hide show
  1. package/dist/advanced-search/index.js +12 -11
  2. package/dist/advanced-search/index.js.map +1 -1
  3. package/dist/badge/index.js +1 -1
  4. package/dist/base-table/index.js +2 -2
  5. package/dist/button/index.js +1 -1
  6. package/dist/chunks/{CalendarView-KCkhCtK-.js → CalendarView-Z_XWk7aI.js} +8 -8
  7. package/dist/chunks/{CalendarView-KCkhCtK-.js.map → CalendarView-Z_XWk7aI.js.map} +1 -1
  8. package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js → ImageViewerRuntime-BMs3BBkV.js} +4 -4
  9. package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js.map → ImageViewerRuntime-BMs3BBkV.js.map} +1 -1
  10. package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js → TextEditorLexicalClient-CK8j3RA4.js} +16 -18
  11. package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js.map → TextEditorLexicalClient-CK8j3RA4.js.map} +1 -1
  12. package/dist/chunks/{badge-Cri0-kVK.js → badge-DwIUjH0a.js} +2 -2
  13. package/dist/chunks/{badge-Cri0-kVK.js.map → badge-DwIUjH0a.js.map} +1 -1
  14. package/dist/chunks/{base-table-D5IqsjQD.js → base-table-BFsVwXg3.js} +13 -12
  15. package/dist/chunks/{base-table-D5IqsjQD.js.map → base-table-BFsVwXg3.js.map} +1 -1
  16. package/dist/chunks/{button-CC0Jdx1j.js → button-BU2kRzwu.js} +2 -2
  17. package/dist/chunks/{button-CC0Jdx1j.js.map → button-BU2kRzwu.js.map} +1 -1
  18. package/dist/chunks/check-box-Dd3YFuxd.js.map +1 -1
  19. package/dist/chunks/{context-menu-DQeR3y7M.js → context-menu-C6RO7soI.js} +7 -2
  20. package/dist/chunks/{context-menu-DQeR3y7M.js.map → context-menu-C6RO7soI.js.map} +1 -1
  21. package/dist/chunks/{date-input-DBJisPRz.js → date-input-BzExUQnc.js} +5 -5
  22. package/dist/chunks/{date-input-DBJisPRz.js.map → date-input-BzExUQnc.js.map} +1 -1
  23. package/dist/chunks/{flex-DYZ0IbU6.js → flex-C7njxZ74.js} +10 -7
  24. package/dist/chunks/{flex-DYZ0IbU6.js.map → flex-C7njxZ74.js.map} +1 -1
  25. package/dist/chunks/floating-arrow-BE-z4QkE.js.map +1 -1
  26. package/dist/chunks/{input-BCJfUdK_.js → input-Bp6_Ucgr.js} +15 -15
  27. package/dist/chunks/{input-BCJfUdK_.js.map → input-Bp6_Ucgr.js.map} +1 -1
  28. package/dist/chunks/{input-files-Dcc5K-_1.js → input-files-D1JzSw_Y.js} +2 -2
  29. package/dist/chunks/{input-files-Dcc5K-_1.js.map → input-files-D1JzSw_Y.js.map} +1 -1
  30. package/dist/chunks/{input-search-B7HmrAM7.js → input-search-Bkhcinru.js} +2 -2
  31. package/dist/chunks/{input-search-B7HmrAM7.js.map → input-search-Bkhcinru.js.map} +1 -1
  32. package/dist/chunks/{misc-DIF5h9ba.js → misc-BYxxlJz6.js} +3 -3
  33. package/dist/chunks/{misc-DIF5h9ba.js.map → misc-BYxxlJz6.js.map} +1 -1
  34. package/dist/chunks/{modal-DXHX_sA-.js → modal-paexEF0j.js} +4 -5
  35. package/dist/chunks/{modal-DXHX_sA-.js.map → modal-paexEF0j.js.map} +1 -1
  36. package/dist/chunks/{multi-select-CWx12rgb.js → multi-select-COa6-owj.js} +3 -3
  37. package/dist/chunks/{multi-select-CWx12rgb.js.map → multi-select-COa6-owj.js.map} +1 -1
  38. package/dist/chunks/{picker-BAQ9NeHe.js → picker-e6IsrMUG.js} +3 -3
  39. package/dist/chunks/{picker-BAQ9NeHe.js.map → picker-e6IsrMUG.js.map} +1 -1
  40. package/dist/chunks/{popover-xJJqy1v6.js → popover-CGU3MlsH.js} +14 -14
  41. package/dist/chunks/{popover-xJJqy1v6.js.map → popover-CGU3MlsH.js.map} +1 -1
  42. package/dist/chunks/radio-group-CM9Lg_nc.js.map +1 -1
  43. package/dist/chunks/{select-BPb-eL3O.js → select-C95db02j.js} +32 -31
  44. package/dist/chunks/{select-BPb-eL3O.js.map → select-C95db02j.js.map} +1 -1
  45. package/dist/chunks/sortable-DcTIAbjD.js.map +1 -1
  46. package/dist/chunks/{table-xMAjqtcY.js → table-Dd5BcC0k.js} +3 -3
  47. package/dist/chunks/{table-xMAjqtcY.js.map → table-Dd5BcC0k.js.map} +1 -1
  48. package/dist/chunks/{table-column-interactions-BGd5Lwy9.js → table-column-interactions-DzEvVuXe.js} +8 -5
  49. package/dist/chunks/{table-column-interactions-BGd5Lwy9.js.map → table-column-interactions-DzEvVuXe.js.map} +1 -1
  50. package/dist/chunks/useODataSelectBase-CKe1AVMI.js.map +1 -1
  51. package/dist/chunks/wheel-picker-FS58cRsQ.js.map +1 -1
  52. package/dist/context-menu/index.js +1 -1
  53. package/dist/date-input/index.js +2 -2
  54. package/dist/date-time-input/index.js +4 -4
  55. package/dist/date-time-input/index.js.map +1 -1
  56. package/dist/detail/index.js.map +1 -1
  57. package/dist/dialog/index.js.map +1 -1
  58. package/dist/disclosure/index.js +1 -1
  59. package/dist/disclosure/index.js.map +1 -1
  60. package/dist/drop-zone/index.js +1 -1
  61. package/dist/drop-zone/index.js.map +1 -1
  62. package/dist/errors/index.js +1 -1
  63. package/dist/errors/index.js.map +1 -1
  64. package/dist/expandable-action-panel/index.js +2 -2
  65. package/dist/expandable-action-panel/index.js.map +1 -1
  66. package/dist/flex/index.js +1 -1
  67. package/dist/fullscreen-portal/index.js +3 -3
  68. package/dist/fullscreen-portal/index.js.map +1 -1
  69. package/dist/image/index.js +5 -5
  70. package/dist/image/index.js.map +1 -1
  71. package/dist/input/index.js +1 -1
  72. package/dist/input-date-time/index.js +1 -1
  73. package/dist/input-date-time/index.js.map +1 -1
  74. package/dist/input-file/index.js +1 -1
  75. package/dist/input-file/index.js.map +1 -1
  76. package/dist/input-files/index.js +1 -1
  77. package/dist/input-image/index.js +1 -1
  78. package/dist/input-image/index.js.map +1 -1
  79. package/dist/input-search/index.js +1 -1
  80. package/dist/layout-picker/index.js +3 -3
  81. package/dist/layout-picker/index.js.map +1 -1
  82. package/dist/list/index.js +7 -7
  83. package/dist/list/index.js.map +1 -1
  84. package/dist/listbox/index.js.map +1 -1
  85. package/dist/misc/index.js +1 -1
  86. package/dist/modal/index.js +1 -1
  87. package/dist/multi-select/index.js +1 -1
  88. package/dist/notifications/index.js +13 -11
  89. package/dist/notifications/index.js.map +1 -1
  90. package/dist/pages/index.js.map +1 -1
  91. package/dist/panel/index.js.map +1 -1
  92. package/dist/picker/index.js +1 -1
  93. package/dist/popover/index.js +1 -1
  94. package/dist/preset-range-date-input/index.js +2 -2
  95. package/dist/preset-range-date-input/index.js.map +1 -1
  96. package/dist/preset-select/index.js +1 -1
  97. package/dist/radio-button/index.js.map +1 -1
  98. package/dist/select/index.js +1 -1
  99. package/dist/simple-table/index.js +1 -1
  100. package/dist/slider/index.js +27 -24
  101. package/dist/slider/index.js.map +1 -1
  102. package/dist/splitter/index.js.map +1 -1
  103. package/dist/state-select/index.js +12 -10
  104. package/dist/state-select/index.js.map +1 -1
  105. package/dist/switch/index.js +1 -1
  106. package/dist/switch/index.js.map +1 -1
  107. package/dist/table/index.js +1 -1
  108. package/dist/table-column-interactions/index.js +1 -1
  109. package/dist/table-sorting/index.js +1 -1
  110. package/dist/table-sorting/index.js.map +1 -1
  111. package/dist/tabs/index.js +6 -6
  112. package/dist/tabs/index.js.map +1 -1
  113. package/dist/tag-input/index.js +1 -1
  114. package/dist/tag-input/index.js.map +1 -1
  115. package/dist/text/index.js +10 -8
  116. package/dist/text/index.js.map +1 -1
  117. package/dist/text-editor/index.js +2 -2
  118. package/dist/textarea/index.js +1 -1
  119. package/dist/textarea/index.js.map +1 -1
  120. package/dist/toggle/index.js.map +1 -1
  121. package/dist/toolbar/index.js +1 -2
  122. package/dist/toolbar/index.js.map +1 -1
  123. package/dist/tree/index.js.map +1 -1
  124. package/dist/tree-select/index.js +83 -80
  125. package/dist/tree-select/index.js.map +1 -1
  126. package/dist/tree-table/index.js +2 -2
  127. package/dist/tree-table/index.js.map +1 -1
  128. package/package.json +51 -59
  129. package/storybook-static/assets/{Badge-SZ48u9qp.js → Badge-DHexWW92.js} +11 -11
  130. package/storybook-static/assets/Badge.stories-CeWDekpP.js +54 -0
  131. package/storybook-static/assets/Button-VdPdxcvG.js +12 -0
  132. package/storybook-static/assets/{Button-CFCpYiPy.js → Button-kybsFNS9.js} +10 -10
  133. package/storybook-static/assets/Button.stories-DhgYDM_q.js +75 -0
  134. package/storybook-static/assets/{DateInput-BfFTwd_P.css → CalendarView-DKvrkS40.css} +1 -1
  135. package/storybook-static/assets/CalendarView-DTX0eO8t.js +1 -0
  136. package/storybook-static/assets/CheckBox-B6rTemHK.js +2 -0
  137. package/storybook-static/assets/{CheckBox-FoMSruZC.js → CheckBox-CDwboiFD.js} +11 -11
  138. package/storybook-static/assets/CheckBox.module-BBzuj5He.js +1 -0
  139. package/storybook-static/assets/CheckBox.stories-BSMihxpY.js +60 -0
  140. package/storybook-static/assets/Color-6AOWCN3U-D5F38IUU.js +1 -0
  141. package/storybook-static/assets/{ContextMenu-CU_1kOzV.js → ContextMenu-2ZQAeo_p.js} +9 -9
  142. package/storybook-static/assets/ContextMenu-CQtvL8kx.js +1 -0
  143. package/storybook-static/assets/ContextMenu.stories-Dtz2YIGk.js +90 -0
  144. package/storybook-static/assets/{DateInput-BeZ5esVE.js → DateInput-D41aWZ7_.js} +11 -11
  145. package/storybook-static/assets/DateInput-DBwgBhFj.js +1 -0
  146. package/storybook-static/assets/DateInput-pmGiwdvw.css +1 -0
  147. package/storybook-static/assets/{DateInput.stories-Bkw2r8CD.js → DateInput.stories-CMV96t-8.js} +2 -2
  148. package/storybook-static/assets/{DateRangePresetSelect-C_mLvEoK.js → DateRangePresetSelect-BLKJkg8X.js} +8 -8
  149. package/storybook-static/assets/DateRangePresetSelect-DXYYFJJn.js +3 -0
  150. package/storybook-static/assets/DateRangePresetSelect.stories-BNtFx_iG.js +11 -0
  151. package/storybook-static/assets/{Detail-WzciiK9S.js → Detail-BHcGLZok.js} +11 -11
  152. package/storybook-static/assets/Detail.stories-C4smn8Uu.js +44 -0
  153. package/storybook-static/assets/{Dialog-CwLsVxJY.js → Dialog-kji1ho-G.js} +9 -9
  154. package/storybook-static/assets/Dialog.stories-DYzrVcIT.js +31 -0
  155. package/storybook-static/assets/{Disclosure-BlRuGrk2.js → Disclosure-BVLfp53o.js} +10 -10
  156. package/storybook-static/assets/Disclosure.stories-DcV1pGCt.js +41 -0
  157. package/storybook-static/assets/DocsRenderer-JROSPFPF-CCwX0YiR.js +2 -0
  158. package/storybook-static/assets/{DropZone-Cr3nfCWA.js → DropZone-6iWHt6C_.js} +10 -10
  159. package/storybook-static/assets/DropZone.stories-bASZNbD5.js +44 -0
  160. package/storybook-static/assets/ExpandableActionPanel.stories-CMMbHs_d.js +20 -0
  161. package/storybook-static/assets/{Flex-C10912WS.js → Flex-BJViOwhH.js} +18 -18
  162. package/storybook-static/assets/Flex.stories-CI6DdxU7.js +300 -0
  163. package/storybook-static/assets/FlexContainer-LmZIdhq2.js +1 -0
  164. package/storybook-static/assets/FlexItem-vkDYa5tA.js +3 -0
  165. package/storybook-static/assets/FloatingPopover-CPLOruAY.js +1 -0
  166. package/storybook-static/assets/FloatingPopover-DC84VrV3.css +1 -0
  167. package/storybook-static/assets/FormattedTableCell-CV4yLuxl.js +18 -0
  168. package/storybook-static/assets/FormattedTableCell-CY3E21k8.css +1 -0
  169. package/storybook-static/assets/Grid-BCzygAqy.js +52 -0
  170. package/storybook-static/assets/{Grid-G88y3oB_.js → Grid-CNEn2bRE.js} +18 -18
  171. package/storybook-static/assets/{Grid.stories-BV7zL-6n.js → Grid.stories-qFo5E3qE.js} +2 -2
  172. package/storybook-static/assets/{Grid-Bb0gH6CX.js → GridContainer-qDguE1HS.js} +2 -53
  173. package/storybook-static/assets/ImageCropper.stories-BeQI7oKQ.js +115 -0
  174. package/storybook-static/assets/ImageRenderer-DK2ibQyr.js +2 -0
  175. package/storybook-static/assets/ImageRenderer.stories-C1T4ne0G.js +22 -0
  176. package/storybook-static/assets/ImageView.stories-D_Q-ZBtQ.js +9 -0
  177. package/storybook-static/assets/{ImageViewer.stories-PlFXSB5n.js → ImageViewer.stories-boombTJI.js} +5 -5
  178. package/storybook-static/assets/ImageViewerRuntime-D8KSESgf.js +51 -0
  179. package/storybook-static/assets/{Input-pyUNDVtk.js → Input-CGHba0oM.js} +11 -11
  180. package/storybook-static/assets/Input-DtOsW7ur.js +3 -0
  181. package/storybook-static/assets/Input.stories-C0qWd6SH.js +38 -0
  182. package/storybook-static/assets/{InputDateTime-CWk5KBwD.js → InputDateTime-CgYkmVYu.js} +11 -11
  183. package/storybook-static/assets/InputDateTime.stories-Brxo7Chn.js +35 -0
  184. package/storybook-static/assets/{InputFile-BLQq7mY9.js → InputFile-Bsxafe88.js} +10 -10
  185. package/storybook-static/assets/InputFile.stories-BzEV7ybE.js +36 -0
  186. package/storybook-static/assets/{InputFiles-B6J4XBdP.js → InputFiles-KJFUsmSS.js} +10 -10
  187. package/storybook-static/assets/InputFiles.stories-ffjxiHSh.js +33 -0
  188. package/storybook-static/assets/InputFilesList-D6B5g99M.js +1 -0
  189. package/storybook-static/assets/{InputImage--2PSB_E_.js → InputImage-Cd39V4Vc.js} +10 -10
  190. package/storybook-static/assets/InputImage.stories-n-tpY8OO.js +51 -0
  191. package/storybook-static/assets/{LayoutPicker-RZDisgZ_.js → LayoutPicker-CGQFfQk6.js} +13 -13
  192. package/storybook-static/assets/LayoutPicker.stories-xSL2qafC.js +449 -0
  193. package/storybook-static/assets/{Listbox-xwfNjBpV.js → Listbox-CxISK8c5.js} +10 -10
  194. package/storybook-static/assets/Listbox.stories-BdQBmVFI.js +47 -0
  195. package/storybook-static/assets/{Modal-HJt_Y-a6.js → Modal-BiaAWMdV.js} +12 -12
  196. package/storybook-static/assets/Modal.stories-GV7fGqyd.js +180 -0
  197. package/storybook-static/assets/MultiSelect-D5XFosSU.js +2 -0
  198. package/storybook-static/assets/{MultiSelect-CvNsFdE4.js → MultiSelect-Df2CpyNH.js} +11 -11
  199. package/storybook-static/assets/MultiSelect.stories-BEVQF6hO.js +29 -0
  200. package/storybook-static/assets/MultiSelectToken-CrVawISu.js +1 -0
  201. package/storybook-static/assets/NoData-C7KqaHUh.css +1 -0
  202. package/storybook-static/assets/NoData-Fm23iF4n.js +1 -0
  203. package/storybook-static/assets/{NotificationsHost-DXCf3CQX.js → NotificationsHost-C2vSwAjz.js} +9 -9
  204. package/storybook-static/assets/NotificationsHost.stories-IbgayDlM.js +25 -0
  205. package/storybook-static/assets/{ODataMultiSelect-CIJNiwGb.js → ODataMultiSelect-oW3kW0nO.js} +15 -15
  206. package/storybook-static/assets/ODataMultiSelect.stories-CP6_jGSr.js +73 -0
  207. package/storybook-static/assets/{ODataSelect-BDga9TUb.js → ODataSelect-CrGF8fyC.js} +15 -15
  208. package/storybook-static/assets/ODataSelect.stories-DTv31Rkv.js +73 -0
  209. package/storybook-static/assets/ODataTreeMultiSelect-D0h8H3gw.js +19 -0
  210. package/storybook-static/assets/ODataTreeMultiSelect.stories-CM8QjG8r.js +30 -0
  211. package/storybook-static/assets/ODataTreeSelect-PWn0-hI4.js +17 -0
  212. package/storybook-static/assets/ODataTreeSelect.stories-2UkFTnbE.js +24 -0
  213. package/storybook-static/assets/OneStepScroller-CH6K7wiO.js +5 -0
  214. package/storybook-static/assets/OneStepScroller-NRYd-egY.css +1 -0
  215. package/storybook-static/assets/{PeriodSelect-BJbjl62O.js → PeriodSelect-BtwJuAO6.js} +13 -13
  216. package/storybook-static/assets/PeriodSelect.stories-BH8I5Wmg.js +64 -0
  217. package/storybook-static/assets/PickerSelectionToolbar-BcL8-O6n.js +2 -0
  218. package/storybook-static/assets/PickerTriggerActions-C8Asdp5e.js +1 -0
  219. package/storybook-static/assets/{Popover-Dg2T0DoN.js → Popover-Ch5btFhR.js} +11 -11
  220. package/storybook-static/assets/Popover-DGX7JNNK.css +1 -0
  221. package/storybook-static/assets/Popover-Djns7yXR.js +2 -0
  222. package/storybook-static/assets/Popover.stories-Bask2I1I.js +69 -0
  223. package/storybook-static/assets/{PresetRangeDateInput-CNmTMNHF.js → PresetRangeDateInput-DvsTjQNP.js} +8 -8
  224. package/storybook-static/assets/PresetRangeDateInput.stories-BNfOUWgp.js +15 -0
  225. package/storybook-static/assets/PresetSelect-9zitP0-V.js +5 -0
  226. package/storybook-static/assets/{RadioButton-2rfUPkwC.js → RadioButton-Yb9bQKYe.js} +10 -10
  227. package/storybook-static/assets/RadioButton.stories-FIFxXFVP.js +36 -0
  228. package/storybook-static/assets/RadioGroup-CWsVqwtm.js +1 -0
  229. package/storybook-static/assets/{RadioGroup-BduGGVKj.js → RadioGroup-Dn0zL838.js} +10 -10
  230. package/storybook-static/assets/RadioGroup.stories-B_drop9x.js +42 -0
  231. package/storybook-static/assets/Scrollable-3Z6b5g0Z.js +1 -0
  232. package/storybook-static/assets/{Select-DnZ83aZs.js → Select-BaR8D89E.js} +13 -13
  233. package/storybook-static/assets/Select-BiOxxy0y.js +12 -0
  234. package/storybook-static/assets/Select.stories-CMlWu7vC.js +46 -0
  235. package/storybook-static/assets/SelectOptionContent-DhtCMwz6.js +1 -0
  236. package/storybook-static/assets/{SerializableSelect-BiFhAxAJ.js → SerializableSelect-BDiZo_-M.js} +12 -12
  237. package/storybook-static/assets/SerializableSelect.stories-DgC6oiRx.js +46 -0
  238. package/storybook-static/assets/{SingleDateTimeInput-Bc-ifbML.js → SingleDateTimeInput-Dx1fvzyr.js} +12 -12
  239. package/storybook-static/assets/SingleDateTimeInput.stories-NRUE7nnA.js +78 -0
  240. package/storybook-static/assets/Slider-DJpzPo7f.js +1 -0
  241. package/storybook-static/assets/{Slider-DfjBSsR3.js → Slider-aiFcrSGY.js} +15 -15
  242. package/storybook-static/assets/Slider.stories-B0YHmFf5.js +77 -0
  243. package/storybook-static/assets/{SliderInput-o9uCcVMP.js → SliderInput-sOoxvdku.js} +16 -16
  244. package/storybook-static/assets/SliderInput.stories-BYk1V19Z.js +68 -0
  245. package/storybook-static/assets/{Sortable-B6Y9Q9Yn.js → Sortable-CuVT40f8.js} +13 -13
  246. package/storybook-static/assets/Sortable.stories-KSWGoKrN.js +141 -0
  247. package/storybook-static/assets/{Splitter-CfUVnAs7.js → Splitter-EoNOj4XF.js} +11 -11
  248. package/storybook-static/assets/Splitter.stories-CuAZab2y.js +22 -0
  249. package/storybook-static/assets/{StateSelect-h0i4M4vO.js → StateSelect-B_M50HZl.js} +10 -10
  250. package/storybook-static/assets/StateSelect.stories-DQ_MzvL4.js +47 -0
  251. package/storybook-static/assets/StringToggle.stories-BbRysCKA.js +6 -0
  252. package/storybook-static/assets/{Switch-CPKaENqL.js → Switch-DO_tyZIc.js} +10 -10
  253. package/storybook-static/assets/Switch.stories-BQakMoPp.js +26 -0
  254. package/storybook-static/assets/{Table-xV66crR1.js → Table-CVK5rwmT.js} +22 -22
  255. package/storybook-static/assets/Table.stories-IZaleOjp.js +122 -0
  256. package/storybook-static/assets/{Tabs-v9YZeJoc.js → Tabs-DAaWUQb4.js} +15 -15
  257. package/storybook-static/assets/Tabs.stories-BC8LwG22.js +58 -0
  258. package/storybook-static/assets/TagInput.stories-CrXD57LV.js +18 -0
  259. package/storybook-static/assets/Text-cVBcGheg.js +1 -0
  260. package/storybook-static/assets/{Textarea-CRThqX0z.js → Textarea-9VdIC6G0.js} +10 -10
  261. package/storybook-static/assets/Textarea.stories-CEaMwEau.js +27 -0
  262. package/storybook-static/assets/TimePanel-vx1aOwT4.js +1 -0
  263. package/storybook-static/assets/TimePanel.stories-BKyiLEgy.js +25 -0
  264. package/storybook-static/assets/Toggle-CyajrRVE.js +1 -0
  265. package/storybook-static/assets/{Toggle-CzopviU2.js → Toggle-DrNoVpGe.js} +10 -10
  266. package/storybook-static/assets/Toggle.stories-CT0mQbdm.js +30 -0
  267. package/storybook-static/assets/TreeMultiSelect-CtDZ1cXU.js +1 -0
  268. package/storybook-static/assets/TreeMultiSelect-ag5i_Hw_.js +19 -0
  269. package/storybook-static/assets/TreeMultiSelect.stories-BxrbKopS.js +35 -0
  270. package/storybook-static/assets/TreePickerBase-DQzUtuAm.js +22 -0
  271. package/storybook-static/assets/TreeSelect-BNuJBo9x.js +1 -0
  272. package/storybook-static/assets/TreeSelect-CL8REXC5.js +16 -0
  273. package/storybook-static/assets/TreeSelect.stories-CsWGc9X0.js +18 -0
  274. package/storybook-static/assets/{TreeTable-DbzoCcR5.js → TreeTable-DrIFC4Oh.js} +22 -22
  275. package/storybook-static/assets/TreeTable.stories-Dq5c4_qe.js +83 -0
  276. package/storybook-static/assets/WithTooltip-7X4HQR7L-Cakt_JaX.js +9 -0
  277. package/storybook-static/assets/array-BBSjoTRy-CIRmlF93.js +1 -0
  278. package/storybook-static/assets/{async-D27PcxoG.js → async-0-Te_uje.js} +3 -3
  279. package/storybook-static/assets/axe-Bq-2xuso.js +20 -0
  280. package/storybook-static/assets/blocks-Dz3dJBcm.js +48 -0
  281. package/storybook-static/assets/browserAndReact-kZBm3nQe.js +105 -0
  282. package/storybook-static/assets/check-BMyoSD8F.js +1 -0
  283. package/storybook-static/assets/chevron-down-QDFtnGcg.js +1 -0
  284. package/storybook-static/assets/chevron-left-BoVuWD4h.js +1 -0
  285. package/storybook-static/assets/chevron-right-DS62_o_9.js +1 -0
  286. package/storybook-static/assets/chunk-242VQQM5-BMWWiybC.js +1 -0
  287. package/storybook-static/assets/chunk-DRQKCCAG-CqE-Zrl9.js +1 -0
  288. package/storybook-static/assets/chunk-IMSF75WX-yvVUwIQZ.js +6 -0
  289. package/storybook-static/assets/chunk-KJHJLCBK-D-yQfkOi.js +1 -0
  290. package/storybook-static/assets/chunk-QQBDHPVZ-B98qboss.js +1 -0
  291. package/storybook-static/assets/chunk-W22LQPXL-DDIvKskF.js +18 -0
  292. package/storybook-static/assets/circle-alert-CXg50Gb0.js +1 -0
  293. package/storybook-static/assets/circle-check-BPfYNWmz.js +1 -0
  294. package/storybook-static/assets/components-BejapTpU.js +241 -0
  295. package/storybook-static/assets/contextMenu-DtXkMNr6.js +2 -0
  296. package/storybook-static/assets/date-segments-D3HouZ37.js +1 -0
  297. package/storybook-static/assets/dom-B3G_GtJw.js +1 -0
  298. package/storybook-static/assets/download-DnZ6jhvY.js +1 -0
  299. package/storybook-static/assets/error-BZrNlEUO.js +1 -0
  300. package/storybook-static/assets/file-vPGnhPr-.js +1 -0
  301. package/storybook-static/assets/filesAndExcel-CXMXtMjq.js +122 -0
  302. package/storybook-static/assets/floating-ui.react-PN45KvBS.js +1 -0
  303. package/storybook-static/assets/formatter-L2YTDE3Q-x0raBH34.js +1 -0
  304. package/storybook-static/assets/formatters--mhLir82-v41eaI4a.js +1 -0
  305. package/storybook-static/assets/formatters-DGXR8csR.js +291 -0
  306. package/storybook-static/assets/formatters-runtime-GsS-hTg9.js +384 -0
  307. package/storybook-static/assets/foundationLib-XrLbqi3r.js +82 -0
  308. package/storybook-static/assets/hooks-Ddmw7JMF.js +5 -0
  309. package/storybook-static/assets/iframe-CrnMVMTc.js +1151 -0
  310. package/storybook-static/assets/iframe-FUHzX0Mr.js +1 -0
  311. package/storybook-static/assets/info-Dqq5QHG7.js +1 -0
  312. package/storybook-static/assets/{matchers-JIUQ3HVY-BPS-eazD.js → matchers-JIUQ3HVY-DvR2XErZ.js} +3 -3
  313. package/storybook-static/assets/media-BycWpjAl.js +1 -0
  314. package/storybook-static/assets/odata-BaxgzNGj.js +1 -0
  315. package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +3 -0
  316. package/storybook-static/assets/odataAndTables-OEVW-gFK.js +126 -0
  317. package/storybook-static/assets/{odataFetchFn-BVgXXKgx.js → odataFetchFn-BLWeF0ZQ.js} +3 -3
  318. package/storybook-static/assets/odataStoryFixtures-BbswaX_5.js +25 -0
  319. package/storybook-static/assets/{persisted-D8qUQbts.js → persisted-BpFojVXw.js} +3 -3
  320. package/storybook-static/assets/preload-helper-BHmFeTtP.js +1 -0
  321. package/storybook-static/assets/pureUtilities-3afQk5ld.js +69 -0
  322. package/storybook-static/assets/react-18-CgkwBzTo.js +9 -0
  323. package/storybook-static/assets/react-C21x__mS.js +1 -0
  324. package/storybook-static/assets/react-CpOcCp9T.js +9 -0
  325. package/storybook-static/assets/react-CvkUhHUq.js +1 -0
  326. package/storybook-static/assets/react-dom-2o2phaJG.js +1 -0
  327. package/storybook-static/assets/react-qN2cStNd.js +1 -0
  328. package/storybook-static/assets/refresh-cw-B2VU4UNA.js +1 -0
  329. package/storybook-static/assets/rolldown-runtime-C0FnF6B9.js +1 -0
  330. package/storybook-static/assets/runtimeAndState-BEFDbOiZ.js +117 -0
  331. package/storybook-static/assets/settings-2-CLJhjWJl.js +1 -0
  332. package/storybook-static/assets/sortable-DW_Veba0.js +1 -0
  333. package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-D0RhvxXU.js +6 -0
  334. package/storybook-static/assets/theming-mTWhffkp.js +39 -0
  335. package/storybook-static/assets/trash-2-yLqdtpz8.js +1 -0
  336. package/storybook-static/assets/treeStoryFixtures-Ci7STpiz.js +1 -0
  337. package/storybook-static/assets/triangle-alert-wI8Cd8tI.js +1 -0
  338. package/storybook-static/assets/ui.module-DoMIk8Oc.js +1 -0
  339. package/storybook-static/assets/uiClasses-CO3Cdv1E.js +1 -0
  340. package/storybook-static/assets/useFlexClasses-Gn9spXEB.js +1 -0
  341. package/storybook-static/assets/useODataSelectBase-WnxdcAM4.js +1 -0
  342. package/storybook-static/assets/useODataTreeData-C7L5TOjl.js +1 -0
  343. package/storybook-static/assets/usePickerDefaultFilter-DdxyE_i8.js +1 -0
  344. package/storybook-static/assets/usePickerQuery-CAWYFpCv.js +1 -0
  345. package/storybook-static/assets/usePickerTriggerController-BRXUlggw.js +1 -0
  346. package/storybook-static/assets/utils-DUM89eIj.js +1 -0
  347. package/storybook-static/assets/x-CyFk00QC.js +1 -0
  348. package/storybook-static/iframe.html +8 -3
  349. package/storybook-static/index.html +6 -0
  350. package/storybook-static/index.json +1 -1
  351. package/storybook-static/project.json +1 -1
  352. package/storybook-static/sb-addons/a11y-3/manager-bundle.js +3 -3
  353. package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +17 -17
  354. package/storybook-static/sb-addons/docs-2/manager-bundle.js +16 -1
  355. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +85 -83
  356. package/storybook-static/sb-addons/vitest-4/manager-bundle.js +1 -1
  357. package/storybook-static/sb-manager/globals-runtime.js +9939 -7695
  358. package/storybook-static/sb-manager/runtime.js +16128 -15326
  359. package/storybook-static/vite-inject-mocker-entry.js +2 -2
  360. package/storybook-static/assets/Badge.stories-CzsgAfG9.js +0 -51
  361. package/storybook-static/assets/Button-MoWVKehO.js +0 -12
  362. package/storybook-static/assets/Button.stories-wwep4c2p.js +0 -75
  363. package/storybook-static/assets/CheckBox-DHvne_6w.js +0 -2
  364. package/storybook-static/assets/CheckBox.module-ezWPE2pa.js +0 -1
  365. package/storybook-static/assets/CheckBox.stories-C14Axs5p.js +0 -60
  366. package/storybook-static/assets/Color-KMSTOMOX-CmMBFN4-.js +0 -1
  367. package/storybook-static/assets/ContextMenu.stories-Dr-tkpqd.js +0 -90
  368. package/storybook-static/assets/DateInput-erobPRG_.js +0 -1
  369. package/storybook-static/assets/DateRangePresetSelect-Cg90Kc_w.js +0 -3
  370. package/storybook-static/assets/DateRangePresetSelect.stories-BVap0joC.js +0 -11
  371. package/storybook-static/assets/Detail.stories-CLdtvJ7q.js +0 -44
  372. package/storybook-static/assets/Dialog.stories-Dx0jZO19.js +0 -31
  373. package/storybook-static/assets/Disclosure.stories-DhUdeDK6.js +0 -41
  374. package/storybook-static/assets/DocsRenderer-JROSPFPF-Dd1n83Uq.js +0 -2
  375. package/storybook-static/assets/DropZone.stories-6yYrwQOe.js +0 -44
  376. package/storybook-static/assets/DropdownMenu-D_2LfViU.js +0 -1
  377. package/storybook-static/assets/ExpandableActionPanel.stories-DVOFSOlm.js +0 -20
  378. package/storybook-static/assets/Flex-V-qg6Ejw.js +0 -3
  379. package/storybook-static/assets/Flex.stories-BZv94LD8.js +0 -300
  380. package/storybook-static/assets/ImageCropper.stories-MLFZyJxZ.js +0 -115
  381. package/storybook-static/assets/ImageRenderer-DHhD7mUz.js +0 -2
  382. package/storybook-static/assets/ImageRenderer.stories-ChcPymk2.js +0 -22
  383. package/storybook-static/assets/ImageView.stories-DszVNgC8.js +0 -9
  384. package/storybook-static/assets/ImageViewerRuntime-D8wFAKx5.js +0 -51
  385. package/storybook-static/assets/Input-BGdz8TmT.js +0 -3
  386. package/storybook-static/assets/Input.stories-Ban0Gnck.js +0 -38
  387. package/storybook-static/assets/InputDateTime.stories-DgKVmf54.js +0 -35
  388. package/storybook-static/assets/InputFile.stories-VnRv_q2r.js +0 -36
  389. package/storybook-static/assets/InputFiles-Dn9afnyd.js +0 -1
  390. package/storybook-static/assets/InputFiles.stories-CLVn5Xfq.js +0 -33
  391. package/storybook-static/assets/InputImage.stories-D__QcSho.js +0 -51
  392. package/storybook-static/assets/LayoutPicker.stories-BCnR-zBu.js +0 -449
  393. package/storybook-static/assets/Listbox.stories-B0HctqVp.js +0 -47
  394. package/storybook-static/assets/Modal.stories-BE-VpK-a.js +0 -180
  395. package/storybook-static/assets/MultiSelect-CaCNRNIe.js +0 -2
  396. package/storybook-static/assets/MultiSelect.stories-CNkbVGsb.js +0 -29
  397. package/storybook-static/assets/NotificationsHost.stories-BgqvZzT3.js +0 -25
  398. package/storybook-static/assets/ODataMultiSelect-CMyI4yYs.js +0 -1
  399. package/storybook-static/assets/ODataMultiSelect.stories-DTGCC6np.js +0 -73
  400. package/storybook-static/assets/ODataSelect-CGplYBh_.js +0 -1
  401. package/storybook-static/assets/ODataSelect.stories-CsxqRAvn.js +0 -73
  402. package/storybook-static/assets/ODataTreeMultiSelect-4ZiAtFZk.js +0 -19
  403. package/storybook-static/assets/ODataTreeMultiSelect.stories-B29Od8BL.js +0 -30
  404. package/storybook-static/assets/ODataTreeSelect-yZy7MBsZ.js +0 -17
  405. package/storybook-static/assets/ODataTreeSelect.stories-H7eaj1Sz.js +0 -24
  406. package/storybook-static/assets/PeriodSelect.stories-6CEzS2_H.js +0 -64
  407. package/storybook-static/assets/Popover.stories-BNgWOHlJ.js +0 -69
  408. package/storybook-static/assets/PresetRangeDateInput.stories-6UPVDF62.js +0 -15
  409. package/storybook-static/assets/RadioButton.stories-DbdFfJqO.js +0 -36
  410. package/storybook-static/assets/RadioGroup-BA21indC.js +0 -1
  411. package/storybook-static/assets/RadioGroup.stories-Ce6x0WUN.js +0 -42
  412. package/storybook-static/assets/Select-DyO25wSA.js +0 -12
  413. package/storybook-static/assets/Select.stories-CQ8f9fY9.js +0 -46
  414. package/storybook-static/assets/SelectOptionContent-fC4HFG5Q.js +0 -1
  415. package/storybook-static/assets/SerializableSelect-ki4BThj7.js +0 -4
  416. package/storybook-static/assets/SerializableSelect.stories-BzXBkWPI.js +0 -43
  417. package/storybook-static/assets/SingleDateTimeInput.stories-CI2yrD-f.js +0 -78
  418. package/storybook-static/assets/Slider.stories-D3O3_tqE.js +0 -77
  419. package/storybook-static/assets/SliderInput.stories-D1puleZB.js +0 -67
  420. package/storybook-static/assets/Sortable.stories-BoaL4W6r.js +0 -141
  421. package/storybook-static/assets/Splitter.stories-DJpFzZVJ.js +0 -22
  422. package/storybook-static/assets/StateSelect.stories-Ch2Gzzmd.js +0 -47
  423. package/storybook-static/assets/StringToggle.stories-B8qIG0M3.js +0 -6
  424. package/storybook-static/assets/Switch.stories-BysIhUHa.js +0 -26
  425. package/storybook-static/assets/Table.stories-CBpgmq7b.js +0 -122
  426. package/storybook-static/assets/Tabs.stories-BPYZuvzR.js +0 -58
  427. package/storybook-static/assets/TagInput.stories-BwOEnVpz.js +0 -18
  428. package/storybook-static/assets/Textarea.stories-BSJGz7JF.js +0 -27
  429. package/storybook-static/assets/TimePanel-ClMfq_py.js +0 -1
  430. package/storybook-static/assets/TimePanel.stories-_FqWdmta.js +0 -25
  431. package/storybook-static/assets/Toggle-BFhzeK2e.js +0 -1
  432. package/storybook-static/assets/Toggle.stories-Dw5UkD_b.js +0 -30
  433. package/storybook-static/assets/TreeMultiSelect-CerqHY2K.js +0 -19
  434. package/storybook-static/assets/TreeMultiSelect-Dw7FI3ic.js +0 -1
  435. package/storybook-static/assets/TreeMultiSelect.stories-BTQKFbeP.js +0 -35
  436. package/storybook-static/assets/TreePickerBase-rJISGJBT.js +0 -22
  437. package/storybook-static/assets/TreeSelect-CQ1vj_c9.js +0 -16
  438. package/storybook-static/assets/TreeSelect-Cp_lX0-B.js +0 -1
  439. package/storybook-static/assets/TreeSelect.stories-D6Q02Phx.js +0 -18
  440. package/storybook-static/assets/TreeTable.stories-YfyhkqH9.js +0 -83
  441. package/storybook-static/assets/WithTooltip-7X4HQR7L-BSQyvCOM.js +0 -9
  442. package/storybook-static/assets/axe-GLfyhAYL.js +0 -20
  443. package/storybook-static/assets/base-table-BNO0lnTL.css +0 -1
  444. package/storybook-static/assets/base-table-Dy3fEhQe.js +0 -18
  445. package/storybook-static/assets/blocks-ixiC6_NZ.js +0 -285
  446. package/storybook-static/assets/button-DZpTIXz2.js +0 -1
  447. package/storybook-static/assets/check-box-DByHwJGx.js +0 -1
  448. package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +0 -1
  449. package/storybook-static/assets/chunk-3LY4VQVK-BohfESrT.js +0 -6
  450. package/storybook-static/assets/chunk-LITCR56V-XaMGADKk.js +0 -18
  451. package/storybook-static/assets/contextMenu-BbMrBF3b.js +0 -2
  452. package/storybook-static/assets/date-7kR6zFX5.js +0 -461
  453. package/storybook-static/assets/date-segments-CzU9k5bl.js +0 -1
  454. package/storybook-static/assets/error-BRUjWXbJ.js +0 -1
  455. package/storybook-static/assets/file-CI_sonB1.js +0 -291
  456. package/storybook-static/assets/file-hArYcyES.js +0 -1
  457. package/storybook-static/assets/flex-C--89Z3g.js +0 -1
  458. package/storybook-static/assets/floating-ui.react-DLXcGGFR.js +0 -1
  459. package/storybook-static/assets/formatter-L2YTDE3Q-DgyzUf7M.js +0 -1
  460. package/storybook-static/assets/formatters-BtIOYENB.js +0 -3
  461. package/storybook-static/assets/formulas-DRh9I2eS.js +0 -2
  462. package/storybook-static/assets/grid-DLxeTZJe.js +0 -1
  463. package/storybook-static/assets/hooks-DWeJq8G1.js +0 -5
  464. package/storybook-static/assets/iframe-BJGIOdSH.js +0 -1119
  465. package/storybook-static/assets/input-DXi75xv1.js +0 -1
  466. package/storybook-static/assets/mdx-react-shim-CmoAsjhK.js +0 -1
  467. package/storybook-static/assets/media-DWFaNgLM.js +0 -1
  468. package/storybook-static/assets/misc-BElIqBdV.css +0 -1
  469. package/storybook-static/assets/misc-DNZTbWc6.js +0 -5
  470. package/storybook-static/assets/notifications-DjtgzFqT.js +0 -1
  471. package/storybook-static/assets/number-Xkw1yPJo.js +0 -2
  472. package/storybook-static/assets/odata-C4Liwkjx.js +0 -1
  473. package/storybook-static/assets/odata-service-C2oJ-ZmZ.js +0 -1
  474. package/storybook-static/assets/odataStoryFixtures-eEGvvtmw.js +0 -25
  475. package/storybook-static/assets/picker-DsP4xCcJ.js +0 -2
  476. package/storybook-static/assets/popover-BiQHI7Wi.css +0 -1
  477. package/storybook-static/assets/popover-CuFTypCp.js +0 -2
  478. package/storybook-static/assets/preload-helper-B45gAKPr.js +0 -1
  479. package/storybook-static/assets/preset-select-SPNHA-mp.js +0 -5
  480. package/storybook-static/assets/pwa-B7uYfAPd.js +0 -640
  481. package/storybook-static/assets/queryClient-CA0puYc0.js +0 -567
  482. package/storybook-static/assets/react-18-CaNSmcD-.js +0 -9
  483. package/storybook-static/assets/react-3qMIUlAf.js +0 -9
  484. package/storybook-static/assets/react-dom-BC7xZNHy.js +0 -1
  485. package/storybook-static/assets/select-sUla5-3b.js +0 -1
  486. package/storybook-static/assets/slider--Yp_sa_W.js +0 -2
  487. package/storybook-static/assets/sortable-jALaQqYE.js +0 -1
  488. package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-u_WDwfDn.js +0 -6
  489. package/storybook-static/assets/text-D5xgciF8.js +0 -4
  490. package/storybook-static/assets/theming-oB64gsjY.js +0 -39
  491. package/storybook-static/assets/treeStoryFixtures-Y_nnjz0_.js +0 -1
  492. package/storybook-static/assets/ui-DWDaBPQx.js +0 -1
  493. package/storybook-static/assets/ui.module-wFHXkJzp.js +0 -1
  494. package/storybook-static/assets/uiClasses-CaHp0EWd.js +0 -1
  495. package/storybook-static/assets/useODataSelectBase-DjlPxmxr.js +0 -1
  496. package/storybook-static/assets/useODataTreeData-1W6cbuec.js +0 -1
  497. package/storybook-static/assets/utils-DzbSigQl.js +0 -1
  498. package/storybook-static/assets/valueState-GnkKWBTr.js +0 -277
  499. /package/storybook-static/assets/{DropdownMenu-BgzIzwzM.css → ContextMenu-BgzIzwzM.css} +0 -0
  500. /package/storybook-static/assets/{Grid-K9R_IHaw.css → GridContainer-K9R_IHaw.css} +0 -0
  501. /package/storybook-static/assets/{InputFiles-ByK52qUe.css → InputFilesList-ByK52qUe.css} +0 -0
  502. /package/storybook-static/assets/{MultiSelect-BoIwmje6.css → MultiSelectToken-BoIwmje6.css} +0 -0
  503. /package/storybook-static/assets/{slider-DMDFRH6B.css → Slider-DMDFRH6B.css} +0 -0
  504. /package/storybook-static/assets/{Flex-IXK2se1Y.css → useFlexClasses-IXK2se1Y.css} +0 -0
  505. /package/storybook-static/assets/{picker-DzBkX15M.css → usePickerTriggerController-DzBkX15M.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/toggle/stringToggleState.ts","../../src/toggle/Toggle.module.scss","../../src/toggle/Toggle.tsx","../../src/toggle/StringToggle.tsx"],"sourcesContent":["/**\n * Строковые значения по умолчанию позволяют использовать StringToggle\n * как строковое представление обычного boolean-переключателя.\n */\nexport const DEFAULT_STRING_TOGGLE_CHECKED_VALUE = \"true\";\nexport const DEFAULT_STRING_TOGGLE_UNCHECKED_VALUE = \"false\";\n\n/**\n * Возвращает переданную строку буквально, включая пустую строку и пробелы.\n * Fallback применяется только когда строковое значение отсутствует.\n */\nexport function resolveStringToggleStateValue(value: unknown, fallback: string): string {\n\treturn typeof value === \"string\" ? value : fallback;\n}\n","@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-info-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-info-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-info-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","import { type ComponentProps } from \"react\";\n\nimport {\n\tDEFAULT_STRING_TOGGLE_CHECKED_VALUE,\n\tDEFAULT_STRING_TOGGLE_UNCHECKED_VALUE,\n\tresolveStringToggleStateValue\n} from \"./stringToggleState\";\nimport { Toggle } from \"./Toggle\";\n\n/**\n * Публичный контракт Toggle, который принимает и возвращает два настраиваемых\n * строковых значения вместо boolean.\n */\nexport type StringToggleProps = Omit<ComponentProps<typeof Toggle>, \"value\" | \"onChange\"> & {\n\tcheckedValue?: string;\n\tuncheckedValue?: string;\n\tvalue: string;\n\tonChange: (value: string) => void;\n};\n\n/**\n * Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.\n */\nexport function StringToggle({\n\tvalue,\n\tonChange,\n\tcheckedValue: configuredCheckedValue,\n\tuncheckedValue: configuredUncheckedValue,\n\tdefaultChecked: _defaultChecked,\n\t...props\n}: StringToggleProps) {\n\t/*\n\t * StringToggle является controlled-компонентом: визуальное состояние всегда\n\t * определяется `value`, поэтому native defaultChecked не передаётся в input.\n\t */\n\tvoid _defaultChecked;\n\n\tconst checkedValue = resolveStringToggleStateValue(configuredCheckedValue, DEFAULT_STRING_TOGGLE_CHECKED_VALUE);\n\tconst uncheckedValue = resolveStringToggleStateValue(configuredUncheckedValue, DEFAULT_STRING_TOGGLE_UNCHECKED_VALUE);\n\tconst isChecked = value === checkedValue;\n\n\treturn <Toggle {...props} value={isChecked} onChange={(checked) => onChange(checked ? checkedValue : uncheckedValue)} />;\n}\n"],"mappings":";;;;;AAIA,IAAa,IAAsC,QACtC,IAAwC;AAMrD,SAAgB,EAA8B,GAAgB,GAA0B;CACvF,OAAO,OAAO,KAAU,WAAW,IAAQ;AAC5C;;;;;;;;;;;;;AEQA,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;;;AC7DA,SAAgB,EAAa,EAC5B,UACA,aACA,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,GAAG,KACkB;CAOrB,IAAM,IAAe,EAA8B,GAAwB,CAAmC,GACxG,IAAiB,EAA8B,GAA0B,CAAqC,GAC9G,IAAY,MAAU;CAE5B,OAAO,kBAAC,GAAD;EAAQ,GAAI;EAAO,OAAO;EAAW,WAAW,MAAY,EAAS,IAAU,IAAe,CAAc;CAAI,CAAA;AACxH"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/toggle/stringToggleState.ts","../../src/toggle/Toggle.module.scss","../../src/toggle/Toggle.tsx","../../src/toggle/StringToggle.tsx"],"sourcesContent":["/**\n * Строковые значения по умолчанию позволяют использовать StringToggle\n * как строковое представление обычного boolean-переключателя.\n */\nexport const DEFAULT_STRING_TOGGLE_CHECKED_VALUE = \"true\";\nexport const DEFAULT_STRING_TOGGLE_UNCHECKED_VALUE = \"false\";\n\n/**\n * Возвращает переданную строку буквально, включая пустую строку и пробелы.\n * Fallback применяется только когда строковое значение отсутствует.\n */\nexport function resolveStringToggleStateValue(value: unknown, fallback: string): string {\n\treturn typeof value === \"string\" ? value : fallback;\n}\n","@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-info-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-info-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-info-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","import { type ComponentProps } from \"react\";\n\nimport {\n\tDEFAULT_STRING_TOGGLE_CHECKED_VALUE,\n\tDEFAULT_STRING_TOGGLE_UNCHECKED_VALUE,\n\tresolveStringToggleStateValue\n} from \"./stringToggleState\";\nimport { Toggle } from \"./Toggle\";\n\n/**\n * Публичный контракт Toggle, который принимает и возвращает два настраиваемых\n * строковых значения вместо boolean.\n */\nexport type StringToggleProps = Omit<ComponentProps<typeof Toggle>, \"value\" | \"onChange\"> & {\n\tcheckedValue?: string;\n\tuncheckedValue?: string;\n\tvalue: string;\n\tonChange: (value: string) => void;\n};\n\n/**\n * Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.\n */\nexport function StringToggle({\n\tvalue,\n\tonChange,\n\tcheckedValue: configuredCheckedValue,\n\tuncheckedValue: configuredUncheckedValue,\n\tdefaultChecked: _defaultChecked,\n\t...props\n}: StringToggleProps) {\n\t/*\n\t * StringToggle является controlled-компонентом: визуальное состояние всегда\n\t * определяется `value`, поэтому native defaultChecked не передаётся в input.\n\t */\n\tvoid _defaultChecked;\n\n\tconst checkedValue = resolveStringToggleStateValue(configuredCheckedValue, DEFAULT_STRING_TOGGLE_CHECKED_VALUE);\n\tconst uncheckedValue = resolveStringToggleStateValue(configuredUncheckedValue, DEFAULT_STRING_TOGGLE_UNCHECKED_VALUE);\n\tconst isChecked = value === checkedValue;\n\n\treturn <Toggle {...props} value={isChecked} onChange={(checked) => onChange(checked ? checkedValue : uncheckedValue)} />;\n}\n"],"mappings":";;;;;AAIA,IAAa,IAAsC,QACtC,IAAwC;AAMrD,SAAgB,EAA8B,GAAgB,GAA0B;CACvF,OAAO,OAAO,KAAU,WAAW,IAAQ;AAC5C;;;;;;;;;;;;;AEQA,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;EACtC,UAAA;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;EAF5B,UAAA,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAvB,UAAA;IACE,MAAkB,YAAY;IAC/B,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAvB,UAAA,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;MAAhF,UAAA;OACC,kBAAC,OAAD,EAAK,WAAW,EAAO,MAAQ,CAAA;OAC/B,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,SAAS;QAAI,UAAA;OAAmB,CAAA;OACzE,kBAAC,OAAD;QAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,OAAO;QAAI,UAAA;OAAiB,CAAA;MACjE;KACD,CAAA,CAAA;;IACJ,MAAkB,WAAW;GAC1B;EACJ,CAAA,GAAA,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;GACxC,UAAA;EACC,CAAA,CAEA;;AAEP;;;AC7DA,SAAgB,EAAa,EAC5B,UACA,aACA,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,GAAG,KACkB;CAOrB,IAAM,IAAe,EAA8B,GAAwB,CAAmC,GACxG,IAAiB,EAA8B,GAA0B,CAAqC,GAC9G,IAAY,MAAU;CAE5B,OAAO,kBAAC,GAAD;EAAQ,GAAI;EAAO,OAAO;EAAW,WAAW,MAAY,EAAS,IAAU,IAAe,CAAc;CAAI,CAAA;AACxH"}
@@ -1,4 +1,4 @@
1
- import { r as e, t } from "../chunks/flex-DYZ0IbU6.js";
1
+ import { r as e, t } from "../chunks/flex-C7njxZ74.js";
2
2
  import { t as n } from "../chunks/grid-dI94AAbi.js";
3
3
  import { Children as r } from "react";
4
4
  import { childrenCount as i } from "@ryuzaki13/react-foundation-lib/utils";
@@ -18,7 +18,6 @@ function u({ children: a, className: u }) {
18
18
  case l.displayName:
19
19
  if (f) throw Error("Toolbar: duplicate <ToolbarEnd> found");
20
20
  f = e.props.children;
21
- break;
22
21
  }
23
22
  return /* @__PURE__ */ s(e.Container, {
24
23
  wrap: !0,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/toolbar/Toolbar.tsx"],"sourcesContent":["import React, { Children, PropsWithChildren, ReactNode } from \"react\";\n\nimport { childrenCount } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { Flex, FlexSpacer } from \"../flex\";\nimport { Grid } from \"../grid\";\n\nexport const ToolbarStart: React.FC<PropsWithChildren> = ({ children }) => <>{children}</>;\nToolbarStart.displayName = \"Toolbar.Start\";\n\nexport const ToolbarEnd: React.FC<PropsWithChildren> = ({ children }) => <>{children}</>;\nToolbarEnd.displayName = \"Toolbar.End\";\n\ntype ToolbarStartElement = React.ReactElement<{ children: ReactNode }, typeof ToolbarStart>;\ntype ToolbarEndElement = React.ReactElement<{ children: ReactNode }, typeof ToolbarEnd>;\n\ntype ToolbarChildren = [ToolbarStartElement, ToolbarEndElement] | ToolbarStartElement | ToolbarEndElement;\n\ninterface ToolbarProps {\n\tchildren: ToolbarChildren;\n\tclassName?: string;\n}\n\nexport function Toolbar({ children, className }: ToolbarProps) {\n\tlet toolbarStart: ReactNode = null;\n\tlet toolbarEnd: ReactNode = null;\n\n\tconst childArray = Children.toArray(children) as (ToolbarStartElement | ToolbarEndElement)[];\n\n\tfor (const child of childArray) {\n\t\tconst typeName = child.type.displayName;\n\n\t\tswitch (typeName) {\n\t\t\tcase ToolbarStart.displayName:\n\t\t\t\tif (toolbarStart) throw new Error(\"Toolbar: duplicate <ToolbarStart> found\");\n\t\t\t\ttoolbarStart = child.props.children;\n\t\t\t\tbreak;\n\t\t\tcase ToolbarEnd.displayName:\n\t\t\t\tif (toolbarEnd) throw new Error(\"Toolbar: duplicate <ToolbarEnd> found\");\n\t\t\t\ttoolbarEnd = child.props.children;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn (\n\t\t<Flex.Container wrap align=\"center\" gap=\"md\" className={className}>\n\t\t\t{toolbarStart && (\n\t\t\t\t<Flex.Item flex0>\n\t\t\t\t\t<Grid.Container\n\t\t\t\t\t\ttemplateColumns={`repeat(${childrenCount(toolbarStart)}, calc(15em + var(--width-add)))`}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tgap=\"sm\">\n\t\t\t\t\t\t{toolbarStart}\n\t\t\t\t\t</Grid.Container>\n\t\t\t\t</Flex.Item>\n\t\t\t)}\n\n\t\t\t<FlexSpacer />\n\n\t\t\t{toolbarEnd && (\n\t\t\t\t<Flex.Item flex0>\n\t\t\t\t\t<Grid.Container\n\t\t\t\t\t\ttemplateColumns={`repeat(${childrenCount(toolbarEnd)}, calc(15em + var(--width-add)))`}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tgap=\"sm\">\n\t\t\t\t\t\t{toolbarEnd}\n\t\t\t\t\t</Grid.Container>\n\t\t\t\t</Flex.Item>\n\t\t\t)}\n\t\t</Flex.Container>\n\t);\n}\n"],"mappings":";;;;;;AAOA,IAAa,KAA6C,EAAE,kBAAe,kBAAA,GAAA,EAAG,YAAW,CAAA;AACzF,EAAa,cAAc;AAE3B,IAAa,KAA2C,EAAE,kBAAe,kBAAA,GAAA,EAAG,YAAW,CAAA;AACvF,EAAW,cAAc;AAYzB,SAAgB,EAAQ,EAAE,aAAU,gBAA2B;CAC9D,IAAI,IAA0B,MAC1B,IAAwB,MAEtB,IAAa,EAAS,QAAQ,CAAQ;CAE5C,KAAK,IAAM,KAAS,GAGnB,QAFiB,EAAM,KAAK,aAE5B;EACC,KAAK,EAAa;GACjB,IAAI,GAAc,MAAU,MAAM,yCAAyC;GAC3E,IAAe,EAAM,MAAM;GAC3B;EACD,KAAK,EAAW;GACf,IAAI,GAAY,MAAU,MAAM,uCAAuC;GACvE,IAAa,EAAM,MAAM;GACzB;CACF;CAGD,OACC,kBAAC,EAAK,WAAN;EAAgB,MAAA;EAAK,OAAM;EAAS,KAAI;EAAgB;YAAxD;GACE,KACA,kBAAC,EAAK,MAAN;IAAW,OAAA;cACV,kBAAC,EAAK,WAAN;KACC,iBAAiB,UAAU,EAAc,CAAY,EAAE;KACvD,OAAM;KACN,KAAI;eACH;IACc,CAAA;GACN,CAAA;GAGZ,kBAAC,GAAD,CAAa,CAAA;GAEZ,KACA,kBAAC,EAAK,MAAN;IAAW,OAAA;cACV,kBAAC,EAAK,WAAN;KACC,iBAAiB,UAAU,EAAc,CAAU,EAAE;KACrD,OAAM;KACN,KAAI;eACH;IACc,CAAA;GACN,CAAA;EAEG;;AAElB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/toolbar/Toolbar.tsx"],"sourcesContent":["import React, { Children, PropsWithChildren, ReactNode } from \"react\";\n\nimport { childrenCount } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { Flex, FlexSpacer } from \"../flex\";\nimport { Grid } from \"../grid\";\n\nexport const ToolbarStart: React.FC<PropsWithChildren> = ({ children }) => <>{children}</>;\nToolbarStart.displayName = \"Toolbar.Start\";\n\nexport const ToolbarEnd: React.FC<PropsWithChildren> = ({ children }) => <>{children}</>;\nToolbarEnd.displayName = \"Toolbar.End\";\n\ntype ToolbarStartElement = React.ReactElement<{ children: ReactNode }, typeof ToolbarStart>;\ntype ToolbarEndElement = React.ReactElement<{ children: ReactNode }, typeof ToolbarEnd>;\n\ntype ToolbarChildren = [ToolbarStartElement, ToolbarEndElement] | ToolbarStartElement | ToolbarEndElement;\n\ninterface ToolbarProps {\n\tchildren: ToolbarChildren;\n\tclassName?: string;\n}\n\nexport function Toolbar({ children, className }: ToolbarProps) {\n\tlet toolbarStart: ReactNode = null;\n\tlet toolbarEnd: ReactNode = null;\n\n\tconst childArray = Children.toArray(children) as (ToolbarStartElement | ToolbarEndElement)[];\n\n\tfor (const child of childArray) {\n\t\tconst typeName = child.type.displayName;\n\n\t\tswitch (typeName) {\n\t\t\tcase ToolbarStart.displayName:\n\t\t\t\tif (toolbarStart) throw new Error(\"Toolbar: duplicate <ToolbarStart> found\");\n\t\t\t\ttoolbarStart = child.props.children;\n\t\t\t\tbreak;\n\t\t\tcase ToolbarEnd.displayName:\n\t\t\t\tif (toolbarEnd) throw new Error(\"Toolbar: duplicate <ToolbarEnd> found\");\n\t\t\t\ttoolbarEnd = child.props.children;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn (\n\t\t<Flex.Container wrap align=\"center\" gap=\"md\" className={className}>\n\t\t\t{toolbarStart && (\n\t\t\t\t<Flex.Item flex0>\n\t\t\t\t\t<Grid.Container\n\t\t\t\t\t\ttemplateColumns={`repeat(${childrenCount(toolbarStart)}, calc(15em + var(--width-add)))`}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tgap=\"sm\">\n\t\t\t\t\t\t{toolbarStart}\n\t\t\t\t\t</Grid.Container>\n\t\t\t\t</Flex.Item>\n\t\t\t)}\n\n\t\t\t<FlexSpacer />\n\n\t\t\t{toolbarEnd && (\n\t\t\t\t<Flex.Item flex0>\n\t\t\t\t\t<Grid.Container\n\t\t\t\t\t\ttemplateColumns={`repeat(${childrenCount(toolbarEnd)}, calc(15em + var(--width-add)))`}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tgap=\"sm\">\n\t\t\t\t\t\t{toolbarEnd}\n\t\t\t\t\t</Grid.Container>\n\t\t\t\t</Flex.Item>\n\t\t\t)}\n\t\t</Flex.Container>\n\t);\n}\n"],"mappings":";;;;;;AAOA,IAAa,KAA6C,EAAE,kBAAe,kBAAA,GAAA,EAAG,YAAW,CAAA;AACzF,EAAa,cAAc;AAE3B,IAAa,KAA2C,EAAE,kBAAe,kBAAA,GAAA,EAAG,YAAW,CAAA;AACvF,EAAW,cAAc;AAYzB,SAAgB,EAAQ,EAAE,aAAU,gBAA2B;CAC9D,IAAI,IAA0B,MAC1B,IAAwB,MAEtB,IAAa,EAAS,QAAQ,CAAQ;CAE5C,KAAK,IAAM,KAAS,GAGnB,QAFiB,EAAM,KAAK,aAE5B;EACC,KAAK,EAAa;GACjB,IAAI,GAAc,MAAU,MAAM,yCAAyC;GAC3E,IAAe,EAAM,MAAM;GAC3B;EACD,KAAK,EAAW;GACf,IAAI,GAAY,MAAU,MAAM,uCAAuC;GACvE,IAAa,EAAM,MAAM;CAE3B;CAGD,OACC,kBAAC,EAAK,WAAN;EAAgB,MAAA;EAAK,OAAM;EAAS,KAAI;EAAgB;EAAxD,UAAA;GACE,KACA,kBAAC,EAAK,MAAN;IAAW,OAAA;IACV,UAAA,kBAAC,EAAK,WAAN;KACC,iBAAiB,UAAU,EAAc,CAAY,EAAE;KACvD,OAAM;KACN,KAAI;KACH,UAAA;IACc,CAAA;GACN,CAAA;GAGZ,kBAAC,GAAD,CAAa,CAAA;GAEZ,KACA,kBAAC,EAAK,MAAN;IAAW,OAAA;IACV,UAAA,kBAAC,EAAK,WAAN;KACC,iBAAiB,UAAU,EAAc,CAAU,EAAE;KACrD,OAAM;KACN,KAAI;KACH,UAAA;IACc,CAAA;GACN,CAAA;EAEG;;AAElB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/tree/Tree.module.scss","../../src/tree/Tree.tsx"],"sourcesContent":[".nodeItem {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.treeContainer {\n\tpadding: var(--space-md);\n}\n\n.nestedList {\n\tpadding-left: var(--space-md);\n}\n\n.nestedСounter {\n\tcounter-reset: item;\n\tlist-style-type: none;\n\tpadding-left: var(--space-md);\n\n\t.nestedList {\n\t\tmargin-left: var(--space-md);\n\t}\n\n\tol {\n\t\tcounter-reset: item;\n\t}\n\n\tli {\n\t\tcounter-increment: item;\n\t\tposition: relative;\n\n\t\t&::before {\n\t\t\tcontent: counters(item, \".\") \". \";\n\t\t\tposition: absolute;\n\t\t\tleft: 0;\n\t\t\ttransform: translateX(calc(-100% - 0.25em));\n\t\t}\n\t}\n}\n","// Tree.tsx\nimport React, { createElement, CSSProperties, KeyboardEvent, useMemo } from \"react\";\n\nimport { cn, handleKeyboardActivation } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./Tree.module.scss\";\n\n/**\n * Базовый тип — любое дерево с возможным полем children\n */\nexport interface TreeNodeBase {\n\tchildren?: readonly TreeNodeBase[] | undefined;\n\t[key: string]: unknown;\n}\n\n/**\n * Пропсы, которые получает callback рендера узла\n */\nexport interface TreeNodeRenderProps<T extends TreeNodeBase> {\n\tnode: T;\n\tlevel: number;\n\thasChildren: boolean;\n\tisLeaf: boolean;\n\tpath: (string | number)[];\n}\n\n/**\n * Основные пропсы компонента Tree\n */\nexport interface TreeProps<T extends TreeNodeBase> {\n\tdata: readonly T[];\n\t/**\n\t * Ключ для дочерних нод (по умолчанию \"children\")\n\t */\n\tchildrenKey?: keyof T;\n\t/**\n\t * Альтернатива childrenKey — функция, возвращающая children\n\t */\n\tgetChildren?: (node: T) => readonly T[] | undefined;\n\t/**\n\t * Как брать ключ для каждого узла (по умолчанию node.id || node.key || index)\n\t */\n\tgetKey?: (node: T, index: number, path: (string | number)[]) => React.Key;\n\t/**\n\t * Функция, которая рисует содержимое узла.\n\t * Если не передана — делается \"разумный\" дефолт (node.title || node.text || JSON).\n\t */\n\trenderNode?: (props: TreeNodeRenderProps<T>) => React.ReactNode;\n\t/**\n\t * Если задано — узел считается интерактивным и будет обёрнут в кнопку для клавиатурной доступности.\n\t */\n\tonNodeClick?: (node: T, path: (string | number)[]) => void;\n\n\t/* Стилизация и классы — внешняя настройка */\n\tcontainerElement?: \"ol\" | \"ul\" | \"div\"; // по умолчанию \"ol\"\n\tcontainerClassName?: string;\n\tcontainerStyle?: CSSProperties;\n\tnestedCounter?: boolean;\n\n\titemClassName?: string;\n\titemStyle?: CSSProperties;\n\n\tnestedListClassName?: string;\n\tnestedListStyle?: CSSProperties;\n\n\tlabelClassName?: string;\n\tlabelStyle?: CSSProperties;\n}\n\n/* ---- Вспомогательные реализации ---- */\n\nconst defaultChildrenKey = \"children\";\n\n/** Умный дефолт для получения ключа */\nfunction defaultGetKey<T extends TreeNodeBase>(node: T, index: number) {\n\t// часто встречающиеся поля — id, key\n\tconst maybeId = (node as Record<string, string>).id ?? (node as Record<string, string>).key;\n\treturn (maybeId as React.Key) ?? index;\n}\n\n/** Умолчание для рендера узла (если пользователь не передал renderNode) */\nfunction defaultRenderNode<T extends TreeNodeBase>({ node, level }: TreeNodeRenderProps<T>) {\n\tconst title = (node as Record<string, string>).title ?? (node as Record<string, string>).text ?? (node as Record<string, string>).label;\n\tif (typeof title === \"string\" || typeof title === \"number\") {\n\t\treturn (\n\t\t\t<div aria-level={level + 1} style={{ display: \"inline-block\" }}>\n\t\t\t\t{title}\n\t\t\t</div>\n\t\t);\n\t}\n\t// fallback — краткое представление объекта\n\treturn <div aria-level={level + 1}>{JSON.stringify(title ?? node)}</div>;\n}\n\n/* ---- Компонент ---- */\n\n/**\n * Универсальный компонент Tree\n * Не использует глобальный state и не знает бизнес-логики — всё через renderNode / callbacks.\n */\nexport function Tree<T extends TreeNodeBase>(props: TreeProps<T>) {\n\tconst {\n\t\tdata,\n\t\tchildrenKey = defaultChildrenKey as keyof T,\n\t\tgetChildren,\n\t\tgetKey = defaultGetKey,\n\t\trenderNode,\n\t\tonNodeClick,\n\t\tcontainerElement = \"ol\",\n\t\tcontainerClassName,\n\t\tcontainerStyle,\n\t\tnestedCounter: isContainerNested,\n\t\titemClassName,\n\t\titemStyle,\n\t\tnestedListClassName,\n\t\tnestedListStyle,\n\t\tlabelClassName,\n\t\tlabelStyle\n\t} = props;\n\n\t/**\n\t * Получить children для ноды — сначала getChildren, иначе node[childrenKey]\n\t */\n\tconst resolveChildren = (node: T): readonly T[] | undefined => {\n\t\tif (typeof getChildren === \"function\") return getChildren(node);\n\t\tconst maybe = node[childrenKey];\n\t\treturn Array.isArray(maybe) ? (maybe as readonly T[]) : undefined;\n\t};\n\n\t/**\n\t * Компонент/функция, рендерящая один узел (рекурсивно)\n\t *\n\t * Определяем как вложенную функцию — она использует замыкания resolveChildren, getKey и т.д.\n\t * Это простая рекурсия, и ключи выставляются родителем при map'е.\n\t */\n\tconst renderNodeRecursively = (node: T, index: number, level: number, path: (string | number)[]): React.ReactElement => {\n\t\tconst children = resolveChildren(node);\n\t\tconst hasChildren = Array.isArray(children) && children.length > 0;\n\t\tconst isLeaf = !hasChildren;\n\n\t\t// Контент узла — либо через renderNode проп, либо дефолтный\n\t\tconst nodeContent =\n\t\t\ttypeof renderNode === \"function\"\n\t\t\t\t? renderNode({ node, level, hasChildren, isLeaf, path })\n\t\t\t\t: defaultRenderNode<T>({ node, level, hasChildren, isLeaf, path });\n\n\t\t// NodeItem — оболочка, которая делает узел интерактивным при наличии onNodeClick\n\t\tfunction NodeItem() {\n\t\t\tconst label = (\n\t\t\t\t<div className={labelClassName} style={labelStyle} aria-current={isLeaf ? undefined : false}>\n\t\t\t\t\t{nodeContent}\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\tif (!onNodeClick) {\n\t\t\t\t// Неинтерактивный вариант — semantic wrapper (div)\n\t\t\t\treturn <div role=\"presentation\">{label}</div>;\n\t\t\t}\n\n\t\t\t// Интерактивный вариант — кнопка, доступная с клавиатуры\n\t\t\tconst handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n\t\t\t\t// Enter и Space должны срабатывать как клик\n\t\t\t\thandleKeyboardActivation(e, () => onNodeClick(node, path));\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => onNodeClick(node, path)}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tdata-ui=\"tree-node-button\"\n\t\t\t\t\tdata-action=\"select-tree-node\"\n\t\t\t\t\t// семантика уровня — aria-level при необходимости можно добавить\n\t\t\t\t\taria-expanded={hasChildren ? true : undefined}\n\t\t\t\t\tstyle={{ background: \"transparent\", border: 0, padding: 0, cursor: \"pointer\" }}>\n\t\t\t\t\t{label}\n\t\t\t\t</button>\n\t\t\t);\n\t\t}\n\n\t\t// Собираем <li> с контентом и, при наличии детей, вложенным списком\n\t\tconst Li = (\n\t\t\t<li key={getKey(node, index, path)} className={cn(styles.nodeItem, itemClassName)} style={itemStyle}>\n\t\t\t\t<NodeItem />\n\n\t\t\t\t{hasChildren &&\n\t\t\t\t\t// дочерний список — используем тот же контейнер, что и root (ol|ul|div)\n\t\t\t\t\tcreateElement(\n\t\t\t\t\t\tcontainerElement,\n\t\t\t\t\t\t{ className: nestedListClassName ?? styles.nestedList, style: nestedListStyle },\n\t\t\t\t\t\tchildren!.map((child, ci) => renderNodeRecursively(child as T, ci, level + 1, [...path, ci]))\n\t\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\n\t\treturn Li;\n\t};\n\n\tconst treeContent = useMemo(\n\t\t() =>\n\t\t\tdata.map((node, i) => {\n\t\t\t\tconst paths: (string | number)[] = [i];\n\t\t\t\treturn renderNodeRecursively(node as T, i, 0, paths);\n\t\t\t}),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\t// кусок deps — включаем те пропсы, которые влияют на результат\n\t\t\tdata,\n\t\t\tchildrenKey,\n\t\t\t// getChildren и getKey — функции, которые могут быть изменены пользователем\n\t\t\tgetChildren,\n\t\t\tgetKey,\n\t\t\trenderNode,\n\t\t\tonNodeClick,\n\t\t\tcontainerElement,\n\t\t\titemClassName,\n\t\t\titemStyle,\n\t\t\tnestedListClassName,\n\t\t\tnestedListStyle,\n\t\t\tlabelClassName,\n\t\t\tlabelStyle\n\t\t]\n\t);\n\n\t// Рендер внешнего контейнера (по умолчанию ol)\n\treturn createElement(\n\t\tcontainerElement,\n\t\t{\n\t\t\tclassName: cn(containerClassName ?? styles.treeContainer, isContainerNested && styles.nestedСounter),\n\t\t\tstyle: containerStyle\n\t\t},\n\t\ttreeContent\n\t);\n}\n"],"mappings":";;;;;;;;GCuEM,IAAqB;AAG3B,SAAS,EAAsC,GAAS,GAAe;CAGtE,OADiB,EAAgC,MAAO,EAAgC,OACvD;AAClC;AAGA,SAAS,EAA0C,EAAE,SAAM,YAAiC;CAC3F,IAAM,IAAS,EAAgC,SAAU,EAAgC,QAAS,EAAgC;CASlI,OARI,OAAO,KAAU,YAAY,OAAO,KAAU,WAEhD,kBAAC,OAAD;EAAK,cAAY,IAAQ;EAAG,OAAO,EAAE,SAAS,eAAe;YAC3D;CACG,CAAA,IAIA,kBAAC,OAAD;EAAK,cAAY,IAAQ;YAAI,KAAK,UAAU,KAAS,CAAI;CAAO,CAAA;AACxE;AAQA,SAAgB,EAA6B,GAAqB;CACjE,IAAM,EACL,SACA,iBAAc,GACd,gBACA,YAAS,GACT,eACA,gBACA,sBAAmB,MACnB,uBACA,mBACA,eAAe,GACf,kBACA,cACA,wBACA,oBACA,mBACA,kBACG,GAKE,KAAmB,MAAsC;EAC9D,IAAI,OAAO,KAAgB,YAAY,OAAO,EAAY,CAAI;EAC9D,IAAM,IAAQ,EAAK;EACnB,OAAO,MAAM,QAAQ,CAAK,IAAK,IAAyB,KAAA;CACzD,GAQM,KAAyB,GAAS,GAAe,GAAe,MAAkD;EACvH,IAAM,IAAW,EAAgB,CAAI,GAC/B,IAAc,MAAM,QAAQ,CAAQ,KAAK,EAAS,SAAS,GAC3D,IAAS,CAAC,GAGV,IACL,OAAO,KAAe,aACnB,EAAW;GAAE;GAAM;GAAO;GAAa;GAAQ;EAAK,CAAC,IACrD,EAAqB;GAAE;GAAM;GAAO;GAAa;GAAQ;EAAK,CAAC;EAGnE,SAAS,IAAW;GACnB,IAAM,IACL,kBAAC,OAAD;IAAK,WAAW;IAAgB,OAAO;IAAY,gBAAc,IAAS,KAAA,IAAY;cACpF;GACG,CAAA;GAcN,OAXK,IAYJ,kBAAC,UAAD;IACC,MAAK;IACL,eAAe,EAAY,GAAM,CAAI;IACrC,YATqB,MAAwC;KAE9D,EAAyB,SAAS,EAAY,GAAM,CAAI,CAAC;IAC1D;IAOE,WAAQ;IACR,eAAY;IAEZ,iBAAe,IAAc,KAAO,KAAA;IACpC,OAAO;KAAE,YAAY;KAAe,QAAQ;KAAG,SAAS;KAAG,QAAQ;IAAU;cAC5E;GACM,CAAA,IApBD,kBAAC,OAAD;IAAK,MAAK;cAAgB;GAAW,CAAA;EAsB9C;EAiBA,OAbC,kBAAC,MAAD;GAAoC,WAAW,EAAG,EAAO,UAAU,CAAa;GAAG,OAAO;aAA1F,CACC,kBAAC,GAAD,CAAW,CAAA,GAEV,KAEA,EACC,GACA;IAAE,WAAW,KAAuB,EAAO;IAAY,OAAO;GAAgB,GAC9E,EAAU,KAAK,GAAO,MAAO,EAAsB,GAAY,GAAI,IAAQ,GAAG,CAAC,GAAG,GAAM,CAAE,CAAC,CAAC,CAC7F,CACE;KAVK,EAAO,GAAM,GAAO,CAAI,CAa3B;CACR,GAEM,IAAc,QAElB,EAAK,KAAK,GAAM,MAER,EAAsB,GAAW,GAAG,GAAG,CADV,CACU,CAAK,CACnD,GAEF;EAEC;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CACD;CAGA,OAAO,EACN,GACA;EACC,WAAW,EAAG,KAAsB,EAAO,eAAe,KAAqB,EAAO,aAAa;EACnG,OAAO;CACR,GACA,CACD;AACD"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/tree/Tree.module.scss","../../src/tree/Tree.tsx"],"sourcesContent":[".nodeItem {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.treeContainer {\n\tpadding: var(--space-md);\n}\n\n.nestedList {\n\tpadding-left: var(--space-md);\n}\n\n.nestedСounter {\n\tcounter-reset: item;\n\tlist-style-type: none;\n\tpadding-left: var(--space-md);\n\n\t.nestedList {\n\t\tmargin-left: var(--space-md);\n\t}\n\n\tol {\n\t\tcounter-reset: item;\n\t}\n\n\tli {\n\t\tcounter-increment: item;\n\t\tposition: relative;\n\n\t\t&::before {\n\t\t\tcontent: counters(item, \".\") \". \";\n\t\t\tposition: absolute;\n\t\t\tleft: 0;\n\t\t\ttransform: translateX(calc(-100% - 0.25em));\n\t\t}\n\t}\n}\n","// Tree.tsx\nimport React, { createElement, CSSProperties, KeyboardEvent, useMemo } from \"react\";\n\nimport { cn, handleKeyboardActivation } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./Tree.module.scss\";\n\n/**\n * Базовый тип — любое дерево с возможным полем children\n */\nexport interface TreeNodeBase {\n\tchildren?: readonly TreeNodeBase[] | undefined;\n\t[key: string]: unknown;\n}\n\n/**\n * Пропсы, которые получает callback рендера узла\n */\nexport interface TreeNodeRenderProps<T extends TreeNodeBase> {\n\tnode: T;\n\tlevel: number;\n\thasChildren: boolean;\n\tisLeaf: boolean;\n\tpath: (string | number)[];\n}\n\n/**\n * Основные пропсы компонента Tree\n */\nexport interface TreeProps<T extends TreeNodeBase> {\n\tdata: readonly T[];\n\t/**\n\t * Ключ для дочерних нод (по умолчанию \"children\")\n\t */\n\tchildrenKey?: keyof T;\n\t/**\n\t * Альтернатива childrenKey — функция, возвращающая children\n\t */\n\tgetChildren?: (node: T) => readonly T[] | undefined;\n\t/**\n\t * Как брать ключ для каждого узла (по умолчанию node.id || node.key || index)\n\t */\n\tgetKey?: (node: T, index: number, path: (string | number)[]) => React.Key;\n\t/**\n\t * Функция, которая рисует содержимое узла.\n\t * Если не передана — делается \"разумный\" дефолт (node.title || node.text || JSON).\n\t */\n\trenderNode?: (props: TreeNodeRenderProps<T>) => React.ReactNode;\n\t/**\n\t * Если задано — узел считается интерактивным и будет обёрнут в кнопку для клавиатурной доступности.\n\t */\n\tonNodeClick?: (node: T, path: (string | number)[]) => void;\n\n\t/* Стилизация и классы — внешняя настройка */\n\tcontainerElement?: \"ol\" | \"ul\" | \"div\"; // по умолчанию \"ol\"\n\tcontainerClassName?: string;\n\tcontainerStyle?: CSSProperties;\n\tnestedCounter?: boolean;\n\n\titemClassName?: string;\n\titemStyle?: CSSProperties;\n\n\tnestedListClassName?: string;\n\tnestedListStyle?: CSSProperties;\n\n\tlabelClassName?: string;\n\tlabelStyle?: CSSProperties;\n}\n\n/* ---- Вспомогательные реализации ---- */\n\nconst defaultChildrenKey = \"children\";\n\n/** Умный дефолт для получения ключа */\nfunction defaultGetKey<T extends TreeNodeBase>(node: T, index: number) {\n\t// часто встречающиеся поля — id, key\n\tconst maybeId = (node as Record<string, string>).id ?? (node as Record<string, string>).key;\n\treturn (maybeId as React.Key) ?? index;\n}\n\n/** Умолчание для рендера узла (если пользователь не передал renderNode) */\nfunction defaultRenderNode<T extends TreeNodeBase>({ node, level }: TreeNodeRenderProps<T>) {\n\tconst title = (node as Record<string, string>).title ?? (node as Record<string, string>).text ?? (node as Record<string, string>).label;\n\tif (typeof title === \"string\" || typeof title === \"number\") {\n\t\treturn (\n\t\t\t<div aria-level={level + 1} style={{ display: \"inline-block\" }}>\n\t\t\t\t{title}\n\t\t\t</div>\n\t\t);\n\t}\n\t// fallback — краткое представление объекта\n\treturn <div aria-level={level + 1}>{JSON.stringify(title ?? node)}</div>;\n}\n\n/* ---- Компонент ---- */\n\n/**\n * Универсальный компонент Tree\n * Не использует глобальный state и не знает бизнес-логики — всё через renderNode / callbacks.\n */\nexport function Tree<T extends TreeNodeBase>(props: TreeProps<T>) {\n\tconst {\n\t\tdata,\n\t\tchildrenKey = defaultChildrenKey as keyof T,\n\t\tgetChildren,\n\t\tgetKey = defaultGetKey,\n\t\trenderNode,\n\t\tonNodeClick,\n\t\tcontainerElement = \"ol\",\n\t\tcontainerClassName,\n\t\tcontainerStyle,\n\t\tnestedCounter: isContainerNested,\n\t\titemClassName,\n\t\titemStyle,\n\t\tnestedListClassName,\n\t\tnestedListStyle,\n\t\tlabelClassName,\n\t\tlabelStyle\n\t} = props;\n\n\t/**\n\t * Получить children для ноды — сначала getChildren, иначе node[childrenKey]\n\t */\n\tconst resolveChildren = (node: T): readonly T[] | undefined => {\n\t\tif (typeof getChildren === \"function\") return getChildren(node);\n\t\tconst maybe = node[childrenKey];\n\t\treturn Array.isArray(maybe) ? (maybe as readonly T[]) : undefined;\n\t};\n\n\t/**\n\t * Компонент/функция, рендерящая один узел (рекурсивно)\n\t *\n\t * Определяем как вложенную функцию — она использует замыкания resolveChildren, getKey и т.д.\n\t * Это простая рекурсия, и ключи выставляются родителем при map'е.\n\t */\n\tconst renderNodeRecursively = (node: T, index: number, level: number, path: (string | number)[]): React.ReactElement => {\n\t\tconst children = resolveChildren(node);\n\t\tconst hasChildren = Array.isArray(children) && children.length > 0;\n\t\tconst isLeaf = !hasChildren;\n\n\t\t// Контент узла — либо через renderNode проп, либо дефолтный\n\t\tconst nodeContent =\n\t\t\ttypeof renderNode === \"function\"\n\t\t\t\t? renderNode({ node, level, hasChildren, isLeaf, path })\n\t\t\t\t: defaultRenderNode<T>({ node, level, hasChildren, isLeaf, path });\n\n\t\t// NodeItem — оболочка, которая делает узел интерактивным при наличии onNodeClick\n\t\tfunction NodeItem() {\n\t\t\tconst label = (\n\t\t\t\t<div className={labelClassName} style={labelStyle} aria-current={isLeaf ? undefined : false}>\n\t\t\t\t\t{nodeContent}\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\tif (!onNodeClick) {\n\t\t\t\t// Неинтерактивный вариант — semantic wrapper (div)\n\t\t\t\treturn <div role=\"presentation\">{label}</div>;\n\t\t\t}\n\n\t\t\t// Интерактивный вариант — кнопка, доступная с клавиатуры\n\t\t\tconst handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n\t\t\t\t// Enter и Space должны срабатывать как клик\n\t\t\t\thandleKeyboardActivation(e, () => onNodeClick(node, path));\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={() => onNodeClick(node, path)}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tdata-ui=\"tree-node-button\"\n\t\t\t\t\tdata-action=\"select-tree-node\"\n\t\t\t\t\t// семантика уровня — aria-level при необходимости можно добавить\n\t\t\t\t\taria-expanded={hasChildren ? true : undefined}\n\t\t\t\t\tstyle={{ background: \"transparent\", border: 0, padding: 0, cursor: \"pointer\" }}>\n\t\t\t\t\t{label}\n\t\t\t\t</button>\n\t\t\t);\n\t\t}\n\n\t\t// Собираем <li> с контентом и, при наличии детей, вложенным списком\n\t\tconst Li = (\n\t\t\t<li key={getKey(node, index, path)} className={cn(styles.nodeItem, itemClassName)} style={itemStyle}>\n\t\t\t\t<NodeItem />\n\n\t\t\t\t{hasChildren &&\n\t\t\t\t\t// дочерний список — используем тот же контейнер, что и root (ol|ul|div)\n\t\t\t\t\tcreateElement(\n\t\t\t\t\t\tcontainerElement,\n\t\t\t\t\t\t{ className: nestedListClassName ?? styles.nestedList, style: nestedListStyle },\n\t\t\t\t\t\tchildren!.map((child, ci) => renderNodeRecursively(child as T, ci, level + 1, [...path, ci]))\n\t\t\t\t\t)}\n\t\t\t</li>\n\t\t);\n\n\t\treturn Li;\n\t};\n\n\tconst treeContent = useMemo(\n\t\t() =>\n\t\t\tdata.map((node, i) => {\n\t\t\t\tconst paths: (string | number)[] = [i];\n\t\t\t\treturn renderNodeRecursively(node as T, i, 0, paths);\n\t\t\t}),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\t// кусок deps — включаем те пропсы, которые влияют на результат\n\t\t\tdata,\n\t\t\tchildrenKey,\n\t\t\t// getChildren и getKey — функции, которые могут быть изменены пользователем\n\t\t\tgetChildren,\n\t\t\tgetKey,\n\t\t\trenderNode,\n\t\t\tonNodeClick,\n\t\t\tcontainerElement,\n\t\t\titemClassName,\n\t\t\titemStyle,\n\t\t\tnestedListClassName,\n\t\t\tnestedListStyle,\n\t\t\tlabelClassName,\n\t\t\tlabelStyle\n\t\t]\n\t);\n\n\t// Рендер внешнего контейнера (по умолчанию ol)\n\treturn createElement(\n\t\tcontainerElement,\n\t\t{\n\t\t\tclassName: cn(containerClassName ?? styles.treeContainer, isContainerNested && styles.nestedСounter),\n\t\t\tstyle: containerStyle\n\t\t},\n\t\ttreeContent\n\t);\n}\n"],"mappings":";;;;;;;;GCuEM,IAAqB;AAG3B,SAAS,EAAsC,GAAS,GAAe;CAGtE,OADiB,EAAgC,MAAO,EAAgC,OACvD;AAClC;AAGA,SAAS,EAA0C,EAAE,SAAM,YAAiC;CAC3F,IAAM,IAAS,EAAgC,SAAU,EAAgC,QAAS,EAAgC;CASlI,OARI,OAAO,KAAU,YAAY,OAAO,KAAU,WAEhD,kBAAC,OAAD;EAAK,cAAY,IAAQ;EAAG,OAAO,EAAE,SAAS,eAAe;EAC3D,UAAA;CACG,CAAA,IAIA,kBAAC,OAAD;EAAK,cAAY,IAAQ;EAAI,UAAA,KAAK,UAAU,KAAS,CAAI;CAAO,CAAA;AACxE;AAQA,SAAgB,EAA6B,GAAqB;CACjE,IAAM,EACL,SACA,iBAAc,GACd,gBACA,YAAS,GACT,eACA,gBACA,sBAAmB,MACnB,uBACA,mBACA,eAAe,GACf,kBACA,cACA,wBACA,oBACA,mBACA,kBACG,GAKE,KAAmB,MAAsC;EAC9D,IAAI,OAAO,KAAgB,YAAY,OAAO,EAAY,CAAI;EAC9D,IAAM,IAAQ,EAAK;EACnB,OAAO,MAAM,QAAQ,CAAK,IAAK,IAAyB,KAAA;CACzD,GAQM,KAAyB,GAAS,GAAe,GAAe,MAAkD;EACvH,IAAM,IAAW,EAAgB,CAAI,GAC/B,IAAc,MAAM,QAAQ,CAAQ,KAAK,EAAS,SAAS,GAC3D,IAAS,CAAC,GAGV,IACL,OAAO,KAAe,aACnB,EAAW;GAAE;GAAM;GAAO;GAAa;GAAQ;EAAK,CAAC,IACrD,EAAqB;GAAE;GAAM;GAAO;GAAa;GAAQ;EAAK,CAAC;EAGnE,SAAS,IAAW;GACnB,IAAM,IACL,kBAAC,OAAD;IAAK,WAAW;IAAgB,OAAO;IAAY,gBAAc,IAAS,KAAA,IAAY;IACpF,UAAA;GACG,CAAA;GAcN,OAXK,IAYJ,kBAAC,UAAD;IACC,MAAK;IACL,eAAe,EAAY,GAAM,CAAI;IACrC,YATqB,MAAwC;KAE9D,EAAyB,SAAS,EAAY,GAAM,CAAI,CAAC;IAC1D;IAOE,WAAQ;IACR,eAAY;IAEZ,iBAAe,IAAc,KAAO,KAAA;IACpC,OAAO;KAAE,YAAY;KAAe,QAAQ;KAAG,SAAS;KAAG,QAAQ;IAAU;IAC5E,UAAA;GACM,CAAA,IApBD,kBAAC,OAAD;IAAK,MAAK;IAAgB,UAAA;GAAW,CAAA;EAsB9C;EAiBA,OAbC,kBAAC,MAAD;GAAoC,WAAW,EAAG,EAAO,UAAU,CAAa;GAAG,OAAO;GAA1F,UAAA,CACC,kBAAC,GAAD,CAAW,CAAA,GAEV,KAEA,EACC,GACA;IAAE,WAAW,KAAuB,EAAO;IAAY,OAAO;GAAgB,GAC9E,EAAU,KAAK,GAAO,MAAO,EAAsB,GAAY,GAAI,IAAQ,GAAG,CAAC,GAAG,GAAM,CAAE,CAAC,CAAC,CAC7F,CACE;EAVK,GAAA,EAAO,GAAM,GAAO,CAAI,CAa3B;CACR,GAEM,IAAc,QAElB,EAAK,KAAK,GAAM,MAER,EAAsB,GAAW,GAAG,GAAG,CADV,CACU,CAAK,CACnD,GAEF;EAEC;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CACD;CAGA,OAAO,EACN,GACA;EACC,WAAW,EAAG,KAAsB,EAAO,eAAe,KAAqB,EAAO,aAAa;EACnG,OAAO;CACR,GACA,CACD;AACD"}
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "../chunks/ui.module-BisoTevy.js";
2
- import { o as t } from "../chunks/input-BCJfUdK_.js";
2
+ import { o as t } from "../chunks/input-Bp6_Ucgr.js";
3
3
  import { t as n } from "../chunks/check-box-Dd3YFuxd.js";
4
- import { c as r, d as i, f as a, i as o, l as s, n as c, p as l, r as u, t as d, u as f } from "../chunks/picker-BAQ9NeHe.js";
4
+ import { c as r, d as i, f as a, i as o, l as s, n as c, p as l, r as u, t as d, u as f } from "../chunks/picker-e6IsrMUG.js";
5
5
  import { r as p } from "../chunks/useODataSelectBase-CKe1AVMI.js";
6
- import { o as m } from "../chunks/multi-select-CWx12rgb.js";
6
+ import { o as m } from "../chunks/multi-select-COa6-owj.js";
7
7
  import { useCallback as h, useEffect as g, useLayoutEffect as _, useMemo as v, useRef as y, useState as ee } from "react";
8
8
  import { flattenODataDependentServices as b, sortODataDependentSegmentItemsByChains as x, useODataCollection as S, useODataCollectionChains as te, useODataCollectionModel as C } from "@ryuzaki13/react-foundation-api/odata";
9
9
  import { cn as w } from "@ryuzaki13/react-foundation-lib/utils";
@@ -44,7 +44,10 @@ function oe(e) {
44
44
  };
45
45
  }
46
46
  function se(e, t) {
47
- e.sort((e, n) => ae(t ? e.sortCode : e.label, t ? n.sortCode : n.label) || ae(e.sortCode, n.sortCode));
47
+ e.sort((e, n) => {
48
+ let r = t ? e.sortCode : e.label, i = t ? n.sortCode : n.label;
49
+ return ae(r, i) || ae(e.sortCode, n.sortCode);
50
+ });
48
51
  for (let n of e) se(n.children, t);
49
52
  }
50
53
  function ce(e) {
@@ -101,42 +104,42 @@ function P({ odata: e, segments: t, model: n }) {
101
104
  e,
102
105
  t,
103
106
  n
104
- ]), a = te([e]), o = v(() => ue(i, a), [i, a]), s = v(() => o.map((e) => e.id), [o]), c = S({
107
+ ]), a = te([e]), o = v(() => ue(i, a), [i, a]), s = v(() => o.map((e) => e.id), [o]), c = de(o) ?? Object.keys(t)[0], l = C({
108
+ codeKey: c,
109
+ ...n
110
+ }), u = S({
105
111
  odata: e,
106
- model: C({
107
- codeKey: de(o) ?? Object.keys(t)[0],
108
- ...n
109
- })
110
- }), { hiddenCodeKeys: l, textValueCodeKeys: u } = v(() => {
112
+ model: l
113
+ }), { hiddenCodeKeys: d, textValueCodeKeys: f } = v(() => {
111
114
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
112
115
  for (let r of o) (r.segment.hideCode ?? e.hideCode) && t.add(r.id), r.segment.selectText && n.add(r.id);
113
116
  return {
114
117
  hiddenCodeKeys: t,
115
118
  textValueCodeKeys: n
116
119
  };
117
- }, [e.hideCode, o]), d = v(() => le({
118
- items: c.data?.items ?? [],
120
+ }, [e.hideCode, o]), p = v(() => le({
121
+ items: u.data?.items ?? [],
119
122
  orderedCodeKeys: s,
120
- keyPairsMap: c.data?.keyPairsMap ?? {},
121
- hiddenCodeKeys: l,
122
- textValueCodeKeys: u,
123
+ keyPairsMap: u.data?.keyPairsMap ?? {},
124
+ hiddenCodeKeys: d,
125
+ textValueCodeKeys: f,
123
126
  sortByCode: e.sortByCode
124
127
  }), [
125
- c.data?.items,
126
- c.data?.keyPairsMap,
127
- l,
128
+ u.data?.items,
129
+ u.data?.keyPairsMap,
130
+ d,
128
131
  e.sortByCode,
129
132
  s,
130
- u
131
- ]), f = o[0]?.segment.placeholder ?? "Выберите значение", p = !!a[r]?.length;
133
+ f
134
+ ]), m = o[0]?.segment.placeholder ?? "Выберите значение", h = !!a[r]?.length;
132
135
  return {
133
- nodes: d,
136
+ nodes: p,
134
137
  orderedSegmentItems: o,
135
138
  orderedCodeKeys: s,
136
- isLoading: c.isLoading,
137
- isError: c.isError,
138
- placeholder: f,
139
- hasResolvedChain: p
139
+ isLoading: u.isLoading,
140
+ isError: u.isError,
141
+ placeholder: m,
142
+ hasResolvedChain: h
140
143
  };
141
144
  }
142
145
  //#endregion
@@ -201,7 +204,7 @@ function B(e, t, n) {
201
204
  if (t.has(e)) return !0;
202
205
  if (n.nodeById.get(e)?.disabled) return !1;
203
206
  let r = n.childrenById.get(e) ?? [];
204
- return r.length === 0 ? !1 : r.every((e) => B(e, t, n));
207
+ return r.length !== 0 && r.every((e) => B(e, t, n));
205
208
  }
206
209
  function V(e, t) {
207
210
  let n = new Set(e);
@@ -362,15 +365,15 @@ function Ce(e) {
362
365
  }
363
366
  //#endregion
364
367
  //#region src/tree-select/model/resolveBalancedTreeColumnsLayout.ts
365
- var K = 8, q = 16, we = 48, J = 224, Y = 10, Te = 32, Ee = 6, De = 3;
366
- function X(e, t) {
368
+ var we = 16, K = 48, Te = 224, q = 10, J = 32, Ee = 6, De = 3;
369
+ function Y(e, t) {
367
370
  return Number.isFinite(e) && e > 0 ? e : t;
368
371
  }
369
372
  function Oe(e) {
370
373
  let t = e.endIndexExclusive - e.startIndex;
371
374
  return Math.min(De, t);
372
375
  }
373
- function ke(e, t) {
376
+ function X(e, t) {
374
377
  let n = Math.max(1, t), r = [], i = 1, a = 1, o = 0;
375
378
  for (let t of e.groups) {
376
379
  let e = Oe(t), s = n - a + 1;
@@ -386,8 +389,8 @@ function ke(e, t) {
386
389
  intentionalGapCount: o
387
390
  };
388
391
  }
389
- function Ae({ descriptor: e, availableWidth: t, availableHeight: n, viewportWidth: r, viewportHeight: i, referenceWidth: a }) {
390
- let o = Math.max(0, Math.floor(Number.isFinite(e.itemCount) ? e.itemCount : 0)), s = X(t, 240), c = X(n, 80), l = X(r, s + K * 2), u = X(i, c), d = Math.max(1, Math.min(s, Math.max(1, l - K * 2))), f = Math.max(1, Math.min(c, u - K * 2)), p = Math.max(1, X(a, 1)), m = Math.min(d, p), h = Math.max(1, Math.floor((d - q + Y) / 234)), g = Math.max(1, Math.min(Ee, h, o || 1)), _ = e.groups.reduce((e, t) => Math.max(e, Oe(t)), 1);
392
+ function ke({ descriptor: e, availableWidth: t, availableHeight: n, viewportWidth: r, viewportHeight: i, referenceWidth: a }) {
393
+ let o = Math.max(0, Math.floor(Number.isFinite(e.itemCount) ? e.itemCount : 0)), s = Y(t, 240), c = Y(n, 80), l = Y(r, s + 16), u = Y(i, c), d = Math.max(1, Math.min(s, Math.max(1, l - 16))), f = Math.max(1, Math.min(c, u - 16)), p = Math.max(1, Y(a, 1)), m = Math.min(d, p), h = Math.max(1, Math.floor((d - we + q) / 234)), g = Math.max(1, Math.min(Ee, h, o || 1)), _ = e.groups.reduce((e, t) => Math.max(e, Oe(t)), 1);
391
394
  if (o === 0) return {
392
395
  columnCount: 1,
393
396
  rowCount: 1,
@@ -398,9 +401,9 @@ function Ae({ descriptor: e, availableWidth: t, availableHeight: n, viewportWidt
398
401
  };
399
402
  let v, y = Infinity;
400
403
  for (let t = 1; t <= g; t += 1) {
401
- let n = Math.max(_, Math.ceil(o / t)), r = ke(e, n);
402
- for (; r.usedColumnCount > t && n < o;) n += 1, r = ke(e, n);
403
- let i = r.usedColumnCount, a = Math.max(m, q + i * J + (i - 1) * Y), s = we + n * Te, c = a / d, l = s / f, u = (i * n - o) / o, p = r.intentionalGapCount / o, h = Math.max(c, l) + .25 * Math.abs(c - l) + .01 * u + .02 * p + .04 * (i - 1);
404
+ let n = Math.max(_, Math.ceil(o / t)), r = X(e, n);
405
+ for (; r.usedColumnCount > t && n < o;) n += 1, r = X(e, n);
406
+ let i = r.usedColumnCount, a = Math.max(m, we + i * Te + (i - 1) * q), s = K + n * J, c = a / d, l = s / f, u = (i * n - o) / o, p = r.intentionalGapCount / o, h = Math.max(c, l) + .25 * Math.abs(c - l) + .01 * u + .02 * p + .04 * (i - 1);
404
407
  h < y && (y = h, v = {
405
408
  columnCount: i,
406
409
  rowCount: n,
@@ -416,7 +419,7 @@ function Ae({ descriptor: e, availableWidth: t, availableHeight: n, viewportWidt
416
419
  width: m,
417
420
  minWidth: m,
418
421
  maxHeight: f,
419
- placements: ke(e, o).placements
422
+ placements: X(e, o).placements
420
423
  };
421
424
  }
422
425
  var Z = {
@@ -450,7 +453,7 @@ var Z = {
450
453
  };
451
454
  //#endregion
452
455
  //#region src/tree-select/TreeNodeContent.tsx
453
- function je({ node: e, level: t, highlight: r, hasChildren: i, isExpanded: a, selected: o, partial: s, selectionMode: c, optionsLayout: l = "tree", onToggleExpand: u, onToggleSelection: d }) {
456
+ function Ae({ node: e, level: t, highlight: r, hasChildren: i, isExpanded: a, selected: o, partial: s, selectionMode: c, optionsLayout: l = "tree", onToggleExpand: u, onToggleSelection: d }) {
454
457
  let f = l === "tree", m = l === "columns" && t === 0;
455
458
  return /* @__PURE__ */ O(ie, { children: [
456
459
  /* @__PURE__ */ D("span", {
@@ -502,7 +505,7 @@ function je({ node: e, level: t, highlight: r, hasChildren: i, isExpanded: a, se
502
505
  }
503
506
  //#endregion
504
507
  //#region src/tree-select/TreePickerBase.tsx
505
- function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, nodes: x, selectedIds: S, partialIds: te, selectionMode: C, optionsLayout: T = "tree", defaultExpandedCodeKeys: E, open: ne, onOpenChange: ae, bulkActions: k, triggerMode: A = "display", selectedSummary: j, selectedSummaryText: M, query: oe, defaultQuery: se, onQuery: ce, onNodeActivate: le, onClearSelection: ue, isLoading: N, error: de }) {
508
+ function je({ label: n, description: c, disabled: p, placeholder: m, size: b, nodes: x, selectedIds: S, partialIds: te, selectionMode: C, optionsLayout: T = "tree", defaultExpandedCodeKeys: E, open: ne, onOpenChange: ae, bulkActions: k, triggerMode: A = "display", selectedSummary: j, selectedSummaryText: M, query: oe, defaultQuery: se, onQuery: ce, onNodeActivate: le, onClearSelection: ue, isLoading: N, error: de }) {
506
509
  let P = y(null), F = y(null), pe = y(!1), [I, me] = ee(() => /* @__PURE__ */ new Map()), L = A === "search" ? C === "multi" ? "search-multi" : "search-single" : "display", R = v(() => fe(x), [x]), z = v(() => new Set(E), [E]), { query: B, setQuery: V } = u({
507
510
  open: !0,
508
511
  query: oe,
@@ -523,10 +526,10 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
523
526
  T,
524
527
  U,
525
528
  ge
526
- ]), G = v(() => Se(he, ve), [he, ve]), K = v(() => G.findIndex((e) => S.has(e.node.id)), [S, G]), q = v(() => Ce(G), [G]), we = h((e) => {
527
- let t = Ae({
529
+ ]), G = v(() => Se(he, ve), [he, ve]), we = v(() => G.findIndex((e) => S.has(e.node.id)), [S, G]), K = v(() => Ce(G), [G]), Te = h((e) => {
530
+ let t = ke({
528
531
  ...e,
529
- descriptor: q
532
+ descriptor: K
530
533
  }), n = {};
531
534
  return t.placements.forEach((e, t) => {
532
535
  n[`--tree-option-${t}-column`] = String(e.column), n[`--tree-option-${t}-row`] = String(e.row);
@@ -539,9 +542,9 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
539
542
  "--tree-row-count": String(t.rowCount),
540
543
  ...n
541
544
  };
542
- }, [q]), { open: J, activeIndex: Y, context: Te, floatingStyles: Ee, getFloatingProps: De, setReference: X, setFloating: Oe, setOptionRef: ke, close: Me, openList: Ne, toggleOpen: Pe, selectOption: Q, handleReferenceKeyDown: Fe, handleFloatingKeyDown: Ie, getOptionId: Le, getActiveOptionId: Re } = o({
545
+ }, [K]), { open: q, activeIndex: J, context: Ee, floatingStyles: De, getFloatingProps: Y, setReference: Oe, setFloating: X, setOptionRef: je, close: Me, openList: Ne, toggleOpen: Pe, selectOption: Q, handleReferenceKeyDown: Fe, handleFloatingKeyDown: Ie, getOptionId: Le, getActiveOptionId: Re } = o({
543
546
  options: G,
544
- selectedIndex: K,
547
+ selectedIndex: we,
545
548
  open: ne,
546
549
  onOpenChange: ae,
547
550
  onSelect: (e) => le(e.node),
@@ -551,10 +554,10 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
551
554
  allowOpenWithoutOptions: !0,
552
555
  triggerMode: L,
553
556
  placementStrategy: T === "columns" ? "auto" : "flip",
554
- resolveFloatingSize: T === "columns" ? we : void 0
555
- }), ze = Te.update, Be = S.size > 0, Ve = A === "search" && (J || B.length > 0), He = Ve ? B : M ?? "", Ue = A === "display" && !!j, We = L === "search-multi" && !!j, Ge = L === "search-multi" && !Be || L === "search-single" && (!M || Ve) || L === "display" && !Be, $ = d({
557
+ resolveFloatingSize: T === "columns" ? Te : void 0
558
+ }), ze = Ee.update, Be = S.size > 0, Ve = A === "search" && (q || B.length > 0), He = Ve ? B : M ?? "", Ue = A === "display" && !!j, We = L === "search-multi" && !!j, Ge = L === "search-multi" && !Be || L === "search-single" && (!M || Ve) || L === "display" && !Be, $ = d({
556
559
  mode: L,
557
- open: J,
560
+ open: q,
558
561
  currentQuery: B,
559
562
  hasDisplayValue: !!M,
560
563
  inputRef: P,
@@ -582,16 +585,16 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
582
585
  }) : null]
583
586
  }) : void 0;
584
587
  g(() => {
585
- pe.current && !J && $.policy.resetQueryOnClose && V(""), pe.current = J;
588
+ pe.current && !q && $.policy.resetQueryOnClose && V(""), pe.current = q;
586
589
  }, [
587
- J,
590
+ q,
588
591
  V,
589
592
  $.policy.resetQueryOnClose
590
593
  ]), _(() => {
591
- J && T === "columns" && ze();
594
+ q && T === "columns" && ze();
592
595
  }, [
593
- q.signature,
594
- J,
596
+ K.signature,
597
+ q,
595
598
  T,
596
599
  ze
597
600
  ]);
@@ -615,7 +618,7 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
615
618
  let c = `${t}-listbox`, l = typeof n == "string" ? n : m;
616
619
  return /* @__PURE__ */ O(ie, { children: [/* @__PURE__ */ D(r, {
617
620
  ref: Ye,
618
- rootRef: X,
621
+ rootRef: Oe,
619
622
  id: t,
620
623
  type: "text",
621
624
  role: "combobox",
@@ -628,17 +631,17 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
628
631
  "aria-label": i ? void 0 : m,
629
632
  "aria-describedby": o,
630
633
  "aria-haspopup": T === "columns" ? "dialog" : "listbox",
631
- "aria-expanded": J,
632
- "aria-controls": J ? c : void 0,
634
+ "aria-expanded": q,
635
+ "aria-controls": q ? c : void 0,
633
636
  "aria-autocomplete": T !== "columns" && A === "search" ? "list" : "none",
634
- "aria-activedescendant": T !== "columns" && J && G.length > 0 ? Re(c) : void 0,
637
+ "aria-activedescendant": T !== "columns" && q && G.length > 0 ? Re(c) : void 0,
635
638
  inputClassName: w(Be && Z.treeSummary, Ue && Z.inputWithOverlay),
636
639
  overlay: Ue ? /* @__PURE__ */ D("div", {
637
640
  className: Z.valueOverlay,
638
641
  children: j
639
642
  }) : void 0,
640
643
  endAdornment: /* @__PURE__ */ O(s, {
641
- open: J,
644
+ open: q,
642
645
  disabled: p || N,
643
646
  onToggleMouseDown: $.handleToggleMouseDown,
644
647
  onToggleClick: $.handleToggleClick,
@@ -663,23 +666,23 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
663
666
  $.handleTriggerFocus(e.currentTarget);
664
667
  },
665
668
  onKeyDown: (e) => {
666
- if (T === "columns" && J && e.key === "Tab" && !e.shiftKey && F.current) {
669
+ if (T === "columns" && q && e.key === "Tab" && !e.shiftKey && F.current) {
667
670
  e.preventDefault(), F.current.focus();
668
671
  return;
669
672
  }
670
673
  Fe(e), !e.defaultPrevented && $.handleTriggerKeyDown({
671
674
  event: e,
672
675
  onActivateWhenOpen: () => {
673
- let e = Y >= 0 ? G[Y] : void 0;
676
+ let e = J >= 0 ? G[J] : void 0;
674
677
  e && Q(e);
675
678
  },
676
679
  enableSpaceActivation: A === "display"
677
680
  });
678
681
  }
679
682
  }), /* @__PURE__ */ D(a, {
680
- open: J,
681
- context: Te,
682
- floatingStyles: Ee,
683
+ open: q,
684
+ context: Ee,
685
+ floatingStyles: De,
683
686
  listId: c,
684
687
  labelId: i,
685
688
  popupAriaLabel: l,
@@ -687,8 +690,8 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
687
690
  activeOptionId: T !== "columns" && G.length > 0 ? Re(c) : void 0,
688
691
  ariaMultiselectable: T !== "columns" && C === "multi",
689
692
  popupRole: T === "columns" ? "dialog" : "listbox",
690
- setFloating: Oe,
691
- getFloatingProps: De,
693
+ setFloating: X,
694
+ getFloatingProps: Y,
692
695
  onKeyDown: Ie,
693
696
  className: e.uiPopupOptions,
694
697
  layoutClassName: T === "columns" ? Z.treeColumnsPopupLayout : void 0,
@@ -701,11 +704,11 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
701
704
  loadingState: N ? "Загрузка..." : void 0,
702
705
  emptyState: !de && !N ? "Нет данных" : void 0
703
706
  }) : G.map((e, t) => {
704
- let n = C === "multi" ? H(e.node.id, S, R) : S.has(e.node.id), r = C === "multi" && !n && te.has(e.node.id), i = t === Y, a = e.node.disabled === !0;
707
+ let n = C === "multi" ? H(e.node.id, S, R) : S.has(e.node.id), r = C === "multi" && !n && te.has(e.node.id), i = t === J, a = e.node.disabled === !0;
705
708
  return /* @__PURE__ */ D("div", {
706
709
  "data-ui": "tree-select-option",
707
710
  id: Le(c, t),
708
- ref: (e) => ke(t, e),
711
+ ref: (e) => je(t, e),
709
712
  role: T === "columns" ? void 0 : "option",
710
713
  "aria-selected": T === "columns" ? void 0 : n,
711
714
  "aria-disabled": a || void 0,
@@ -720,7 +723,7 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
720
723
  onClick: () => Q(e),
721
724
  children: /* @__PURE__ */ D("div", {
722
725
  className: Z.treeNodeButton,
723
- children: /* @__PURE__ */ D(je, {
726
+ children: /* @__PURE__ */ D(Ae, {
724
727
  node: e.node,
725
728
  level: e.level,
726
729
  highlight: B,
@@ -743,7 +746,7 @@ function Me({ label: n, description: c, disabled: p, placeholder: m, size: b, no
743
746
  }
744
747
  //#endregion
745
748
  //#region src/tree-select/TreeMultiSelect.tsx
746
- function Ne(e, t) {
749
+ function Me(e, t) {
747
750
  if (e.size !== 0) {
748
751
  if (e.size === 1) {
749
752
  let n = t.nodeById.get([...e][0]);
@@ -752,18 +755,18 @@ function Ne(e, t) {
752
755
  return `${e.size} элементов`;
753
756
  }
754
757
  }
755
- function Pe(e, t, n) {
758
+ function Ne(e, t, n) {
756
759
  let r = I(e, n), i = I(t, n);
757
760
  return r.size === i.size && [...r].every((e) => i.has(e));
758
761
  }
759
- function Q({ label: e, description: t, disabled: n, placeholder: r = "Выберите значения", size: i, nodes: a, value: o, onChange: s, query: l, defaultQuery: u, onQuery: d, isLoading: f, error: p, optionsLayout: h = "tree", defaultExpandedCodeKeys: g }) {
762
+ function Pe({ label: e, description: t, disabled: n, placeholder: r = "Выберите значения", size: i, nodes: a, value: o, onChange: s, query: l, defaultQuery: u, onQuery: d, isLoading: f, error: p, optionsLayout: h = "tree", defaultExpandedCodeKeys: g }) {
760
763
  let [_, y] = ee(!1), b = v(() => fe(a), [a]), { draftValue: x, setDraftValue: S, prepareOpen: te } = c({
761
764
  value: o,
762
765
  open: _,
763
766
  onCommit: s,
764
- isEqual: (e, t) => Pe(e, t, b)
765
- }), C = _ ? x : o, w = v(() => I(C, b), [C, b]), T = v(() => ge(w, b), [w, b]), E = v(() => Ne(w, b), [w, b]);
766
- return /* @__PURE__ */ D(Me, {
767
+ isEqual: (e, t) => Ne(e, t, b)
768
+ }), C = _ ? x : o, w = v(() => I(C, b), [C, b]), T = v(() => ge(w, b), [w, b]), E = v(() => Me(w, b), [w, b]);
769
+ return /* @__PURE__ */ D(je, {
767
770
  label: e,
768
771
  description: t,
769
772
  disabled: n,
@@ -802,13 +805,13 @@ function Q({ label: e, description: t, disabled: n, placeholder: r = "Выбер
802
805
  }
803
806
  //#endregion
804
807
  //#region src/tree-select/ODataTreeMultiSelect.tsx
805
- function Fe({ label: e, description: t, disabled: n, size: r, placeholder: i, query: a, defaultQuery: o, onQuery: s, optionsLayout: c, value: l, onChange: u, odata: d, segments: f, model: p, defaultExpandedCodeKeys: m }) {
808
+ function Q({ label: e, description: t, disabled: n, size: r, placeholder: i, query: a, defaultQuery: o, onQuery: s, optionsLayout: c, value: l, onChange: u, odata: d, segments: f, model: p, defaultExpandedCodeKeys: m }) {
806
809
  let h = P({
807
810
  odata: d,
808
811
  segments: f,
809
812
  model: p
810
813
  });
811
- return /* @__PURE__ */ D(Q, {
814
+ return /* @__PURE__ */ D(Pe, {
812
815
  label: e,
813
816
  description: t,
814
817
  disabled: n || h.isLoading,
@@ -828,12 +831,12 @@ function Fe({ label: e, description: t, disabled: n, size: r, placeholder: i, qu
828
831
  }
829
832
  //#endregion
830
833
  //#region src/tree-select/TreeSelect.tsx
831
- function Ie(e) {
834
+ function Fe(e) {
832
835
  if (e) return e.code && e.code !== e.label ? `${e.label} · ${e.code}` : e.label;
833
836
  }
834
- function Le({ label: e, description: t, disabled: n, placeholder: r = "Выберите значение", size: i, nodes: a, value: o, onChange: s, query: c, defaultQuery: l, onQuery: u, isLoading: d, error: f, clearable: p = !1, defaultExpandedCodeKeys: m }) {
837
+ function Ie({ label: e, description: t, disabled: n, placeholder: r = "Выберите значение", size: i, nodes: a, value: o, onChange: s, query: c, defaultQuery: l, onQuery: u, isLoading: d, error: f, clearable: p = !1, defaultExpandedCodeKeys: m }) {
835
838
  let h = v(() => fe(a), [a]), g = pe(o, h), _ = g ? h.nodeById.get(g) : void 0;
836
- return /* @__PURE__ */ D(Me, {
839
+ return /* @__PURE__ */ D(je, {
837
840
  label: e,
838
841
  description: t,
839
842
  disabled: n,
@@ -845,7 +848,7 @@ function Le({ label: e, description: t, disabled: n, placeholder: r = "Выбе
845
848
  selectionMode: "single",
846
849
  defaultExpandedCodeKeys: m,
847
850
  triggerMode: "search",
848
- selectedSummaryText: Ie(_),
851
+ selectedSummaryText: Fe(_),
849
852
  query: c,
850
853
  defaultQuery: l,
851
854
  onQuery: u,
@@ -860,13 +863,13 @@ function Le({ label: e, description: t, disabled: n, placeholder: r = "Выбе
860
863
  }
861
864
  //#endregion
862
865
  //#region src/tree-select/ODataTreeSelect.tsx
863
- function Re({ label: e, description: t, disabled: n, size: r, placeholder: i, query: a, defaultQuery: o, onQuery: s, value: c, onChange: l, odata: u, segments: d, model: f, clearable: p, defaultExpandedCodeKeys: m }) {
866
+ function Le({ label: e, description: t, disabled: n, size: r, placeholder: i, query: a, defaultQuery: o, onQuery: s, value: c, onChange: l, odata: u, segments: d, model: f, clearable: p, defaultExpandedCodeKeys: m }) {
864
867
  let h = P({
865
868
  odata: u,
866
869
  segments: d,
867
870
  model: f
868
871
  });
869
- return /* @__PURE__ */ D(Le, {
872
+ return /* @__PURE__ */ D(Ie, {
870
873
  label: e,
871
874
  description: t,
872
875
  disabled: n || h.isLoading,
@@ -885,6 +888,6 @@ function Re({ label: e, description: t, disabled: n, size: r, placeholder: i, qu
885
888
  });
886
889
  }
887
890
  //#endregion
888
- export { Fe as ODataTreeMultiSelect, Re as ODataTreeSelect, Q as TreeMultiSelect, Le as TreeSelect, k as treeSelectValueToSelectedFilters };
891
+ export { Q as ODataTreeMultiSelect, Le as ODataTreeSelect, Pe as TreeMultiSelect, Ie as TreeSelect, k as treeSelectValueToSelectedFilters };
889
892
 
890
893
  //# sourceMappingURL=index.js.map