@ryuzaki13/react-foundation-ui 1.8.18 → 1.8.19

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 (292) hide show
  1. package/dist/picker/model/usePickerFloatingListbox.d.ts +1 -1
  2. package/package.json +3 -3
  3. package/storybook-static/assets/{Badge-BIHyYCo7.js → Badge-CAM2jkFm.js} +6 -6
  4. package/storybook-static/assets/{Badge.stories-DLTrI-x_.js → Badge.stories-DRjjmR32.js} +1 -1
  5. package/storybook-static/assets/{BadgeList-CDdRxEFa.js → BadgeList-D4Swhp3V.js} +1 -1
  6. package/storybook-static/assets/{Button-XTBI9blK.js → Button-1UZNz2k4.js} +1 -1
  7. package/storybook-static/assets/{Button-Clgno5I9.js → Button-4YB5_DwT.js} +6 -6
  8. package/storybook-static/assets/{Button.stories-B-0_zqxk.js → Button.stories-B0sdwFqZ.js} +1 -1
  9. package/storybook-static/assets/{CalendarView-5yfJ6Sx-.js → CalendarView-sSyZ5jCR.js} +1 -1
  10. package/storybook-static/assets/{CheckBox-DZh7cCZZ.js → CheckBox-BdGaGy4_.js} +2 -2
  11. package/storybook-static/assets/{CheckBox-BNpn-ZBB.js → CheckBox-Cpt5rjSg.js} +1 -1
  12. package/storybook-static/assets/{CheckBox.stories--dSzC2Mf.js → CheckBox.stories-6d6-rkNo.js} +1 -1
  13. package/storybook-static/assets/Color-6AOWCN3U-sKBB2RBT.js +1 -0
  14. package/storybook-static/assets/{ContextMenu-CTrTO0H7.js → ContextMenu-B155_m2F.js} +1 -1
  15. package/storybook-static/assets/{ContextMenu-24LNOr91.js → ContextMenu-BLnt5p2W.js} +2 -2
  16. package/storybook-static/assets/{ContextMenu.stories-Cbq6B29u.js → ContextMenu.stories-B8sv4v3Q.js} +1 -1
  17. package/storybook-static/assets/{CustomOptionButton-BHA-6inc.js → CustomOptionButton-hKfsqWNH.js} +1 -1
  18. package/storybook-static/assets/{DateInput-Bmwgwx_r.js → DateInput-DvIl6s-f.js} +2 -2
  19. package/storybook-static/assets/{DateInput-Ceqy8_hm.js → DateInput-XvSKmvqi.js} +1 -1
  20. package/storybook-static/assets/{DateInput.stories-C0oDEW0V.js → DateInput.stories-SU41oukh.js} +1 -1
  21. package/storybook-static/assets/{DateRangePresetSelect-DrbWZdO7.js → DateRangePresetSelect-BCLZcXdv.js} +2 -2
  22. package/storybook-static/assets/{DateRangePresetSelect-EUO5ju87.js → DateRangePresetSelect-tz-3m9UI.js} +1 -1
  23. package/storybook-static/assets/DateRangePresetSelect.stories-D8zuTlHo.js +19 -0
  24. package/storybook-static/assets/{Detail-BdMA8W8a.js → Detail-Ct95dA1k.js} +2 -2
  25. package/storybook-static/assets/{Detail.stories-kYjF0OE8.js → Detail.stories-Chedt7EX.js} +1 -1
  26. package/storybook-static/assets/{Dialog-B__C03-Z.js → Dialog-BX3QZOnt.js} +1 -1
  27. package/storybook-static/assets/{Dialog-DGlxegJa.js → Dialog-C7Duw0PA.js} +2 -2
  28. package/storybook-static/assets/Dialog.stories-J0w0R0Db.js +22 -0
  29. package/storybook-static/assets/{Disclosure-BXUWkiag.js → Disclosure-BzlV54RK.js} +2 -2
  30. package/storybook-static/assets/Disclosure.stories-z7gnOr5h.js +23 -0
  31. package/storybook-static/assets/{DisclosureGroup-C57FHp13.js → DisclosureGroup-c179TOi5.js} +1 -1
  32. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CiLWX8JT.js → DocsRenderer-JROSPFPF-Ba9N3QAD.js} +1 -1
  33. package/storybook-static/assets/{DropZone-DCGBDcam.js → DropZone-D5X0oV8O.js} +1 -1
  34. package/storybook-static/assets/{DropZone-BPOCc8un.js → DropZone-vxUU2p-k.js} +2 -2
  35. package/storybook-static/assets/DropZone.stories-iNXgESGM.js +26 -0
  36. package/storybook-static/assets/{DropdownMenu-DDHBuZt5.js → DropdownMenu-CJlpP3HB.js} +1 -1
  37. package/storybook-static/assets/{ExpandableActionPanel-mmlDn8ts.js → ExpandableActionPanel-CmkEByID.js} +1 -1
  38. package/storybook-static/assets/ExpandableActionPanel.stories-DmRLaVxn.js +9 -0
  39. package/storybook-static/assets/{Flex-DHMDn1uW.js → Flex-tVAYZ-nU.js} +2 -2
  40. package/storybook-static/assets/{Flex.stories-BgYOys3T.js → Flex.stories-CVYDcbvw.js} +1 -1
  41. package/storybook-static/assets/{FloatingPopover-BL_nJJrL.js → FloatingPopover-DMTLPzR3.js} +1 -1
  42. package/storybook-static/assets/{FormattedTableCell-Od6SSoxO.js → FormattedTableCell-DP6-D86D.js} +1 -1
  43. package/storybook-static/assets/{Grid-CS-mSNKX.js → Grid-Vm-amT-a.js} +2 -2
  44. package/storybook-static/assets/{Grid.stories-DWCKacQB.js → Grid.stories-B0beH9CK.js} +1 -1
  45. package/storybook-static/assets/ImageCropper.stories-Dt-IA4EB.js +131 -0
  46. package/storybook-static/assets/{ImageRenderer-jDryL3Z9.js → ImageRenderer-DudkQ-3G.js} +1 -1
  47. package/storybook-static/assets/ImageRenderer.stories-CNeSiXkj.js +34 -0
  48. package/storybook-static/assets/ImageView.stories-DMtpy--X.js +14 -0
  49. package/storybook-static/assets/{ImageViewer.stories-CKUiWvv7.js → ImageViewer.stories-BkoV0li4.js} +3 -3
  50. package/storybook-static/assets/{ImageViewerRuntime-DUjkq3km.js → ImageViewerRuntime-BLgQCsSL.js} +1 -1
  51. package/storybook-static/assets/{Input-C5eMHeOp.js → Input-MPCFEMQm.js} +2 -2
  52. package/storybook-static/assets/{Input-Q95tdikw.js → Input-WhTMStKL.js} +1 -1
  53. package/storybook-static/assets/Input.stories-B50KKSiz.js +52 -0
  54. package/storybook-static/assets/{InputDateTime-D8iFVC4N.js → InputDateTime-1zTFbNEF.js} +2 -2
  55. package/storybook-static/assets/{InputDateTime.stories-Cdz1C1X5.js → InputDateTime.stories-B7W4BkU6.js} +1 -1
  56. package/storybook-static/assets/{InputFile-CEMWMZ8W.js → InputFile-B3QB0SLD.js} +1 -1
  57. package/storybook-static/assets/{InputFile-CVgdFBc9.js → InputFile-DYHuD6B8.js} +2 -2
  58. package/storybook-static/assets/InputFile.stories-B-hrCtm_.js +27 -0
  59. package/storybook-static/assets/{InputFiles-AtxulUya.js → InputFiles-CPPAJxgC.js} +1 -1
  60. package/storybook-static/assets/{InputFiles-BWh55c4D.js → InputFiles-Dpa2BiyZ.js} +2 -2
  61. package/storybook-static/assets/InputFiles.stories-1ocz2wNw.js +26 -0
  62. package/storybook-static/assets/{InputFilesList-Dx0Dhms2.js → InputFilesList-D2Ro-1Hm.js} +1 -1
  63. package/storybook-static/assets/{InputImage-DKCC82SZ.js → InputImage-BDC2lyVo.js} +1 -1
  64. package/storybook-static/assets/{InputImage-wBNZRvrJ.js → InputImage-DPmkvGcl.js} +2 -2
  65. package/storybook-static/assets/InputImage.stories-D3hWZBtn.js +56 -0
  66. package/storybook-static/assets/{InteractiveComponents-CHTFQ4qL.js → InteractiveComponents-Djz3CtkU.js} +1 -1
  67. package/storybook-static/assets/{InteractiveComponents.stories-DJxkbHUR.js → InteractiveComponents.stories-CJ2VWPLD.js} +1 -1
  68. package/storybook-static/assets/{LayoutPicker-Dv5O_Hy0.js → LayoutPicker-BFShZhhi.js} +1 -1
  69. package/storybook-static/assets/{LayoutPicker-D887Y2XB.js → LayoutPicker-CMMEs83d.js} +3 -3
  70. package/storybook-static/assets/{LayoutPicker.stories-DbN3i5QL.js → LayoutPicker.stories-Cdb_UnBI.js} +1 -1
  71. package/storybook-static/assets/{Listbox-Cnzu7mYT.js → Listbox-B7nZijLJ.js} +2 -2
  72. package/storybook-static/assets/{Listbox-C4dx1h82.js → Listbox-DM1vuGVD.js} +1 -1
  73. package/storybook-static/assets/{Listbox.stories-BO1Df9Mq.js → Listbox.stories-DTs-ANe9.js} +1 -1
  74. package/storybook-static/assets/{Modal-CMacWyay.js → Modal-D0dkB7lh.js} +3 -3
  75. package/storybook-static/assets/{Modal.stories-DMrYaonL.js → Modal.stories-BOh10Fkn.js} +1 -1
  76. package/storybook-static/assets/{ModalManagerProvider-NbdotfpM.js → ModalManagerProvider-CEEmviJU.js} +1 -1
  77. package/storybook-static/assets/{MultiSelect-DEPuEcGb.js → MultiSelect-CbrRNOEZ.js} +2 -2
  78. package/storybook-static/assets/{MultiSelect-N4vTBX-X.js → MultiSelect-oJhMsKuC.js} +1 -1
  79. package/storybook-static/assets/MultiSelect.stories-mLWhd-au.js +55 -0
  80. package/storybook-static/assets/{NoData-BdrsNRw1.js → NoData-C7Kj62Zk.js} +1 -1
  81. package/storybook-static/assets/{NotificationsHost-BmcIZZNC.js → NotificationsHost-D_i7EsJA.js} +3 -3
  82. package/storybook-static/assets/{NotificationsHost.stories-Bf-a-dC3.js → NotificationsHost.stories-5GPO8lQl.js} +2 -2
  83. package/storybook-static/assets/{ODataMultiSelect-DVVDe1Yr.js → ODataMultiSelect-B6hKhD2q.js} +2 -2
  84. package/storybook-static/assets/{ODataMultiSelect.stories-DQDXXq_9.js → ODataMultiSelect.stories-BO7WaR9I.js} +2 -2
  85. package/storybook-static/assets/{ODataSelect-B88g3t3l.js → ODataSelect-BW8S-U91.js} +2 -2
  86. package/storybook-static/assets/{ODataSelect.stories-BPWp8xtb.js → ODataSelect.stories-rVZ8RYIu.js} +2 -2
  87. package/storybook-static/assets/{ODataTreeMultiSelect-DN0hWqto.js → ODataTreeMultiSelect-BhvUurca.js} +1 -1
  88. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BDDEO9n2.js → ODataTreeMultiSelect.stories-CM8wiVsI.js} +2 -2
  89. package/storybook-static/assets/{ODataTreeSelect-BpuPkpt_.js → ODataTreeSelect-B96PJWcL.js} +1 -1
  90. package/storybook-static/assets/{ODataTreeSelect.stories-Rgosfapi.js → ODataTreeSelect.stories-HHLJZrD8.js} +2 -2
  91. package/storybook-static/assets/{OneStepScroller-B8wmmQwf.js → OneStepScroller-DzrN3WVZ.js} +1 -1
  92. package/storybook-static/assets/{Option-Bdu68XEe.js → Option-BwWLsS-Q.js} +1 -1
  93. package/storybook-static/assets/{OptionButton-D0afktaf.js → OptionButton-CdYqQAwC.js} +1 -1
  94. package/storybook-static/assets/{PeriodSelect-D_NZ5ghQ.js → PeriodSelect-CJejEx-e.js} +1 -1
  95. package/storybook-static/assets/{PeriodSelect-C7DVNvsY.js → PeriodSelect-_GvgXTKk.js} +1 -1
  96. package/storybook-static/assets/PeriodSelect.stories-CGNmEIBG.js +50 -0
  97. package/storybook-static/assets/{PickerTriggerActions-ZNVb9eeZ.js → PickerTriggerActions-apA_Ruie.js} +1 -1
  98. package/storybook-static/assets/{Popover-CCGDNoKF.js → Popover-BYGM8Bjj.js} +2 -2
  99. package/storybook-static/assets/{Popover-CewYrQZr.js → Popover-CDeopGLJ.js} +1 -1
  100. package/storybook-static/assets/{Popover.stories-COIDcy4l.js → Popover.stories-DTeZeyAB.js} +1 -1
  101. package/storybook-static/assets/{PresetRangeDateInput-DroAaDSa.js → PresetRangeDateInput-BdFjz9Ed.js} +2 -2
  102. package/storybook-static/assets/{PresetRangeDateInput-DclYoHcQ.js → PresetRangeDateInput-D3FBpZqV.js} +1 -1
  103. package/storybook-static/assets/PresetRangeDateInput.stories-B2HCz7Tw.js +3 -0
  104. package/storybook-static/assets/{PresetSelect-DCGdwz-H.js → PresetSelect-BgzVe_NB.js} +1 -1
  105. package/storybook-static/assets/{README-C6mK2jiz.js → README-1tFUbU_N.js} +1 -1
  106. package/storybook-static/assets/{README-C0tHxk9e.js → README-9flk-o3B.js} +1 -1
  107. package/storybook-static/assets/{README-DK-nosD8.js → README-B5QVQmyU.js} +1 -1
  108. package/storybook-static/assets/{README-j6FF9vf5.js → README-B8dyxeZz.js} +9 -12
  109. package/storybook-static/assets/{README-QnKC46FO.js → README-BJEbnNWP.js} +5 -9
  110. package/storybook-static/assets/{README-CMRfMvBh.js → README-BRnZl0of.js} +4 -4
  111. package/storybook-static/assets/{README-B8PHFNI6.js → README-BSrGqFaw.js} +1 -1
  112. package/storybook-static/assets/{README-DWrWXc67.js → README-BTp9nnLv.js} +3 -3
  113. package/storybook-static/assets/{README-DFDO19TR.js → README-BUkpxX-E.js} +4 -4
  114. package/storybook-static/assets/{README-j4oj7GSR.js → README-Bht25HeR.js} +1 -1
  115. package/storybook-static/assets/{README-SM_eIjlq.js → README-Br9h1slQ.js} +4 -4
  116. package/storybook-static/assets/{README-Gw_kdXei.js → README-BtPehMeb.js} +4 -8
  117. package/storybook-static/assets/{README-BqBKX_xQ.js → README-Bv9s5Hlv.js} +4 -7
  118. package/storybook-static/assets/{README-BaupBcvr.js → README-C2rr_CMA.js} +1 -1
  119. package/storybook-static/assets/{README-B4FGWSHR.js → README-C8K3rQpu.js} +4 -4
  120. package/storybook-static/assets/{README-Bq8Gw9ut.js → README-CBhnA3Kz.js} +3 -3
  121. package/storybook-static/assets/{README-BBDVhq-F.js → README-C_uOxFAl.js} +3 -3
  122. package/storybook-static/assets/{README-DQ3UG1-2.js → README-CeuRBAf6.js} +1 -1
  123. package/storybook-static/assets/{README-B5TiIjbQ.js → README-Chc7eGGc.js} +1 -1
  124. package/storybook-static/assets/{README-BLXxOqWU.js → README-Cl2jxLna.js} +5 -5
  125. package/storybook-static/assets/{README-BoojQHna.js → README-CuYqzgi0.js} +1 -1
  126. package/storybook-static/assets/{README-BDEEI-me.js → README-Cuj7DFn9.js} +5 -8
  127. package/storybook-static/assets/{README-Db-VD9A-.js → README-CvrH-776.js} +1 -1
  128. package/storybook-static/assets/{README-CDO4U2L-.js → README-CxsAd0Iq.js} +1 -1
  129. package/storybook-static/assets/{README-DXAnOakM.js → README-DGTIYOSH.js} +3 -6
  130. package/storybook-static/assets/{README-C9V17f1i.js → README-DHJwCm5f.js} +14 -14
  131. package/storybook-static/assets/{README-eKZfcYEw.js → README-DLBEUtiL.js} +1 -1
  132. package/storybook-static/assets/{README-CVydkudU.js → README-DNDYDuQ4.js} +4 -8
  133. package/storybook-static/assets/{README-UY3fsLu_.js → README-DQSMXoRa.js} +3 -5
  134. package/storybook-static/assets/{README-B0LFAdG7.js → README-DSsqg62x.js} +4 -8
  135. package/storybook-static/assets/{README-CG7cgejD.js → README-DYKVnI5h.js} +4 -8
  136. package/storybook-static/assets/{README-Bemrp1iw.js → README-DZmDqmSd.js} +12 -12
  137. package/storybook-static/assets/{README-CbQE6RqS.js → README-DcJ05Rnh.js} +1 -1
  138. package/storybook-static/assets/{README-jnMsm42G.js → README-Dju2IqV_.js} +1 -1
  139. package/storybook-static/assets/{README-MUkRRO8C.js → README-DldTDL_-.js} +1 -1
  140. package/storybook-static/assets/{README-BTM8wY-Q.js → README-Dq0P8Ach.js} +3 -7
  141. package/storybook-static/assets/{README-BnvGfIB_.js → README-GstpCBI6.js} +1 -1
  142. package/storybook-static/assets/{README-Brb_uBB0.js → README-HhDoM8Gq.js} +2 -2
  143. package/storybook-static/assets/{README-BQng9oML.js → README-I0-Ly9-N.js} +4 -8
  144. package/storybook-static/assets/{README-DXgQjmDb.js → README-NwNz8xro.js} +1 -5
  145. package/storybook-static/assets/{README-CGv6MRmX.js → README-OGP9mnSD.js} +4 -4
  146. package/storybook-static/assets/{README-B2pks9-S.js → README-Se6780nc.js} +1 -1
  147. package/storybook-static/assets/{README-DK77wEHj.js → README-VwNH_K60.js} +1 -1
  148. package/storybook-static/assets/{README-Dq6K08x4.js → README-_aVIdcMd.js} +4 -4
  149. package/storybook-static/assets/{README-HKNlRLs4.js → README-bhX-QiSo.js} +3 -3
  150. package/storybook-static/assets/{README-TpwnHOuM.js → README-eqGIA1ao.js} +4 -8
  151. package/storybook-static/assets/{README-Cv6X1gyB.js → README-fLJ5n8A8.js} +6 -9
  152. package/storybook-static/assets/{README-B6bmU7Tq.js → README-g3WhSoX3.js} +3 -3
  153. package/storybook-static/assets/{README-CRdPVRby.js → README-m0xvi4o1.js} +1 -1
  154. package/storybook-static/assets/{README-CIS29z6p.js → README-mXAkjKF0.js} +1 -1
  155. package/storybook-static/assets/{README-BZh0P4dJ.js → README-n3wmMhlD.js} +1 -4
  156. package/storybook-static/assets/{README-BqpsuZii.js → README-z2leBvSk.js} +3 -3
  157. package/storybook-static/assets/{RadioButton-CioheQT6.js → RadioButton-DqEZ3dh2.js} +2 -2
  158. package/storybook-static/assets/{RadioButton-CN-1Bmu-.js → RadioButton-JEqzXOJN.js} +1 -1
  159. package/storybook-static/assets/RadioButton.stories-CzIM9dix.js +32 -0
  160. package/storybook-static/assets/{RadioGroup-CJzzJ3Fs.js → RadioGroup-COIsrK0r.js} +2 -2
  161. package/storybook-static/assets/{RadioGroup-CTZXoIcq.js → RadioGroup-D4EHkLTb.js} +1 -1
  162. package/storybook-static/assets/{RadioGroup.stories-C7N9yLcN.js → RadioGroup.stories-BdAv58pJ.js} +1 -1
  163. package/storybook-static/assets/{Scrollable-BOTJbzkH.js → Scrollable-noVIQseX.js} +1 -1
  164. package/storybook-static/assets/{Select-D2yqrKAE.js → Select-9v7A23y8.js} +2 -2
  165. package/storybook-static/assets/{Select-CNAFGsHq.js → Select-DgPcfbEp.js} +1 -1
  166. package/storybook-static/assets/Select.stories-yIRnlqrF.js +69 -0
  167. package/storybook-static/assets/{SerializableSelect-BZBYLnHq.js → SerializableSelect-CnPwQtgN.js} +2 -2
  168. package/storybook-static/assets/{SerializableSelect.stories-PIYq8I5b.js → SerializableSelect.stories-9QxpRX-K.js} +2 -2
  169. package/storybook-static/assets/{SingleDateTimeInput-B6M2oHtl.js → SingleDateTimeInput-CxKz7tUP.js} +2 -2
  170. package/storybook-static/assets/{SingleDateTimeInput-D2cDr1L5.js → SingleDateTimeInput-DBrfgnnn.js} +1 -1
  171. package/storybook-static/assets/{SingleDateTimeInput.stories-DqswDqo4.js → SingleDateTimeInput.stories-lOLyuR7U.js} +1 -1
  172. package/storybook-static/assets/{Slider-Cu_mMfmP.js → Slider-Cn1YHOVt.js} +1 -1
  173. package/storybook-static/assets/{Slider-C0fjZ3TE.js → Slider-KC0hs5nY.js} +3 -3
  174. package/storybook-static/assets/{Slider.stories-BcYnYgUs.js → Slider.stories-C-IjisOs.js} +1 -1
  175. package/storybook-static/assets/{SliderInput-D8pa0Cwh.js → SliderInput-BVDFbjAz.js} +3 -3
  176. package/storybook-static/assets/{SliderInput-CaaSdoql.js → SliderInput-Bz4D-xc3.js} +1 -1
  177. package/storybook-static/assets/{SliderInput.stories-biJs3NtU.js → SliderInput.stories-SlhRnTWN.js} +1 -1
  178. package/storybook-static/assets/{Sortable-wyJd-LB7.js → Sortable-d-UOB6NI.js} +2 -2
  179. package/storybook-static/assets/{Sortable.stories-CNW8IhRv.js → Sortable.stories-DWywtUOf.js} +1 -1
  180. package/storybook-static/assets/{Splitter-D0L1B9tf.js → Splitter-t2bV_zrF.js} +4 -4
  181. package/storybook-static/assets/{Splitter.stories-CDQGRB14.js → Splitter.stories-CTTTfgXu.js} +1 -1
  182. package/storybook-static/assets/{StateSelect-BaThi-59.js → StateSelect-CR5WR-IW.js} +2 -2
  183. package/storybook-static/assets/{StateSelect-hO1K2z4b.js → StateSelect-CX7Xf-aX.js} +1 -1
  184. package/storybook-static/assets/StateSelect.stories-3KkvmQ80.js +59 -0
  185. package/storybook-static/assets/StringToggle.stories-D7r-Du4d.js +5 -0
  186. package/storybook-static/assets/{Switch-DCV_mYJ2.js → Switch-DB4EZ32N.js} +1 -1
  187. package/storybook-static/assets/{Switch-Ct9tsisu.js → Switch-Deae3h9G.js} +2 -2
  188. package/storybook-static/assets/Switch.stories-CZxayDtX.js +15 -0
  189. package/storybook-static/assets/{Table-DaP6Qndv.js → Table-CrxyY7zt.js} +4 -4
  190. package/storybook-static/assets/{Table.stories-DDFcryTl.js → Table.stories-Cwxd5T2K.js} +2 -2
  191. package/storybook-static/assets/{Tabs-CC5Gzc7s.js → Tabs-L4LxDqx4.js} +3 -3
  192. package/storybook-static/assets/{Tabs.stories-B_76Da9k.js → Tabs.stories-C4XMXjqd.js} +2 -2
  193. package/storybook-static/assets/{TabsBox-D52IZXj5.js → TabsBox-Bnvm4jMi.js} +1 -1
  194. package/storybook-static/assets/{TagInput-T9Lp1amS.js → TagInput-DW0JzYQ3.js} +1 -1
  195. package/storybook-static/assets/TagInput.stories-zF7cV7Cp.js +18 -0
  196. package/storybook-static/assets/{Text-CXcCu6R8.js → Text-ByhnRSgp.js} +1 -1
  197. package/storybook-static/assets/{Textarea-CNl12Mkz.js → Textarea-BySrQxab.js} +2 -2
  198. package/storybook-static/assets/{Textarea-BlE2vGsV.js → Textarea-WtjTIiyq.js} +1 -1
  199. package/storybook-static/assets/Textarea.stories-jFSqX_4h.js +17 -0
  200. package/storybook-static/assets/{TimePanel-DKD18ldm.js → TimePanel-B-rvi-xm.js} +1 -1
  201. package/storybook-static/assets/TimePanel.stories-BQJruT0g.js +14 -0
  202. package/storybook-static/assets/{Toggle-DKNuMtMW.js → Toggle-BfRh792z.js} +2 -2
  203. package/storybook-static/assets/{Toggle-fqZP5j32.js → Toggle-BkglFvBx.js} +1 -1
  204. package/storybook-static/assets/Toggle.stories-BonTJbH-.js +25 -0
  205. package/storybook-static/assets/{TreeMultiSelect-B6et22Ea.js → TreeMultiSelect-7E1j6lHT.js} +1 -1
  206. package/storybook-static/assets/{TreeMultiSelect-b4PiPTEN.js → TreeMultiSelect-CKr7kx7s.js} +1 -1
  207. package/storybook-static/assets/{TreeMultiSelect.stories-C_4ZpE9w.js → TreeMultiSelect.stories-DQ9N-EPu.js} +1 -1
  208. package/storybook-static/assets/{TreePickerBase-BBwppLrT.js → TreePickerBase-DwoQyBMk.js} +1 -1
  209. package/storybook-static/assets/{TreeSelect-D4u7C0tA.js → TreeSelect-BLc7zLho.js} +1 -1
  210. package/storybook-static/assets/{TreeSelect-BaCD5AjF.js → TreeSelect-BP_YoVCu.js} +1 -1
  211. package/storybook-static/assets/TreeSelect.stories-CyurXsU_.js +32 -0
  212. package/storybook-static/assets/{TreeTable-CbhUffZj.js → TreeTable-wfgjChnU.js} +3 -3
  213. package/storybook-static/assets/{TreeTable.stories-D-x-lZkU.js → TreeTable.stories-DUBR67SN.js} +2 -2
  214. package/storybook-static/assets/{WithTooltip-7X4HQR7L-DQ4Qthn2.js → WithTooltip-CDUNV5IS-mFMh6Qcu.js} +2 -2
  215. package/storybook-static/assets/{blocks-IjspN281.js → blocks-DNj8uFSt.js} +3 -3
  216. package/storybook-static/assets/{check-ue9rVspp.js → check-CS2caYIB.js} +1 -1
  217. package/storybook-static/assets/{chevron-down-Dnk-3hJo.js → chevron-down-DXkNPvpX.js} +1 -1
  218. package/storybook-static/assets/{chevron-left-CaAFuWY0.js → chevron-left-5q-SFjrm.js} +1 -1
  219. package/storybook-static/assets/{chevron-right-CKnELL4E.js → chevron-right-u6yLjLrs.js} +1 -1
  220. package/storybook-static/assets/{chunk-W22LQPXL-jFAFLKOH.js → chunk-W22LQPXL-CfJGLIdy.js} +1 -1
  221. package/storybook-static/assets/{circle-alert-miJVMeEa.js → circle-alert-Cs1OuREv.js} +1 -1
  222. package/storybook-static/assets/circle-check-Cvppn-HO.js +1 -0
  223. package/storybook-static/assets/components-B6cPezpK.js +241 -0
  224. package/storybook-static/assets/{contextMenu-D8NvB0La.js → contextMenu-CX8Geuik.js} +1 -1
  225. package/storybook-static/assets/{defaultRenderers-DfmnIuod.js → defaultRenderers-Dinv2uRZ.js} +1 -1
  226. package/storybook-static/assets/{download-Cq_lr01f.js → download-DY_RFHLw.js} +1 -1
  227. package/storybook-static/assets/floating-ui.react-CCV40RlP.js +1 -0
  228. package/storybook-static/assets/{formatters-D33Uh3si-CxrG0jsB.js → formatters-D33Uh3si-Df97arf9.js} +1 -1
  229. package/storybook-static/assets/{foundationApi-CLyEyFIu.js → foundationApi-naPnCFLL.js} +3 -6
  230. package/storybook-static/assets/{foundationLib-DH2mxNct.js → foundationLib-CSxKMNQk.js} +1 -1
  231. package/storybook-static/assets/{hooks-BwH7Yo1F.js → hooks-CK4me-dJ.js} +1 -1
  232. package/storybook-static/assets/{iframe-B_6aAEqw.js → iframe-YrfSEgEg.js} +203 -203
  233. package/storybook-static/assets/iframe-uYND_WUi.js +1 -0
  234. package/storybook-static/assets/{info-BgHKckDk.js → info-BEkn6tJB.js} +1 -1
  235. package/storybook-static/assets/odata-j4p1dw3i.js +1 -0
  236. package/storybook-static/assets/odata-service-CWkHASdw-CXhFi03v.js +3 -0
  237. package/storybook-static/assets/{odataStoryFixtures-BiN3x4k6.js → odataStoryFixtures-B_1MKEB-.js} +1 -1
  238. package/storybook-static/assets/{react-18-D4o7zN8K.js → react-18-EmNFJX4V.js} +1 -1
  239. package/storybook-static/assets/react-BihcRTyZ.js +9 -0
  240. package/storybook-static/assets/{refresh-cw-Cz1Mtnwr.js → refresh-cw-uKRX7BI0.js} +1 -1
  241. package/storybook-static/assets/{settings-2-BUY_jI1a.js → settings-2-DTKuqR8p.js} +1 -1
  242. package/storybook-static/assets/{sortable-DfiDnDGH.js → sortable-sVqTZjeF.js} +1 -1
  243. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-RwE_sP6g.js → syntaxhighlighter-QEQV7K2Y-GFZ4bA4u.js} +1 -1
  244. package/storybook-static/assets/theming-BgT2grXK.js +39 -0
  245. package/storybook-static/assets/{trash-2-Da9E4hDy.js → trash-2-C6QVfyTq.js} +1 -1
  246. package/storybook-static/assets/{triangle-alert-D2CpTkxC.js → triangle-alert-DKkTKSAW.js} +1 -1
  247. package/storybook-static/assets/{useODataSelectBase-BTVM_2wU.js → useODataSelectBase-BxPpoJje.js} +1 -1
  248. package/storybook-static/assets/{useODataTreeData-BwwhT42f.js → useODataTreeData-Ct-ZR8pA.js} +1 -1
  249. package/storybook-static/assets/{usePickerQuery-Cug-ZpN1.js → usePickerQuery-DJMG-4Gl.js} +1 -1
  250. package/storybook-static/assets/{usePickerTriggerController-D3h4HqB9.js → usePickerTriggerController-DeZhyi9h.js} +1 -1
  251. package/storybook-static/assets/{x-ri5iHB3T.js → x-cU42PK2s.js} +1 -1
  252. package/storybook-static/iframe.html +2 -2
  253. package/storybook-static/index.json +1 -1
  254. package/storybook-static/project.json +1 -1
  255. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +1 -1
  256. package/storybook-static/sb-manager/globals-runtime.js +5 -2
  257. package/storybook-static/sb-manager/runtime.js +1 -0
  258. package/storybook-static/assets/Color-6AOWCN3U-C363KdaS.js +0 -1
  259. package/storybook-static/assets/DateRangePresetSelect.stories-BnnOI6oQ.js +0 -19
  260. package/storybook-static/assets/Dialog.stories-DPFNV_A3.js +0 -22
  261. package/storybook-static/assets/Disclosure.stories-C3MufHWp.js +0 -23
  262. package/storybook-static/assets/DropZone.stories-mB8JLlHw.js +0 -26
  263. package/storybook-static/assets/ExpandableActionPanel.stories-eChkcTa4.js +0 -9
  264. package/storybook-static/assets/ImageCropper.stories-BuwhJESS.js +0 -131
  265. package/storybook-static/assets/ImageRenderer.stories-BzyPfNyt.js +0 -34
  266. package/storybook-static/assets/ImageView.stories-FmQ_gxc7.js +0 -14
  267. package/storybook-static/assets/Input.stories-BbT8eOCH.js +0 -52
  268. package/storybook-static/assets/InputFile.stories-B84afhOU.js +0 -27
  269. package/storybook-static/assets/InputFiles.stories-CgMk9QC9.js +0 -26
  270. package/storybook-static/assets/InputImage.stories-BD3x6S5Y.js +0 -56
  271. package/storybook-static/assets/MultiSelect.stories-CNNK5rRC.js +0 -55
  272. package/storybook-static/assets/PeriodSelect.stories-COeb_LJq.js +0 -50
  273. package/storybook-static/assets/PresetRangeDateInput.stories-BDmwSMwK.js +0 -3
  274. package/storybook-static/assets/README-oSHJDhIJ.js +0 -101
  275. package/storybook-static/assets/RadioButton.stories-GiewWDd0.js +0 -32
  276. package/storybook-static/assets/Select.stories-CYJpEv_P.js +0 -69
  277. package/storybook-static/assets/StateSelect.stories-DDviL5zf.js +0 -59
  278. package/storybook-static/assets/StringToggle.stories-CFAJvvxJ.js +0 -5
  279. package/storybook-static/assets/Switch.stories-COeP2eOi.js +0 -15
  280. package/storybook-static/assets/TagInput.stories-DfH66OZc.js +0 -18
  281. package/storybook-static/assets/Textarea.stories-DVOJ06z_.js +0 -17
  282. package/storybook-static/assets/TimePanel.stories-Vn5OZdpQ.js +0 -14
  283. package/storybook-static/assets/Toggle.stories-BLolzyKP.js +0 -25
  284. package/storybook-static/assets/TreeSelect.stories-CDkOknim.js +0 -32
  285. package/storybook-static/assets/circle-check-CNYBjmqs.js +0 -1
  286. package/storybook-static/assets/components-9iEtMVnM.js +0 -241
  287. package/storybook-static/assets/floating-ui.react-BoRzzZ17.js +0 -1
  288. package/storybook-static/assets/iframe-BxPT5t4V.js +0 -1
  289. package/storybook-static/assets/odata-D2I4jbKq.js +0 -1
  290. package/storybook-static/assets/odata-service-CWkHASdw-DlmSiioz.js +0 -3
  291. package/storybook-static/assets/react-BoM8yiX1.js +0 -9
  292. package/storybook-static/assets/theming-Cvtrnj7n.js +0 -39
@@ -0,0 +1,18 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TagInput-DW0JzYQ3.js";var s=t({Controlled:()=>d,ReadOnly:()=>f,__namedExportsOrder:()=>p,default:()=>u}),c,l,u,d,f,p;function m(){return(m=e((()=>{r(),a(),c=n(),l=i((e,t)=>(0,c.jsx)(o,{...e,value:e.value??[],onChange:n=>{e.onChange?.(n),t({value:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})),u={title:`UI/TagInput`,component:o,args:{value:[],onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля тегов.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Подсказка для черновика нового тега.`,control:`text`},value:{description:`Controlled-набор добавленных тегов.`,control:`object`},onChange:{description:`Возвращает новый набор после добавления или удаления тега.`,control:!1},error:{description:"Текст ошибки, связанный с полем через `aria-describedby`.",control:`text`},onClearError:{description:`Вызывается после изменения черновика или набора тегов.`,control:!1},disabled:{description:`Блокирует ввод и изменение набора тегов.`,control:`boolean`},size:{description:`Размер поля и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},maxTags:{description:`Максимальное количество тегов.`,control:{type:`number`,min:0,step:1}},readOnly:{description:`Показывает теги без действий добавления и удаления, сохраняя возможность копирования.`,control:`boolean`},normalizeTag:{description:`Нормализует введенный тег до проверки дубликата и добавления.`,control:!1},getTagKey:{description:`Формирует ключ для сравнения тегов и поиска дубликатов.`,control:!1},addOnBlur:{description:`Добавляет непустой черновик при уходе фокуса с поля.`,control:`boolean`},getRemoveButtonAriaLabel:{description:`Формирует доступное имя кнопки удаления конкретного тега.`,control:!1},tokensAriaLabel:{description:`Доступное имя списка уже добавленных тегов.`,control:`text`},inputClassName:{description:`CSS-класс внутреннего поля черновика тега.`,control:`text`}}},d={render:l,args:{label:`Теги материала`,description:`Введите значение и нажмите Enter или запятую. Можно вставить сразу несколько строк.`,placeholder:`Добавить тег`,value:[`Новости`,`Колледж`],maxTags:10,getTagKey:e=>e.toLocaleLowerCase(`ru`)}},f={render:l,args:{label:`Теги материала`,value:[`Новости`,`Колледж`],readOnly:!0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
+ render: renderTagInputStory,
3
+ args: {
4
+ label: "Теги материала",
5
+ description: "Введите значение и нажмите Enter или запятую. Можно вставить сразу несколько строк.",
6
+ placeholder: "Добавить тег",
7
+ value: ["Новости", "Колледж"],
8
+ maxTags: 10,
9
+ getTagKey: tag => tag.toLocaleLowerCase("ru")
10
+ }
11
+ }`,...d.parameters?.docs?.source}}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
12
+ render: renderTagInputStory,
13
+ args: {
14
+ label: "Теги материала",
15
+ value: ["Новости", "Колледж"],
16
+ readOnly: true
17
+ }
18
+ }`,...f.parameters?.docs?.source}}},p=[`Controlled`,`ReadOnly`]})))()}export{s as n,m as r,d as t};
@@ -1 +1 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-B_6aAEqw.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";var o,s,c,l,u,d,f,p;function m(){return(m=t((()=>{o=e(n(),1),a(),s=r(),c={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},l={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},u={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},d={wrap:`textWrap`,noWrap:`textNoWrap`},f=({size:e,color:t,weight:n,italic:r,uppercase:a,wrap:s,className:f})=>(0,o.useMemo)(()=>{let o=[];return e&&o.push(l[e]),n&&o.push(u[n]),s&&o.push(d[s]),r&&o.push(`fontItalic`),a&&o.push(`textUppercase`),t&&o.push(c[t]),i(...o,f)},[e,n,t,r,a,s,f]),p=({children:e,as:t,style:n,...r})=>{let i=f(r);return(0,s.jsx)(t||`span`,{className:i,style:n,children:e})},p.__docgenInfo={description:``,methods:[],displayName:`Text`,props:{size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``},weight:{required:!1,tsType:{name:`union`,raw:`"lighter" | "light" | "regular" | "medium" | "bold" | "bolder"`,elements:[{name:`literal`,value:`"lighter"`},{name:`literal`,value:`"light"`},{name:`literal`,value:`"regular"`},{name:`literal`,value:`"medium"`},{name:`literal`,value:`"bold"`},{name:`literal`,value:`"bolder"`}]},description:``},italic:{required:!1,tsType:{name:`boolean`},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``},wrap:{required:!1,tsType:{name:`union`,raw:`"wrap" | "noWrap"`,elements:[{name:`literal`,value:`"wrap"`},{name:`literal`,value:`"noWrap"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},as:{required:!1,tsType:{name:`union`,raw:`"code" | "span" | "p" | "div" | "h2" | "h3" | "h4" | "h5" | "h6"`,elements:[{name:`literal`,value:`"code"`},{name:`literal`,value:`"span"`},{name:`literal`,value:`"p"`},{name:`literal`,value:`"div"`},{name:`literal`,value:`"h2"`},{name:`literal`,value:`"h3"`},{name:`literal`,value:`"h4"`},{name:`literal`,value:`"h5"`},{name:`literal`,value:`"h6"`}]},description:``}}}})))()}export{m as n,p as t};
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-YrfSEgEg.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";var o,s,c,l,u,d,f,p;function m(){return(m=t((()=>{o=e(n(),1),a(),s=r(),c={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},l={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},u={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},d={wrap:`textWrap`,noWrap:`textNoWrap`},f=({size:e,color:t,weight:n,italic:r,uppercase:a,wrap:s,className:f})=>(0,o.useMemo)(()=>{let o=[];return e&&o.push(l[e]),n&&o.push(u[n]),s&&o.push(d[s]),r&&o.push(`fontItalic`),a&&o.push(`textUppercase`),t&&o.push(c[t]),i(...o,f)},[e,n,t,r,a,s,f]),p=({children:e,as:t,style:n,...r})=>{let i=f(r);return(0,s.jsx)(t||`span`,{className:i,style:n,children:e})},p.__docgenInfo={description:``,methods:[],displayName:`Text`,props:{size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``},weight:{required:!1,tsType:{name:`union`,raw:`"lighter" | "light" | "regular" | "medium" | "bold" | "bolder"`,elements:[{name:`literal`,value:`"lighter"`},{name:`literal`,value:`"light"`},{name:`literal`,value:`"regular"`},{name:`literal`,value:`"medium"`},{name:`literal`,value:`"bold"`},{name:`literal`,value:`"bolder"`}]},description:``},italic:{required:!1,tsType:{name:`boolean`},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``},wrap:{required:!1,tsType:{name:`union`,raw:`"wrap" | "noWrap"`,elements:[{name:`literal`,value:`"wrap"`},{name:`literal`,value:`"noWrap"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},as:{required:!1,tsType:{name:`union`,raw:`"code" | "span" | "p" | "div" | "h2" | "h3" | "h4" | "h5" | "h6"`,elements:[{name:`literal`,value:`"code"`},{name:`literal`,value:`"span"`},{name:`literal`,value:`"p"`},{name:`literal`,value:`"div"`},{name:`literal`,value:`"h2"`},{name:`literal`,value:`"h3"`},{name:`literal`,value:`"h4"`},{name:`literal`,value:`"h5"`},{name:`literal`,value:`"h6"`}]},description:``}}}})))()}export{m as n,p as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-IjspN281.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-DVOJ06z_.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DNj8uFSt.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-jFSqX_4h.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`Textarea`}),`
3
3
  `,(0,b.jsx)(o,{children:`Многострочное текстовое поле для описаний, комментариев и заметок`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`Textarea уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -8,7 +8,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B
8
8
  `,(0,b.jsx)(i,{of:_}),`
9
9
  `,(0,b.jsx)(t.pre,{children:(0,b.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
10
10
 
11
- import { Textarea } from "@/shared/ui";
11
+ import { Textarea } from "@ryuzaki13/react-foundation-ui";
12
12
 
13
13
  export function Example() {
14
14
  const [value, setValue] = useState("");
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./ui.module-BDnTp43_.js";import{d as o,l as s,s as c,u as l}from"./Input-Q95tdikw.js";var u,d;function f(){return(f=e((()=>{u=`TjY2iu`,d={textarea:u}})))()}function p({label:e,description:t,className:r,disabled:a,size:s,value:l,onChange:u,error:f,onClearError:p,id:h,...g}){let{controlId:_,labelId:v,descriptionId:y,errorId:b,describedBy:x}=o({id:h,hasLabel:e!=null,hasDescription:!!t,hasError:!!f});return(0,m.jsx)(c,{label:e,description:t,disabled:a,required:g.required,size:s,error:f,controlId:_,labelId:v,descriptionId:y,errorId:b,children:(0,m.jsx)(`textarea`,{...g,id:_,disabled:a,value:l,"aria-invalid":!!f||void 0,"aria-labelledby":v,"aria-describedby":x,"data-invalid":f?``:void 0,className:n(i.uiControl,d.textarea,`scrollable`,r),onChange:e=>{u?.(e.target.value),f&&p&&p()}})})}var m;function h(){return(h=e((()=>{r(),s(),l(),a(),f(),m=t(),p.__docgenInfo={description:`Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.`,methods:[],displayName:`Textarea`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}},composes:[`Omit`]}})))()}export{h as n,p as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./ui.module-BDnTp43_.js";import{d as o,l as s,s as c,u as l}from"./Input-WhTMStKL.js";var u,d;function f(){return(f=e((()=>{u=`TjY2iu`,d={textarea:u}})))()}function p({label:e,description:t,className:r,disabled:a,size:s,value:l,onChange:u,error:f,onClearError:p,id:h,...g}){let{controlId:_,labelId:v,descriptionId:y,errorId:b,describedBy:x}=o({id:h,hasLabel:e!=null,hasDescription:!!t,hasError:!!f});return(0,m.jsx)(c,{label:e,description:t,disabled:a,required:g.required,size:s,error:f,controlId:_,labelId:v,descriptionId:y,errorId:b,children:(0,m.jsx)(`textarea`,{...g,id:_,disabled:a,value:l,"aria-invalid":!!f||void 0,"aria-labelledby":v,"aria-describedby":x,"data-invalid":f?``:void 0,className:n(i.uiControl,d.textarea,`scrollable`,r),onChange:e=>{u?.(e.target.value),f&&p&&p()}})})}var m;function h(){return(h=e((()=>{r(),s(),l(),a(),f(),m=t(),p.__docgenInfo={description:`Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.`,methods:[],displayName:`Textarea`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}},composes:[`Omit`]}})))()}export{h as n,p as t};
@@ -0,0 +1,17 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./Textarea-WtjTIiyq.js";var s=t({Controlled:()=>d,Disabled:()=>p,WithValue:()=>f,__namedExportsOrder:()=>m,default:()=>u}),c,l,u,d,f,p,m;function h(){return(h=e((()=>{r(),a(),c=n(),l=i((e,t)=>(0,c.jsx)(o,{...e,value:e.value??``,onChange:n=>{e.onChange?.(n),t({value:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})),u={title:`UI/Textarea`,component:o,args:{label:`Комментарий`,description:`Оставьте примечание к документу.`,placeholder:`Введите текст...`,disabled:!1,value:``,onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок текстовой области.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Плейсхолдер поля ввода.`,control:`text`},value:{description:`Текущее значение текстовой области.`,control:`text`},onChange:{description:`Вызывается при изменении текста.`,control:!1},error:{description:`Текст ошибки под полем.`,control:`text`},onClearError:{description:`Вызывается при вводе для сброса внешней ошибки.`,control:!1},disabled:{description:`Блокирует редактирование.`,control:`boolean`},size:{description:`Размер поля и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={args:{value:`Первичный комментарий`},render:l},f={args:{value:`Шаблонный текст для редактирования.`},render:l},p={args:{disabled:!0,value:`Редактирование недоступно.`},render:l},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
+ args: {
3
+ value: "Первичный комментарий"
4
+ },
5
+ render: renderTextareaStory
6
+ }`,...d.parameters?.docs?.source}}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
7
+ args: {
8
+ value: "Шаблонный текст для редактирования."
9
+ },
10
+ render: renderTextareaStory
11
+ }`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
12
+ args: {
13
+ disabled: true,
14
+ value: "Редактирование недоступно."
15
+ },
16
+ render: renderTextareaStory
17
+ }`,...p.parameters?.docs?.source}}},m=[`Controlled`,`WithValue`,`Disabled`]})))()}export{h as a,f as i,p as n,s as r,d as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-B_6aAEqw.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{g as a,s as o}from"./odata-service-CWkHASdw-DlmSiioz.js";import{m as s,y as c}from"./formatters-D33Uh3si-CxrG0jsB.js";import{i as l,r as u}from"./date-segments-DeoMkKv9.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w;function T(){return(T=e((()=>{u(),c(),a(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)})))()}function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}function E(){return(E=e((()=>{T()})))()}function D(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function te(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function ie(e,t,n){return n<=0||t<=0?0:D(Math.round(e/t),n)}var k,A,j,M,N,P,F;function I(){return(I=e((()=>{k=`GLhdJ6`,A=`_2xLNL2`,j=`dgX32S`,M=`WfOtQ9`,N=`XIdSMi`,P=`_--Hsbk`,F={wheelPicker:k,viewport:A,scroller:j,items:M,item:N,selectionFrame:P}})))()}function L({items:e,value:t,onChange:n,ariaLabel:i,disabled:a,className:o,minHeight:s=B,visibleRows:c=V,formatItem:l,getItemKey:u}){let d=(0,R.useRef)(null),f=(0,R.useRef)(null),p=(0,R.useRef)(null),m=(0,R.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,R.useState)(0),_=te(h,s),v=ne(_,c),y=re(_,v),b=(0,R.useRef)(m),x=(0,R.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,R.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=ie(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,R.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},H)},[S]);(0,R.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,R.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=D(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,R.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,R.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=D(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,z.jsx)(`div`,{ref:d,className:r(F.wheelPicker,o),style:T,children:(0,z.jsxs)(`div`,{className:F.viewport,children:[(0,z.jsx)(`div`,{ref:f,className:F.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":i,"aria-disabled":a||void 0,onKeyDown:w,children:(0,z.jsx)(`div`,{className:F.items,children:e.map((e,t)=>{let r=t===m;return(0,z.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:F.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,z.jsx)(`div`,{className:F.selectionFrame,"aria-hidden":`true`})]})})}var R,z,B,V,H;function U(){return(U=e((()=>{R=t(),i(),I(),z=n(),B=192,V=7,H=96,L.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})))()}var W,G,K,q,J,Y,X;function Z(){return(Z=e((()=>{W=`_5-SSnO`,G=`s1NHua`,K=`KQC9-8`,q=`WDu02W`,J=`_9mEhfD`,Y=`N-Fzjk`,X={timePanel:W,hint:G,fields:K,field:q,label:J,wheel:Y}})))()}function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsx)(`p`,{className:X.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsxs)(`div`,{className:X.fields,children:[(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Часы`}),(0,$.jsx)(L,{className:X.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Минуты`}),(0,$.jsx)(L,{className:X.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $;function ae(){return(ae=e((()=>{U(),E(),Z(),$=n(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}})))()}export{f as a,h as c,_ as d,d as i,g as l,ae as n,T as o,y as r,m as s,Q as t,p as u};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-YrfSEgEg.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{g as a,s as o}from"./odata-service-CWkHASdw-CXhFi03v.js";import{m as s,y as c}from"./formatters-D33Uh3si-Df97arf9.js";import{i as l,r as u}from"./date-segments-DeoMkKv9.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w;function T(){return(T=e((()=>{u(),c(),a(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)})))()}function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}function E(){return(E=e((()=>{T()})))()}function D(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function te(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function ie(e,t,n){return n<=0||t<=0?0:D(Math.round(e/t),n)}var k,A,j,M,N,P,F;function I(){return(I=e((()=>{k=`GLhdJ6`,A=`_2xLNL2`,j=`dgX32S`,M=`WfOtQ9`,N=`XIdSMi`,P=`_--Hsbk`,F={wheelPicker:k,viewport:A,scroller:j,items:M,item:N,selectionFrame:P}})))()}function L({items:e,value:t,onChange:n,ariaLabel:i,disabled:a,className:o,minHeight:s=B,visibleRows:c=V,formatItem:l,getItemKey:u}){let d=(0,R.useRef)(null),f=(0,R.useRef)(null),p=(0,R.useRef)(null),m=(0,R.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,R.useState)(0),_=te(h,s),v=ne(_,c),y=re(_,v),b=(0,R.useRef)(m),x=(0,R.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,R.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=ie(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,R.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},H)},[S]);(0,R.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,R.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=D(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,R.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,R.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=D(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,z.jsx)(`div`,{ref:d,className:r(F.wheelPicker,o),style:T,children:(0,z.jsxs)(`div`,{className:F.viewport,children:[(0,z.jsx)(`div`,{ref:f,className:F.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":i,"aria-disabled":a||void 0,onKeyDown:w,children:(0,z.jsx)(`div`,{className:F.items,children:e.map((e,t)=>{let r=t===m;return(0,z.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:F.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,z.jsx)(`div`,{className:F.selectionFrame,"aria-hidden":`true`})]})})}var R,z,B,V,H;function U(){return(U=e((()=>{R=t(),i(),I(),z=n(),B=192,V=7,H=96,L.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})))()}var W,G,K,q,J,Y,X;function Z(){return(Z=e((()=>{W=`_5-SSnO`,G=`s1NHua`,K=`KQC9-8`,q=`WDu02W`,J=`_9mEhfD`,Y=`N-Fzjk`,X={timePanel:W,hint:G,fields:K,field:q,label:J,wheel:Y}})))()}function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsx)(`p`,{className:X.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsxs)(`div`,{className:X.fields,children:[(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Часы`}),(0,$.jsx)(L,{className:X.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Минуты`}),(0,$.jsx)(L,{className:X.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $;function ae(){return(ae=e((()=>{U(),E(),Z(),$=n(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}})))()}export{f as a,h as c,_ as d,d as i,g as l,ae as n,T as o,y as r,m as s,Q as t,p as u};
@@ -0,0 +1,14 @@
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{n,t as r}from"./TimePanel-B-rvi-xm.js";function i(e){let[,t]=o(),n=e.value;return(0,a.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,a.jsx)(r,{...e,value:n,onChange:(r,i)=>{e.onChange(r,i),t({value:new Date(n.getFullYear(),n.getMonth(),n.getDate(),r,i,0,0)})}})})}var a,o,s,c,l,u,d;function f(){return(f=e((()=>{n(),a=t(),{useArgs:o}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:s}=__STORYBOOK_MODULE_TEST__,c={title:`UI/Internal/DateTime/TimePanel`,component:r,args:{value:new Date(2026,2,10,12,30,0,0),onChange:s(),disabled:!1,mode:`date-time`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{value:{description:`Текущая дата, из которой панель берёт календарный день и время.`,control:!1},disabled:{description:`Блокирует оба wheel-picker-а.`,control:`boolean`},minDate:{description:`Нижняя граница доступного времени для выбранного дня.`,control:`date`},maxDate:{description:`Верхняя граница доступного времени для выбранного дня.`,control:`date`},mode:{description:`Режим вычисления доступного времени.`,control:`inline-radio`,options:[`date-time`,`time`]},onChange:{description:`Вызывается с выбранными часами и минутами.`,control:!1}}},l={render:function(e){return(0,a.jsx)(i,{...e})}},u={render:function(e){return(0,a.jsx)(i,{...e})},args:{value:new Date(2026,2,10,9,30,0,0),minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0)}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
2
+ render: function Render(args) {
3
+ return <TimePanelStoryCanvas {...args} />;
4
+ }
5
+ }`,...l.parameters?.docs?.source},description:{story:`Демонстрирует базовую wheel-панель времени.`,...l.parameters?.docs?.description}}},u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
6
+ render: function Render(args) {
7
+ return <TimePanelStoryCanvas {...args} />;
8
+ },
9
+ args: {
10
+ value: new Date(2026, 2, 10, 9, 30, 0, 0),
11
+ minDate: new Date(2026, 2, 10, 9, 15, 0, 0),
12
+ maxDate: new Date(2026, 2, 10, 18, 30, 0, 0)
13
+ }
14
+ }`,...u.parameters?.docs?.source},description:{story:`Показывает ограничение диапазона на том же календарном дне.`,...u.parameters?.docs?.description}}},d=[`Default`,`WithLimits`]})))()}f();export{l as Default,u as WithLimits,d as __namedExportsOrder,c as default};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-IjspN281.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-BLolzyKP.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DNj8uFSt.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-BonTJbH-.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,b.jsx)(u,{children:`Toggle`}),`
3
3
  `,(0,b.jsx)(o,{children:`Переключаемый булев контрол для локальных режимов и простых опций`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`Toggle уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -8,7 +8,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B
8
8
  `,(0,b.jsx)(i,{of:_}),`
9
9
  `,(0,b.jsx)(t.pre,{children:(0,b.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
10
10
 
11
- import { Toggle } from "@/shared/ui";
11
+ import { Toggle } from "@ryuzaki13/react-foundation-ui";
12
12
 
13
13
  export function Example() {
14
14
  const [enabled, setEnabled] = useState(false);
@@ -1 +1 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-B_6aAEqw.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-BDnTp43_.js";var c,l,u,d,f,p,m,h,g;function _(){return(_=t((()=>{c=`FFyoOs`,l=`zPYy7T`,u=`j6ek6R`,d=`HFTPXI`,f=`_0RK4xF`,p=`kDPnKt`,m=`DQHqws`,h=`nCQ9v4`,g={row:c,wrapper:l,input:u,track:d,thumb:f,unchecked:p,checked:m,option:h}})))()}function v({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,y.useId)(),_=u??h,v=t?`${_}-description`:void 0,x=e??n,S=!!l,C=!x&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=x?(0,b.jsx)(`label`,{htmlFor:_,className:o.uiLabel,children:x}):null;return(0,b.jsxs)(`div`,{className:i(o.uiElement,r&&o.disabled,a&&o.uiSizable,a&&o[a],s),"aria-disabled":r||void 0,children:[(0,b.jsxs)(`div`,{className:g.row,children:[p===`before`&&w,(0,b.jsxs)(`div`,{className:g.wrapper,children:[(0,b.jsx)(`input`,{...m,id:_,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:i(o.uiInputControl,g.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,b.jsxs)(`div`,{className:g.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,b.jsx)(`div`,{className:g.thumb}),(0,b.jsx)(`div`,{className:i(g.option,g.unchecked),children:f}),(0,b.jsx)(`div`,{className:i(g.option,g.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,b.jsx)(`p`,{id:v,className:o.uiDescription,children:t})]})}var y,b;function x(){return(x=t((()=>{y=e(n(),1),a(),s(),_(),b=r(),v.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}})))()}export{x as n,v as t};
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-YrfSEgEg.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-BDnTp43_.js";var c,l,u,d,f,p,m,h,g;function _(){return(_=t((()=>{c=`FFyoOs`,l=`zPYy7T`,u=`j6ek6R`,d=`HFTPXI`,f=`_0RK4xF`,p=`kDPnKt`,m=`DQHqws`,h=`nCQ9v4`,g={row:c,wrapper:l,input:u,track:d,thumb:f,unchecked:p,checked:m,option:h}})))()}function v({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,y.useId)(),_=u??h,v=t?`${_}-description`:void 0,x=e??n,S=!!l,C=!x&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=x?(0,b.jsx)(`label`,{htmlFor:_,className:o.uiLabel,children:x}):null;return(0,b.jsxs)(`div`,{className:i(o.uiElement,r&&o.disabled,a&&o.uiSizable,a&&o[a],s),"aria-disabled":r||void 0,children:[(0,b.jsxs)(`div`,{className:g.row,children:[p===`before`&&w,(0,b.jsxs)(`div`,{className:g.wrapper,children:[(0,b.jsx)(`input`,{...m,id:_,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:i(o.uiInputControl,g.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,b.jsxs)(`div`,{className:g.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,b.jsx)(`div`,{className:g.thumb}),(0,b.jsx)(`div`,{className:i(g.option,g.unchecked),children:f}),(0,b.jsx)(`div`,{className:i(g.option,g.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,b.jsx)(`p`,{id:v,className:o.uiDescription,children:t})]})}var y,b;function x(){return(x=t((()=>{y=e(n(),1),a(),s(),_(),b=r(),v.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}})))()}export{x as n,v as t};
@@ -0,0 +1,25 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./Toggle-BkglFvBx.js";var s=t({Controlled:()=>d,Disabled:()=>p,LabelAfter:()=>f,__namedExportsOrder:()=>m,default:()=>u}),c,l,u,d,f,p,m;function h(){return(h=e((()=>{r(),a(),c=n(),l=i((e,t)=>(0,c.jsx)(o,{...e,value:e.value??!1,onChange:n=>{e.onChange?.(n),t({value:n})}})),u={title:`UI/Toggle`,component:o,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Текущее значение переключателя.`,control:`boolean`},onChange:{description:`Вызывается при изменении значения.`,control:!1},checkedText:{description:`Текст для включенного состояния.`,control:`text`},uncheckedText:{description:`Текст для выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:l,args:{label:`Режим синхронизации`,description:`Мгновенное переключение состояния.`,value:!1,checkedText:`ВКЛ`,uncheckedText:`ВЫКЛ`,labelPosition:`before`}},f={render:l,args:{label:`Уведомления`,value:!0,labelPosition:`after`}},p={render:l,args:{label:`Недоступный переключатель`,value:!0,disabled:!0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
+ render: renderToggleStory,
3
+ args: {
4
+ label: "Режим синхронизации",
5
+ description: "Мгновенное переключение состояния.",
6
+ value: false,
7
+ checkedText: "ВКЛ",
8
+ uncheckedText: "ВЫКЛ",
9
+ labelPosition: "before"
10
+ }
11
+ }`,...d.parameters?.docs?.source}}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
12
+ render: renderToggleStory,
13
+ args: {
14
+ label: "Уведомления",
15
+ value: true,
16
+ labelPosition: "after"
17
+ }
18
+ }`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
19
+ render: renderToggleStory,
20
+ args: {
21
+ label: "Недоступный переключатель",
22
+ value: true,
23
+ disabled: true
24
+ }
25
+ }`,...p.parameters?.docs?.source}}},m=[`Controlled`,`LabelAfter`,`Disabled`]})))()}export{h as a,s as i,p as n,f as r,d as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-IjspN281.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./TreeMultiSelect.stories-C_4ZpE9w.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DNj8uFSt.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./TreeMultiSelect.stories-DQ9N-EPu.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,w.jsx)(u,{children:`TreeMultiSelect`}),`
3
3
  `,(0,w.jsx)(o,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
4
4
  `,(0,w.jsxs)(t.p,{children:[(0,w.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-B_6aAEqw.js";import{i as r,o as i,r as a,s as o}from"./defaultRenderers-DfmnIuod.js";import{a as s,c,d as l,i as u,l as d,n as f,r as p,s as m,t as h}from"./TreePickerBase-BBwppLrT.js";function g(e,t){let n=l(e,t),r=Object.values(n).reduce((e,t)=>e+t.length,0);if(r!==0){if(r===1){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1))[0],r=t.nodeById.get(n);return r?r.label:void 0}return a(r)}}function _(e,t,n){let r=d(e,n),i=d(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function v({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:i,nodes:a,value:f,onChange:v,query:x,defaultQuery:S,onQuery:C,isLoading:w,error:T,optionsLayout:E=`tree`,defaultExpandedCodeKeys:D}){let[O,k]=(0,y.useState)(!1),A=(0,y.useMemo)(()=>p(a),[a]),{draftValue:j,setDraftValue:M,prepareOpen:N}=o({value:f,open:O,onCommit:v,isEqual:(e,t)=>_(e,t,A)}),P=O?j:f,F=(0,y.useMemo)(()=>d(P,A),[P,A]),I=(0,y.useMemo)(()=>s(F,A),[F,A]),L=(0,y.useMemo)(()=>new Set([...A.nodeById.keys()].filter(e=>A.nodeById.get(e)?.disabled!==!0&&!m(e,F,A)&&!I.selectedIds.has(e)&&u(A,[e]).size===0)),[F,I.selectedIds,A]),R=(0,y.useMemo)(()=>g(F,A),[F,A]);return(0,b.jsx)(h,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:a,selectedIds:I.selectedIds,partialIds:I.partialIds,selectionMode:`multi`,optionsLayout:E,defaultExpandedCodeKeys:D,unavailableNodeIds:L,open:O,onOpenChange:e=>{e&&!O&&N(),k(e)},bulkActions:{onSelectAll:()=>{M(l(u(A),A))},onDeselectAll:()=>M({})},triggerMode:`search`,selectedSummary:R,query:x,defaultQuery:S,onQuery:C,onNodeActivate:(e,t)=>{M(c({},e.id,A,t))},onNodeToggleSelection:(e,t)=>{M(n=>c(n,e.id,A,t))},onClearSelection:()=>{M({}),O||v({})},isLoading:w,error:T})}var y,b;function x(){return(x=e((()=>{y=t(),r(),i(),f(),b=n(),v.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Определяет обычное раскрываемое дерево или полностью открытый адаптивный набор колонок.`,defaultValue:{value:`"tree"`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."}},composes:[`Omit`]}})))()}export{x as n,v as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-YrfSEgEg.js";import{i as r,o as i,r as a,s as o}from"./defaultRenderers-Dinv2uRZ.js";import{a as s,c,d as l,i as u,l as d,n as f,r as p,s as m,t as h}from"./TreePickerBase-DwoQyBMk.js";function g(e,t){let n=l(e,t),r=Object.values(n).reduce((e,t)=>e+t.length,0);if(r!==0){if(r===1){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1))[0],r=t.nodeById.get(n);return r?r.label:void 0}return a(r)}}function _(e,t,n){let r=d(e,n),i=d(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function v({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:i,nodes:a,value:f,onChange:v,query:x,defaultQuery:S,onQuery:C,isLoading:w,error:T,optionsLayout:E=`tree`,defaultExpandedCodeKeys:D}){let[O,k]=(0,y.useState)(!1),A=(0,y.useMemo)(()=>p(a),[a]),{draftValue:j,setDraftValue:M,prepareOpen:N}=o({value:f,open:O,onCommit:v,isEqual:(e,t)=>_(e,t,A)}),P=O?j:f,F=(0,y.useMemo)(()=>d(P,A),[P,A]),I=(0,y.useMemo)(()=>s(F,A),[F,A]),L=(0,y.useMemo)(()=>new Set([...A.nodeById.keys()].filter(e=>A.nodeById.get(e)?.disabled!==!0&&!m(e,F,A)&&!I.selectedIds.has(e)&&u(A,[e]).size===0)),[F,I.selectedIds,A]),R=(0,y.useMemo)(()=>g(F,A),[F,A]);return(0,b.jsx)(h,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:a,selectedIds:I.selectedIds,partialIds:I.partialIds,selectionMode:`multi`,optionsLayout:E,defaultExpandedCodeKeys:D,unavailableNodeIds:L,open:O,onOpenChange:e=>{e&&!O&&N(),k(e)},bulkActions:{onSelectAll:()=>{M(l(u(A),A))},onDeselectAll:()=>M({})},triggerMode:`search`,selectedSummary:R,query:x,defaultQuery:S,onQuery:C,onNodeActivate:(e,t)=>{M(c({},e.id,A,t))},onNodeToggleSelection:(e,t)=>{M(n=>c(n,e.id,A,t))},onClearSelection:()=>{M({}),O||v({})},isLoading:w,error:T})}var y,b;function x(){return(x=e((()=>{y=t(),r(),i(),f(),b=n(),v.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Определяет обычное раскрываемое дерево или полностью открытый адаптивный набор колонок.`,defaultValue:{value:`"tree"`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."}},composes:[`Omit`]}})))()}export{x as n,v as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-B_6aAEqw.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TreeMultiSelect-b4PiPTEN.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-DXHh9GL3.js";var u=t({BalancedColumns:()=>x,Basic:()=>_,FirstTwoLevelsExpanded:()=>b,MixedSelection:()=>y,OrphanProtectionColumns:()=>S,ParentCompression:()=>v,RightEdgeColumns:()=>C,__namedExportsOrder:()=>w,default:()=>g});function d({args:e,updateArgs:t}){return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(e.value)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{r(),a(),s(),f=n(),p=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),m=i((e,t)=>(0,f.jsx)(d,{args:e,updateArgs:t})),h=i((e,t)=>(0,f.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,f.jsx)(`div`,{style:{width:260},children:(0,f.jsx)(d,{args:e,updateArgs:t})})})),g={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранных узлов.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Контролируемое отображение выбранных узлов по codeKey.`,control:!1},onChange:{description:`Вызывается при commit набора узлов.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},optionsLayout:{description:`Способ показа: дерево или адаптивные колонки.`,control:`inline-radio`,options:[`tree`,`columns`]},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},_={render:m,args:{value:{OWNER:[`P0001`]}}},v={render:m,args:{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,value:{REGION:[`R01`]}}},y={render:m,args:{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,value:{BRANCH:[`B0101`],OWNER:[`P0004`]}}},b={render:m,args:{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]}},x={render:m,args:{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,value:{BRANCH:[`B0101`]}}},S={render:m,args:{label:`Защита начала большой группы`,description:`Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый.`,optionsLayout:`columns`,nodes:c}},C={render:h,args:{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:p}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TreeMultiSelect-CKr7kx7s.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-DXHh9GL3.js";var u=t({BalancedColumns:()=>x,Basic:()=>_,FirstTwoLevelsExpanded:()=>b,MixedSelection:()=>y,OrphanProtectionColumns:()=>S,ParentCompression:()=>v,RightEdgeColumns:()=>C,__namedExportsOrder:()=>w,default:()=>g});function d({args:e,updateArgs:t}){return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(e.value)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{r(),a(),s(),f=n(),p=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),m=i((e,t)=>(0,f.jsx)(d,{args:e,updateArgs:t})),h=i((e,t)=>(0,f.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,f.jsx)(`div`,{style:{width:260},children:(0,f.jsx)(d,{args:e,updateArgs:t})})})),g={title:`UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранных узлов.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Контролируемое отображение выбранных узлов по codeKey.`,control:!1},onChange:{description:`Вызывается при commit набора узлов.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},optionsLayout:{description:`Способ показа: дерево или адаптивные колонки.`,control:`inline-radio`,options:[`tree`,`columns`]},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},_={render:m,args:{value:{OWNER:[`P0001`]}}},v={render:m,args:{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,value:{REGION:[`R01`]}}},y={render:m,args:{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,value:{BRANCH:[`B0101`],OWNER:[`P0004`]}}},b={render:m,args:{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]}},x={render:m,args:{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,value:{BRANCH:[`B0101`]}}},S={render:m,args:{label:`Защита начала большой группы`,description:`Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый.`,optionsLayout:`columns`,nodes:c}},C={render:h,args:{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:p}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
2
2
  render: renderTreeMultiSelectStory,
3
3
  args: {
4
4
  value: {
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./chevron-right-CKnELL4E.js";import{n as i,t as a}from"./CheckBox-BNpn-ZBB.js";import{n as o}from"./iframe-B_6aAEqw.js";import{a as s,i as c,r as l,s as u,t as d}from"./utils-tg3ibbzi.js";import{n as f,t as p}from"./OptionButton-D0afktaf.js";import{l as m,o as h}from"./Input-Q95tdikw.js";import{c as g,i as ee,l as te,m as _,n as ne,p as re,r as ie,s as ae,t as oe,u as v}from"./usePickerTriggerController-D3h4HqB9.js";import{a as se,n as ce,o as le,t as ue}from"./Option-Bdu68XEe.js";import{i as de,n as fe,r as pe,t as me}from"./usePickerQuery-Cug-ZpN1.js";function y(e,t){return`${e}::${t}`}function he(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Map,c=0,l=(e,u)=>{t.set(e.id,e),n.set(e.id,u),i.set(e.id,c++);let d=y(e.codeKey,e.value);a.set(d,e.id);let f=o.get(d);f?f.push(e.id):o.set(d,[e.id]);let p=(e.children??[]).map(e=>e.id);r.set(e.id,p);for(let t of e.children??[])l(t,e.id);s.set(e.id,e.disabled===!0||p.some(e=>s.get(e)===!0))};for(let t of e)l(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a,nodeIdsByCodeValue:o,subtreeContainsDisabledById:s}}function b(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(y(n.codeKey,n.value))??[]:[]}function ge(e,t){if(e)return t.nodeIdByCodeValue.get(y(e.codeKey,e.value))}function x(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i)for(let i of t.nodeIdsByCodeValue.get(y(r,e))??[])n.add(i);return O(n,t)}function S(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={},i=new Set;for(let e of n){let n=t.nodeById.get(e);if(!n)continue;let a=y(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function _e(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function C(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function w(e,t){let n=b(e,t);return!n.length||n.some(e=>{let n=t.nodeById.get(e);return!n||n.selectionBehavior===`descendants`||t.subtreeContainsDisabledById.get(e)===!0})?!1:!n.some((e,r)=>n.some((n,i)=>r!==i&&(C(e,n,t)||C(n,e,t))))}function ve(e,t){return w(e,t)?b(e,t):[e]}function ye(e,t,n){for(let r of[...e])C(r,t,n)&&e.delete(r)}function T(e,t,n){let r=[t];for(let t=0;t<r.length;t+=1){let i=r[t];if(i){r.push(...n.childrenById.get(i)??[]);for(let t of b(i,n))e.delete(t)}}}function E(e,t,n){if(t.has(e))return!0;if(n.nodeById.get(e)?.disabled)return!1;let r=n.childrenById.get(e)??[];return r.length!==0&&r.every(e=>E(e,t,n))}function D(e,t,n){if(!n.nodeById.has(e))return!1;let r=t.childrenById.get(e)??[],i=n.childrenById.get(e)??[];return r.length===i.length&&r.every((e,r)=>i[r]===e&&D(e,t,n))}function O(e,t){let n=new Set(e);for(let e of[...n])if(t.nodeById.get(e)?.selectionBehavior===`descendants`){n.delete(e);for(let r of j(t,t.childrenById.get(e)??[]))n.add(r)}for(let e of[...n])_e(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>E(e,n,t))){let r=b(e,t);if(w(e,t)&&r.every(e=>{let r=t.nodeById.get(e);return r&&!r.disabled&&r.selectionBehavior!==`descendants`&&E(e,n,t)}))for(let e of r)ye(n,e,t),n.add(e)}}return n}function k(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of b(r,n))if(e.has(t)){e.delete(t);for(let r of j(n,n.childrenById.get(t)??[]))e.add(r)}return!0}r=n.parentById.get(r)}return!1}function A(e,t,n){return t.has(e)?!0:_e(e,n).some(e=>t.has(e))}function be(e,t,n,r){let i=n.childrenById.get(e)??[];if(t.has(e))return r.selectedIds.add(e),{selected:!0,partial:!1};if(i.length===0)return{selected:!1,partial:!1};let a=i.map(e=>be(e,t,n,r)),o=a.every(e=>e.selected&&!e.partial),s=a.some(e=>e.selected||e.partial);return o?(r.selectedIds.add(e),{selected:!0,partial:!1}):s?(r.partialIds.add(e),{selected:!1,partial:!0}):{selected:!1,partial:!1}}function xe(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)be(r,e,t,n);return n}function j(e,t=e.rootIds){let n=t=>{let r=e.nodeById.get(t),i=(e.childrenById.get(t)??[]).map(n),a=i.flatMap(e=>e.selectedIds),o=r?.disabled===!0||i.some(e=>e.containsDisabled);if(!r||r.disabled)return{containsDisabled:!0,selectedIds:a};if(r.selectionBehavior===`descendants`)return{containsDisabled:o,selectedIds:a};let s=!w(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function M(e,t,n,r){let i=x(e,n),a=r!==void 0&&!D(t,n,r);if(!a&&E(t,i,n))return T(i,t,n),S(O(i,n),n);let o=e=>{if(i.has(e)){T(i,e,n);return}if(E(e,i,n)){T(i,e,n);return}if(A(e,i,n)){k(i,e,n)&&(A(e,i,n)||E(e,i,n)?o(e):T(i,e,n));return}for(let t of ve(e,n))ye(i,t,n),i.add(t)},s=e=>{if(!r?.nodeById.has(e))return[];if(D(e,n,r)){let t=[...j(n,[e])];return t.length>0?t:A(e,i,n)||E(e,i,n)?[e]:[]}return(r.childrenById.get(e)??[]).flatMap(s)},c=a?s(t):[...j(n,[t])],l=c.length===0&&(A(t,i,n)||E(t,i,n))?[t]:c,u=l.length>0&&l.every(e=>A(e,i,n)||E(e,i,n));for(let e of l){let t=A(e,i,n)||E(e,i,n);(u&&t||!u&&!t)&&o(e)}return S(O(i,n),n)}function N(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function Se(e,t){let n=new Set;for(let r of e)N(r,t,n);return n}function Ce(e,t,n){let r=new Set;for(let[i,a]of e.childrenById){if(a.length===0)continue;let o=e.nodeById.get(i);o&&(n.get(i)??t.has(o.codeKey))&&r.add(i)}return r}function P(e,t,n){let r=(e.children??[]).map(e=>P(e,t,n)).filter(e=>!!e);return!e.searchText.toLowerCase().includes(t)&&r.length===0?null:(r.length>0&&n.add(e.id),r.length===0?e:{...e,children:r})}function we(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>P(e,n,r)).filter(e=>!!e),expandedIds:r}}function Te(e,t){let n=[],r=(e,i,a)=>{let o=(e.children?.length??0)>0,s=o&&t.has(e.id);if(n.push({node:e,level:i,parentId:a,hasChildren:o,isExpanded:s,isLeaf:!o}),s)for(let t of e.children??[])r(t,i+1,e.id)};for(let t of e)r(t,0);return n}function F(){return(F=e((()=>{})))()}function Ee(e){let t=[],n=0;for(;n<e.length;){let r=n+1;for(;r<e.length&&e[r]?.level!==0;)r+=1;t.push({startIndex:n,endIndexExclusive:r}),n=r}let r=t.map(({startIndex:e,endIndexExclusive:t})=>`${e}:${t}`).join(`|`);return{itemCount:e.length,groups:t,signature:`${e.length}|${r}`}}function I(e,t){return Number.isFinite(e)&&e>0?e:t}function De(e){let t=e.endIndexExclusive-e.startIndex;return Math.min(Ae,t)}function L(e,t){let n=Math.max(1,t),r=[],i=1,a=1,o=0;for(let t of e.groups){let e=De(t),s=n-a+1;a>1&&e>s&&(o+=s,i+=1,a=1);for(let e=t.startIndex;e<t.endIndexExclusive;e+=1)r[e]={column:i,row:a},a+=1,a>n&&(i+=1,a=1)}return{placements:r,usedColumnCount:r.length?Math.max(...r.map(e=>e.column)):1,intentionalGapCount:o}}function Oe({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=I(t,240),c=I(n,80),l=I(r,s+16),u=I(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,I(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-R+B)/234)),g=Math.max(1,Math.min(H,h,o||1)),ee=e.groups.reduce((e,t)=>Math.max(e,De(t)),1);if(o===0)return{columnCount:1,rowCount:1,width:m,minWidth:m,maxHeight:f,placements:[]};let te,_=1/0;for(let t=1;t<=g;t+=1){let n=Math.max(ee,Math.ceil(o/t)),r=L(e,n);for(;r.usedColumnCount>t&&n<o;)n+=1,r=L(e,n);let i=r.usedColumnCount,a=Math.max(m,R+i*z+(i-1)*B),s=ke+n*V,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);h<_&&(_=h,te={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return te??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,ke,z,B,V,H,Ae;function U(){return(U=e((()=>{R=16,ke=48,z=224,B=10,V=32,H=6,Ae=3})))()}var je,W,G,Me,K,Ne,Pe,Fe,Ie,Le,Re,q;function J(){return(J=e((()=>{je=`_6EH37F`,W=`UBll8Q`,G=`-y3RZP`,Me=`ayLJ50`,K=`_430vL2`,Ne=`_2MFkGF`,Pe=`o5NWnX`,Fe=`ibSd-S`,Ie=`lXezvv`,Le=`FMlLGX`,Re=`d2Zt7U`,q={treeNodeButton:je,treePopupHeader:W,treeColumns:G,treeColumnRow:Me,treeColumnsPopupLayout:K,treeColumnCheckBox:Ne,treeIndent:Pe,treeExpander:Fe,treeExpanderPlaceholder:Ie,treeExpanderIcon:Le,treeExpanderIconExpanded:Re}})))()}function ze({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:c,partial:l,selectionMode:u,optionsLayout:d=`tree`,onToggleExpand:f,onToggleSelection:m,onActivate:h}){let g=d===`tree`,ee=d===`columns`&&t===0;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:q.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&i?(0,Y.jsx)(`button`,{type:`button`,className:q.treeExpander,onClick:e=>{e.stopPropagation(),f?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Y.jsx)(r,{className:s(q.treeExpanderIcon,o&&q.treeExpanderIconExpanded)})}):g?(0,Y.jsx)(`div`,{className:q.treeExpanderPlaceholder,"aria-hidden":`true`}):null,u===`multi`?(0,Y.jsx)(`div`,{className:q.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Y.jsx)(a,{value:c,indeterminate:l,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Y.jsx)(p,{className:q.treeNodeButton,tabIndex:-1,disabled:e.disabled,text:e.label,code:e.code,searchText:n,emphasizeContent:ee,onMouseDown:e=>e.preventDefault(),onClick:h})]})}var Y;function Be(){return(Be=e((()=>{c(),n(),i(),f(),J(),Y=o(),ze.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./chevron-right-u6yLjLrs.js";import{n as i,t as a}from"./CheckBox-Cpt5rjSg.js";import{n as o}from"./iframe-YrfSEgEg.js";import{a as s,i as c,r as l,s as u,t as d}from"./utils-tg3ibbzi.js";import{n as f,t as p}from"./OptionButton-CdYqQAwC.js";import{l as m,o as h}from"./Input-WhTMStKL.js";import{c as g,i as ee,l as te,m as _,n as ne,p as re,r as ie,s as ae,t as oe,u as v}from"./usePickerTriggerController-DeZhyi9h.js";import{a as se,n as ce,o as le,t as ue}from"./Option-BwWLsS-Q.js";import{i as de,n as fe,r as pe,t as me}from"./usePickerQuery-DJMG-4Gl.js";function y(e,t){return`${e}::${t}`}function he(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Map,c=0,l=(e,u)=>{t.set(e.id,e),n.set(e.id,u),i.set(e.id,c++);let d=y(e.codeKey,e.value);a.set(d,e.id);let f=o.get(d);f?f.push(e.id):o.set(d,[e.id]);let p=(e.children??[]).map(e=>e.id);r.set(e.id,p);for(let t of e.children??[])l(t,e.id);s.set(e.id,e.disabled===!0||p.some(e=>s.get(e)===!0))};for(let t of e)l(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a,nodeIdsByCodeValue:o,subtreeContainsDisabledById:s}}function b(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(y(n.codeKey,n.value))??[]:[]}function ge(e,t){if(e)return t.nodeIdByCodeValue.get(y(e.codeKey,e.value))}function x(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i)for(let i of t.nodeIdsByCodeValue.get(y(r,e))??[])n.add(i);return O(n,t)}function S(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={},i=new Set;for(let e of n){let n=t.nodeById.get(e);if(!n)continue;let a=y(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function _e(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function C(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function w(e,t){let n=b(e,t);return!n.length||n.some(e=>{let n=t.nodeById.get(e);return!n||n.selectionBehavior===`descendants`||t.subtreeContainsDisabledById.get(e)===!0})?!1:!n.some((e,r)=>n.some((n,i)=>r!==i&&(C(e,n,t)||C(n,e,t))))}function ve(e,t){return w(e,t)?b(e,t):[e]}function ye(e,t,n){for(let r of[...e])C(r,t,n)&&e.delete(r)}function T(e,t,n){let r=[t];for(let t=0;t<r.length;t+=1){let i=r[t];if(i){r.push(...n.childrenById.get(i)??[]);for(let t of b(i,n))e.delete(t)}}}function E(e,t,n){if(t.has(e))return!0;if(n.nodeById.get(e)?.disabled)return!1;let r=n.childrenById.get(e)??[];return r.length!==0&&r.every(e=>E(e,t,n))}function D(e,t,n){if(!n.nodeById.has(e))return!1;let r=t.childrenById.get(e)??[],i=n.childrenById.get(e)??[];return r.length===i.length&&r.every((e,r)=>i[r]===e&&D(e,t,n))}function O(e,t){let n=new Set(e);for(let e of[...n])if(t.nodeById.get(e)?.selectionBehavior===`descendants`){n.delete(e);for(let r of j(t,t.childrenById.get(e)??[]))n.add(r)}for(let e of[...n])_e(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>E(e,n,t))){let r=b(e,t);if(w(e,t)&&r.every(e=>{let r=t.nodeById.get(e);return r&&!r.disabled&&r.selectionBehavior!==`descendants`&&E(e,n,t)}))for(let e of r)ye(n,e,t),n.add(e)}}return n}function k(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of b(r,n))if(e.has(t)){e.delete(t);for(let r of j(n,n.childrenById.get(t)??[]))e.add(r)}return!0}r=n.parentById.get(r)}return!1}function A(e,t,n){return t.has(e)?!0:_e(e,n).some(e=>t.has(e))}function be(e,t,n,r){let i=n.childrenById.get(e)??[];if(t.has(e))return r.selectedIds.add(e),{selected:!0,partial:!1};if(i.length===0)return{selected:!1,partial:!1};let a=i.map(e=>be(e,t,n,r)),o=a.every(e=>e.selected&&!e.partial),s=a.some(e=>e.selected||e.partial);return o?(r.selectedIds.add(e),{selected:!0,partial:!1}):s?(r.partialIds.add(e),{selected:!1,partial:!0}):{selected:!1,partial:!1}}function xe(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)be(r,e,t,n);return n}function j(e,t=e.rootIds){let n=t=>{let r=e.nodeById.get(t),i=(e.childrenById.get(t)??[]).map(n),a=i.flatMap(e=>e.selectedIds),o=r?.disabled===!0||i.some(e=>e.containsDisabled);if(!r||r.disabled)return{containsDisabled:!0,selectedIds:a};if(r.selectionBehavior===`descendants`)return{containsDisabled:o,selectedIds:a};let s=!w(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function M(e,t,n,r){let i=x(e,n),a=r!==void 0&&!D(t,n,r);if(!a&&E(t,i,n))return T(i,t,n),S(O(i,n),n);let o=e=>{if(i.has(e)){T(i,e,n);return}if(E(e,i,n)){T(i,e,n);return}if(A(e,i,n)){k(i,e,n)&&(A(e,i,n)||E(e,i,n)?o(e):T(i,e,n));return}for(let t of ve(e,n))ye(i,t,n),i.add(t)},s=e=>{if(!r?.nodeById.has(e))return[];if(D(e,n,r)){let t=[...j(n,[e])];return t.length>0?t:A(e,i,n)||E(e,i,n)?[e]:[]}return(r.childrenById.get(e)??[]).flatMap(s)},c=a?s(t):[...j(n,[t])],l=c.length===0&&(A(t,i,n)||E(t,i,n))?[t]:c,u=l.length>0&&l.every(e=>A(e,i,n)||E(e,i,n));for(let e of l){let t=A(e,i,n)||E(e,i,n);(u&&t||!u&&!t)&&o(e)}return S(O(i,n),n)}function N(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function Se(e,t){let n=new Set;for(let r of e)N(r,t,n);return n}function Ce(e,t,n){let r=new Set;for(let[i,a]of e.childrenById){if(a.length===0)continue;let o=e.nodeById.get(i);o&&(n.get(i)??t.has(o.codeKey))&&r.add(i)}return r}function P(e,t,n){let r=(e.children??[]).map(e=>P(e,t,n)).filter(e=>!!e);return!e.searchText.toLowerCase().includes(t)&&r.length===0?null:(r.length>0&&n.add(e.id),r.length===0?e:{...e,children:r})}function we(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>P(e,n,r)).filter(e=>!!e),expandedIds:r}}function Te(e,t){let n=[],r=(e,i,a)=>{let o=(e.children?.length??0)>0,s=o&&t.has(e.id);if(n.push({node:e,level:i,parentId:a,hasChildren:o,isExpanded:s,isLeaf:!o}),s)for(let t of e.children??[])r(t,i+1,e.id)};for(let t of e)r(t,0);return n}function F(){return(F=e((()=>{})))()}function Ee(e){let t=[],n=0;for(;n<e.length;){let r=n+1;for(;r<e.length&&e[r]?.level!==0;)r+=1;t.push({startIndex:n,endIndexExclusive:r}),n=r}let r=t.map(({startIndex:e,endIndexExclusive:t})=>`${e}:${t}`).join(`|`);return{itemCount:e.length,groups:t,signature:`${e.length}|${r}`}}function I(e,t){return Number.isFinite(e)&&e>0?e:t}function De(e){let t=e.endIndexExclusive-e.startIndex;return Math.min(Ae,t)}function L(e,t){let n=Math.max(1,t),r=[],i=1,a=1,o=0;for(let t of e.groups){let e=De(t),s=n-a+1;a>1&&e>s&&(o+=s,i+=1,a=1);for(let e=t.startIndex;e<t.endIndexExclusive;e+=1)r[e]={column:i,row:a},a+=1,a>n&&(i+=1,a=1)}return{placements:r,usedColumnCount:r.length?Math.max(...r.map(e=>e.column)):1,intentionalGapCount:o}}function Oe({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=I(t,240),c=I(n,80),l=I(r,s+16),u=I(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,I(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-R+B)/234)),g=Math.max(1,Math.min(H,h,o||1)),ee=e.groups.reduce((e,t)=>Math.max(e,De(t)),1);if(o===0)return{columnCount:1,rowCount:1,width:m,minWidth:m,maxHeight:f,placements:[]};let te,_=1/0;for(let t=1;t<=g;t+=1){let n=Math.max(ee,Math.ceil(o/t)),r=L(e,n);for(;r.usedColumnCount>t&&n<o;)n+=1,r=L(e,n);let i=r.usedColumnCount,a=Math.max(m,R+i*z+(i-1)*B),s=ke+n*V,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);h<_&&(_=h,te={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return te??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,ke,z,B,V,H,Ae;function U(){return(U=e((()=>{R=16,ke=48,z=224,B=10,V=32,H=6,Ae=3})))()}var je,W,G,Me,K,Ne,Pe,Fe,Ie,Le,Re,q;function J(){return(J=e((()=>{je=`_6EH37F`,W=`UBll8Q`,G=`-y3RZP`,Me=`ayLJ50`,K=`_430vL2`,Ne=`_2MFkGF`,Pe=`o5NWnX`,Fe=`ibSd-S`,Ie=`lXezvv`,Le=`FMlLGX`,Re=`d2Zt7U`,q={treeNodeButton:je,treePopupHeader:W,treeColumns:G,treeColumnRow:Me,treeColumnsPopupLayout:K,treeColumnCheckBox:Ne,treeIndent:Pe,treeExpander:Fe,treeExpanderPlaceholder:Ie,treeExpanderIcon:Le,treeExpanderIconExpanded:Re}})))()}function ze({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:c,partial:l,selectionMode:u,optionsLayout:d=`tree`,onToggleExpand:f,onToggleSelection:m,onActivate:h}){let g=d===`tree`,ee=d===`columns`&&t===0;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:q.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&i?(0,Y.jsx)(`button`,{type:`button`,className:q.treeExpander,onClick:e=>{e.stopPropagation(),f?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Y.jsx)(r,{className:s(q.treeExpanderIcon,o&&q.treeExpanderIconExpanded)})}):g?(0,Y.jsx)(`div`,{className:q.treeExpanderPlaceholder,"aria-hidden":`true`}):null,u===`multi`?(0,Y.jsx)(`div`,{className:q.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Y.jsx)(a,{value:c,indeterminate:l,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Y.jsx)(p,{className:q.treeNodeButton,tabIndex:-1,disabled:e.disabled,text:e.label,code:e.code,searchText:n,emphasizeContent:ee,onMouseDown:e=>e.preventDefault(),onClick:h})]})}var Y;function Be(){return(Be=e((()=>{c(),n(),i(),f(),J(),Y=o(),ze.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
2
2
  id: string;
3
3
  codeKey: string;
4
4
  value: string;
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-B_6aAEqw.js";import{n as r,r as i,t as a,u as o}from"./TreePickerBase-BBwppLrT.js";function s(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function c({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:c,nodes:d,value:f,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,l.useMemo)(()=>i(d),[d]),S=o(f,x),C=S?x.nodeById.get(S):void 0;return(0,u.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:c,nodes:d,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:s(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var l,u;function d(){return(d=e((()=>{l=t(),r(),u=n(),c.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}})))()}export{d as n,c as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,r as i,t as a,u as o}from"./TreePickerBase-DwoQyBMk.js";function s(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function c({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:c,nodes:d,value:f,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,l.useMemo)(()=>i(d),[d]),S=o(f,x),C=S?x.nodeById.get(S):void 0;return(0,u.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:c,nodes:d,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:s(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var l,u;function d(){return(d=e((()=>{l=t(),r(),u=n(),c.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}})))()}export{d as n,c as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-IjspN281.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./TreeSelect.stories-CDkOknim.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DNj8uFSt.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./TreeSelect.stories-CyurXsU_.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`TreeSelect`}),`
3
3
  `,(0,x.jsx)(o,{children:`Single-select для выбора одного узла из дерева`}),`
4
4
  `,(0,x.jsxs)(t.p,{children:[(0,x.jsx)(t.code,{children:`TreeSelect`}),` подходит для сценариев, где выбор должен происходить по одному узлу, но пользователь работает не с плоским списком, а с иерархией.`]}),`
@@ -0,0 +1,32 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-YrfSEgEg.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./treeStoryFixtures-DXHh9GL3.js";import{n as s,t as c}from"./TreeSelect-BLc7zLho.js";var l=t({Basic:()=>m,Empty:()=>_,FirstLevelExpanded:()=>g,SelectParent:()=>h,__namedExportsOrder:()=>v,default:()=>p});function u({args:e,updateArgs:t}){return(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,d.jsx)(c,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,d.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value?`${e.value.codeKey}=${e.value.value}`:`пусто`]})]})}var d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{r(),s(),a(),d=n(),f=i((e,t)=>(0,d.jsx)(u,{args:e,updateArgs:t})),p={title:`UI/TreeSelect`,component:c,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:o,value:void 0,onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранного узла.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Выбранный узел в формате codeKey/value.`,control:!1},onChange:{description:`Вызывается при выборе узла.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},clearable:{description:`Показывает действие очистки выбора.`,control:`boolean`},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},m={render:f,args:{value:{codeKey:`BRANCH`,value:`B0101`}}},h={render:f,args:{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,value:{codeKey:`REGION`,value:`R01`}}},g={render:f,args:{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]}},_={render:f,args:{nodes:[],description:`Состояние без доступных узлов.`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
+ render: renderTreeSelectStory,
3
+ args: {
4
+ value: {
5
+ codeKey: "BRANCH",
6
+ value: "B0101"
7
+ }
8
+ }
9
+ }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
10
+ render: renderTreeSelectStory,
11
+ args: {
12
+ label: "Выбор родителя",
13
+ description: "Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.",
14
+ value: {
15
+ codeKey: "REGION",
16
+ value: "R01"
17
+ }
18
+ }
19
+ }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
20
+ render: renderTreeSelectStory,
21
+ args: {
22
+ label: "Раскрыт первый уровень",
23
+ description: "Все узлы уровня REGION раскрыты до первого ручного действия пользователя.",
24
+ defaultExpandedCodeKeys: ["REGION"]
25
+ }
26
+ }`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
27
+ render: renderTreeSelectStory,
28
+ args: {
29
+ nodes: [],
30
+ description: "Состояние без доступных узлов."
31
+ }
32
+ }`,..._.parameters?.docs?.source}}},v=[`Basic`,`SelectParent`,`FirstLevelExpanded`,`Empty`]})))()}export{l as a,h as i,_ as n,y as o,g as r,m as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B_6aAEqw.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-IjspN281.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./TreeTable.stories-D-x-lZkU.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-YrfSEgEg.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DNj8uFSt.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./TreeTable.stories-DUBR67SN.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,M.jsx)(u,{children:`TreeTable`}),`
3
3
  `,(0,M.jsx)(o,{children:`Древовидная таблица для плоских OData-данных на базе TanStack Table`}),`
4
4
  `,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`TreeTable`}),` предназначен для сценариев, где данные приходят плоским списком, но в UI должны выглядеть как дерево.
@@ -7,7 +7,7 @@ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-B
7
7
  `,(0,M.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
8
8
  `,(0,M.jsx)(f,{}),`
9
9
  `,(0,M.jsx)(i,{of:O}),`
10
- `,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { TreeTable, type TableColumnDef } from "@/shared/ui";
10
+ `,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { TreeTable, type TableColumnDef } from "@ryuzaki13/react-foundation-ui";
11
11
 
12
12
  interface MetricRow {
13
13
  id: string;
@@ -94,7 +94,7 @@ const columns = createTableColumnsFromODataMetadata(metadata.columns);
94
94
  `})}),`
95
95
  `,(0,M.jsxs)(t.p,{children:[`Тот же сценарий удобнее собрать через `,(0,M.jsx)(t.code,{children:`useODataTableColumns(...)`}),`, а не через ручной вызов helper:`]}),`
96
96
  `,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { useODataTableColumns } from "@ryuzaki13/react-foundation-api/odata";
97
- import { TreeTable } from "@/shared/ui";
97
+ import { TreeTable } from "@ryuzaki13/react-foundation-ui";
98
98
 
99
99
  function FinanceTree({ rows }: { rows: MetricRow[] }) {
100
100
  const { columns, metadata, isLoading } = useODataTableColumns<MetricRow>({
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./chevron-down-Dnk-3hJo.js";import{n as a,t as o}from"./chevron-right-CKnELL4E.js";import{n as s}from"./iframe-B_6aAEqw.js";import{J as c,X as l,Y as u,Z as d,_ as ee,a as f,b as te,g as ne,h as re,i as ie,y as ae}from"./odata-D2I4jbKq.js";import{a as oe,i as se}from"./utils-tg3ibbzi.js";import{i as ce,y as le}from"./formatters-D33Uh3si-CxrG0jsB.js";import{_ as ue,a as de,b as fe,c as pe,d as me,f as he,g as ge,h as _e,i as ve,l as ye,m as be,n as xe,o as Se,p as Ce,r as we,s as Te,t as Ee,u as De,v as Oe,x as ke,y as Ae}from"./FormattedTableCell-Od6SSoxO.js";function je(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function p(e){return Array.from(new Set(e))}function Me(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[],s=[],c=[];for(let o of e){let e=t.getRowId(o);if(n.has(e)){a.push(e);continue}let s=t.getParentRowId(o)??null;n.set(e,o),r.set(e,s),c.push(e),s!==null&&s!==e&&je(i,s,e)}let l=[];for(let e of c){let t=r.get(e)??null;if(t===null){l.push(e);continue}if(t===e){s.push(e),l.push(e);continue}n.has(t)||(o.push(e),l.push(e))}let u=new Set,d=(e,t)=>{let r=n.get(e);if(!r)throw Error(`Не удалось построить дерево: строка "${e}" отсутствует в индексе.`);u.add(e);let a=new Set(t);a.add(e);let o={...r},c=i.get(e)??[],l=[];for(let e of c){if(a.has(e)){s.push(e);continue}u.has(e)||l.push(d(e,a))}return l.length>0&&(o.children=l),o},ee=[],f=[];for(let e of l)u.has(e)||(ee.push(d(e,new Set)),f.push(e));for(let e of c)u.has(e)||(s.push(e),ee.push(d(e,new Set)),f.push(e));return{rows:ee,rowById:n,allRowIds:c,rootRowIds:p(f),orphanRowIds:p(o),duplicateRowIds:p(a),cyclicRowIds:p(s)}}function m(){return(m=e((()=>{})))()}var h,Ne,Pe,Fe,g,_,v,y;function b(){return(b=e((()=>{h=`jOS9rT`,Ne=`zHOAf7`,Pe=`j48cXg`,Fe=`mf4-Kr`,g=`p8pb0F`,_=`KIudLf`,v=`bJsPGU`,y={treeColumnCell:h,selectedIndicatorCell:Ne,treeCell:Pe,treeCellContent:Fe,expanderButton:g,expanderSpacer:_,sentinel:v}})))()}function Ie(e){return Object.fromEntries(e.map(e=>[e,!0]))}function Le(e){return typeof e==`boolean`?[]:Object.keys(e).filter(t=>e[t])}function x(e,t){return t.get(e.id)??e.original}function Re(e,t,n,r){return e.cell.column.id===n?(0,w.jsxs)(`div`,{className:y.treeCell,style:{paddingInlineStart:`calc(${e.row.depth} * ${ae(r)??`0em`})`},children:[e.row.getCanExpand()?(0,w.jsx)(`button`,{type:`button`,className:y.expanderButton,"aria-label":e.row.getIsExpanded()?`Свернуть строку`:`Развернуть строку`,"data-tree-table-interactive":`true`,"data-ui":`tree-table-expander`,"data-action":e.row.getIsExpanded()?`collapse-tree-table-row`:`expand-tree-table-row`,onClick:t=>{t.stopPropagation(),e.row.toggleExpanded()},children:e.row.getIsExpanded()?(0,w.jsx)(i,{size:16}):(0,w.jsx)(o,{size:16})}):(0,w.jsx)(`span`,{className:y.expanderSpacer,"aria-hidden":`true`}),(0,w.jsx)(`div`,{className:y.treeCellContent,children:t})]}):t}function S({title:e,isLoading:t,isFetching:n,data:r,columns:i,hierarchy:a,selectionMode:o=`none`,expandFirstLevel:s=!1,defaultExpandedRowIds:c,treeColumnId:l,indentSize:u=1,className:d,tableClassName:f,columnVisibility:te,defaultColumnVisibility:re,columnOrder:ie,defaultColumnOrder:ae,columnSizing:se,defaultColumnSizing:le,columnPinning:de,defaultColumnPinning:fe,enableColumnResizing:me=!1,enableColumnReordering:ge=!1,columnResizeMinWidth:ve,onColumnVisibilityChange:ye,onColumnOrderChange:be,onColumnSizingChange:xe,onColumnPinningChange:Te,onRowClick:Ae,onRowSelectionChange:je,onExpandedRowIdsChange:p,onReachEnd:m,getRowCanSelect:h,getRowClassName:Ne,renderHeaderContextMenu:Pe,renderCellContent:Fe}){let g=(0,C.useMemo)(()=>Me(r??[],a),[r,a]),_=(0,C.useMemo)(()=>_e(i),[i]),v=(0,C.useMemo)(()=>{let e=new Set(c??[]);if(s)for(let t of g.rootRowIds)e.add(t);return Array.from(e)},[c,s,g.rootRowIds]),[b,S]=(0,C.useState)({}),T=(0,C.useRef)(!1),E=(0,C.useRef)(null),ze=(0,C.useRef)(null),{rowSelection:Be,activateRowSelection:D}=ne({availableRowIds:g.allRowIds,rowById:g.rowById,selectionMode:o,onRowSelectionChange:je}),{columnVisibility:O,onColumnVisibilityChange:Ve}=Se({columnVisibility:te,defaultColumnVisibility:re,onColumnVisibilityChange:ye}),{columnOrder:k,onColumnOrderChange:He}=he({columnOrder:ie,defaultColumnOrder:ae,onColumnOrderChange:be}),{columnSizing:A,onColumnSizingChange:Ue}=pe({columnSizing:se,defaultColumnSizing:le,columnResizeMinWidth:ve,onColumnSizingChange:xe}),{columnPinning:j,onColumnPinningChange:We}=De({columnPinning:de,defaultColumnPinning:fe,onColumnPinningChange:Te}),Ge=(0,C.useMemo)(()=>({columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O}),[k,j,A,O]),M=(0,C.useEffectEvent)((e,t)=>{if(e.length===0){T.current=!1,S({});return}let n=new Set(e);S(e=>{let r=Le(e).filter(e=>n.has(e));return T.current?Ie(r):(T.current=!0,Ie(Array.from(new Set([...r,...t.filter(e=>n.has(e))]))))})}),Ke=(0,C.useEffectEvent)(e=>{p?.(Le(e))}),N=(0,C.useEffectEvent)(()=>{m?.()});(0,C.useEffect)(()=>{M(g.allRowIds,v)},[v,g.allRowIds]),(0,C.useEffect)(()=>{Ke(b)},[b]),(0,C.useEffect)(()=>{if(!m||!E.current||!ze.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&N()},{root:E.current,threshold:.1});return e.observe(ze.current),()=>e.disconnect()},[t,m,g.rows.length]);let P=ke({features:ee,data:g.rows,columns:i,state:{columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O,expanded:b,rowSelection:Be},getRowId:e=>a.getRowId(e),getSubRows:e=>e.children,onColumnOrderChange:He,onColumnPinningChange:We,onColumnSizingChange:Ue,onColumnVisibilityChange:Ve,onExpandedChange:S,enableMultiRowSelection:o===`multi`,enableRowSelection:e=>{if(o===`none`)return!1;let t=x(e,g.rowById);return!h||h(t)}}),F=Oe(P,Ge),I=l??F[0]?.id,qe=P.getRowModel().rows,Je=(0,C.useMemo)(()=>Ce({rows:qe,columns:F,resolveRowBoundaryKey:e=>e.depth,excludeColumnIds:I?new Set([I]):void 0}),[qe,F,I]);return(0,w.jsx)(we,{table:P,columnState:Ge,title:e,isLoading:t,isFetching:n,className:d,tableClassName:f,selectionMode:o,scrollableRef:E,interactiveElementSelector:`[data-tree-table-interactive="true"]`,onActivateRow:o!==`none`||Ae?e=>{let t=x(e,g.rowById);D(e.id,e.getCanSelect()),Ae?.(t)}:void 0,isRowInteractive:e=>!!(Ae||o!==`none`&&e.getCanSelect()),getRowClassName:e=>{let t=x(e,g.rowById);return Ne?.(t)},getCellClassName:({row:e,cell:t})=>oe(t.column.id===I&&y.treeColumnCell,t.column.id===I&&e.getIsSelected()&&y.selectedIndicatorCell),getCellLayout:({cell:e})=>Je.get(e.id),renderHeaderContextMenu:Pe,enableColumnResizing:me,enableColumnReordering:ge,columnResizeMinWidth:ve,renderCellContent:e=>{let t=x(e.row,g.rowById),n=ce({field:_.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:t,rowKind:`tree`}),r=ue({columnId:e.cell.column.id,runtimeByColumnId:_.runtimeByColumnId,customCellColumnIds:_.customCellColumnIds})?(0,w.jsx)(Ee,{displayValue:n,align:e.columnMeta?.align}):e.defaultContent;return Re(e,Fe?Fe({...e,defaultContent:r,displayValue:n}):r,I,u)},afterTableContent:m?(0,w.jsx)(`div`,{ref:ze,className:y.sentinel,"aria-hidden":`true`}):null})}var C,w;function T(){return(T=e((()=>{C=n(),le(),te(),m(),se(),fe(),r(),a(),ve(),be(),ge(),xe(),Ae(),me(),ye(),Te(),de(),b(),w=s(),S.__docgenInfo={description:`Древовидная таблица на базе TanStack Table для плоских OData-данных.`,methods:[],displayName:`TreeTable`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок через исходный тип строки.`},hierarchy:{required:!0,tsType:{name:`TreeTableFlatHierarchy`,elements:[{name:`TData`}],raw:`TreeTableFlatHierarchy<TData>`},description:`Правила восстановления дерева из плоского списка.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},expandFirstLevel:{required:!1,tsType:{name:`boolean`},description:"Если `true`, при первом появлении данных раскрывает корневой уровень.",defaultValue:{value:`false`,computed:!1}},defaultExpandedRowIds:{required:!1,tsType:{name:`unknown`},description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`},treeColumnId:{required:!1,tsType:{name:`string`},description:`Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./chevron-down-DXkNPvpX.js";import{n as a,t as o}from"./chevron-right-u6yLjLrs.js";import{n as s}from"./iframe-YrfSEgEg.js";import{J as c,X as l,Y as u,Z as d,_ as ee,a as f,b as te,g as ne,h as re,i as ie,y as ae}from"./odata-j4p1dw3i.js";import{a as oe,i as se}from"./utils-tg3ibbzi.js";import{i as ce,y as le}from"./formatters-D33Uh3si-Df97arf9.js";import{_ as ue,a as de,b as fe,c as pe,d as me,f as he,g as ge,h as _e,i as ve,l as ye,m as be,n as xe,o as Se,p as Ce,r as we,s as Te,t as Ee,u as De,v as Oe,x as ke,y as Ae}from"./FormattedTableCell-DP6-D86D.js";function je(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function p(e){return Array.from(new Set(e))}function Me(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[],s=[],c=[];for(let o of e){let e=t.getRowId(o);if(n.has(e)){a.push(e);continue}let s=t.getParentRowId(o)??null;n.set(e,o),r.set(e,s),c.push(e),s!==null&&s!==e&&je(i,s,e)}let l=[];for(let e of c){let t=r.get(e)??null;if(t===null){l.push(e);continue}if(t===e){s.push(e),l.push(e);continue}n.has(t)||(o.push(e),l.push(e))}let u=new Set,d=(e,t)=>{let r=n.get(e);if(!r)throw Error(`Не удалось построить дерево: строка "${e}" отсутствует в индексе.`);u.add(e);let a=new Set(t);a.add(e);let o={...r},c=i.get(e)??[],l=[];for(let e of c){if(a.has(e)){s.push(e);continue}u.has(e)||l.push(d(e,a))}return l.length>0&&(o.children=l),o},ee=[],f=[];for(let e of l)u.has(e)||(ee.push(d(e,new Set)),f.push(e));for(let e of c)u.has(e)||(s.push(e),ee.push(d(e,new Set)),f.push(e));return{rows:ee,rowById:n,allRowIds:c,rootRowIds:p(f),orphanRowIds:p(o),duplicateRowIds:p(a),cyclicRowIds:p(s)}}function m(){return(m=e((()=>{})))()}var h,Ne,Pe,Fe,g,_,v,y;function b(){return(b=e((()=>{h=`jOS9rT`,Ne=`zHOAf7`,Pe=`j48cXg`,Fe=`mf4-Kr`,g=`p8pb0F`,_=`KIudLf`,v=`bJsPGU`,y={treeColumnCell:h,selectedIndicatorCell:Ne,treeCell:Pe,treeCellContent:Fe,expanderButton:g,expanderSpacer:_,sentinel:v}})))()}function Ie(e){return Object.fromEntries(e.map(e=>[e,!0]))}function Le(e){return typeof e==`boolean`?[]:Object.keys(e).filter(t=>e[t])}function x(e,t){return t.get(e.id)??e.original}function Re(e,t,n,r){return e.cell.column.id===n?(0,w.jsxs)(`div`,{className:y.treeCell,style:{paddingInlineStart:`calc(${e.row.depth} * ${ae(r)??`0em`})`},children:[e.row.getCanExpand()?(0,w.jsx)(`button`,{type:`button`,className:y.expanderButton,"aria-label":e.row.getIsExpanded()?`Свернуть строку`:`Развернуть строку`,"data-tree-table-interactive":`true`,"data-ui":`tree-table-expander`,"data-action":e.row.getIsExpanded()?`collapse-tree-table-row`:`expand-tree-table-row`,onClick:t=>{t.stopPropagation(),e.row.toggleExpanded()},children:e.row.getIsExpanded()?(0,w.jsx)(i,{size:16}):(0,w.jsx)(o,{size:16})}):(0,w.jsx)(`span`,{className:y.expanderSpacer,"aria-hidden":`true`}),(0,w.jsx)(`div`,{className:y.treeCellContent,children:t})]}):t}function S({title:e,isLoading:t,isFetching:n,data:r,columns:i,hierarchy:a,selectionMode:o=`none`,expandFirstLevel:s=!1,defaultExpandedRowIds:c,treeColumnId:l,indentSize:u=1,className:d,tableClassName:f,columnVisibility:te,defaultColumnVisibility:re,columnOrder:ie,defaultColumnOrder:ae,columnSizing:se,defaultColumnSizing:le,columnPinning:de,defaultColumnPinning:fe,enableColumnResizing:me=!1,enableColumnReordering:ge=!1,columnResizeMinWidth:ve,onColumnVisibilityChange:ye,onColumnOrderChange:be,onColumnSizingChange:xe,onColumnPinningChange:Te,onRowClick:Ae,onRowSelectionChange:je,onExpandedRowIdsChange:p,onReachEnd:m,getRowCanSelect:h,getRowClassName:Ne,renderHeaderContextMenu:Pe,renderCellContent:Fe}){let g=(0,C.useMemo)(()=>Me(r??[],a),[r,a]),_=(0,C.useMemo)(()=>_e(i),[i]),v=(0,C.useMemo)(()=>{let e=new Set(c??[]);if(s)for(let t of g.rootRowIds)e.add(t);return Array.from(e)},[c,s,g.rootRowIds]),[b,S]=(0,C.useState)({}),T=(0,C.useRef)(!1),E=(0,C.useRef)(null),ze=(0,C.useRef)(null),{rowSelection:Be,activateRowSelection:D}=ne({availableRowIds:g.allRowIds,rowById:g.rowById,selectionMode:o,onRowSelectionChange:je}),{columnVisibility:O,onColumnVisibilityChange:Ve}=Se({columnVisibility:te,defaultColumnVisibility:re,onColumnVisibilityChange:ye}),{columnOrder:k,onColumnOrderChange:He}=he({columnOrder:ie,defaultColumnOrder:ae,onColumnOrderChange:be}),{columnSizing:A,onColumnSizingChange:Ue}=pe({columnSizing:se,defaultColumnSizing:le,columnResizeMinWidth:ve,onColumnSizingChange:xe}),{columnPinning:j,onColumnPinningChange:We}=De({columnPinning:de,defaultColumnPinning:fe,onColumnPinningChange:Te}),Ge=(0,C.useMemo)(()=>({columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O}),[k,j,A,O]),M=(0,C.useEffectEvent)((e,t)=>{if(e.length===0){T.current=!1,S({});return}let n=new Set(e);S(e=>{let r=Le(e).filter(e=>n.has(e));return T.current?Ie(r):(T.current=!0,Ie(Array.from(new Set([...r,...t.filter(e=>n.has(e))]))))})}),Ke=(0,C.useEffectEvent)(e=>{p?.(Le(e))}),N=(0,C.useEffectEvent)(()=>{m?.()});(0,C.useEffect)(()=>{M(g.allRowIds,v)},[v,g.allRowIds]),(0,C.useEffect)(()=>{Ke(b)},[b]),(0,C.useEffect)(()=>{if(!m||!E.current||!ze.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&N()},{root:E.current,threshold:.1});return e.observe(ze.current),()=>e.disconnect()},[t,m,g.rows.length]);let P=ke({features:ee,data:g.rows,columns:i,state:{columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O,expanded:b,rowSelection:Be},getRowId:e=>a.getRowId(e),getSubRows:e=>e.children,onColumnOrderChange:He,onColumnPinningChange:We,onColumnSizingChange:Ue,onColumnVisibilityChange:Ve,onExpandedChange:S,enableMultiRowSelection:o===`multi`,enableRowSelection:e=>{if(o===`none`)return!1;let t=x(e,g.rowById);return!h||h(t)}}),F=Oe(P,Ge),I=l??F[0]?.id,qe=P.getRowModel().rows,Je=(0,C.useMemo)(()=>Ce({rows:qe,columns:F,resolveRowBoundaryKey:e=>e.depth,excludeColumnIds:I?new Set([I]):void 0}),[qe,F,I]);return(0,w.jsx)(we,{table:P,columnState:Ge,title:e,isLoading:t,isFetching:n,className:d,tableClassName:f,selectionMode:o,scrollableRef:E,interactiveElementSelector:`[data-tree-table-interactive="true"]`,onActivateRow:o!==`none`||Ae?e=>{let t=x(e,g.rowById);D(e.id,e.getCanSelect()),Ae?.(t)}:void 0,isRowInteractive:e=>!!(Ae||o!==`none`&&e.getCanSelect()),getRowClassName:e=>{let t=x(e,g.rowById);return Ne?.(t)},getCellClassName:({row:e,cell:t})=>oe(t.column.id===I&&y.treeColumnCell,t.column.id===I&&e.getIsSelected()&&y.selectedIndicatorCell),getCellLayout:({cell:e})=>Je.get(e.id),renderHeaderContextMenu:Pe,enableColumnResizing:me,enableColumnReordering:ge,columnResizeMinWidth:ve,renderCellContent:e=>{let t=x(e.row,g.rowById),n=ce({field:_.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:t,rowKind:`tree`}),r=ue({columnId:e.cell.column.id,runtimeByColumnId:_.runtimeByColumnId,customCellColumnIds:_.customCellColumnIds})?(0,w.jsx)(Ee,{displayValue:n,align:e.columnMeta?.align}):e.defaultContent;return Re(e,Fe?Fe({...e,defaultContent:r,displayValue:n}):r,I,u)},afterTableContent:m?(0,w.jsx)(`div`,{ref:ze,className:y.sentinel,"aria-hidden":`true`}):null})}var C,w;function T(){return(T=e((()=>{C=n(),le(),te(),m(),se(),fe(),r(),a(),ve(),be(),ge(),xe(),Ae(),me(),ye(),Te(),de(),b(),w=s(),S.__docgenInfo={description:`Древовидная таблица на базе TanStack Table для плоских OData-данных.`,methods:[],displayName:`TreeTable`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок через исходный тип строки.`},hierarchy:{required:!0,tsType:{name:`TreeTableFlatHierarchy`,elements:[{name:`TData`}],raw:`TreeTableFlatHierarchy<TData>`},description:`Правила восстановления дерева из плоского списка.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},expandFirstLevel:{required:!1,tsType:{name:`boolean`},description:"Если `true`, при первом появлении данных раскрывает корневой уровень.",defaultValue:{value:`false`,computed:!1}},defaultExpandedRowIds:{required:!1,tsType:{name:`unknown`},description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`},treeColumnId:{required:!1,tsType:{name:`string`},description:`Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.
2
2
 
3
3
  Если не указан, используется первая видимая колонка.`},indentSize:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:`Отступ на один уровень вложенности.
4
4
 
@@ -6,7 +6,7 @@ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./r
6
6
  потому что BaseTable работает уже после сборки flat hierarchy.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TreeTableRuntimeRow<TData>>["renderCellContent"]`},description:`Точка расширения содержимого ячейки после общего форматирования.
7
7
 
8
8
  Для tree-column в \`defaultContent\` передается только содержимое ячейки:
9
- TreeTable сам добавит expander и отступ после выполнения слота.`}}}})))()}var E=t({Basic:()=>z,CollapsedByDefault:()=>V,Empty:()=>G,Fetching:()=>W,Loading:()=>K,MultiSelect:()=>B,WithDefaultExpandedBranch:()=>H,WithDisabledRows:()=>U,WithFormattedTreeColumn:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>et,default:()=>$e});function ze(){return{version:1,plan:{steps:[{id:`state`,type:`resolveValueState`,config:{resolver:{kind:`threshold`,thresholds:[100],states:[`success`,`warning`],invalidState:`none`},icon:{enabled:!0,showValue:!0,position:`right`}}},{id:`typed`,type:`typedValueFormat`}]}}}function Be(e){return[`odata`,`metadata`,{service:e}]}function D({args:e}){let[,t]=Ue();return(0,A.jsx)(S,{...e,onColumnVisibilityChange:n=>{e.onColumnVisibilityChange?.(n),t({columnVisibility:n})},onColumnOrderChange:n=>{e.onColumnOrderChange?.(n),t({columnOrder:n})},onColumnSizingChange:n=>{e.onColumnSizingChange?.(n),t({columnSizing:n})},onColumnPinningChange:n=>{e.onColumnPinningChange?.(n),t({columnPinning:n})}})}function O({args:e}){let{columns:t,metadata:n,isLoading:r}=ie({service:L,target:R,mode:`build`});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим build: hook собрал `,t.length,` колонки из metadata`,n?` для сущности «${n.title}».`:`.`]}),(0,A.jsx)(D,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function Ve({args:e}){let{columns:t,metadata:n,isLoading:r}=ie({service:L,target:R,mode:`enrich`,columns:[{id:`label`,accessorKey:`label`,header:`Статья`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:10,align:`right`}}]});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные tree-колонки и дополнил их formatting-контекстом`,n?` из metadata «${n.title}».`:`.`]}),(0,A.jsx)(D,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function k({args:e,intro:t}){let[n,r]=(0,He.useState)([]);return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[t?(0,A.jsx)(`div`,{children:t}):null,(0,A.jsxs)(`div`,{children:[`Выбрано: `,n.length>0?n.join(`, `):`ничего`]}),(0,A.jsx)(D,{args:{...e,onRowSelectionChange:t=>{e.onRowSelectionChange?.(t),r(t.map(e=>e.label))}}})]})}var He,A,Ue,j,We,Ge,M,Ke,N,P,F,I,qe,Je,Ye,Xe,L,R,Ze,Qe,$e,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,et;function tt(){return(tt=e((()=>{He=n(),f(),u(),te(),d(),T(),A=s(),{useArgs:Ue}=__STORYBOOK_MODULE_PREVIEW_API__,j=[{id:`revenue`,parentId:null,label:`Выручка`,jan:`1 240`,feb:`1 320`,mar:`1 410`,apr:`1 505`},{id:`revenue_clients`,parentId:`revenue`,label:`Клиентский сегмент`,jan:`920`,feb:`960`,mar:`1 020`,apr:`1 080`},{id:`revenue_exports`,parentId:`revenue`,label:`Экспорт`,jan:`320`,feb:`360`,mar:`390`,apr:`425`},{id:`margin`,parentId:null,label:`Маржинальность`,jan:`18%`,feb:`19%`,mar:`21%`,apr:`20%`},{id:`margin_sales`,parentId:`margin`,label:`Продажи`,jan:`12%`,feb:`13%`,mar:`14%`,apr:`14%`},{id:`margin_logistics`,parentId:`margin`,label:`Логистика`,jan:`6%`,feb:`6%`,mar:`7%`,apr:`6%`},{id:`margin_logistics_local`,parentId:`margin_logistics`,label:`Локальная логистика`,jan:`4%`,feb:`4%`,mar:`5%`,apr:`4%`},{id:`margin_logistics_export`,parentId:`margin_logistics`,label:`Экспортная логистика`,jan:`2%`,feb:`2%`,mar:`2%`,apr:`2%`,isLocked:!0},{id:`orphan_costs`,parentId:`missing_parent`,label:`Прочие расходы без родителя`,jan:`30`,feb:`28`,mar:`31`,apr:`35`}],We=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:18,align:`left`}},{id:`jan`,accessorKey:`jan`,header:`янв`,meta:{width:8,align:`right`}},{id:`feb`,accessorKey:`feb`,header:`фев`,meta:{width:8,align:`right`}},{id:`mar`,accessorKey:`mar`,header:`мар`,meta:{width:8,align:`right`}},{id:`apr`,accessorKey:`apr`,header:`апр`,meta:{width:8,align:`right`}}],Ge={getRowId:e=>e.id,getParentRowId:e=>e.parentId},M={getRowId:e=>e.id,getParentRowId:e=>e.parentId},Ke={getRowId:e=>e.id,getParentRowId:e=>e.parentId},N=[{id:`revenue`,parentId:null,label:`Выручка`,purchasePrice:80,salePrice:125,healthScore:40,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1820},{id:`revenue_domestic`,parentId:`revenue`,label:`Внутренний рынок`,purchasePrice:82,salePrice:129,healthScore:120,pendingAmount:250,createdAt:`2026-03-18T10:00:00.000Z`,totalAmount:980},{id:`revenue_export`,parentId:`revenue`,label:`Экспорт`,purchasePrice:75,salePrice:118,healthScore:95,pendingAmount:0,createdAt:`2026-03-19T08:25:00.000Z`,totalAmount:840},{id:`margin`,parentId:null,label:`Маржинальность`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:640}],P=[{id:`div-root-1`,parentId:null,label:`Корень 1`,division:`ДВД`},{id:`div-root-2`,parentId:null,label:`Корень 2`,division:`ДВД`},{id:`div-root-3`,parentId:null,label:`Корень 3`,division:`УД`},{id:`div-child-1`,parentId:`div-root-3`,label:`Дочерний узел`,division:`УД`}],F=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}},{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}}],I=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],qe=[{id:`totalAmount`,accessorKey:`totalAmount`,header:`Сумма в дереве`,meta:{width:12,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:ze()}}},{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}}],Je=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],Ye=[{id:`label`,type:`string`,originalType:`Edm.String`,label:`Показатель`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`createdAt`,type:`datetime`,originalType:`Edm.DateTime`,label:`Дата создания`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`totalAmount`,type:`decimal`,originalType:`Edm.Decimal`,label:`Сумма`,semanticType:`none`,sortable:!0,filterable:!0,role:`measure`}],Xe=re(Ye),L=`ZDEMO_FINANCE_SRV`,R=`FinanceSet`,Ze={title:`Финансовая иерархия`,columns:Ye},Qe=(e,t)=>{let n=(0,He.useMemo)(()=>{let e=c({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Be(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,A.jsx)(l,{client:n,children:e()})},$e={title:`Shared/UI/TreeTable`,component:S,args:{title:`Финансовые показатели`,data:j,columns:We,hierarchy:Ge,selectionMode:`single`,expandFirstLevel:!0,indentSize:1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок таблицы.`,control:`text`},isLoading:{description:`Показывает состояние первичной загрузки.`,control:`boolean`},isFetching:{description:`Показывает фоновое обновление без очистки дерева.`,control:`boolean`},data:{description:`Плоский источник данных OData.`,control:!1},columns:{description:`Колонки TreeTable.`,control:!1},hierarchy:{description:`Функции получения id строки и id родителя.`,control:!1},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},expandFirstLevel:{description:`Автоматически раскрывает корневой уровень при первой инициализации.`,control:`boolean`},defaultExpandedRowIds:{description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`,control:!1},treeColumnId:{description:`Колонка, в которой рисуется дерево.`,control:`text`},indentSize:{description:`Отступ на уровень вложенности; число трактуется как em.`,control:`number`},columnVisibility:{description:`Controlled-состояние видимости колонок.`,control:!1},defaultColumnVisibility:{description:`Стартовое uncontrolled-состояние видимости колонок.`,control:!1},columnOrder:{description:`Controlled-порядок идентификаторов колонок.`,control:!1},defaultColumnOrder:{description:`Стартовый uncontrolled-порядок колонок.`,control:!1},columnSizing:{description:`Controlled-ширины колонок в px.`,control:!1},defaultColumnSizing:{description:`Стартовые uncontrolled-ширины колонок.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},enableColumnResizing:{description:`Включает изменение ширины колонок через header-handle.`,control:`boolean`},enableColumnReordering:{description:`Включает перетаскивание заголовков для изменения порядка колонок.`,control:`boolean`},columnResizeMinWidth:{description:`Минимальная ширина колонки при resize в px.`,control:`number`},onColumnVisibilityChange:{description:`Вызывается после изменения видимости колонок.`,control:!1},onColumnOrderChange:{description:`Вызывается после изменения порядка колонок.`,control:!1},onColumnSizingChange:{description:`Вызывается после изменения ширины колонок.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет назначить CSS-класс конкретной строке.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onExpandedRowIdsChange:{description:`Вызывается после изменения раскрытых строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца дерева внутри scroll-контейнера.`,control:!1},renderHeaderContextMenu:{description:`Слот контекстного меню заголовка колонки.`,control:!1},renderCellContent:{description:`Слот содержимого ячейки поверх стандартного formatting-runtime.`,control:!1}}},z={render:function(e){return(0,A.jsx)(D,{args:e})}},B={args:{selectionMode:`multi`},render:function(e){return(0,A.jsx)(k,{args:e})}},V={args:{expandFirstLevel:!1},render:function(e){return(0,A.jsx)(D,{args:e})}},H={args:{expandFirstLevel:!1,defaultExpandedRowIds:[`margin`,`margin_logistics`]},render:function(e){return(0,A.jsx)(D,{args:e})}},U={args:{selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:function(e){return(0,A.jsx)(k,{args:e,intro:`Строка «Экспортная логистика» остаётся в дереве, но не участвует в выборе.`})}},W={args:{isFetching:!0},render:function(e){return(0,A.jsx)(D,{args:e})}},G={args:{data:[]},render:function(e){return(0,A.jsx)(D,{args:e})}},K={args:{isLoading:!0},render:function(e){return(0,A.jsx)(D,{args:e})}},q={args:{title:`Формула в дереве`,data:N,columns:I,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},J={args:{title:`Форматирование tree-колонки`,data:N,columns:qe,hierarchy:M,treeColumnId:`totalAmount`,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Y={args:{title:`Скрытие нулей в дереве`,data:N,columns:Je,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},X={args:{title:`Слияние дубликатов в дереве`,data:P,columns:F,hierarchy:Ke,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Z={args:{title:`OData metadata adapter`,data:N,columns:Xe,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Q={args:{title:`useODataTableColumns: build`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[Qe],parameters:{odataService:L,odataEntity:R,odataMetadata:Ze},render:function(e){return(0,A.jsx)(O,{args:e})}},$={args:{title:`useODataTableColumns: enrich`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[Qe],parameters:{odataService:L,odataEntity:R,odataMetadata:Ze},render:function(e){return(0,A.jsx)(Ve,{args:e})}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
9
+ TreeTable сам добавит expander и отступ после выполнения слота.`}}}})))()}var E=t({Basic:()=>z,CollapsedByDefault:()=>V,Empty:()=>G,Fetching:()=>W,Loading:()=>K,MultiSelect:()=>B,WithDefaultExpandedBranch:()=>H,WithDisabledRows:()=>U,WithFormattedTreeColumn:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>et,default:()=>$e});function ze(){return{version:1,plan:{steps:[{id:`state`,type:`resolveValueState`,config:{resolver:{kind:`threshold`,thresholds:[100],states:[`success`,`warning`],invalidState:`none`},icon:{enabled:!0,showValue:!0,position:`right`}}},{id:`typed`,type:`typedValueFormat`}]}}}function Be(e){return[`odata`,`metadata`,{service:e}]}function D({args:e}){let[,t]=Ue();return(0,A.jsx)(S,{...e,onColumnVisibilityChange:n=>{e.onColumnVisibilityChange?.(n),t({columnVisibility:n})},onColumnOrderChange:n=>{e.onColumnOrderChange?.(n),t({columnOrder:n})},onColumnSizingChange:n=>{e.onColumnSizingChange?.(n),t({columnSizing:n})},onColumnPinningChange:n=>{e.onColumnPinningChange?.(n),t({columnPinning:n})}})}function O({args:e}){let{columns:t,metadata:n,isLoading:r}=ie({service:L,target:R,mode:`build`});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим build: hook собрал `,t.length,` колонки из metadata`,n?` для сущности «${n.title}».`:`.`]}),(0,A.jsx)(D,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function Ve({args:e}){let{columns:t,metadata:n,isLoading:r}=ie({service:L,target:R,mode:`enrich`,columns:[{id:`label`,accessorKey:`label`,header:`Статья`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:10,align:`right`}}]});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные tree-колонки и дополнил их formatting-контекстом`,n?` из metadata «${n.title}».`:`.`]}),(0,A.jsx)(D,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function k({args:e,intro:t}){let[n,r]=(0,He.useState)([]);return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[t?(0,A.jsx)(`div`,{children:t}):null,(0,A.jsxs)(`div`,{children:[`Выбрано: `,n.length>0?n.join(`, `):`ничего`]}),(0,A.jsx)(D,{args:{...e,onRowSelectionChange:t=>{e.onRowSelectionChange?.(t),r(t.map(e=>e.label))}}})]})}var He,A,Ue,j,We,Ge,M,Ke,N,P,F,I,qe,Je,Ye,Xe,L,R,Ze,Qe,$e,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,et;function tt(){return(tt=e((()=>{He=n(),f(),u(),te(),d(),T(),A=s(),{useArgs:Ue}=__STORYBOOK_MODULE_PREVIEW_API__,j=[{id:`revenue`,parentId:null,label:`Выручка`,jan:`1 240`,feb:`1 320`,mar:`1 410`,apr:`1 505`},{id:`revenue_clients`,parentId:`revenue`,label:`Клиентский сегмент`,jan:`920`,feb:`960`,mar:`1 020`,apr:`1 080`},{id:`revenue_exports`,parentId:`revenue`,label:`Экспорт`,jan:`320`,feb:`360`,mar:`390`,apr:`425`},{id:`margin`,parentId:null,label:`Маржинальность`,jan:`18%`,feb:`19%`,mar:`21%`,apr:`20%`},{id:`margin_sales`,parentId:`margin`,label:`Продажи`,jan:`12%`,feb:`13%`,mar:`14%`,apr:`14%`},{id:`margin_logistics`,parentId:`margin`,label:`Логистика`,jan:`6%`,feb:`6%`,mar:`7%`,apr:`6%`},{id:`margin_logistics_local`,parentId:`margin_logistics`,label:`Локальная логистика`,jan:`4%`,feb:`4%`,mar:`5%`,apr:`4%`},{id:`margin_logistics_export`,parentId:`margin_logistics`,label:`Экспортная логистика`,jan:`2%`,feb:`2%`,mar:`2%`,apr:`2%`,isLocked:!0},{id:`orphan_costs`,parentId:`missing_parent`,label:`Прочие расходы без родителя`,jan:`30`,feb:`28`,mar:`31`,apr:`35`}],We=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:18,align:`left`}},{id:`jan`,accessorKey:`jan`,header:`янв`,meta:{width:8,align:`right`}},{id:`feb`,accessorKey:`feb`,header:`фев`,meta:{width:8,align:`right`}},{id:`mar`,accessorKey:`mar`,header:`мар`,meta:{width:8,align:`right`}},{id:`apr`,accessorKey:`apr`,header:`апр`,meta:{width:8,align:`right`}}],Ge={getRowId:e=>e.id,getParentRowId:e=>e.parentId},M={getRowId:e=>e.id,getParentRowId:e=>e.parentId},Ke={getRowId:e=>e.id,getParentRowId:e=>e.parentId},N=[{id:`revenue`,parentId:null,label:`Выручка`,purchasePrice:80,salePrice:125,healthScore:40,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1820},{id:`revenue_domestic`,parentId:`revenue`,label:`Внутренний рынок`,purchasePrice:82,salePrice:129,healthScore:120,pendingAmount:250,createdAt:`2026-03-18T10:00:00.000Z`,totalAmount:980},{id:`revenue_export`,parentId:`revenue`,label:`Экспорт`,purchasePrice:75,salePrice:118,healthScore:95,pendingAmount:0,createdAt:`2026-03-19T08:25:00.000Z`,totalAmount:840},{id:`margin`,parentId:null,label:`Маржинальность`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:640}],P=[{id:`div-root-1`,parentId:null,label:`Корень 1`,division:`ДВД`},{id:`div-root-2`,parentId:null,label:`Корень 2`,division:`ДВД`},{id:`div-root-3`,parentId:null,label:`Корень 3`,division:`УД`},{id:`div-child-1`,parentId:`div-root-3`,label:`Дочерний узел`,division:`УД`}],F=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}},{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}}],I=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],qe=[{id:`totalAmount`,accessorKey:`totalAmount`,header:`Сумма в дереве`,meta:{width:12,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:ze()}}},{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}}],Je=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],Ye=[{id:`label`,type:`string`,originalType:`Edm.String`,label:`Показатель`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`createdAt`,type:`datetime`,originalType:`Edm.DateTime`,label:`Дата создания`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`totalAmount`,type:`decimal`,originalType:`Edm.Decimal`,label:`Сумма`,semanticType:`none`,sortable:!0,filterable:!0,role:`measure`}],Xe=re(Ye),L=`ZDEMO_FINANCE_SRV`,R=`FinanceSet`,Ze={title:`Финансовая иерархия`,columns:Ye},Qe=(e,t)=>{let n=(0,He.useMemo)(()=>{let e=c({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Be(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,A.jsx)(l,{client:n,children:e()})},$e={title:`UI/TreeTable`,component:S,args:{title:`Финансовые показатели`,data:j,columns:We,hierarchy:Ge,selectionMode:`single`,expandFirstLevel:!0,indentSize:1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок таблицы.`,control:`text`},isLoading:{description:`Показывает состояние первичной загрузки.`,control:`boolean`},isFetching:{description:`Показывает фоновое обновление без очистки дерева.`,control:`boolean`},data:{description:`Плоский источник данных OData.`,control:!1},columns:{description:`Колонки TreeTable.`,control:!1},hierarchy:{description:`Функции получения id строки и id родителя.`,control:!1},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},expandFirstLevel:{description:`Автоматически раскрывает корневой уровень при первой инициализации.`,control:`boolean`},defaultExpandedRowIds:{description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`,control:!1},treeColumnId:{description:`Колонка, в которой рисуется дерево.`,control:`text`},indentSize:{description:`Отступ на уровень вложенности; число трактуется как em.`,control:`number`},columnVisibility:{description:`Controlled-состояние видимости колонок.`,control:!1},defaultColumnVisibility:{description:`Стартовое uncontrolled-состояние видимости колонок.`,control:!1},columnOrder:{description:`Controlled-порядок идентификаторов колонок.`,control:!1},defaultColumnOrder:{description:`Стартовый uncontrolled-порядок колонок.`,control:!1},columnSizing:{description:`Controlled-ширины колонок в px.`,control:!1},defaultColumnSizing:{description:`Стартовые uncontrolled-ширины колонок.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},enableColumnResizing:{description:`Включает изменение ширины колонок через header-handle.`,control:`boolean`},enableColumnReordering:{description:`Включает перетаскивание заголовков для изменения порядка колонок.`,control:`boolean`},columnResizeMinWidth:{description:`Минимальная ширина колонки при resize в px.`,control:`number`},onColumnVisibilityChange:{description:`Вызывается после изменения видимости колонок.`,control:!1},onColumnOrderChange:{description:`Вызывается после изменения порядка колонок.`,control:!1},onColumnSizingChange:{description:`Вызывается после изменения ширины колонок.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет назначить CSS-класс конкретной строке.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onExpandedRowIdsChange:{description:`Вызывается после изменения раскрытых строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца дерева внутри scroll-контейнера.`,control:!1},renderHeaderContextMenu:{description:`Слот контекстного меню заголовка колонки.`,control:!1},renderCellContent:{description:`Слот содержимого ячейки поверх стандартного formatting-runtime.`,control:!1}}},z={render:function(e){return(0,A.jsx)(D,{args:e})}},B={args:{selectionMode:`multi`},render:function(e){return(0,A.jsx)(k,{args:e})}},V={args:{expandFirstLevel:!1},render:function(e){return(0,A.jsx)(D,{args:e})}},H={args:{expandFirstLevel:!1,defaultExpandedRowIds:[`margin`,`margin_logistics`]},render:function(e){return(0,A.jsx)(D,{args:e})}},U={args:{selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:function(e){return(0,A.jsx)(k,{args:e,intro:`Строка «Экспортная логистика» остаётся в дереве, но не участвует в выборе.`})}},W={args:{isFetching:!0},render:function(e){return(0,A.jsx)(D,{args:e})}},G={args:{data:[]},render:function(e){return(0,A.jsx)(D,{args:e})}},K={args:{isLoading:!0},render:function(e){return(0,A.jsx)(D,{args:e})}},q={args:{title:`Формула в дереве`,data:N,columns:I,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},J={args:{title:`Форматирование tree-колонки`,data:N,columns:qe,hierarchy:M,treeColumnId:`totalAmount`,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Y={args:{title:`Скрытие нулей в дереве`,data:N,columns:Je,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},X={args:{title:`Слияние дубликатов в дереве`,data:P,columns:F,hierarchy:Ke,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Z={args:{title:`OData metadata adapter`,data:N,columns:Xe,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Q={args:{title:`useODataTableColumns: build`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[Qe],parameters:{odataService:L,odataEntity:R,odataMetadata:Ze},render:function(e){return(0,A.jsx)(O,{args:e})}},$={args:{title:`useODataTableColumns: enrich`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[Qe],parameters:{odataService:L,odataEntity:R,odataMetadata:Ze},render:function(e){return(0,A.jsx)(Ve,{args:e})}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
10
10
  render: function Render(args) {
11
11
  return <TreeTableStoryCanvas args={args} />;
12
12
  }