@ryuzaki13/react-foundation-ui 3.8.3 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/base-table/index.js +1 -1
  2. package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js → TextEditorLexicalClient-BQH41FFT.js} +2 -2
  3. package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js.map → TextEditorLexicalClient-BQH41FFT.js.map} +1 -1
  4. package/dist/chunks/{base-table-BMesCx6H.js → base-table-9H5YuVvB.js} +2 -2
  5. package/dist/chunks/{base-table-BMesCx6H.js.map → base-table-9H5YuVvB.js.map} +1 -1
  6. package/dist/chunks/{context-menu-CrSXJxQL.js → context-menu-BV8636Ou.js} +2 -2
  7. package/dist/chunks/{context-menu-CrSXJxQL.js.map → context-menu-BV8636Ou.js.map} +1 -1
  8. package/dist/chunks/{date-input-CzCDou4s.js → date-input-B7iG9cA7.js} +2 -2
  9. package/dist/chunks/{date-input-CzCDou4s.js.map → date-input-B7iG9cA7.js.map} +1 -1
  10. package/dist/chunks/{input-CuRK9Vbz.js → input-KXI7o06g.js} +7 -7
  11. package/dist/chunks/input-KXI7o06g.js.map +1 -0
  12. package/dist/chunks/{input-files-B8j6Pb_M.js → input-files-CnBNlJo0.js} +2 -2
  13. package/dist/chunks/{input-files-B8j6Pb_M.js.map → input-files-CnBNlJo0.js.map} +1 -1
  14. package/dist/chunks/{picker-SJXnHwsj.js → picker-DagDe9OH.js} +17 -16
  15. package/dist/chunks/picker-DagDe9OH.js.map +1 -0
  16. package/dist/chunks/select-C-1U-ujV.js +368 -0
  17. package/dist/chunks/select-C-1U-ujV.js.map +1 -0
  18. package/dist/chunks/{table-OvvWkKfy.js → table-BRC1OTyE.js} +2 -2
  19. package/dist/chunks/{table-OvvWkKfy.js.map → table-BRC1OTyE.js.map} +1 -1
  20. package/dist/context-menu/index.js +1 -1
  21. package/dist/date-input/index.js +1 -1
  22. package/dist/date-time-input/index.js +1 -1
  23. package/dist/drop-zone/index.js +1 -1
  24. package/dist/image/index.js +2 -2
  25. package/dist/input/Input.d.ts +2 -2
  26. package/dist/input/Input.d.ts.map +1 -1
  27. package/dist/input/index.js +1 -1
  28. package/dist/input-date-time/index.js +1 -1
  29. package/dist/input-file/index.js +1 -1
  30. package/dist/input-files/index.js +1 -1
  31. package/dist/input-image/index.js +1 -1
  32. package/dist/input-search/index.js +1 -1
  33. package/dist/layout-picker/index.js +1 -1
  34. package/dist/listbox/index.js +1 -1
  35. package/dist/multi-select/index.js +171 -161
  36. package/dist/multi-select/index.js.map +1 -1
  37. package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts +2 -0
  38. package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts.map +1 -1
  39. package/dist/multi-select/ui/MultiSelect.d.ts +3 -0
  40. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  41. package/dist/multi-select/ui/MultiSelectCore.d.ts +1 -1
  42. package/dist/multi-select/ui/MultiSelectCore.d.ts.map +1 -1
  43. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -1
  44. package/dist/multi-select/ui/ODataMultiSelect.d.ts +5 -2
  45. package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
  46. package/dist/multi-select/ui/SerializableMultiSelect.d.ts +3 -1
  47. package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
  48. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts +4 -0
  49. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts.map +1 -1
  50. package/dist/period-select/PeriodSelect.d.ts +2 -0
  51. package/dist/period-select/PeriodSelect.d.ts.map +1 -1
  52. package/dist/period-select/index.js.map +1 -1
  53. package/dist/picker/PickerField.d.ts +1 -1
  54. package/dist/picker/PickerField.d.ts.map +1 -1
  55. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  56. package/dist/picker/index.js +1 -1
  57. package/dist/picker/types.d.ts +2 -0
  58. package/dist/picker/types.d.ts.map +1 -1
  59. package/dist/preset-range-date-input/index.js +1 -1
  60. package/dist/preset-select/PresetSelect.d.ts +2 -0
  61. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  62. package/dist/preset-select/index.js +1 -1
  63. package/dist/preset-select/index.js.map +1 -1
  64. package/dist/select/ODataDependentSegmentSelect.d.ts.map +1 -1
  65. package/dist/select/ODataSelect.d.ts +3 -1
  66. package/dist/select/ODataSelect.d.ts.map +1 -1
  67. package/dist/select/Select.d.ts +3 -0
  68. package/dist/select/Select.d.ts.map +1 -1
  69. package/dist/select/SerializableSelect.d.ts +3 -1
  70. package/dist/select/SerializableSelect.d.ts.map +1 -1
  71. package/dist/select/index.js +1 -1
  72. package/dist/simple-table/index.js +1 -1
  73. package/dist/slider/index.js +2 -2
  74. package/dist/state-select/StateSelect.d.ts +3 -1
  75. package/dist/state-select/StateSelect.d.ts.map +1 -1
  76. package/dist/state-select/index.js +10 -8
  77. package/dist/state-select/index.js.map +1 -1
  78. package/dist/table/index.js +1 -1
  79. package/dist/table-editor/index.js +1 -1
  80. package/dist/table-sorting/index.js +1 -1
  81. package/dist/tag-input/index.js +1 -1
  82. package/dist/text-editor/index.js +1 -1
  83. package/dist/textarea/index.js +1 -1
  84. package/dist/tree-select/ODataTreeMultiSelect.d.ts +3 -1
  85. package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -1
  86. package/dist/tree-select/ODataTreeSelect.d.ts +3 -1
  87. package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -1
  88. package/dist/tree-select/TreeMultiSelect.d.ts +4 -1
  89. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  90. package/dist/tree-select/TreePickerBase.d.ts +3 -1
  91. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  92. package/dist/tree-select/TreeSelect.d.ts +4 -1
  93. package/dist/tree-select/TreeSelect.d.ts.map +1 -1
  94. package/dist/tree-select/index.js +271 -259
  95. package/dist/tree-select/index.js.map +1 -1
  96. package/dist/tree-table/index.js +1 -1
  97. package/package.json +1 -1
  98. package/storybook-static/assets/{Badge-Exgo2liR.js → Badge-CL58JilM.js} +1 -1
  99. package/storybook-static/assets/{Badge.stories-BSZPB2hP.js → Badge.stories-CXFTvV3D.js} +1 -1
  100. package/storybook-static/assets/{BadgeList-vXAflISJ.js → BadgeList-DLssobfd.js} +1 -1
  101. package/storybook-static/assets/{BarcodeScannerDialog.stories-B5JJTqxe.js → BarcodeScannerDialog.stories-CpMywpKq.js} +1 -1
  102. package/storybook-static/assets/{Button-W5ftYk1w.js → Button-CSbLv1K7.js} +1 -1
  103. package/storybook-static/assets/{Button-BzRtAjtM.js → Button-DMAPWgMI.js} +1 -1
  104. package/storybook-static/assets/{Button.stories-DcuEJMqp.js → Button.stories-CU1kYMvA.js} +1 -1
  105. package/storybook-static/assets/{CalendarView-C8taheM_.js → CalendarView-DuCLo_x5.js} +1 -1
  106. package/storybook-static/assets/{CheckBox-C-EWY4_-.js → CheckBox-BBPasWSk.js} +1 -1
  107. package/storybook-static/assets/{CheckBox-Cahw6EU8.js → CheckBox-Bfcdvr2o.js} +1 -1
  108. package/storybook-static/assets/{CheckBox.stories-DL49eu_s.js → CheckBox.stories-sGH6EuU4.js} +1 -1
  109. package/storybook-static/assets/{Color-6AOWCN3U-B0iuSBAP.js → Color-6AOWCN3U-5NJhf8m9.js} +1 -1
  110. package/storybook-static/assets/{ContextMenu-DqLKk-wW.js → ContextMenu-CxuYkXjJ.js} +1 -1
  111. package/storybook-static/assets/{ContextMenu-k1Mubm6h.js → ContextMenu-z6NKmD0I.js} +1 -1
  112. package/storybook-static/assets/{ContextMenu.stories-CNnrfTxO.js → ContextMenu.stories-CI5IW_KX.js} +1 -1
  113. package/storybook-static/assets/{DateInput-CgBBiqYK.js → DateInput-A8NURpCX.js} +1 -1
  114. package/storybook-static/assets/{DateInput-NSuuc0Vu.js → DateInput-BkCbK0M5.js} +1 -1
  115. package/storybook-static/assets/{DateInput.stories-eWY9Pqwp.js → DateInput.stories-DnzeyBpg.js} +1 -1
  116. package/storybook-static/assets/{DateRangePresetSelect-Ch6rsktY.js → DateRangePresetSelect-Bh7qMFTr.js} +1 -1
  117. package/storybook-static/assets/{DateRangePresetSelect-DibXoV_U.js → DateRangePresetSelect-CGZkf8Ty.js} +1 -1
  118. package/storybook-static/assets/{DateRangePresetSelect.stories-B8yndfPd.js → DateRangePresetSelect.stories-Drm2FCnJ.js} +1 -1
  119. package/storybook-static/assets/{DeprecatedMultiSelect-D8BCr3qw.js → DeprecatedMultiSelect-8TWWhsLi.js} +1 -1
  120. package/storybook-static/assets/{DeprecatedMultiSelect-1K4GSVRr.js → DeprecatedMultiSelect-BebYsPmQ.js} +1 -1
  121. package/storybook-static/assets/{DeprecatedMultiSelect.stories-DH7fIprL.js → DeprecatedMultiSelect.stories-7iL6YOgh.js} +1 -1
  122. package/storybook-static/assets/{Detail-CzQ7DLhL.js → Detail-BOZkPwOI.js} +1 -1
  123. package/storybook-static/assets/{Detail.stories-DzmSAGkt.js → Detail.stories-RZALoKmD.js} +1 -1
  124. package/storybook-static/assets/{Dialog-DEDDnDtQ.js → Dialog-BsslYClj.js} +1 -1
  125. package/storybook-static/assets/{Dialog-Cm7gLcJI.js → Dialog-CeukIYpx.js} +1 -1
  126. package/storybook-static/assets/{Dialog.stories-BzvBjaiX.js → Dialog.stories-y7MpdGQr.js} +1 -1
  127. package/storybook-static/assets/{Disclosure-Bpji7KuP.js → Disclosure-CiTnWx5y.js} +1 -1
  128. package/storybook-static/assets/{Disclosure.stories-Bwuzf5fl.js → Disclosure.stories-UWW9oheF.js} +1 -1
  129. package/storybook-static/assets/{DisclosureGroup-bCpsF5YE.js → DisclosureGroup-CT3BdQXr.js} +1 -1
  130. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DQRIOLjc.js → DocsRenderer-JROSPFPF-x50rjjKP.js} +1 -1
  131. package/storybook-static/assets/{DropZone-Diu_Hlgs.js → DropZone-DUn9vW2w.js} +1 -1
  132. package/storybook-static/assets/{DropZone-qvCLdJmm.js → DropZone-gWSeoAx6.js} +1 -1
  133. package/storybook-static/assets/{DropZone.stories-DHgexefI.js → DropZone.stories-CmaVl9to.js} +1 -1
  134. package/storybook-static/assets/{DropdownMenu-Bl2IPF3Q.js → DropdownMenu-DkeS8gOF.js} +1 -1
  135. package/storybook-static/assets/{ExpandableActionPanel-B3iQGrX8.js → ExpandableActionPanel-DdqWZDe2.js} +1 -1
  136. package/storybook-static/assets/{ExpandableActionPanel.stories-DRnMPxSP.js → ExpandableActionPanel.stories-CA-dpb07.js} +1 -1
  137. package/storybook-static/assets/{Flex-CrWmRoxc.js → Flex-DpQpF63N.js} +1 -1
  138. package/storybook-static/assets/{Flex.stories-Db20If9k.js → Flex.stories-DtlKiJno.js} +1 -1
  139. package/storybook-static/assets/{FlexContainer-YYPiKtpT.js → FlexContainer-C1d63I55.js} +1 -1
  140. package/storybook-static/assets/{FlexItem-CXY6tvoB.js → FlexItem-DsoW-br3.js} +1 -1
  141. package/storybook-static/assets/{FloatingPopover-DSRofmW2.js → FloatingPopover-7MpESGU4.js} +1 -1
  142. package/storybook-static/assets/{FormattedTableCell-B-t0D2oX.js → FormattedTableCell-B4RRbSFK.js} +1 -1
  143. package/storybook-static/assets/{Grid-Ad2q9giD.js → Grid-DsCUaz46.js} +1 -1
  144. package/storybook-static/assets/{Grid-CUmJniwF.js → Grid-eqZxtRIA.js} +1 -1
  145. package/storybook-static/assets/{Grid.stories-CsohhjMJ.js → Grid.stories-DAGg0GWi.js} +1 -1
  146. package/storybook-static/assets/{GridContainer-DfZnU_h-.js → GridContainer-B9JaLUGE.js} +1 -1
  147. package/storybook-static/assets/{ImageCropper.stories-Bdg7E1B6.js → ImageCropper.stories-W76XOOMv.js} +1 -1
  148. package/storybook-static/assets/{ImageRenderer-DEsg7Nf5.js → ImageRenderer-DYg7BkPO.js} +1 -1
  149. package/storybook-static/assets/{ImageRenderer.stories-C2uPYFbK.js → ImageRenderer.stories-rgJV0OBp.js} +1 -1
  150. package/storybook-static/assets/{ImageView.stories-qFIo_3jG.js → ImageView.stories-D9h6sg3j.js} +1 -1
  151. package/storybook-static/assets/{ImageViewer.stories-D6RoxWRG.js → ImageViewer.stories-Bd0WJOp1.js} +2 -2
  152. package/storybook-static/assets/{ImageViewerRuntime-DEVRfnpp.js → ImageViewerRuntime-DOjvjbv0.js} +1 -1
  153. package/storybook-static/assets/Input-7N70tL0u.js +3 -0
  154. package/storybook-static/assets/{Input-CXSVW4qb.js → Input-BxrxwNyD.js} +1 -1
  155. package/storybook-static/assets/{Input.stories-CKUo8mda.js → Input.stories-Df1j802b.js} +1 -1
  156. package/storybook-static/assets/{InputDateTime-CBgevl2k.js → InputDateTime-UdemHZXV.js} +1 -1
  157. package/storybook-static/assets/{InputDateTime.stories-Dc_yRirT.js → InputDateTime.stories-yRwAe5_5.js} +1 -1
  158. package/storybook-static/assets/{InputFile-VkGuvstd.js → InputFile-5LpFR1Fq.js} +1 -1
  159. package/storybook-static/assets/{InputFile-BX9qIipq.js → InputFile-DDhf7A_J.js} +1 -1
  160. package/storybook-static/assets/{InputFile.stories-VernHNAn.js → InputFile.stories-BVDT-BAx.js} +1 -1
  161. package/storybook-static/assets/{InputFiles-BpSb2G11.js → InputFiles-CgM2BwNO.js} +1 -1
  162. package/storybook-static/assets/{InputFiles-CRFuNd-6.js → InputFiles-D3CPIXiK.js} +1 -1
  163. package/storybook-static/assets/{InputFiles.stories-CfrGV2lA.js → InputFiles.stories-XMHBA9Fn.js} +1 -1
  164. package/storybook-static/assets/{InputFilesList-BoL4jQmC.js → InputFilesList-DSivq9iT.js} +1 -1
  165. package/storybook-static/assets/{InputImage-BKfXCZHx.js → InputImage-BG_QyAh3.js} +1 -1
  166. package/storybook-static/assets/{InputImage-BcUm7aKp.js → InputImage-CY0A9Xz-.js} +1 -1
  167. package/storybook-static/assets/{InputImage.stories-l1xnaTXn.js → InputImage.stories-DiGXytZU.js} +1 -1
  168. package/storybook-static/assets/{InteractiveComponents-DKix-b3k.js → InteractiveComponents-Bf9KitNR.js} +5 -5
  169. package/storybook-static/assets/{InteractiveComponents.stories-CK118Tbj.js → InteractiveComponents.stories-TwALUGGN.js} +1 -1
  170. package/storybook-static/assets/{LayoutPicker-Ca57uusp.js → LayoutPicker-BLrNe8g_.js} +1 -1
  171. package/storybook-static/assets/{LayoutPicker-BqI2-D2r.js → LayoutPicker-MhA9N4WI.js} +1 -1
  172. package/storybook-static/assets/{LayoutPicker.stories-BDRBBnj-.js → LayoutPicker.stories-BCME5Ogr.js} +1 -1
  173. package/storybook-static/assets/{Listbox-lrvI9Fx9.js → Listbox-B8F2xWvs.js} +1 -1
  174. package/storybook-static/assets/{Listbox-D_Qgzkw1.js → Listbox-y_3VijHU.js} +1 -1
  175. package/storybook-static/assets/{Listbox.stories-Djb1uju9.js → Listbox.stories-mp0p0NpO.js} +1 -1
  176. package/storybook-static/assets/{Modal-BpqYaQXu.js → Modal-DgEV0vBs.js} +1 -1
  177. package/storybook-static/assets/{Modal-CLZFIZH2.js → Modal-qIsW7BkG.js} +1 -1
  178. package/storybook-static/assets/{Modal.stories-DNpMq9oL.js → Modal.stories-CQ-Hn4GK.js} +1 -1
  179. package/storybook-static/assets/{ModalManagerProvider-DMlNCo5h.js → ModalManagerProvider-DEoq4q_O.js} +1 -1
  180. package/storybook-static/assets/MultiSelect-D-6XHQUG.js +79 -0
  181. package/storybook-static/assets/{MultiSelect-C593f3VV.js → MultiSelect-PGooEkAK.js} +1 -1
  182. package/storybook-static/assets/MultiSelect.stories-B0JzMViN.js +81 -0
  183. package/storybook-static/assets/MultiSelectCore-B0VbnEBc.js +3 -0
  184. package/storybook-static/assets/{NoData-Bvl_1jH4.js → NoData-DCuuvSoD.js} +1 -1
  185. package/storybook-static/assets/{NotificationsHost-CdPm_hcB.js → NotificationsHost-CWqG91Yh.js} +1 -1
  186. package/storybook-static/assets/{NotificationsHost.stories-Bo_dwZZe.js → NotificationsHost.stories-CEp-AppV.js} +1 -1
  187. package/storybook-static/assets/{ODataMultiSelect-BVlJ8U90.js → ODataMultiSelect-CwVneYzi.js} +1 -1
  188. package/storybook-static/assets/{ODataMultiSelect.stories-CqHpctYU.js → ODataMultiSelect.stories-BRnVOZsK.js} +1 -1
  189. package/storybook-static/assets/{ODataSelect-BCl-z6Sg.js → ODataSelect-DyKTFqk7.js} +1 -1
  190. package/storybook-static/assets/ODataSelect.stories-B-3GaeU4.js +148 -0
  191. package/storybook-static/assets/{ODataTreeMultiSelect-1CrmEPOx.js → ODataTreeMultiSelect-16xNi9qI.js} +1 -1
  192. package/storybook-static/assets/{ODataTreeMultiSelect.stories-B2YMNMyr.js → ODataTreeMultiSelect.stories-DI9tH2qD.js} +1 -1
  193. package/storybook-static/assets/{ODataTreeSelect-BqP9H4QH.js → ODataTreeSelect-Dk262plK.js} +1 -1
  194. package/storybook-static/assets/{ODataTreeSelect.stories-x_GCdGW8.js → ODataTreeSelect.stories-DfaL0dci.js} +1 -1
  195. package/storybook-static/assets/{OneStepScroller-B1H-Yg0P.js → OneStepScroller-DI8qlm5c.js} +1 -1
  196. package/storybook-static/assets/{Option-ChGr-plg.js → Option-CG3bU2cY.js} +1 -1
  197. package/storybook-static/assets/{OptionButton-D6mT04a1.js → OptionButton-DF0E8aU5.js} +1 -1
  198. package/storybook-static/assets/{OptionContent-CXc6K3fK.js → OptionContent-BZ3FiJQ4.js} +1 -1
  199. package/storybook-static/assets/{OptionContentContainer-D0p7mbft.js → OptionContentContainer-CyI5IfqU.js} +1 -1
  200. package/storybook-static/assets/{PeriodSelect-CpnYgcOA.js → PeriodSelect-_gAbt3E6.js} +1 -1
  201. package/storybook-static/assets/{PeriodSelect-Bm9WdjpG.js → PeriodSelect-uR-Xk4vQ.js} +1 -1
  202. package/storybook-static/assets/{PeriodSelect.stories-4Im6GLjq.js → PeriodSelect.stories-D-Lp7QtA.js} +1 -1
  203. package/storybook-static/assets/PickerField-CByAoAAO.js +1 -0
  204. package/storybook-static/assets/{PickerTriggerActions-BCupttoF.js → PickerTriggerActions-CYM-UvRz.js} +1 -1
  205. package/storybook-static/assets/{Popover-CbgP8DJy.js → Popover-CRcVoLur.js} +1 -1
  206. package/storybook-static/assets/{Popover-CCHTXorF.js → Popover-CdnsB1ss.js} +1 -1
  207. package/storybook-static/assets/{Popover.stories-zZ2fYcQb.js → Popover.stories-Dxdt7Jc5.js} +1 -1
  208. package/storybook-static/assets/{PresetRangeDateInput-D-Xf5CL3.js → PresetRangeDateInput-BQkK3Nmd.js} +1 -1
  209. package/storybook-static/assets/{PresetRangeDateInput-cmWbFoHz.js → PresetRangeDateInput-BmAGj8ye.js} +1 -1
  210. package/storybook-static/assets/{PresetRangeDateInput.stories-C3VxU77P.js → PresetRangeDateInput.stories-CUIwCB6T.js} +1 -1
  211. package/storybook-static/assets/{PresetSelect-BmTJNeUt.js → PresetSelect-C7HG9CjN.js} +2 -2
  212. package/storybook-static/assets/{README-Bl2m1JMK.js → README-9DTI05kd.js} +1 -1
  213. package/storybook-static/assets/{README-DEOe-D4O.js → README-B-ihyEBx.js} +1 -1
  214. package/storybook-static/assets/{README-B_TP46xP.js → README-B0iHgO_3.js} +1 -1
  215. package/storybook-static/assets/{README-DcMAIy3x.js → README-B1GSwjas.js} +1 -1
  216. package/storybook-static/assets/{README-lHhj1ioe.js → README-BAjs7T_d.js} +1 -1
  217. package/storybook-static/assets/{README-BcSaq4c4.js → README-BEYMpavt.js} +1 -1
  218. package/storybook-static/assets/{README-DVPc9Io_.js → README-BL0-uTlP.js} +1 -1
  219. package/storybook-static/assets/{README-EmDsFxzc.js → README-BR8bdUjV.js} +1 -1
  220. package/storybook-static/assets/{README-jg6CIybs.js → README-BUnl1FiN.js} +1 -1
  221. package/storybook-static/assets/{README-BC4nu9of.js → README-BbUo3mGT.js} +1 -1
  222. package/storybook-static/assets/{README-BiyBf-O3.js → README-Bdir2bPK.js} +1 -1
  223. package/storybook-static/assets/{README-BMXu-jQk.js → README-BmwSZfOQ.js} +1 -1
  224. package/storybook-static/assets/{README-IkL3xuvr.js → README-BquP2lux.js} +1 -1
  225. package/storybook-static/assets/{README-Cu9QJjVK.js → README-BurB0dhj.js} +1 -1
  226. package/storybook-static/assets/{README-DLtEU6xV.js → README-ByIhL9zr.js} +1 -1
  227. package/storybook-static/assets/{README-DFF21yas.js → README-ByT9u_7g.js} +1 -1
  228. package/storybook-static/assets/{README-BkJ_PjJk.js → README-C41zKsq6.js} +1 -1
  229. package/storybook-static/assets/{README-HRwASuVm.js → README-C5-oc7fP.js} +1 -1
  230. package/storybook-static/assets/{README-CnX5IOsQ.js → README-C7NhXX-n.js} +1 -1
  231. package/storybook-static/assets/{README-T35eDlrl.js → README-C8jcwgeL.js} +1 -1
  232. package/storybook-static/assets/{README-DkgiAGPo.js → README-CNnGqdkH.js} +1 -1
  233. package/storybook-static/assets/{README-B7kN5fdq.js → README-CQlujiXR.js} +1 -1
  234. package/storybook-static/assets/{README-BZW-Ku8G.js → README-CTBkJ27k.js} +1 -1
  235. package/storybook-static/assets/{README-BsvaCxyJ.js → README-CTGZXXVP.js} +1 -1
  236. package/storybook-static/assets/{README-B3bdpv3F.js → README-CUghXL33.js} +1 -1
  237. package/storybook-static/assets/{README-xMu2rAZ4.js → README-CiJ5wkhQ.js} +1 -1
  238. package/storybook-static/assets/{README-CaZGDS4o.js → README-CoENtXo_.js} +1 -1
  239. package/storybook-static/assets/{README-UcG-T3oc.js → README-CoQeAVdv.js} +1 -1
  240. package/storybook-static/assets/{README-k2-wWcjY.js → README-CpJmZHQJ.js} +1 -1
  241. package/storybook-static/assets/{README-zF7TglyH.js → README-CtZBJdo2.js} +1 -1
  242. package/storybook-static/assets/{README-BfbEWAVW.js → README-CvP9yRMR.js} +1 -1
  243. package/storybook-static/assets/{README-CLTYPp6T.js → README-D-urpNSn.js} +1 -1
  244. package/storybook-static/assets/{README-3VGZSgWz.js → README-DAH3lVWd.js} +1 -1
  245. package/storybook-static/assets/{README-CXLnU8PY.js → README-DCWk-Vga.js} +1 -1
  246. package/storybook-static/assets/{README-5uy1ulgc.js → README-DMZYAdN0.js} +1 -1
  247. package/storybook-static/assets/{README-C_zVigpw.js → README-DNrPuueH.js} +1 -1
  248. package/storybook-static/assets/{README-D7IHIZJQ.js → README-DQ1aeQ_i.js} +1 -1
  249. package/storybook-static/assets/{README-vCy3YlCq.js → README-DTMZk60G.js} +1 -1
  250. package/storybook-static/assets/{README-CwqRXSIJ.js → README-DY7lgi4q.js} +1 -1
  251. package/storybook-static/assets/{README-Bc63jJ_g.js → README-DaaS2c7L.js} +1 -1
  252. package/storybook-static/assets/{README-Dv4LnFqu.js → README-De3j71sQ.js} +1 -1
  253. package/storybook-static/assets/{README-DnkVTJ7s.js → README-DevTRU4A.js} +1 -1
  254. package/storybook-static/assets/{README-CZciBX1A.js → README-DfRan6KR.js} +1 -1
  255. package/storybook-static/assets/{README-C4vu077M.js → README-Dhptn6UE.js} +1 -1
  256. package/storybook-static/assets/{README-BRE26E-6.js → README-DxTRj-9a.js} +1 -1
  257. package/storybook-static/assets/{README-Bfp-2y9L.js → README-DyKegKG_.js} +1 -1
  258. package/storybook-static/assets/{README-BW8ukk_3.js → README-KCmlmH_Z.js} +1 -1
  259. package/storybook-static/assets/{README-Iwf47F8s.js → README-VNB_Dj5F.js} +1 -1
  260. package/storybook-static/assets/{README-DXajBW2j.js → README-_8pxMMC7.js} +1 -1
  261. package/storybook-static/assets/{README-BeMdGWkW.js → README-j-Czw7ww.js} +1 -1
  262. package/storybook-static/assets/{README-DEtA9vXg.js → README-n4utUGcX.js} +1 -1
  263. package/storybook-static/assets/{README-Bf9aqOSG.js → README-xrMkjHIm.js} +1 -1
  264. package/storybook-static/assets/{README-CjwMWiHf.js → README-zlaX5PMG.js} +1 -1
  265. package/storybook-static/assets/{RadioButton-Cy_jQtud.js → RadioButton-CDIyYuS9.js} +1 -1
  266. package/storybook-static/assets/{RadioButton-BBfQWcy3.js → RadioButton-DV8K96H6.js} +1 -1
  267. package/storybook-static/assets/{RadioButton.stories-9V4bon68.js → RadioButton.stories-CRNqKsyz.js} +1 -1
  268. package/storybook-static/assets/{RadioGroup-TwFpisuE.js → RadioGroup-BnYFRvmn.js} +1 -1
  269. package/storybook-static/assets/{RadioGroup-BndgLwX8.js → RadioGroup-CIIw962S.js} +1 -1
  270. package/storybook-static/assets/{RadioGroup.stories-DJLxesgz.js → RadioGroup.stories-K4AidbLa.js} +1 -1
  271. package/storybook-static/assets/{Scrollable-DtB02dAG.js → Scrollable-BI1k9ogH.js} +1 -1
  272. package/storybook-static/assets/{Scrollable-pBI6H_we.js → Scrollable-DAghtYuE.js} +1 -1
  273. package/storybook-static/assets/{Scrollable.stories-CahJ5rFA.js → Scrollable.stories-B6Doakiv.js} +1 -1
  274. package/storybook-static/assets/Select-BNHTGJqG.js +66 -0
  275. package/storybook-static/assets/Select-BlnKV8rc.js +12 -0
  276. package/storybook-static/assets/Select.stories-DZPAoL4J.js +86 -0
  277. package/storybook-static/assets/{Separator-BQlVHMcy.js → Separator-BCUzEQRV.js} +1 -1
  278. package/storybook-static/assets/{Separator-BdOz35ux.js → Separator-CiETy9yM.js} +1 -1
  279. package/storybook-static/assets/{Separator.stories-DRmR0Kda.js → Separator.stories-DTzurpM_.js} +1 -1
  280. package/storybook-static/assets/{SerializableSelect-ClSz_VvD.js → SerializableSelect-CnQurr7F.js} +1 -1
  281. package/storybook-static/assets/SerializableSelect.stories-qJaV_fjJ.js +73 -0
  282. package/storybook-static/assets/{ShimmerText-CuhrU7uk.js → ShimmerText-I292TqXa.js} +1 -1
  283. package/storybook-static/assets/{ShimmerText.stories-Djb6DvbN.js → ShimmerText.stories-AKqXqp1k.js} +1 -1
  284. package/storybook-static/assets/{SingleDateTimeInput-hC1Ft3qs.js → SingleDateTimeInput-BrNi93tH.js} +1 -1
  285. package/storybook-static/assets/{SingleDateTimeInput-C4jzvJ05.js → SingleDateTimeInput-DSn0vaW-.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput.stories-D-HmSpnz.js → SingleDateTimeInput.stories-C910kkYc.js} +1 -1
  287. package/storybook-static/assets/{Slider-u0qKNrgI.js → Slider-CXA5Zwku.js} +1 -1
  288. package/storybook-static/assets/{Slider-WLUfmHyw.js → Slider-DO460-pY.js} +1 -1
  289. package/storybook-static/assets/{Slider.stories-CX8fS5Ax.js → Slider.stories-B874XxeK.js} +1 -1
  290. package/storybook-static/assets/{SliderInput-BEirf0Ys.js → SliderInput-DTidinPI.js} +1 -1
  291. package/storybook-static/assets/{SliderInput-ibTyal5l.js → SliderInput-DsV8o7Yy.js} +1 -1
  292. package/storybook-static/assets/{SliderInput.stories-xuycnRN_.js → SliderInput.stories-CDWNO90y.js} +1 -1
  293. package/storybook-static/assets/{Sortable-p0kUHa8E.js → Sortable-CML34YIF.js} +1 -1
  294. package/storybook-static/assets/{Sortable.stories-BdCtmfnr.js → Sortable.stories-C-_fvnHM.js} +1 -1
  295. package/storybook-static/assets/{Splitter-BzAg1cZ0.js → Splitter-BcuA2qce.js} +1 -1
  296. package/storybook-static/assets/{Splitter.stories-C5zZ4lHf.js → Splitter.stories-CA0-L_Ja.js} +1 -1
  297. package/storybook-static/assets/StateSelect--FDEb4-v.js +4 -0
  298. package/storybook-static/assets/{StateSelect-CyjHfKNv.js → StateSelect-B23bb_PO.js} +1 -1
  299. package/storybook-static/assets/{StateSelect.stories-D94g21N9.js → StateSelect.stories-CEVPThtC.js} +1 -1
  300. package/storybook-static/assets/{StatusIndicator-ylfiroPh.js → StatusIndicator-BbTCS7Ku.js} +1 -1
  301. package/storybook-static/assets/{StatusIndicator.stories-BB7y4KGW.js → StatusIndicator.stories-BIps_Ecm.js} +1 -1
  302. package/storybook-static/assets/{StringToggle.stories-BwuTZAGa.js → StringToggle.stories-vhOfzslq.js} +1 -1
  303. package/storybook-static/assets/{Switch-BXWiUOXs.js → Switch-DibS4nSc.js} +1 -1
  304. package/storybook-static/assets/{Switch-DRLWRp0P.js → Switch-jJgwtWFK.js} +1 -1
  305. package/storybook-static/assets/{Switch.stories-taC_bi5a.js → Switch.stories-Cvky3KQz.js} +1 -1
  306. package/storybook-static/assets/{Table-BYiIQfjA.js → Table-DcNGLEI6.js} +1 -1
  307. package/storybook-static/assets/{Table.stories-B9u81cAN.js → Table.stories-DbEzudxD.js} +1 -1
  308. package/storybook-static/assets/{TableEditor.stories-CG0ULNok.js → TableEditor.stories-Be9nCkds.js} +1 -1
  309. package/storybook-static/assets/{Tabs-BYp06IN2.js → Tabs-CTL4MnkZ.js} +1 -1
  310. package/storybook-static/assets/{Tabs.stories-BCkUYsqs.js → Tabs.stories-CIVbz7kW.js} +1 -1
  311. package/storybook-static/assets/{TabsBox-DBm2a1iA.js → TabsBox-C9g1p4du.js} +1 -1
  312. package/storybook-static/assets/{TagInput-D9gedxBU.js → TagInput-DuJLeiyT.js} +1 -1
  313. package/storybook-static/assets/{TagInput.stories-6eOGQ16t.js → TagInput.stories-BLVFWr-T.js} +1 -1
  314. package/storybook-static/assets/{Text-CcgH9LXI.js → Text-Cr_TUUgL.js} +1 -1
  315. package/storybook-static/assets/{Textarea-DXOTj2Y7.js → Textarea-BImI6Q6v.js} +1 -1
  316. package/storybook-static/assets/{Textarea-aGrLpQXu.js → Textarea-DGaanGLG.js} +1 -1
  317. package/storybook-static/assets/{Textarea.stories-BwqxG2lk.js → Textarea.stories-DvQ2dDNh.js} +1 -1
  318. package/storybook-static/assets/{TimePanel-DroAbbvD.js → TimePanel-Cg2G5Hab.js} +1 -1
  319. package/storybook-static/assets/{TimePanel.stories-DgU6ia4A.js → TimePanel.stories-qy5mb3YN.js} +1 -1
  320. package/storybook-static/assets/{Toggle-BUSzQ1ww.js → Toggle-CroC7YOK.js} +1 -1
  321. package/storybook-static/assets/{Toggle-B7MbU9HB.js → Toggle-Dj8Ic_Ak.js} +1 -1
  322. package/storybook-static/assets/{Toggle.stories-BYU9hS62.js → Toggle.stories-CmyyubM8.js} +1 -1
  323. package/storybook-static/assets/TreeMultiSelect-BHNmPW50.js +1 -0
  324. package/storybook-static/assets/TreeMultiSelect-DBQYLjnA.js +22 -0
  325. package/storybook-static/assets/TreeMultiSelect.stories-BNsE1zgF.js +68 -0
  326. package/storybook-static/assets/TreePickerBase-ZEBy3EVT.js +76 -0
  327. package/storybook-static/assets/TreeSelect-T7G2pkyK.js +1 -0
  328. package/storybook-static/assets/TreeSelect-aiPeW2uJ.js +19 -0
  329. package/storybook-static/assets/TreeSelect.stories-E6ObkYJe.js +40 -0
  330. package/storybook-static/assets/{TreeTable-AIcYVdfl.js → TreeTable-C0ORe5Pe.js} +1 -1
  331. package/storybook-static/assets/{TreeTable.stories-BKbbLMK7.js → TreeTable.stories-PtGT_1X5.js} +1 -1
  332. package/storybook-static/assets/{blocks-Bdsl8TP-.js → blocks-DR4JL0hD.js} +3 -3
  333. package/storybook-static/assets/{check-DGqyuB4O.js → check-PtABqMc1.js} +1 -1
  334. package/storybook-static/assets/{chevron-down-BykqjXRq.js → chevron-down-BaujB0G_.js} +1 -1
  335. package/storybook-static/assets/{chevron-left-Z5uCO076.js → chevron-left-C1SZ4PrE.js} +1 -1
  336. package/storybook-static/assets/{chevron-right-C8yfwmkk.js → chevron-right-CfCjHN8b.js} +1 -1
  337. package/storybook-static/assets/{chunk-W22LQPXL-hfBk2z5K.js → chunk-W22LQPXL-Cis7lFT9.js} +1 -1
  338. package/storybook-static/assets/{circle-alert-C9sxb8DT.js → circle-alert-Mymt-6wl.js} +1 -1
  339. package/storybook-static/assets/{circle-check-BLrYJ_8h.js → circle-check-DzqMvzJX.js} +1 -1
  340. package/storybook-static/assets/{components-xYnqEbBt.js → components-Do91qDh3.js} +3 -3
  341. package/storybook-static/assets/{contextMenu-C-b4jBpY.js → contextMenu-8NKKgKoy.js} +1 -1
  342. package/storybook-static/assets/{download-g1fk8W6J.js → download-Cn6H3Bnv.js} +1 -1
  343. package/storybook-static/assets/{floating-ui.react-cCWtY5RA.js → floating-ui.react-BFqa49jG.js} +1 -1
  344. package/storybook-static/assets/{foundationApi-Ci5vPKh_.js → foundationApi-CChPwNx-.js} +1 -1
  345. package/storybook-static/assets/{foundationLib-DNlIsEyf.js → foundationLib-ClEyfTpa.js} +1 -1
  346. package/storybook-static/assets/{hooks-XqeLihmr.js → hooks-DUKyfcb_.js} +1 -1
  347. package/storybook-static/assets/{iframe-ltYEol2F.js → iframe-1Nw_zWMi.js} +3 -3
  348. package/storybook-static/assets/iframe-BgBwFMGW.js +1 -0
  349. package/storybook-static/assets/{info-CBSXRv7d.js → info-DMI56qGy.js} +1 -1
  350. package/storybook-static/assets/{odata-Dd_3_5NS.js → odata-D9M3xPIL.js} +1 -1
  351. package/storybook-static/assets/{odataStoryFixtures-3lOfs9T6.js → odataStoryFixtures-eHJgW7OK.js} +1 -1
  352. package/storybook-static/assets/{react-BxWB81Qy.js → react-DidV4ORc.js} +1 -1
  353. package/storybook-static/assets/{refresh-cw-FKHfW9eG.js → refresh-cw-B1ChlhvT.js} +1 -1
  354. package/storybook-static/assets/{settings-2-Cz1PtqGa.js → settings-2-BxwqnB9r.js} +1 -1
  355. package/storybook-static/assets/{sortable-BelHSus7.js → sortable-DMBM69Jm.js} +1 -1
  356. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-gGot_qSq.js → syntaxhighlighter-QEQV7K2Y-BJZNAUo-.js} +1 -1
  357. package/storybook-static/assets/{trash-2-BT2kW3r-.js → trash-2-B768_PZU.js} +1 -1
  358. package/storybook-static/assets/{triangle-alert-CPiJJHYc.js → triangle-alert-B8H-k2Bq.js} +1 -1
  359. package/storybook-static/assets/{useODataSelectBase-bPN0T_Xm.js → useODataSelectBase-BKAZcf4R.js} +1 -1
  360. package/storybook-static/assets/{useODataTreeData-CIpE4LZu.js → useODataTreeData-Bxlcmpg8.js} +1 -1
  361. package/storybook-static/assets/{usePickerQuery-OTz4Oze6.js → usePickerQuery-DJj2HmX9.js} +1 -1
  362. package/storybook-static/assets/{usePickerTriggerController-vNC5e_t0.js → usePickerTriggerController-CiD33ccS.js} +2 -2
  363. package/storybook-static/assets/{x-BdAuXjBq.js → x-Dt9SO3SL.js} +1 -1
  364. package/storybook-static/iframe.html +2 -2
  365. package/storybook-static/index.json +1 -1
  366. package/storybook-static/project.json +1 -1
  367. package/dist/chunks/input-CuRK9Vbz.js.map +0 -1
  368. package/dist/chunks/picker-SJXnHwsj.js.map +0 -1
  369. package/dist/chunks/select--oIrv7SC.js +0 -357
  370. package/dist/chunks/select--oIrv7SC.js.map +0 -1
  371. package/storybook-static/assets/Input-b2F0zrLw.js +0 -3
  372. package/storybook-static/assets/MultiSelect-DmC3DaMc.js +0 -76
  373. package/storybook-static/assets/MultiSelect.stories-R6JTKnFI.js +0 -64
  374. package/storybook-static/assets/MultiSelectCore-BaRmQrD-.js +0 -3
  375. package/storybook-static/assets/ODataSelect.stories-Cm-Xkq40.js +0 -148
  376. package/storybook-static/assets/PickerField-w1JCZyzA.js +0 -1
  377. package/storybook-static/assets/Select-BOnv-Uuv.js +0 -63
  378. package/storybook-static/assets/Select-CClfxa48.js +0 -12
  379. package/storybook-static/assets/Select.stories-C0X5pvUk.js +0 -69
  380. package/storybook-static/assets/SerializableSelect.stories-DozN_Quy.js +0 -73
  381. package/storybook-static/assets/StateSelect-bHA1Vf6z.js +0 -4
  382. package/storybook-static/assets/TreeMultiSelect-BhFYUbr0.js +0 -1
  383. package/storybook-static/assets/TreeMultiSelect-CZIyMaIZ.js +0 -20
  384. package/storybook-static/assets/TreeMultiSelect.stories-DG_mdSkQ.js +0 -60
  385. package/storybook-static/assets/TreePickerBase-CbULuQpp.js +0 -76
  386. package/storybook-static/assets/TreeSelect-CMSolQHr.js +0 -17
  387. package/storybook-static/assets/TreeSelect-Cu1BsepL.js +0 -1
  388. package/storybook-static/assets/TreeSelect.stories-B2J0N4ke.js +0 -32
  389. package/storybook-static/assets/iframe-TsWsvoxA.js +0 -1
@@ -1,3 +1,3 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{n,t as r}from"./createControlledStoryRender-BouhvX-R.js";import{n as i,t as a}from"./Toggle-BUSzQ1ww.js";function o(e,t){return typeof e==`string`?e:t}var s,c;function l(){return(l=e((()=>{s=`true`,c=`false`})))()}function u({value:e,onChange:t,checkedValue:n,uncheckedValue:r,defaultChecked:i,...l}){let u=o(n,s),f=o(r,c),p=e===u;return(0,d.jsx)(a,{...l,value:p,onChange:e=>t(e?u:f)})}var d;function f(){return(f=e((()=>{l(),i(),d=t(),u.__docgenInfo={description:`Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.`,methods:[],displayName:`StringToggle`,props:{checkedValue:{required:!1,tsType:{name:`string`},description:``},uncheckedValue:{required:!1,tsType:{name:`string`},description:``},value:{required:!0,tsType:{name:`string`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}var p,m,h,g,_;function v(){return(v=e((()=>{n(),f(),p=t(),m=r((e,t)=>(0,p.jsx)(u,{...e,onChange:n=>{e.onChange(n),t({value:n})}})),h={title:`UI/Toggle/StringToggle`,component:u,args:{value:`ZBP_MANAGER`,onChange:()=>void 0,checkedText:`за клиента`,uncheckedText:`за сделку`,checkedValue:`ZM_MANAGER`,uncheckedValue:`ZBP_MANAGER`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Текущее строковое значение.`,control:`text`},onChange:{description:`Возвращает строку выбранного состояния.`,control:!1},checkedValue:{description:`Значение включённого состояния.`,control:`text`},uncheckedValue:{description:`Значение выключенного состояния.`,control:`text`},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`]}}},g={render:m},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{n,t as r}from"./createControlledStoryRender-BouhvX-R.js";import{n as i,t as a}from"./Toggle-CroC7YOK.js";function o(e,t){return typeof e==`string`?e:t}var s,c;function l(){return(l=e((()=>{s=`true`,c=`false`})))()}function u({value:e,onChange:t,checkedValue:n,uncheckedValue:r,defaultChecked:i,...l}){let u=o(n,s),f=o(r,c),p=e===u;return(0,d.jsx)(a,{...l,value:p,onChange:e=>t(e?u:f)})}var d;function f(){return(f=e((()=>{l(),i(),d=t(),u.__docgenInfo={description:`Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.`,methods:[],displayName:`StringToggle`,props:{checkedValue:{required:!1,tsType:{name:`string`},description:``},uncheckedValue:{required:!1,tsType:{name:`string`},description:``},value:{required:!0,tsType:{name:`string`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}var p,m,h,g,_;function v(){return(v=e((()=>{n(),f(),p=t(),m=r((e,t)=>(0,p.jsx)(u,{...e,onChange:n=>{e.onChange(n),t({value:n})}})),h={title:`UI/Toggle/StringToggle`,component:u,args:{value:`ZBP_MANAGER`,onChange:()=>void 0,checkedText:`за клиента`,uncheckedText:`за сделку`,checkedValue:`ZM_MANAGER`,uncheckedValue:`ZBP_MANAGER`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Текущее строковое значение.`,control:`text`},onChange:{description:`Возвращает строку выбранного состояния.`,control:!1},checkedValue:{description:`Значение включённого состояния.`,control:`text`},uncheckedValue:{description:`Значение выключенного состояния.`,control:`text`},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`]}}},g={render:m},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
2
2
  render: renderStringToggleStory
3
3
  }`,...g.parameters?.docs?.source}}},_=[`ManagerScope`]})))()}v();export{g as ManagerScope,_ as __namedExportsOrder,h as default};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.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-Bdsl8TP-.js";import{a as p,i as m,n as h,r as g,t as _}from"./Switch.stories-taC_bi5a.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-1Nw_zWMi.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-DR4JL0hD.js";import{a as p,i as m,n as h,r as g,t as _}from"./Switch.stories-Cvky3KQz.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:`Switch`}),`
3
3
  `,(0,b.jsx)(o,{children:`Переключатель в виде слайдера для быстрых включений, отключений и tri-state сценариев`}),`
4
4
  `,(0,b.jsx)(t.p,{children:`Switch уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -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,t as i}from"./circle-check-BLrYJ_8h.js";import{i as a,n as o,r as s}from"./iframe-ltYEol2F.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-l7VCYIW-.js";var f,p;function m(){return(m=t((()=>{a(),f=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]],p=s(`ban`,f)})))()}var h,g,_,v,y;function b(){return(b=t((()=>{h=`Or5LYA`,g=`w0AMfA`,_=`P1x4lq`,v=`-ZVOZo`,y={switchWrapper:h,switch:`qge3io`,iconWrapper:g,auto:_,checked:v}})))()}function x(e){let{label:t,description:n,disabled:r,checkedIcon:a=(0,C.jsx)(i,{}),uncheckedIcon:o=(0,C.jsx)(p,{}),className:s,type:l,id:d,size:f,placeholder:m,onChange:h,value:g,triState:_,...v}=e,b=(0,S.useId)(),x=d??b,w=n?`${x}-description`:void 0,T=t?`${x}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`&&e.value,O=e.triState&&typeof e.value!=`boolean`,k=v[`aria-label`]??(t?void 0:`Переключатель`);return(0,C.jsxs)(`div`,{className:c(u.uiElement,r&&u.disabled),"aria-disabled":r||void 0,children:[t&&(0,C.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,C.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,C.jsx)(`button`,{...v,id:x,type:l??`button`,role:`switch`,disabled:r,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":r,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,y.switchWrapper,s),children:(0,C.jsx)(`div`,{className:y.switch,"data-disabled":r||void 0,children:O?(0,C.jsx)(`div`,{className:c(y.iconWrapper,y.auto,y.checked),children:`Auto`}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`div`,{className:c(y.iconWrapper,!e.value&&y.checked),children:o}),(0,C.jsx)(`div`,{className:c(y.iconWrapper,e.value&&y.checked),children:a})]})})})]})}var S,C;function w(){return(w=t((()=>{S=e(n(),1),l(),m(),r(),d(),b(),C=o(),x.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})))()}export{w as n,x 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,t as i}from"./circle-check-DzqMvzJX.js";import{i as a,n as o,r as s}from"./iframe-1Nw_zWMi.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-l7VCYIW-.js";var f,p;function m(){return(m=t((()=>{a(),f=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]],p=s(`ban`,f)})))()}var h,g,_,v,y;function b(){return(b=t((()=>{h=`Or5LYA`,g=`w0AMfA`,_=`P1x4lq`,v=`-ZVOZo`,y={switchWrapper:h,switch:`qge3io`,iconWrapper:g,auto:_,checked:v}})))()}function x(e){let{label:t,description:n,disabled:r,checkedIcon:a=(0,C.jsx)(i,{}),uncheckedIcon:o=(0,C.jsx)(p,{}),className:s,type:l,id:d,size:f,placeholder:m,onChange:h,value:g,triState:_,...v}=e,b=(0,S.useId)(),x=d??b,w=n?`${x}-description`:void 0,T=t?`${x}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`&&e.value,O=e.triState&&typeof e.value!=`boolean`,k=v[`aria-label`]??(t?void 0:`Переключатель`);return(0,C.jsxs)(`div`,{className:c(u.uiElement,r&&u.disabled),"aria-disabled":r||void 0,children:[t&&(0,C.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,C.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,C.jsx)(`button`,{...v,id:x,type:l??`button`,role:`switch`,disabled:r,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":r,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,y.switchWrapper,s),children:(0,C.jsx)(`div`,{className:y.switch,"data-disabled":r||void 0,children:O?(0,C.jsx)(`div`,{className:c(y.iconWrapper,y.auto,y.checked),children:`Auto`}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`div`,{className:c(y.iconWrapper,!e.value&&y.checked),children:o}),(0,C.jsx)(`div`,{className:c(y.iconWrapper,e.value&&y.checked),children:a})]})})})]})}var S,C;function w(){return(w=t((()=>{S=e(n(),1),l(),m(),r(),d(),b(),C=o(),x.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})))()}export{w as n,x as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./Switch-DRLWRp0P.js";import{n as i}from"./iframe-ltYEol2F.js";import{n as a,t as o}from"./createControlledStoryRender-BouhvX-R.js";var s=t({BiState:()=>f,Disabled:()=>m,TriState:()=>p,__namedExportsOrder:()=>h,default:()=>d}),c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{a(),n(),c=i(),l=o((e,t)=>(0,c.jsx)(r,{...e,triState:!1,value:e.value??!1,onChange:n=>{e.onChange(n),t({value:n})}})),u=o((e,t)=>(0,c.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,c.jsx)(r,{...e,triState:!0,value:e.value,onChange:n=>{e.onChange(n),t({value:n})}}),(0,c.jsxs)(`div`,{children:[`Текущее значение: `,String(e.value)]})]})),d={title:`UI/Switch`,component:r,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},f={render:l},p={render:u,args:{triState:!0,value:void 0}},m={render:l,args:{disabled:!0,value:!0}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./Switch-jJgwtWFK.js";import{n as i}from"./iframe-1Nw_zWMi.js";import{n as a,t as o}from"./createControlledStoryRender-BouhvX-R.js";var s=t({BiState:()=>f,Disabled:()=>m,TriState:()=>p,__namedExportsOrder:()=>h,default:()=>d}),c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{a(),n(),c=i(),l=o((e,t)=>(0,c.jsx)(r,{...e,triState:!1,value:e.value??!1,onChange:n=>{e.onChange(n),t({value:n})}})),u=o((e,t)=>(0,c.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,c.jsx)(r,{...e,triState:!0,value:e.value,onChange:n=>{e.onChange(n),t({value:n})}}),(0,c.jsxs)(`div`,{children:[`Текущее значение: `,String(e.value)]})]})),d={title:`UI/Switch`,component:r,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},f={render:l},p={render:u,args:{triState:!0,value:void 0}},m={render:l,args:{disabled:!0,value:!0}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
2
2
  render: renderBiStateSwitchStory
3
3
  }`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
4
4
  render: renderTriStateSwitchStory,
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.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-Bdsl8TP-.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"./Table.stories-B9u81cAN.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-1Nw_zWMi.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-DR4JL0hD.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"./Table.stories-DbEzudxD.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:`Table`}),`
3
3
  `,(0,M.jsxs)(o,{children:[`Плоская таблица как React-альтернатива `,(0,M.jsx)(t.code,{children:`sap.m.Table`})]}),`
4
4
  `,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`Table`}),` предназначен для плоских данных и по поведению осознанно сближен с `,(0,M.jsx)(t.code,{children:`TreeTable`}),`.
@@ -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}from"./iframe-ltYEol2F.js";import{A as i,D as a,O as ee,T as te,_ as ne,a as re,b as o,d as ie,g as ae,i as oe,k as se}from"./odata-Dd_3_5NS.js";import{h as ce,u as le}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{n as ue,t as de}from"./useTable-CK68Q4S4.js";import{_ as fe,a as pe,c as me,d as he,f as ge,g as _e,h as ve,i as ye,l as be,m as xe,n as Se,o as Ce,p as we,r as Te,s as Ee,t as De,u as Oe,v as ke,y as Ae}from"./FormattedTableCell-B-t0D2oX.js";import{n as je,t as s}from"./createControlledStoryRender-BouhvX-R.js";var c,Me,Ne;function l(){return(l=e((()=>{c=`hKghZt`,Me=`QsLRvS`,Ne={selectedIndicatorCell:c,sentinel:Me}})))()}function Pe(e,t){return String(t)}function u({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:ee,getRowId:te,className:re,minHeight:o,tableClassName:ie,columnVisibility:oe,defaultColumnVisibility:se,columnOrder:ce,defaultColumnOrder:de,columnSizing:pe,defaultColumnSizing:he,columnPinning:_e,defaultColumnPinning:ye,enableColumnResizing:be=!1,enableColumnReordering:xe=!1,columnResizeMinWidth:Se,onColumnVisibilityChange:Ee,onColumnOrderChange:Ae,onColumnSizingChange:je,onColumnPinningChange:s,onRowClick:c,onRowSelectionChange:Me,onReachEnd:l,getRowCanSelect:u,getRowClassName:p,renderHeaderContextMenu:Fe,renderCellContent:m}){let h=(0,d.useMemo)(()=>r??[],[r]),g=(0,d.useMemo)(()=>ve(i),[i]),_=te??Pe,v=(0,d.useMemo)(()=>new Map(h.map((e,t)=>[_(e,t),e])),[_,h]),Ie=(0,d.useMemo)(()=>Array.from(v.keys()),[v]),y=(0,d.useRef)(null),b=(0,d.useRef)(null),{rowSelection:x,activateRowSelection:S}=ae({availableRowIds:Ie,rowById:v,selectionMode:a,selectedRowIds:ee,onRowSelectionChange:Me}),{columnVisibility:C,onColumnVisibilityChange:w}=Ce({columnVisibility:oe,defaultColumnVisibility:se,onColumnVisibilityChange:Ee}),{columnOrder:T,onColumnOrderChange:E}=ge({columnOrder:ce,defaultColumnOrder:de,onColumnOrderChange:Ae}),{columnSizing:D,onColumnSizingChange:O}=me({columnSizing:pe,defaultColumnSizing:he,columnResizeMinWidth:Se,onColumnSizingChange:je}),{columnPinning:k,onColumnPinningChange:Le}=Oe({columnPinning:_e,defaultColumnPinning:ye,onColumnPinningChange:s}),A=(0,d.useMemo)(()=>({columnOrder:T,columnPinning:k,columnSizing:D,columnVisibility:C}),[T,k,D,C]),j=(0,d.useEffectEvent)(()=>{l?.()});(0,d.useEffect)(()=>{if(!l||!y.current||!b.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&j()},{root:y.current,threshold:.1});return e.observe(b.current),()=>e.disconnect()},[t,l,h.length]);let M=ue({features:ne,data:h,columns:i,state:{columnOrder:T,columnPinning:k,columnSizing:D,columnVisibility:C,rowSelection:x},onColumnOrderChange:E,onColumnPinningChange:Le,onColumnSizingChange:O,onColumnVisibilityChange:w,getRowId:(e,t)=>_(e,t),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:!u||u(e.original)}),N=ke(M,A),P=M.getRowModel().rows,F=(0,d.useMemo)(()=>we({rows:P,columns:N}),[P,N]),I=N[0]?.id;return(0,f.jsx)(Te,{table:M,columnState:A,title:e,isLoading:t,isFetching:n,className:re,minHeight:o,tableClassName:ie,selectionMode:a,scrollableRef:y,onActivateRow:a!==`none`||c?e=>{S(e.id,e.getCanSelect()),c?.(e.original)}:void 0,isRowInteractive:e=>!!(c||a!==`none`&&e.getCanSelect()),getRowClassName:e=>p?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===I&&e.getIsSelected()?Ne.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>F.get(e.id),renderHeaderContextMenu:Fe,enableColumnResizing:be,enableColumnReordering:xe,columnResizeMinWidth:Se,renderCellContent:e=>{let t=le({field:g.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=fe({columnId:e.cell.column.id,runtimeByColumnId:g.runtimeByColumnId,customCellColumnIds:g.customCellColumnIds})?(0,f.jsx)(De,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return m?m({...e,defaultContent:n,displayValue:t}):n},afterTableContent:l?(0,f.jsx)(`div`,{ref:b,className:Ne.sentinel,"aria-hidden":`true`}):null})}var d,f;function p(){return(p=e((()=>{d=n(),ce(),o(),de(),ye(),xe(),_e(),Se(),Ae(),he(),be(),Ee(),pe(),l(),f=r(),u.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,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:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
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}from"./iframe-1Nw_zWMi.js";import{A as i,D as a,O as ee,T as te,_ as ne,a as re,b as o,d as ie,g as ae,i as oe,k as se}from"./odata-D9M3xPIL.js";import{h as ce,u as le}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{n as ue,t as de}from"./useTable-CK68Q4S4.js";import{_ as fe,a as pe,c as me,d as he,f as ge,g as _e,h as ve,i as ye,l as be,m as xe,n as Se,o as Ce,p as we,r as Te,s as Ee,t as De,u as Oe,v as ke,y as Ae}from"./FormattedTableCell-B4RRbSFK.js";import{n as je,t as s}from"./createControlledStoryRender-BouhvX-R.js";var c,Me,Ne;function l(){return(l=e((()=>{c=`hKghZt`,Me=`QsLRvS`,Ne={selectedIndicatorCell:c,sentinel:Me}})))()}function Pe(e,t){return String(t)}function u({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:ee,getRowId:te,className:re,minHeight:o,tableClassName:ie,columnVisibility:oe,defaultColumnVisibility:se,columnOrder:ce,defaultColumnOrder:de,columnSizing:pe,defaultColumnSizing:he,columnPinning:_e,defaultColumnPinning:ye,enableColumnResizing:be=!1,enableColumnReordering:xe=!1,columnResizeMinWidth:Se,onColumnVisibilityChange:Ee,onColumnOrderChange:Ae,onColumnSizingChange:je,onColumnPinningChange:s,onRowClick:c,onRowSelectionChange:Me,onReachEnd:l,getRowCanSelect:u,getRowClassName:p,renderHeaderContextMenu:Fe,renderCellContent:m}){let h=(0,d.useMemo)(()=>r??[],[r]),g=(0,d.useMemo)(()=>ve(i),[i]),_=te??Pe,v=(0,d.useMemo)(()=>new Map(h.map((e,t)=>[_(e,t),e])),[_,h]),Ie=(0,d.useMemo)(()=>Array.from(v.keys()),[v]),y=(0,d.useRef)(null),b=(0,d.useRef)(null),{rowSelection:x,activateRowSelection:S}=ae({availableRowIds:Ie,rowById:v,selectionMode:a,selectedRowIds:ee,onRowSelectionChange:Me}),{columnVisibility:C,onColumnVisibilityChange:w}=Ce({columnVisibility:oe,defaultColumnVisibility:se,onColumnVisibilityChange:Ee}),{columnOrder:T,onColumnOrderChange:E}=ge({columnOrder:ce,defaultColumnOrder:de,onColumnOrderChange:Ae}),{columnSizing:D,onColumnSizingChange:O}=me({columnSizing:pe,defaultColumnSizing:he,columnResizeMinWidth:Se,onColumnSizingChange:je}),{columnPinning:k,onColumnPinningChange:Le}=Oe({columnPinning:_e,defaultColumnPinning:ye,onColumnPinningChange:s}),A=(0,d.useMemo)(()=>({columnOrder:T,columnPinning:k,columnSizing:D,columnVisibility:C}),[T,k,D,C]),j=(0,d.useEffectEvent)(()=>{l?.()});(0,d.useEffect)(()=>{if(!l||!y.current||!b.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&j()},{root:y.current,threshold:.1});return e.observe(b.current),()=>e.disconnect()},[t,l,h.length]);let M=ue({features:ne,data:h,columns:i,state:{columnOrder:T,columnPinning:k,columnSizing:D,columnVisibility:C,rowSelection:x},onColumnOrderChange:E,onColumnPinningChange:Le,onColumnSizingChange:O,onColumnVisibilityChange:w,getRowId:(e,t)=>_(e,t),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:!u||u(e.original)}),N=ke(M,A),P=M.getRowModel().rows,F=(0,d.useMemo)(()=>we({rows:P,columns:N}),[P,N]),I=N[0]?.id;return(0,f.jsx)(Te,{table:M,columnState:A,title:e,isLoading:t,isFetching:n,className:re,minHeight:o,tableClassName:ie,selectionMode:a,scrollableRef:y,onActivateRow:a!==`none`||c?e=>{S(e.id,e.getCanSelect()),c?.(e.original)}:void 0,isRowInteractive:e=>!!(c||a!==`none`&&e.getCanSelect()),getRowClassName:e=>p?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===I&&e.getIsSelected()?Ne.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>F.get(e.id),renderHeaderContextMenu:Fe,enableColumnResizing:be,enableColumnReordering:xe,columnResizeMinWidth:Se,renderCellContent:e=>{let t=le({field:g.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=fe({columnId:e.cell.column.id,runtimeByColumnId:g.runtimeByColumnId,customCellColumnIds:g.customCellColumnIds})?(0,f.jsx)(De,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return m?m({...e,defaultContent:n,displayValue:t}):n},afterTableContent:l?(0,f.jsx)(`div`,{ref:b,className:Ne.sentinel,"aria-hidden":`true`}):null})}var d,f;function p(){return(p=e((()=>{d=n(),ce(),o(),de(),ye(),xe(),_e(),Se(),Ae(),he(),be(),Ee(),pe(),l(),f=r(),u.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,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:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
2
2
 
3
3
  Если передан, таблица синхронизирует визуальное выделение с этим набором id.`},getRowId:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData, index: number) => string`,signature:{arguments:[{type:{name:`TData`},name:`row`},{type:{name:`number`},name:`index`}],return:{name:`string`}}},description:`Стабильный идентификатор строки.
4
4
 
@@ -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"./CheckBox-C-EWY4_-.js";import{n as i}from"./iframe-ltYEol2F.js";import{i as a,l as o}from"./array-D-_yMMUK-DnJ_b27D.js";import{n as s,t as c}from"./Button-BzRtAjtM.js";import{n as l,t as u}from"./useTable-CK68Q4S4.js";import{a as d,l as f,t as p}from"./Input-b2F0zrLw.js";import{Et as m,Mt as h,Nt as g,Pt as _,Tt as v,n as ee,wt as te}from"./tableFeatures-Dx3U-F9E.js";import{n as ne,t as re}from"./Dialog-DEDDnDtQ.js";import{n as ie,t as ae}from"./Textarea-DXOTj2Y7.js";function y(){if(crypto.randomUUID)return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array(256);for(let e=0;e<256;e++)t[e]=(e+256).toString(16).slice(1);return t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+`-`+t[e[4]]+t[e[5]]+`-`+t[e[6]]+t[e[7]]+`-`+t[e[8]]+t[e[9]]+`-`+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}function oe(e){let t=e.getRowModel().rows,n=e.atoms.rowPinning?.get();if(!n||!n.top.length&&!n.bottom.length)return{rows:t,sectionStarts:pe};let r=e,i=r.getTopRows?.()??[],a=r.getCenterRows?.()??t,o=r.getBottomRows?.()??[];return{rows:[...i,...a,...o],sectionStarts:[i.length,i.length+a.length]}}function se(e,t){let n=t.getVisibleCells?.()??t.getAllCells(),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=n[e].column;let i=e.atoms.columnPinning?.get(),a=0,o=r.length;if(i){for(;a<o&&i.start.includes(r[a].id);)a++;for(;o>a&&i.end.includes(r[o-1].id);)o--}return{columns:r,centerStart:a,centerEnd:o}}function b(e){return e.columnDef.enableCellSpanning===!1?!1:e.table.options.enableCellSpanning??!0}function x(e){let{rows:t,sectionStarts:n}=oe(e),r=t.length,i={colSpans:fe,columnIndexes:de,rowSpans:ue,rows:t};if(!r||e.options.enableCellSpanning===!1)return i;let{columns:a,centerStart:o,centerEnd:s}=se(e,t[0]),c=a.length;if(!c)return i;let l=_();for(let e=0;e<c;e++)l[a[e].id]=e;let u=new Uint8Array(r);for(let e=0;e<n.length;e++){let t=n[e];t<r&&(u[t]=1)}for(let e=0;e<r;e++){let n=t[e];n._cellSpanRowIndex=e;let r=e>0?t[e-1]:void 0;(r&&(n.depth!==r.depth||n.parentId!==r.parentId)||n.getIsGrouped?.()===!0)&&(u[e]=1)}let d=[],f=!1;for(let n=0;n<c;n++){let i=a[n],l=i.columnDef.spanColumns;if(l===void 0||!b(i))continue;let u=n<o?o:n<s?s:c;for(let a=0;a<r;a++){let r=d[a];if(r&&r[n]===0)continue;let o=g(l)?l({column:i,row:t[a],table:e}):l;if(!(o>1))continue;let s=Math.min(o,u-n);if(s<2)continue;let p=r??(d[a]=new Int32Array(c).fill(1));p[n]=s;for(let e=n+1;e<n+s;e++)p[e]=0;f=!0}}let p=_();for(let n=0;n<c;n++){let i=a[n],o=i.columnDef.spanRows;if(!o||!b(i)||i.getIsGrouped?.()===!0)continue;let s=i.id,c=g(o)?o:void 0,l=new Int32Array(r).fill(1),m=!1,h=-1,_,v=1;for(let a=0;a<r;a++){let r=t[a],o=f?d[a]:void 0,p=o?o[n]:1;if(p===0){h=-1;continue}let g=r.getValue(s);if(h!==-1&&!u[a]&&p===v&&(c?c({anchorRow:t[h],anchorValue:_,column:i,previousRow:t[a-1],row:r,table:e,value:g}):g!=null&&Object.is(g,_))){l[a]=0,l[h]=l[h]+1,m=!0;continue}h=a,_=g,v=p}m&&(p[s]=l)}return{colSpans:d,columnIndexes:l,rowSpans:p,rows:t}}function S(e,t){let n=t.row._cellSpanRowIndex;return n===void 0||e.rows[n]!==t.row?-1:n}function C(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=n.rowSpans[e.column.id];if(!r)return 1;let i=S(n,e);return i===-1?1:r[i]}function ce(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=S(n,e);if(r===-1)return 1;let i=n.colSpans[r];if(!i)return 1;let a=n.columnIndexes[e.column.id];return a===void 0?1:i[a]}function le(e){return C(e)===0||ce(e)===0}var ue,de,fe,pe;function me(){return(me=e((()=>{h(),ue=_(),de=_(),fe=[],pe=[]})))()}var w;function T(){return(T=e((()=>{h(),me(),w={getDefaultTableOptions:()=>({enableCellSpanning:!0}),initRowInstanceData:e=>{e._cellSpanRowIndex=-1},assignCellPrototype:(e,t)=>{te(`cellSpanningFeature`,e,t,{cell_getColSpan:{fn:e=>ce(e)},cell_getIsCovered:{fn:e=>le(e)},cell_getRowSpan:{fn:e=>C(e)}})},constructTableAPIs:e=>{v(`cellSpanningFeature`,e,{table_getCellSpanIndex:{fn:()=>x(e),memoDeps:()=>[e.getRowModel().rows,e.atoms.rowPinning?.get(),e.options.keepPinnedRows,e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.columnPinning?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode,e.options.enableCellSpanning]}})}}})))()}function E(e,t){return e.row<t.row+t.rowSpan&&t.row<e.row+e.rowSpan&&e.column<t.column+t.columnSpan&&t.column<e.column+e.columnSpan}function D(e){let t=e.rows.length,n=e.columns.length;if(e.version!==1||!t||!n||t*n>2e4)throw Error(`Недопустимый размер таблицы.`);if(!Number.isInteger(e.headerRowCount)||e.headerRowCount<0||e.headerRowCount>t)throw Error(`Некорректное число строк заголовка.`);let r=new Set,i=e=>{if(!e||r.has(e))throw Error(`Идентификаторы строк, столбцов и ячеек должны быть уникальными.`);r.add(e)};for(let t of e.columns)if(i(t.id),t.width!==null&&(!Number.isFinite(t.width)||t.width<=0))throw Error(`Некорректная ширина столбца.`);for(let t of e.rows){if(i(t.id),t.cells.length!==n)throw Error(`Все строки должны иметь одинаковое число ячеек.`);t.cells.forEach(e=>i(e.id))}let a=new Set;for(let t of e.merges){if(O(e,t),t.rowSpan*t.columnSpan===1)throw Error(`Объединение должно содержать несколько ячеек.`);if(t.row<e.headerRowCount&&t.row+t.rowSpan>e.headerRowCount)throw Error(`Нельзя объединять заголовок с основной частью таблицы.`);for(let e=t.row;e<t.row+t.rowSpan;e++)for(let r=t.column;r<t.column+t.columnSpan;r++){let t=e*n+r;if(a.has(t))throw Error(`Объединённые области пересекаются.`);a.add(t)}}}function O(e,t){if(![t.row,t.column,t.rowSpan,t.columnSpan].every(Number.isInteger)||t.row<0||t.column<0||t.rowSpan<1||t.columnSpan<1||t.row+t.rowSpan>e.rows.length||t.column+t.columnSpan>e.columns.length)throw Error(`Выделение выходит за границы таблицы.`)}function k(e,t){let n={...t,rowSpan:1,columnSpan:1};return O(e,n),e.merges.find(e=>E(e,n))??n}function A(e,t,n){let r={row:Math.min(t.row,n.row),column:Math.min(t.column,n.column),rowSpan:Math.abs(t.row-n.row)+1,columnSpan:Math.abs(t.column-n.column)+1};O(e,r);let i=!0;for(;i;){i=!1;for(let t of e.merges){if(!E(r,t))continue;let e=Math.min(r.row,t.row),n=Math.min(r.column,t.column),a=Math.max(r.row+r.rowSpan,t.row+t.rowSpan)-e,o=Math.max(r.column+r.columnSpan,t.column+t.columnSpan)-n;(e!==r.row||n!==r.column||a!==r.rowSpan||o!==r.columnSpan)&&(r={row:e,column:n,rowSpan:a,columnSpan:o},i=!0)}}return r}function he(e,t,n){D(e);let r=A(e,t,n);if(r.rowSpan*r.columnSpan===1)return e;let i=e.merges.filter(e=>E(e,r));if(i.length===1&&r.row===i[0].row&&r.column===i[0].column&&r.rowSpan===i[0].rowSpan&&r.columnSpan===i[0].columnSpan)return e;let a={...e,merges:[...e.merges.filter(e=>!E(e,r)),r]};return D(a),a}function ge(e,t){D(e);let n=k(e,t);return n.rowSpan*n.columnSpan===1?e:{...e,merges:e.merges.filter(e=>e!==n)}}function j(e,t,n,r,i,a=`body`){D(e);let o=t===`row`?e.rows.length:e.columns.length;if(!Number.isInteger(n)||n<0||n>o)throw Error(`Некорректная позиция вставки.`);if(i.length!==(t===`row`?e.columns.length:e.rows.length))throw Error(`Неверное число новых ячеек.`);if(t===`row`&&(a===`header`?n>e.headerRowCount:n<e.headerRowCount))throw Error(`Строка вставляется вне выбранной части таблицы.`);let s=t===`row`?`rowSpan`:`columnSpan`,c=e.merges.map(e=>n<=e[t]?{...e,[t]:e[t]+1}:n<e[t]+e[s]?{...e,[s]:e[s]+1}:e),l=t===`row`?{...e,merges:c,headerRowCount:e.headerRowCount+ +(a===`header`),rows:[...e.rows.slice(0,n),{id:r,cells:i},...e.rows.slice(n)]}:{...e,merges:c,columns:[...e.columns.slice(0,n),{id:r,width:null},...e.columns.slice(n)],rows:e.rows.map((e,t)=>({...e,cells:[...e.cells.slice(0,n),i[t],...e.cells.slice(n)]}))};return D(l),l}function _e(e,t,n){return O(e,{...t,rowSpan:1,columnSpan:1}),Object.is(e.rows[t.row].cells[t.column].value,n)?e:{...e,rows:e.rows.map((e,r)=>r===t.row?{...e,cells:e.cells.map((e,r)=>r===t.column?{...e,value:n}:e)}:e)}}function M(e,t){D(e);let n=t===`row`?e.rows.length:e.columns.length,r=new Set;for(let n of e.merges){let e=t===`row`?n.rowSpan:n.columnSpan;for(let i=1;i<e;i++)r.add(n[t]+i)}let i=[],a=0;for(let e=1;e<=n;e++)(e===n||!r.has(e))&&(i.push({start:a,count:e-a}),a=e);return i}function ve(e,t,n){let r=M(e,t).find(e=>n>=e.start&&n<e.start+e.count);if(!r)throw Error(`Группа не найдена.`);let i=t===`row`?e.rows.length:e.columns.length;if(r.count===i)throw Error(`В таблице должна остаться хотя бы одна строка и один столбец.`);let a=r.start+r.count,o=e.merges.filter(e=>e[t]<r.start||e[t]>=a).map(e=>e[t]<a?e:{...e,[t]:e[t]-r.count}),s=t===`row`?{...e,merges:o,rows:e.rows.filter((e,t)=>t<r.start||t>=a),headerRowCount:e.headerRowCount-(r.start<e.headerRowCount?r.count:0)}:{...e,merges:o,columns:e.columns.filter((e,t)=>t<r.start||t>=a),rows:e.rows.map(e=>({...e,cells:e.cells.filter((e,t)=>t<r.start||t>=a)}))};return D(s),s}function ye(e,t,n,r){let i=M(e,t),a=i.findIndex(e=>n>=e.start&&n<e.start+e.count);if(a<0)throw Error(`Группа не найдена.`);let s=a+r;if(s<0||s>=i.length||t===`row`&&i[a].start<e.headerRowCount!=i[s].start<e.headerRowCount)return e;let c=o(i,a,r===-1?`up`:`down`).flatMap(e=>Array.from({length:e.count},(t,n)=>e.start+n)),l=new Map(c.map((e,t)=>[e,t])),u=e.merges.map(e=>({...e,[t]:l.get(e[t])??e[t]})),d=t===`row`?{...e,merges:u,rows:c.map(t=>e.rows[t])}:{...e,merges:u,columns:c.map(t=>e.columns[t]),rows:e.rows.map(e=>({...e,cells:c.map(t=>e.cells[t])}))};return D(d),d}function N(){return(N=e((()=>{a()})))()}var P,F,I,L,R,z,B,V,H;function U(){return(U=e((()=>{P=`_6ftNrS`,F=`tji4uW`,I=`nVFFYk`,L=`S7CdzG`,R=`emaqLv`,z=`VLG992`,B=`Hr0ghz`,V=`tuhyZe`,H={editor:P,toolbar:F,help:I,scroll:L,table:R,cellContent:z,inspector:B,structure:V}})))()}function be(e){let t=(0,W.useMemo)(()=>[...e.rows],[e]),n=(0,W.useMemo)(()=>e.columns.map((t,n)=>({id:t.id,accessorFn:(t,r)=>{let i=k(e,{row:r,column:n});return e.rows[i.row].cells[i.column].id},spanRows:!0,spanColumns:({row:t})=>{let r=k(e,{row:t.index,column:n});return r.column===n?r.columnSpan:1}})),[e]);return l({features:xe,data:t,columns:n,getRowId:e=>e.id})}var W,xe;function G(){return(G=e((()=>{W=t(),N(),T(),u(),xe=ee({cellSpanningFeature:w})})))()}function K({editor:e,extendSelection:t,disabled:n,renderCell:r,getCellText:i}){let a=(0,q.useId)(),o=(0,q.useRef)(new Map),s=be(e.document),{document:c,selection:l,focus:u}=e;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`p`,{id:a,className:H.help,children:`Стрелки — переход между ячейками. Shift + стрелки или Shift + щелчок — выделение диапазона. Содержимое выбранной ячейки редактируется под таблицей.`}),(0,J.jsx)(`div`,{className:H.scroll,children:(0,J.jsxs)(`table`,{role:`grid`,"aria-label":c.caption||`Редактор таблицы`,"aria-describedby":a,"aria-multiselectable":`true`,"aria-disabled":n||void 0,className:H.table,children:[(0,J.jsx)(`colgroup`,{children:c.columns.map(e=>(0,J.jsx)(`col`,{style:{width:e.width??180}},e.id))}),(0,J.jsx)(`tbody`,{children:s.getRowModel().rows.map(a=>(0,J.jsx)(`tr`,{"aria-rowindex":a.index+1,"data-header":a.index<c.headerRowCount||void 0,children:a.getAllCells().map((s,d)=>{if(s.getIsCovered())return null;let f=a.index>=l.row&&a.index<l.row+l.rowSpan&&d>=l.column&&d<l.column+l.columnSpan,p={row:a.index,column:d},m=a.original.cells[d],h=a.index<c.headerRowCount?`th`:`td`;return(0,J.jsxs)(h,{role:a.index<c.headerRowCount?`columnheader`:`gridcell`,ref:e=>{e?o.current.set(m.id,e):o.current.delete(m.id)},rowSpan:s.getRowSpan(),colSpan:s.getColSpan(),"aria-colindex":d+1,"aria-label":`Строка ${a.index+1}, столбец ${d+1}: ${i(m)||`Пустая ячейка`}`,"aria-selected":f,tabIndex:!n&&u.row===a.index&&u.column===d?0:-1,onClick:r=>{n||e.select(p,t||r.shiftKey)},onPointerEnter:t=>{!n&&t.pointerType===`mouse`&&t.buttons===1&&e.select(p,!0)},onKeyDown:t=>{if(n||t.altKey||t.ctrlKey||t.metaKey)return;let r;switch(t.key){case`ArrowRight`:r={...p,column:d+s.getColSpan()};break;case`ArrowLeft`:r={...p,column:d-1};break;case`ArrowDown`:r={...p,row:a.index+s.getRowSpan()};break;case`ArrowUp`:r={...p,row:a.index-1};break;case`Home`:r={...p,column:0};break;case`End`:r={...p,column:c.columns.length-1};break;case` `:t.preventDefault(),e.select(p,t.shiftKey);return;default:return}if(t.preventDefault(),r.row<0||r.column<0||r.row>=c.rows.length||r.column>=c.columns.length)return;let i=k(c,r);e.select(r,t.shiftKey),o.current.get(c.rows[i.row].cells[i.column].id)?.focus()},children:[a.index<c.headerRowCount?(0,J.jsx)(`span`,{className:`visuallyHidden`,children:i(m)||`Пустой заголовок`}):null,(0,J.jsx)(`div`,{inert:!0,className:H.cellContent,children:r(m)})]},s.id)})},a.id))})]})})]})}var q,J;function Se(){return(Se=e((()=>{q=t(),N(),G(),U(),J=i(),K.__docgenInfo={description:`Доступная сетка: roving tabindex, стрелки/Shift и выбор диапазона без drag-only действий.`,methods:[],displayName:`TableEditorGrid`,props:{editor:{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"./CheckBox-BBPasWSk.js";import{n as i}from"./iframe-1Nw_zWMi.js";import{i as a,l as o}from"./array-D-_yMMUK-DnJ_b27D.js";import{n as s,t as c}from"./Button-DMAPWgMI.js";import{n as l,t as u}from"./useTable-CK68Q4S4.js";import{a as d,l as f,t as p}from"./Input-7N70tL0u.js";import{Et as m,Mt as h,Nt as g,Pt as _,Tt as v,n as ee,wt as te}from"./tableFeatures-Dx3U-F9E.js";import{n as ne,t as re}from"./Dialog-BsslYClj.js";import{n as ie,t as ae}from"./Textarea-BImI6Q6v.js";function y(){if(crypto.randomUUID)return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array(256);for(let e=0;e<256;e++)t[e]=(e+256).toString(16).slice(1);return t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+`-`+t[e[4]]+t[e[5]]+`-`+t[e[6]]+t[e[7]]+`-`+t[e[8]]+t[e[9]]+`-`+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}function oe(e){let t=e.getRowModel().rows,n=e.atoms.rowPinning?.get();if(!n||!n.top.length&&!n.bottom.length)return{rows:t,sectionStarts:pe};let r=e,i=r.getTopRows?.()??[],a=r.getCenterRows?.()??t,o=r.getBottomRows?.()??[];return{rows:[...i,...a,...o],sectionStarts:[i.length,i.length+a.length]}}function se(e,t){let n=t.getVisibleCells?.()??t.getAllCells(),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=n[e].column;let i=e.atoms.columnPinning?.get(),a=0,o=r.length;if(i){for(;a<o&&i.start.includes(r[a].id);)a++;for(;o>a&&i.end.includes(r[o-1].id);)o--}return{columns:r,centerStart:a,centerEnd:o}}function b(e){return e.columnDef.enableCellSpanning===!1?!1:e.table.options.enableCellSpanning??!0}function x(e){let{rows:t,sectionStarts:n}=oe(e),r=t.length,i={colSpans:fe,columnIndexes:de,rowSpans:ue,rows:t};if(!r||e.options.enableCellSpanning===!1)return i;let{columns:a,centerStart:o,centerEnd:s}=se(e,t[0]),c=a.length;if(!c)return i;let l=_();for(let e=0;e<c;e++)l[a[e].id]=e;let u=new Uint8Array(r);for(let e=0;e<n.length;e++){let t=n[e];t<r&&(u[t]=1)}for(let e=0;e<r;e++){let n=t[e];n._cellSpanRowIndex=e;let r=e>0?t[e-1]:void 0;(r&&(n.depth!==r.depth||n.parentId!==r.parentId)||n.getIsGrouped?.()===!0)&&(u[e]=1)}let d=[],f=!1;for(let n=0;n<c;n++){let i=a[n],l=i.columnDef.spanColumns;if(l===void 0||!b(i))continue;let u=n<o?o:n<s?s:c;for(let a=0;a<r;a++){let r=d[a];if(r&&r[n]===0)continue;let o=g(l)?l({column:i,row:t[a],table:e}):l;if(!(o>1))continue;let s=Math.min(o,u-n);if(s<2)continue;let p=r??(d[a]=new Int32Array(c).fill(1));p[n]=s;for(let e=n+1;e<n+s;e++)p[e]=0;f=!0}}let p=_();for(let n=0;n<c;n++){let i=a[n],o=i.columnDef.spanRows;if(!o||!b(i)||i.getIsGrouped?.()===!0)continue;let s=i.id,c=g(o)?o:void 0,l=new Int32Array(r).fill(1),m=!1,h=-1,_,v=1;for(let a=0;a<r;a++){let r=t[a],o=f?d[a]:void 0,p=o?o[n]:1;if(p===0){h=-1;continue}let g=r.getValue(s);if(h!==-1&&!u[a]&&p===v&&(c?c({anchorRow:t[h],anchorValue:_,column:i,previousRow:t[a-1],row:r,table:e,value:g}):g!=null&&Object.is(g,_))){l[a]=0,l[h]=l[h]+1,m=!0;continue}h=a,_=g,v=p}m&&(p[s]=l)}return{colSpans:d,columnIndexes:l,rowSpans:p,rows:t}}function S(e,t){let n=t.row._cellSpanRowIndex;return n===void 0||e.rows[n]!==t.row?-1:n}function C(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=n.rowSpans[e.column.id];if(!r)return 1;let i=S(n,e);return i===-1?1:r[i]}function ce(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=S(n,e);if(r===-1)return 1;let i=n.colSpans[r];if(!i)return 1;let a=n.columnIndexes[e.column.id];return a===void 0?1:i[a]}function le(e){return C(e)===0||ce(e)===0}var ue,de,fe,pe;function me(){return(me=e((()=>{h(),ue=_(),de=_(),fe=[],pe=[]})))()}var w;function T(){return(T=e((()=>{h(),me(),w={getDefaultTableOptions:()=>({enableCellSpanning:!0}),initRowInstanceData:e=>{e._cellSpanRowIndex=-1},assignCellPrototype:(e,t)=>{te(`cellSpanningFeature`,e,t,{cell_getColSpan:{fn:e=>ce(e)},cell_getIsCovered:{fn:e=>le(e)},cell_getRowSpan:{fn:e=>C(e)}})},constructTableAPIs:e=>{v(`cellSpanningFeature`,e,{table_getCellSpanIndex:{fn:()=>x(e),memoDeps:()=>[e.getRowModel().rows,e.atoms.rowPinning?.get(),e.options.keepPinnedRows,e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.columnPinning?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode,e.options.enableCellSpanning]}})}}})))()}function E(e,t){return e.row<t.row+t.rowSpan&&t.row<e.row+e.rowSpan&&e.column<t.column+t.columnSpan&&t.column<e.column+e.columnSpan}function D(e){let t=e.rows.length,n=e.columns.length;if(e.version!==1||!t||!n||t*n>2e4)throw Error(`Недопустимый размер таблицы.`);if(!Number.isInteger(e.headerRowCount)||e.headerRowCount<0||e.headerRowCount>t)throw Error(`Некорректное число строк заголовка.`);let r=new Set,i=e=>{if(!e||r.has(e))throw Error(`Идентификаторы строк, столбцов и ячеек должны быть уникальными.`);r.add(e)};for(let t of e.columns)if(i(t.id),t.width!==null&&(!Number.isFinite(t.width)||t.width<=0))throw Error(`Некорректная ширина столбца.`);for(let t of e.rows){if(i(t.id),t.cells.length!==n)throw Error(`Все строки должны иметь одинаковое число ячеек.`);t.cells.forEach(e=>i(e.id))}let a=new Set;for(let t of e.merges){if(O(e,t),t.rowSpan*t.columnSpan===1)throw Error(`Объединение должно содержать несколько ячеек.`);if(t.row<e.headerRowCount&&t.row+t.rowSpan>e.headerRowCount)throw Error(`Нельзя объединять заголовок с основной частью таблицы.`);for(let e=t.row;e<t.row+t.rowSpan;e++)for(let r=t.column;r<t.column+t.columnSpan;r++){let t=e*n+r;if(a.has(t))throw Error(`Объединённые области пересекаются.`);a.add(t)}}}function O(e,t){if(![t.row,t.column,t.rowSpan,t.columnSpan].every(Number.isInteger)||t.row<0||t.column<0||t.rowSpan<1||t.columnSpan<1||t.row+t.rowSpan>e.rows.length||t.column+t.columnSpan>e.columns.length)throw Error(`Выделение выходит за границы таблицы.`)}function k(e,t){let n={...t,rowSpan:1,columnSpan:1};return O(e,n),e.merges.find(e=>E(e,n))??n}function A(e,t,n){let r={row:Math.min(t.row,n.row),column:Math.min(t.column,n.column),rowSpan:Math.abs(t.row-n.row)+1,columnSpan:Math.abs(t.column-n.column)+1};O(e,r);let i=!0;for(;i;){i=!1;for(let t of e.merges){if(!E(r,t))continue;let e=Math.min(r.row,t.row),n=Math.min(r.column,t.column),a=Math.max(r.row+r.rowSpan,t.row+t.rowSpan)-e,o=Math.max(r.column+r.columnSpan,t.column+t.columnSpan)-n;(e!==r.row||n!==r.column||a!==r.rowSpan||o!==r.columnSpan)&&(r={row:e,column:n,rowSpan:a,columnSpan:o},i=!0)}}return r}function he(e,t,n){D(e);let r=A(e,t,n);if(r.rowSpan*r.columnSpan===1)return e;let i=e.merges.filter(e=>E(e,r));if(i.length===1&&r.row===i[0].row&&r.column===i[0].column&&r.rowSpan===i[0].rowSpan&&r.columnSpan===i[0].columnSpan)return e;let a={...e,merges:[...e.merges.filter(e=>!E(e,r)),r]};return D(a),a}function ge(e,t){D(e);let n=k(e,t);return n.rowSpan*n.columnSpan===1?e:{...e,merges:e.merges.filter(e=>e!==n)}}function j(e,t,n,r,i,a=`body`){D(e);let o=t===`row`?e.rows.length:e.columns.length;if(!Number.isInteger(n)||n<0||n>o)throw Error(`Некорректная позиция вставки.`);if(i.length!==(t===`row`?e.columns.length:e.rows.length))throw Error(`Неверное число новых ячеек.`);if(t===`row`&&(a===`header`?n>e.headerRowCount:n<e.headerRowCount))throw Error(`Строка вставляется вне выбранной части таблицы.`);let s=t===`row`?`rowSpan`:`columnSpan`,c=e.merges.map(e=>n<=e[t]?{...e,[t]:e[t]+1}:n<e[t]+e[s]?{...e,[s]:e[s]+1}:e),l=t===`row`?{...e,merges:c,headerRowCount:e.headerRowCount+ +(a===`header`),rows:[...e.rows.slice(0,n),{id:r,cells:i},...e.rows.slice(n)]}:{...e,merges:c,columns:[...e.columns.slice(0,n),{id:r,width:null},...e.columns.slice(n)],rows:e.rows.map((e,t)=>({...e,cells:[...e.cells.slice(0,n),i[t],...e.cells.slice(n)]}))};return D(l),l}function _e(e,t,n){return O(e,{...t,rowSpan:1,columnSpan:1}),Object.is(e.rows[t.row].cells[t.column].value,n)?e:{...e,rows:e.rows.map((e,r)=>r===t.row?{...e,cells:e.cells.map((e,r)=>r===t.column?{...e,value:n}:e)}:e)}}function M(e,t){D(e);let n=t===`row`?e.rows.length:e.columns.length,r=new Set;for(let n of e.merges){let e=t===`row`?n.rowSpan:n.columnSpan;for(let i=1;i<e;i++)r.add(n[t]+i)}let i=[],a=0;for(let e=1;e<=n;e++)(e===n||!r.has(e))&&(i.push({start:a,count:e-a}),a=e);return i}function ve(e,t,n){let r=M(e,t).find(e=>n>=e.start&&n<e.start+e.count);if(!r)throw Error(`Группа не найдена.`);let i=t===`row`?e.rows.length:e.columns.length;if(r.count===i)throw Error(`В таблице должна остаться хотя бы одна строка и один столбец.`);let a=r.start+r.count,o=e.merges.filter(e=>e[t]<r.start||e[t]>=a).map(e=>e[t]<a?e:{...e,[t]:e[t]-r.count}),s=t===`row`?{...e,merges:o,rows:e.rows.filter((e,t)=>t<r.start||t>=a),headerRowCount:e.headerRowCount-(r.start<e.headerRowCount?r.count:0)}:{...e,merges:o,columns:e.columns.filter((e,t)=>t<r.start||t>=a),rows:e.rows.map(e=>({...e,cells:e.cells.filter((e,t)=>t<r.start||t>=a)}))};return D(s),s}function ye(e,t,n,r){let i=M(e,t),a=i.findIndex(e=>n>=e.start&&n<e.start+e.count);if(a<0)throw Error(`Группа не найдена.`);let s=a+r;if(s<0||s>=i.length||t===`row`&&i[a].start<e.headerRowCount!=i[s].start<e.headerRowCount)return e;let c=o(i,a,r===-1?`up`:`down`).flatMap(e=>Array.from({length:e.count},(t,n)=>e.start+n)),l=new Map(c.map((e,t)=>[e,t])),u=e.merges.map(e=>({...e,[t]:l.get(e[t])??e[t]})),d=t===`row`?{...e,merges:u,rows:c.map(t=>e.rows[t])}:{...e,merges:u,columns:c.map(t=>e.columns[t]),rows:e.rows.map(e=>({...e,cells:c.map(t=>e.cells[t])}))};return D(d),d}function N(){return(N=e((()=>{a()})))()}var P,F,I,L,R,z,B,V,H;function U(){return(U=e((()=>{P=`_6ftNrS`,F=`tji4uW`,I=`nVFFYk`,L=`S7CdzG`,R=`emaqLv`,z=`VLG992`,B=`Hr0ghz`,V=`tuhyZe`,H={editor:P,toolbar:F,help:I,scroll:L,table:R,cellContent:z,inspector:B,structure:V}})))()}function be(e){let t=(0,W.useMemo)(()=>[...e.rows],[e]),n=(0,W.useMemo)(()=>e.columns.map((t,n)=>({id:t.id,accessorFn:(t,r)=>{let i=k(e,{row:r,column:n});return e.rows[i.row].cells[i.column].id},spanRows:!0,spanColumns:({row:t})=>{let r=k(e,{row:t.index,column:n});return r.column===n?r.columnSpan:1}})),[e]);return l({features:xe,data:t,columns:n,getRowId:e=>e.id})}var W,xe;function G(){return(G=e((()=>{W=t(),N(),T(),u(),xe=ee({cellSpanningFeature:w})})))()}function K({editor:e,extendSelection:t,disabled:n,renderCell:r,getCellText:i}){let a=(0,q.useId)(),o=(0,q.useRef)(new Map),s=be(e.document),{document:c,selection:l,focus:u}=e;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`p`,{id:a,className:H.help,children:`Стрелки — переход между ячейками. Shift + стрелки или Shift + щелчок — выделение диапазона. Содержимое выбранной ячейки редактируется под таблицей.`}),(0,J.jsx)(`div`,{className:H.scroll,children:(0,J.jsxs)(`table`,{role:`grid`,"aria-label":c.caption||`Редактор таблицы`,"aria-describedby":a,"aria-multiselectable":`true`,"aria-disabled":n||void 0,className:H.table,children:[(0,J.jsx)(`colgroup`,{children:c.columns.map(e=>(0,J.jsx)(`col`,{style:{width:e.width??180}},e.id))}),(0,J.jsx)(`tbody`,{children:s.getRowModel().rows.map(a=>(0,J.jsx)(`tr`,{"aria-rowindex":a.index+1,"data-header":a.index<c.headerRowCount||void 0,children:a.getAllCells().map((s,d)=>{if(s.getIsCovered())return null;let f=a.index>=l.row&&a.index<l.row+l.rowSpan&&d>=l.column&&d<l.column+l.columnSpan,p={row:a.index,column:d},m=a.original.cells[d],h=a.index<c.headerRowCount?`th`:`td`;return(0,J.jsxs)(h,{role:a.index<c.headerRowCount?`columnheader`:`gridcell`,ref:e=>{e?o.current.set(m.id,e):o.current.delete(m.id)},rowSpan:s.getRowSpan(),colSpan:s.getColSpan(),"aria-colindex":d+1,"aria-label":`Строка ${a.index+1}, столбец ${d+1}: ${i(m)||`Пустая ячейка`}`,"aria-selected":f,tabIndex:!n&&u.row===a.index&&u.column===d?0:-1,onClick:r=>{n||e.select(p,t||r.shiftKey)},onPointerEnter:t=>{!n&&t.pointerType===`mouse`&&t.buttons===1&&e.select(p,!0)},onKeyDown:t=>{if(n||t.altKey||t.ctrlKey||t.metaKey)return;let r;switch(t.key){case`ArrowRight`:r={...p,column:d+s.getColSpan()};break;case`ArrowLeft`:r={...p,column:d-1};break;case`ArrowDown`:r={...p,row:a.index+s.getRowSpan()};break;case`ArrowUp`:r={...p,row:a.index-1};break;case`Home`:r={...p,column:0};break;case`End`:r={...p,column:c.columns.length-1};break;case` `:t.preventDefault(),e.select(p,t.shiftKey);return;default:return}if(t.preventDefault(),r.row<0||r.column<0||r.row>=c.rows.length||r.column>=c.columns.length)return;let i=k(c,r);e.select(r,t.shiftKey),o.current.get(c.rows[i.row].cells[i.column].id)?.focus()},children:[a.index<c.headerRowCount?(0,J.jsx)(`span`,{className:`visuallyHidden`,children:i(m)||`Пустой заголовок`}):null,(0,J.jsx)(`div`,{inert:!0,className:H.cellContent,children:r(m)})]},s.id)})},a.id))})]})})]})}var q,J;function Se(){return(Se=e((()=>{q=t(),N(),G(),U(),J=i(),K.__docgenInfo={description:`Доступная сетка: roving tabindex, стрелки/Shift и выбор диапазона без drag-only действий.`,methods:[],displayName:`TableEditorGrid`,props:{editor:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
2
2
  readonly document: TableDocument<T>;
3
3
  readonly selection: TableDocumentRange;
4
4
  readonly focus: TableDocumentPosition;
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.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}from"./blocks-Bdsl8TP-.js";import{a as f,c as p,i as m,l as h,n as g,o as _,r as v,s as y,t as b,u as x}from"./Tabs.stories-BCkUYsqs.js";function S(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:h,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.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}from"./blocks-DR4JL0hD.js";import{a as f,c as p,i as m,l as h,n as g,o as _,r as v,s as y,t as b,u as x}from"./Tabs.stories-CIVbz7kW.js";function S(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:h,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,w.jsx)(u,{children:`Tabs`}),`
3
3
  `,(0,w.jsx)(o,{children:`Набор tabs-компонентов с разделением простого scroll-сценария и составного panel-layout сценария`}),`
4
4
  `,(0,w.jsxs)(t.p,{children:[`После рефакторинга `,(0,w.jsx)(t.code,{children:`tabs`}),` разделены на два независимых сценария:`]}),`
@@ -1,4 +1,4 @@
1
- import{a as e,n as t,r as n}from"./rolldown-runtime-DkW27tQK.js";import{t as r}from"./react-BZJXY1be.js";import{n as i}from"./iframe-ltYEol2F.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as ee,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as te}from"./uiClasses-BblrV9p1.js";import{n as l,t as u}from"./Scrollable-DtB02dAG.js";import{n as d,t as f}from"./createControlledStoryRender-BouhvX-R.js";import{a as ne,c as p,f as re,i as m,l as h,n as g,o as _,r as ie,s as v,t as y,u as ae}from"./TabsBox-DBm2a1iA.js";function oe(e){let{type:t}=e;if(typeof t==`function`){let e=t;return e.displayName??e.name??null}if(typeof t==`object`&&t&&`displayName`in t){let e=t;return typeof e.displayName==`string`?e.displayName:null}return null}function b(e,t){return(0,E.isValidElement)(e)&&oe(e)===t}function x({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function S({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function C({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function w({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function se(e,t){let n=null,r=null,i=null;for(let a of E.Children.toArray(e)){if(!(0,E.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(b(a,k)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(b(a,A)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(b(a,j)){if(i)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);i=a.props;continue}throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`)}if(!r)throw Error(`TabsLayout.Tab "${t}" должен содержать блок TabsLayout.Content.`);return{toolbar:n,content:r,footer:i}}function ce(e){return E.Children.toArray(e).map(e=>{if(!b(e,O))throw Error(`TabsLayout принимает только дочерние элементы TabsLayout.Tab.`);return{id:e.props.id,title:e.props.title,disabled:e.props.disabled,...se(e.props.children,e.props.id)}})}function T({children:e,value:t,defaultValue:n,onValueChange:r,className:i,orientation:o=`horizontal`,activationMode:s=`manual`,mountStrategy:c=`lazy`,loop:l=!0,tone:u=`primary`,clean:d=!1,"aria-label":f,"aria-labelledby":p}){let m=(0,E.useMemo)(()=>ce(e),[e]),h=ae({items:m,value:t,defaultValue:n,onValueChange:r,orientation:o,activationMode:s,loop:l}),g=a(v.tabsContainer,d?v.clean:ee.uiFilledPanel,v[o],te(u),i),_=a(v.panels,v.layoutPanels);return(0,D.jsxs)(`div`,{className:g,children:[(0,D.jsx)(`div`,{className:v.tabsWrapper,children:(0,D.jsx)(ie,{items:m,state:h,className:v.tabs,ariaLabel:f,ariaLabelledBy:p})}),(0,D.jsx)(`div`,{className:_,children:m.map(e=>{let t=e.id===h.selectedTabId,n=re({mountStrategy:c,isSelected:t,isVisited:h.isVisited(e.id)}),r=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,D.jsx)(ne,{tabId:e.id,isSelected:t,className:v.panel,getTabElementId:h.getTabElementId,getPanelElementId:h.getPanelElementId,children:n?(0,D.jsxs)(`div`,{className:v.layoutPanel,style:{gridTemplateRows:r},children:[e.toolbar?(0,D.jsx)(`div`,{className:a(v.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,D.jsx)(`div`,{className:a(v.layoutSection,v.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,D.jsx)(`div`,{className:a(v.layoutSection,e.footer.className),children:e.footer.children}):null]}):null},e.id)})})]})}var E,D,O,k,A,j;function M(){return(M=t((()=>{E=e(r(),1),o(),s(),c(),h(),p(),_(),m(),D=i(),O=`TabsLayout.Tab`,k=`TabsLayout.Toolbar`,A=`TabsLayout.Content`,j=`TabsLayout.Footer`,x.displayName=O,S.displayName=k,C.displayName=A,w.displayName=j,T.Tab=x,T.Toolbar=S,T.Content=C,T.Footer=w,T.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
1
+ import{a as e,n as t,r as n}from"./rolldown-runtime-DkW27tQK.js";import{t as r}from"./react-BZJXY1be.js";import{n as i}from"./iframe-1Nw_zWMi.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as ee,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as te}from"./uiClasses-BblrV9p1.js";import{n as l,t as u}from"./Scrollable-BI1k9ogH.js";import{n as d,t as f}from"./createControlledStoryRender-BouhvX-R.js";import{a as ne,c as p,f as re,i as m,l as h,n as g,o as _,r as ie,s as v,t as y,u as ae}from"./TabsBox-C9g1p4du.js";function oe(e){let{type:t}=e;if(typeof t==`function`){let e=t;return e.displayName??e.name??null}if(typeof t==`object`&&t&&`displayName`in t){let e=t;return typeof e.displayName==`string`?e.displayName:null}return null}function b(e,t){return(0,E.isValidElement)(e)&&oe(e)===t}function x({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function S({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function C({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function w({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function se(e,t){let n=null,r=null,i=null;for(let a of E.Children.toArray(e)){if(!(0,E.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(b(a,k)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(b(a,A)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(b(a,j)){if(i)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);i=a.props;continue}throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`)}if(!r)throw Error(`TabsLayout.Tab "${t}" должен содержать блок TabsLayout.Content.`);return{toolbar:n,content:r,footer:i}}function ce(e){return E.Children.toArray(e).map(e=>{if(!b(e,O))throw Error(`TabsLayout принимает только дочерние элементы TabsLayout.Tab.`);return{id:e.props.id,title:e.props.title,disabled:e.props.disabled,...se(e.props.children,e.props.id)}})}function T({children:e,value:t,defaultValue:n,onValueChange:r,className:i,orientation:o=`horizontal`,activationMode:s=`manual`,mountStrategy:c=`lazy`,loop:l=!0,tone:u=`primary`,clean:d=!1,"aria-label":f,"aria-labelledby":p}){let m=(0,E.useMemo)(()=>ce(e),[e]),h=ae({items:m,value:t,defaultValue:n,onValueChange:r,orientation:o,activationMode:s,loop:l}),g=a(v.tabsContainer,d?v.clean:ee.uiFilledPanel,v[o],te(u),i),_=a(v.panels,v.layoutPanels);return(0,D.jsxs)(`div`,{className:g,children:[(0,D.jsx)(`div`,{className:v.tabsWrapper,children:(0,D.jsx)(ie,{items:m,state:h,className:v.tabs,ariaLabel:f,ariaLabelledBy:p})}),(0,D.jsx)(`div`,{className:_,children:m.map(e=>{let t=e.id===h.selectedTabId,n=re({mountStrategy:c,isSelected:t,isVisited:h.isVisited(e.id)}),r=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,D.jsx)(ne,{tabId:e.id,isSelected:t,className:v.panel,getTabElementId:h.getTabElementId,getPanelElementId:h.getPanelElementId,children:n?(0,D.jsxs)(`div`,{className:v.layoutPanel,style:{gridTemplateRows:r},children:[e.toolbar?(0,D.jsx)(`div`,{className:a(v.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,D.jsx)(`div`,{className:a(v.layoutSection,v.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,D.jsx)(`div`,{className:a(v.layoutSection,e.footer.className),children:e.footer.children}):null]}):null},e.id)})})]})}var E,D,O,k,A,j;function M(){return(M=t((()=>{E=e(r(),1),o(),s(),c(),h(),p(),_(),m(),D=i(),O=`TabsLayout.Tab`,k=`TabsLayout.Toolbar`,A=`TabsLayout.Content`,j=`TabsLayout.Footer`,x.displayName=O,S.displayName=k,C.displayName=A,w.displayName=j,T.Tab=x,T.Toolbar=S,T.Content=C,T.Footer=w,T.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
2
2
  Сам компонент управляет только переключением и каркасом панели.`,methods:[{name:`Tab`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutTabProps`,optional:!1,type:{name:`TabsLayoutTabProps`,alias:`TabsLayoutTabProps`}}],returns:null},{name:`Toolbar`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutSectionProps`,optional:!1,type:{name:`TabsLayoutSectionProps`,alias:`TabsLayoutSectionProps`}}],returns:null},{name:`Content`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutSectionProps`,optional:!1,type:{name:`TabsLayoutSectionProps`,alias:`TabsLayoutSectionProps`}}],returns:null},{name:`Footer`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutSectionProps`,optional:!1,type:{name:`TabsLayoutSectionProps`,alias:`TabsLayoutSectionProps`}}],returns:null}],displayName:`TabsLayout`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"manual"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"lazy"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "tertiary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"tertiary"`}]},description:``,defaultValue:{value:`"primary"`,computed:!1}},clean:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactNode`},description:``}}}})))()}var le=n({BoxBasic:()=>G,BoxControlled:()=>K,BoxMountStrategies:()=>J,BoxVertical:()=>q,DisabledTabs:()=>Y,Empty:()=>Q,LayoutPanels:()=>X,Loading:()=>Z,__namedExportsOrder:()=>$,default:()=>U});function N({label:e}){let[t,n]=(0,F.useState)(0);return(0,I.jsxs)(`div`,{style:R,children:[(0,I.jsxs)(`div`,{children:[`Панель: `,e]}),(0,I.jsxs)(`div`,{children:[`Локальный счётчик: `,t]}),(0,I.jsx)(`button`,{type:`button`,onClick:()=>n(e=>e+1),children:`Увеличить`})]})}function P(e){return f((t,n)=>{let r=t.value??t.defaultValue,i=(0,I.jsx)(y,{...t,value:r,onValueChange:e=>{t.onValueChange?.(e),n({value:e})}});return e===void 0?i:(0,I.jsx)(`div`,{style:{height:e},children:i})})}var F,I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$;function ue(){return(ue=t((()=>{F=r(),g(),M(),d(),l(),I=i(),{fn:L}=__STORYBOOK_MODULE_TEST__,R={padding:16,display:`grid`,gap:12},z=[{id:`profile`,title:`Профиль`,content:(0,I.jsx)(`div`,{style:R,children:`Карточка пользователя и основные поля профиля.`})},{id:`settings`,title:`Настройки`,content:(0,I.jsx)(`div`,{style:R,children:`Параметры интерфейса, уведомлений и доступа.`})},{id:`history`,title:`История`,content:(0,I.jsx)(`div`,{style:R,children:`Последние действия, комментарии и изменения.`})}],B=[{id:`first`,title:`Первая`,content:(0,I.jsx)(N,{label:`Первая`})},{id:`second`,title:`Вторая`,content:(0,I.jsx)(N,{label:`Вторая`})},{id:`third`,title:`Третья`,content:(0,I.jsx)(N,{label:`Третья`})}],V=[{id:`overview`,title:`Обзор`,content:(0,I.jsx)(`div`,{style:R,children:`Раздел доступен сразу.`})},{id:`analytics`,title:`Аналитика`,disabled:!0,content:(0,I.jsx)(`div`,{style:R,children:`Пока недоступно.`})},{id:`history`,title:`История`,content:(0,I.jsx)(`div`,{style:R,children:`История изменений и действий.`})}],H=Array.from({length:12},(e,t)=>`Элемент ${t+1}`),U={title:`UI/Tabs`,component:y,args:{items:z,value:`profile`,onValueChange:L(),orientation:`horizontal`,activationMode:`automatic`,mountStrategy:`unmount`,isLoading:!1,loadingText:`Загрузка вкладок...`,clean:!1,loop:!0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{items:{description:"Набор вкладок для `TabsBox`. Каждая вкладка задаётся через `id`, `title`, `content` и опциональный `disabled`.",control:!1},value:{description:`Активная вкладка в controlled-режиме.`,control:`text`},defaultValue:{description:`Начальная вкладка в uncontrolled-режиме.`,control:`text`},onValueChange:{description:`Вызывается при смене активной вкладки.`,control:!1},orientation:{description:`Направление списка вкладок.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},activationMode:{description:"Режим клавиатурной активации: `automatic` меняет вкладку стрелками, `manual` только переводит фокус.",control:`inline-radio`,options:[`automatic`,`manual`]},mountStrategy:{description:"Политика монтирования панелей: `unmount`, `lazy` или `keep-mounted`.",control:`inline-radio`,options:[`unmount`,`lazy`,`keep-mounted`]},clean:{description:`Убирает базовые padding и surface-оформление panel-области.`,control:`boolean`},loop:{description:`Разрешает циклическую навигацию стрелками и Home/End.`,control:`boolean`},isLoading:{description:"Показывает loading-состояние `TabsBox`.",control:`boolean`},loadingText:{description:`Текст внутри loading-состояния.`,control:`text`},"aria-label":{description:"Собственное доступное имя `tablist`, если рядом нет видимого заголовка.",control:`text`},"aria-labelledby":{description:"Ссылка на внешний заголовок `tablist` вместо текстовой ARIA-метки.",control:`text`}}},W=f((e,t)=>{let n=e.value??e.defaultValue??`details`;return(0,I.jsx)(`div`,{style:{height:360},children:(0,I.jsxs)(T,{value:n,defaultValue:e.defaultValue,onValueChange:n=>{e.onValueChange?.(n),t({value:n})},orientation:e.orientation,activationMode:e.activationMode,mountStrategy:e.mountStrategy,loop:e.loop,clean:e.clean,className:e.className,"aria-label":e[`aria-label`],"aria-labelledby":e[`aria-labelledby`],children:[(0,I.jsxs)(T.Tab,{id:`details`,title:`Детали`,children:[(0,I.jsx)(T.Toolbar,{children:(0,I.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Панель инструментов вне scroll-области.`})}),(0,I.jsx)(T.Content,{children:(0,I.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:12,height:`100%`},children:[(0,I.jsx)(u,{className:`surface0 border radiusSm paddingSm h100`,children:(0,I.jsx)(`div`,{role:`region`,"aria-label":`Содержимое левой колонки`,tabIndex:0,children:H.map(e=>(0,I.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Левая колонка: `,e]},`left-${e}`))})}),(0,I.jsx)(u,{className:`surface0 border radiusSm paddingSm h100`,children:(0,I.jsx)(`div`,{role:`region`,"aria-label":`Содержимое правой колонки`,tabIndex:0,children:H.map(e=>(0,I.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Правая колонка: `,e]},`right-${e}`))})})]})}),(0,I.jsx)(T.Footer,{children:(0,I.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Футер тоже исключён из scroll-контента.`})})]}),(0,I.jsx)(T.Tab,{id:`history`,title:`История`,children:(0,I.jsx)(T.Content,{children:(0,I.jsx)(u,{className:`surface0 border radiusSm paddingSm h100`,children:(0,I.jsx)(`div`,{role:`region`,"aria-label":`История изменений`,tabIndex:0,children:H.map(e=>(0,I.jsxs)(`div`,{className:`paddingBlockXs`,children:[`История изменения: `,e]},`history-${e}`))})})})})]})})}),G={args:{"aria-label":`Основные разделы профиля`},render:P()},K={args:{value:`settings`,"aria-label":`Управляемые вкладки`},render:P()},q={args:{orientation:`vertical`,"aria-label":`Вертикальные вкладки`},render:P(320)},J={args:{items:B,mountStrategy:`lazy`,"aria-label":`Демонстрация стратегий монтирования`},render:P()},Y={args:{items:V,value:`overview`,"aria-label":`Вкладки с недоступным разделом`},render:P()},X={args:{value:`details`,onValueChange:L(),orientation:`horizontal`,activationMode:`manual`,mountStrategy:`lazy`,clean:!1,loop:!0,"aria-label":`Составные панели документа`},render:W},Z={args:{isLoading:!0,items:z},render:P()},Q={args:{items:[],value:void 0},render:P()},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
3
3
  args: {
4
4
  "aria-label": "Основные разделы профиля"
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-ltYEol2F.js";import{a as r,i,o as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as l}from"./uiClasses-BblrV9p1.js";import{i as u,n as d,r as f,t as p}from"./NoData-Bvl_1jH4.js";import{n as m,t as h}from"./OneStepScroller-B1H-Yg0P.js";function g(e){return e.find(e=>!e.disabled)?.id??null}function _(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??g(e):g(e)}function v(e){return e.filter(e=>!e.disabled)}function y({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}function b(){return(b=e((()=>{})))()}function x({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:o=`automatic`,loop:s=!0}){let c=t!==void 0,l=(0,S.useMemo)(()=>v(e),[e]),u=l[0]?.id??null,[d,f]=(0,S.useState)(()=>_(e,n)),[p,m]=(0,S.useState)(()=>_(e,t??n)),h=_(e,t??n),[g,y]=(0,S.useState)(()=>h?new Set([h]):new Set),b=(0,S.useId)(),x=(0,S.useRef)({}),C=_(e,c?t:d),w=_(e,p)??C??u,T=(0,S.useMemo)(()=>{if(!C||g.has(C))return g;let e=new Set(g);return e.add(C),e},[C,g]),E=t=>{let n=_(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),c||f(n),r?.(n))},D=e=>{x.current[e]?.focus()},O=e=>{if(l.length<2)return;let t=Math.max(0,l.findIndex(e=>e.id===(w??C??u))),n=a({currentIndex:t,itemCount:l.length,key:e.key,orientation:i,wrap:s});if(n===null)return;e.preventDefault();let r=l[n]?.id;r&&(m(r),D(r),o===`automatic`&&E(r))},k=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||m(C??u)},A=e=>`${b}-tab-${e}`,j=e=>`${b}-panel-${e}`;return{activationMode:o,orientation:i,selectedTabId:C,tabbableTabId:w,onTabListKeyDown:O,onTabListBlur:k,getTabElementId:A,getPanelElementId:j,getTabButtonProps:e=>{let t=e.id===C,n=e.id===w;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:A(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":j(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>m(e.id),onClick:()=>E(e.id)}},isVisited:e=>T.has(e)}}var S;function C(){return(C=e((()=>{S=t(),i()})))()}var w,T,E,D,O,k,A,j,M,N,P,F,I,L,R,z,B;function V(){return(V=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`Z6PwjQ`,D=`ZSAoAa`,O=`psYhsZ`,k=`mNDq9-`,A=`g156KO`,j=`C2mO1e`,M=`_28F3fs`,N=`UKZXTZ`,P=`jiTafe`,F=`nhD0k7`,I=`G8FICe`,L=`W50XHh`,R=`vnjXkU`,z=`Nzvfhw`,B={tabsContainer:w,clean:T,tabsWrapper:E,tabs:D,panels:O,horizontal:k,vertical:A,panelScrollable:j,tab:M,selected:N,panel:P,panelBody:F,layoutPanels:I,layoutPanel:L,layoutSection:R,layoutContent:z}})))()}function H({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,U.jsxs)(`div`,{className:e,children:[(0,U.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,U.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(B.tab,`skeletonLine`),children:`Загрузка...`})}),(0,U.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,U.jsx)(`div`,{className:i,children:(0,U.jsx)(`div`,{className:a,children:(0,U.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var U;function W(){return(W=e((()=>{i(),u(),V(),U=n(),H.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}function G({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,K.jsx)(`div`,{className:e,children:(0,K.jsx)(`div`,{className:t,children:(0,K.jsx)(`div`,{className:n,children:(0,K.jsx)(`div`,{className:r,children:(0,K.jsx)(p,{className:`radiusSm`})})})})})}var K;function q(){return(q=e((()=>{d(),K=n(),G.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}})))()}function J({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,ee.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,tabIndex:t?0:-1,className:n,children:a})}var ee;function Y(){return(Y=e((()=>{ee=n(),J.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){let o=(0,Z.jsx)(`div`,{"data-ui":`tabs-tablist`,className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":a?void 0:i??`Вкладки`,"aria-labelledby":a,"aria-live":`off`,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(B.tab,`textWrap`,e.id===t.selectedTabId&&B.selected),children:e.title},e.id))});return t.orientation===`horizontal`?(0,Z.jsx)(h,{itemSelector:`[role='tab']`,children:o}):o}var Z;function Q(){return(Q=e((()=>{i(),m(),V(),Z=n(),X.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}})))()}function te({items:e,value:t,defaultValue:n,onValueChange:i,className:a,isLoading:s,loadingText:c,orientation:u=`horizontal`,activationMode:d=`automatic`,mountStrategy:f=`unmount`,loop:p=!0,tone:m=`primary`,clean:h=!1,"aria-label":g,"aria-labelledby":_}){let v=x({items:e,value:t,defaultValue:n,onValueChange:i,orientation:u,activationMode:d,loop:p}),b=r(B.tabsContainer,h?B.clean:o.uiFilledPanel,B[u],l(m),a),S=B.tabs,C=r(B.panels,B.panelScrollable,`scrollable overscroll`),w=B.panel,T=B.panelBody;return s?(0,$.jsx)(H,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,children:[(0,$.jsx)(`div`,{className:B.tabsWrapper,children:(0,$.jsx)(X,{items:e,state:v,className:S,ariaLabel:g,ariaLabelledBy:_})}),(0,$.jsx)(`div`,{className:C,children:e.map(e=>{let t=e.id===v.selectedTabId,n=y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)});return(0,$.jsx)(J,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:n?(0,$.jsx)(`div`,{className:T,children:e.content}):null},e.id)})})]}):(0,$.jsx)(G,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function ne(){return(ne=e((()=>{i(),s(),c(),C(),V(),W(),q(),Y(),Q(),$=n(),te.__docgenInfo={description:`Простой items-based tabs-компонент.
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-1Nw_zWMi.js";import{a as r,i,o as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as l}from"./uiClasses-BblrV9p1.js";import{i as u,n as d,r as f,t as p}from"./NoData-DCuuvSoD.js";import{n as m,t as h}from"./OneStepScroller-DI8qlm5c.js";function g(e){return e.find(e=>!e.disabled)?.id??null}function _(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??g(e):g(e)}function v(e){return e.filter(e=>!e.disabled)}function y({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}function b(){return(b=e((()=>{})))()}function x({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:o=`automatic`,loop:s=!0}){let c=t!==void 0,l=(0,S.useMemo)(()=>v(e),[e]),u=l[0]?.id??null,[d,f]=(0,S.useState)(()=>_(e,n)),[p,m]=(0,S.useState)(()=>_(e,t??n)),h=_(e,t??n),[g,y]=(0,S.useState)(()=>h?new Set([h]):new Set),b=(0,S.useId)(),x=(0,S.useRef)({}),C=_(e,c?t:d),w=_(e,p)??C??u,T=(0,S.useMemo)(()=>{if(!C||g.has(C))return g;let e=new Set(g);return e.add(C),e},[C,g]),E=t=>{let n=_(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),c||f(n),r?.(n))},D=e=>{x.current[e]?.focus()},O=e=>{if(l.length<2)return;let t=Math.max(0,l.findIndex(e=>e.id===(w??C??u))),n=a({currentIndex:t,itemCount:l.length,key:e.key,orientation:i,wrap:s});if(n===null)return;e.preventDefault();let r=l[n]?.id;r&&(m(r),D(r),o===`automatic`&&E(r))},k=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||m(C??u)},A=e=>`${b}-tab-${e}`,j=e=>`${b}-panel-${e}`;return{activationMode:o,orientation:i,selectedTabId:C,tabbableTabId:w,onTabListKeyDown:O,onTabListBlur:k,getTabElementId:A,getPanelElementId:j,getTabButtonProps:e=>{let t=e.id===C,n=e.id===w;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:A(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":j(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>m(e.id),onClick:()=>E(e.id)}},isVisited:e=>T.has(e)}}var S;function C(){return(C=e((()=>{S=t(),i()})))()}var w,T,E,D,O,k,A,j,M,N,P,F,I,L,R,z,B;function V(){return(V=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`Z6PwjQ`,D=`ZSAoAa`,O=`psYhsZ`,k=`mNDq9-`,A=`g156KO`,j=`C2mO1e`,M=`_28F3fs`,N=`UKZXTZ`,P=`jiTafe`,F=`nhD0k7`,I=`G8FICe`,L=`W50XHh`,R=`vnjXkU`,z=`Nzvfhw`,B={tabsContainer:w,clean:T,tabsWrapper:E,tabs:D,panels:O,horizontal:k,vertical:A,panelScrollable:j,tab:M,selected:N,panel:P,panelBody:F,layoutPanels:I,layoutPanel:L,layoutSection:R,layoutContent:z}})))()}function H({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,U.jsxs)(`div`,{className:e,children:[(0,U.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,U.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(B.tab,`skeletonLine`),children:`Загрузка...`})}),(0,U.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,U.jsx)(`div`,{className:i,children:(0,U.jsx)(`div`,{className:a,children:(0,U.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var U;function W(){return(W=e((()=>{i(),u(),V(),U=n(),H.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}function G({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,K.jsx)(`div`,{className:e,children:(0,K.jsx)(`div`,{className:t,children:(0,K.jsx)(`div`,{className:n,children:(0,K.jsx)(`div`,{className:r,children:(0,K.jsx)(p,{className:`radiusSm`})})})})})}var K;function q(){return(q=e((()=>{d(),K=n(),G.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}})))()}function J({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,ee.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,tabIndex:t?0:-1,className:n,children:a})}var ee;function Y(){return(Y=e((()=>{ee=n(),J.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){let o=(0,Z.jsx)(`div`,{"data-ui":`tabs-tablist`,className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":a?void 0:i??`Вкладки`,"aria-labelledby":a,"aria-live":`off`,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(B.tab,`textWrap`,e.id===t.selectedTabId&&B.selected),children:e.title},e.id))});return t.orientation===`horizontal`?(0,Z.jsx)(h,{itemSelector:`[role='tab']`,children:o}):o}var Z;function Q(){return(Q=e((()=>{i(),m(),V(),Z=n(),X.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}})))()}function te({items:e,value:t,defaultValue:n,onValueChange:i,className:a,isLoading:s,loadingText:c,orientation:u=`horizontal`,activationMode:d=`automatic`,mountStrategy:f=`unmount`,loop:p=!0,tone:m=`primary`,clean:h=!1,"aria-label":g,"aria-labelledby":_}){let v=x({items:e,value:t,defaultValue:n,onValueChange:i,orientation:u,activationMode:d,loop:p}),b=r(B.tabsContainer,h?B.clean:o.uiFilledPanel,B[u],l(m),a),S=B.tabs,C=r(B.panels,B.panelScrollable,`scrollable overscroll`),w=B.panel,T=B.panelBody;return s?(0,$.jsx)(H,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,children:[(0,$.jsx)(`div`,{className:B.tabsWrapper,children:(0,$.jsx)(X,{items:e,state:v,className:S,ariaLabel:g,ariaLabelledBy:_})}),(0,$.jsx)(`div`,{className:C,children:e.map(e=>{let t=e.id===v.selectedTabId,n=y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)});return(0,$.jsx)(J,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:n?(0,$.jsx)(`div`,{className:T,children:e.content}):null},e.id)})})]}):(0,$.jsx)(G,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function ne(){return(ne=e((()=>{i(),s(),c(),C(),V(),W(),q(),Y(),Q(),$=n(),te.__docgenInfo={description:`Простой items-based tabs-компонент.
2
2
  Сам управляет областью панели и её прокруткой.`,methods:[],displayName:`TabsBox`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"automatic"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"unmount"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "tertiary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"tertiary"`}]},description:``,defaultValue:{value:`"primary"`,computed:!1}},clean:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{J as a,V as c,b as d,y as f,Q as i,C as l,ne as n,Y as o,X as r,B as s,te as t,x as u};
@@ -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"./x-BdAuXjBq.js";import{n as i}from"./iframe-ltYEol2F.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as s,t as c}from"./ui.module-l7VCYIW-.js";import{d as l,l as u,s as ee,u as d}from"./Input-b2F0zrLw.js";function f(...e){return e.filter(Boolean).join(` `)||void 0}function p(e){return e.trim()}function m(e){return e}function h(e){return`Удалить тег «${e}»`}var g,_,v,y,b,x,S;function C(){return(C=e((()=>{g=`AoFB3K`,_=`PvaUEA`,v=`FZ-xEM`,y=`-RCqfG`,b=`ggY643`,x=`hiZq-y`,S={control:g,tagList:_,tag:v,tagText:y,removeButton:b,input:x}})))()}function w({ref:e,value:t,onChange:n,label:i,description:o,placeholder:c,size:u,disabled:d,readOnly:g=!1,error:_,onClearError:v,maxTags:y,normalizeTag:b=p,getTagKey:x=m,addOnBlur:C=!0,getRemoveButtonAriaLabel:w=h,tokensAriaLabel:k=`Добавленные теги`,inputClassName:A,className:j,id:M,name:N,form:P,required:te,maxLength:F,onKeyDown:ne,onPaste:re,onBlur:ie,onCompositionStart:ae,onCompositionEnd:oe,"aria-describedby":I,"aria-labelledby":L,...R}){let z=(0,T.useRef)(null),B=(0,T.useRef)(null),V=(0,T.useRef)(!1),[H,U]=(0,T.useState)(``),[W,G]=(0,T.useState)(``),{controlId:K,labelId:q,descriptionId:se,errorId:ce,describedBy:le}=l({id:M,hasLabel:i!=null,hasDescription:!!o,hasError:!!_}),J=y===void 0?1/0:Math.max(0,Math.floor(y)),Y=d||g,X=f(le,I),ue=f(q,L);(0,T.useImperativeHandle)(e,()=>{let e=z.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(Y)return;v?.();let r=[...t],i=new Set(r.map(e=>x(e))),a=[],o=0,s=!1;for(let t of e){let e=b(t);if(!e)continue;if(F!==void 0&&e.length>F){G(`Тег «${e}» длиннее допустимого значения.`);continue}let n=x(e);if(i.has(n)){o+=1;continue}if(r.length>=J){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),G(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?G(`Достигнуто максимальное количество тегов: ${J}.`):o>0&&G(`Такой тег уже добавлен.`)},Q=()=>H?(Z(H.split(O)),U(``),!0):!1,$=e=>{if(Y)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),v?.(),G(`Удалён тег «${r}».`),z.current?.focus())},de=e=>{if(ne?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||V.current||Y)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&H.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(re?.(e),e.defaultPrevented||Y)return;let t=e.clipboardData.getData(`text`);if(!D.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??H.length,r=e.currentTarget.selectionEnd??n,i=`${H.slice(0,n)}${t}${H.slice(r)}`;Z(i.split(O)),U(``)};return(0,E.jsxs)(ee,{label:i,description:o,disabled:d,className:j,size:u,error:_,controlId:K,labelId:q,descriptionId:se,errorId:ce,children:[(0,E.jsxs)(`div`,{ref:B,className:a(s.uiControl,_&&s.invalid,S.control),"data-disabled":d?``:void 0,"data-readonly":g?``:void 0,"data-invalid":_?``:void 0,onClick:()=>z.current?.focus(),children:[t.length>0&&(0,E.jsx)(`ul`,{className:S.tagList,"aria-label":k,children:t.map((e,t)=>(0,E.jsxs)(`li`,{className:S.tag,children:[(0,E.jsx)(`span`,{className:S.tagText,children:e}),!Y&&(0,E.jsx)(`button`,{type:`button`,className:S.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":w(e,t),children:(0,E.jsx)(r,{"aria-hidden":`true`})})]},`${x(e)}-${t}`))}),(0,E.jsx)(`input`,{...R,ref:z,id:K,form:P,disabled:d,readOnly:g,required:te&&t.length===0,maxLength:F,value:H,placeholder:t.length===0?c:void 0,"aria-invalid":!!_||void 0,"aria-labelledby":ue,"aria-describedby":X,className:a(S.input,A),onChange:e=>{let t=e.target.value,n=D.test(t);if(V.current)U(t);else if(n){let e=t.split(O),n=D.test(t.at(-1)??``)?``:e.pop()??``;Z(e),U(n)}else U(t);(V.current||!n)&&v?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{V.current=!0,ae?.(e)},onCompositionEnd:e=>{V.current=!1,oe?.(e)},onBlur:e=>{ie?.(e);let t=e.relatedTarget,n=t instanceof Node&&B.current?.contains(t);!e.defaultPrevented&&!n&&C&&!Y&&Q()}}),N&&t.map((e,t)=>(0,E.jsx)(`input`,{type:`hidden`,name:N,value:e,form:P,disabled:d},`${x(e)}-${t}`))]}),(0,E.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:W})]})}var T,E,D,O;function k(){return(k=e((()=>{T=t(),o(),n(),u(),d(),c(),C(),E=i(),D=/[,\r\n]/,O=/[,\r\n]+/,w.__docgenInfo={description:"Controlled-поле для создания коротких строковых тегов.\n\nНовое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\nтолько незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.",methods:[],displayName:`TagInput`,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:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLInputElement`}],raw:`Ref<HTMLInputElement>`},description:"Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop."},error:{required:!1,tsType:{name:`string`},description:"Сообщение валидации, связанное с полем через `aria-describedby`."},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Сбрасывает внешнюю ошибку после изменения черновика или набора тегов.`},readOnly:{required:!1,tsType:{name:`boolean`},description:`Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст.`,defaultValue:{value:`false`,computed:!1}},maxTags:{required:!1,tsType:{name:`number`},description:`Максимальное количество тегов. Отсутствие значения не ограничивает набор.`},normalizeTag:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Нормализует введённое значение перед проверкой дубликата и добавлением.
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-Dt9SO3SL.js";import{n as i}from"./iframe-1Nw_zWMi.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as s,t as c}from"./ui.module-l7VCYIW-.js";import{d as l,l as u,s as ee,u as d}from"./Input-7N70tL0u.js";function f(...e){return e.filter(Boolean).join(` `)||void 0}function p(e){return e.trim()}function m(e){return e}function h(e){return`Удалить тег «${e}»`}var g,_,v,y,b,x,S;function C(){return(C=e((()=>{g=`AoFB3K`,_=`PvaUEA`,v=`FZ-xEM`,y=`-RCqfG`,b=`ggY643`,x=`hiZq-y`,S={control:g,tagList:_,tag:v,tagText:y,removeButton:b,input:x}})))()}function w({ref:e,value:t,onChange:n,label:i,description:o,placeholder:c,size:u,disabled:d,readOnly:g=!1,error:_,onClearError:v,maxTags:y,normalizeTag:b=p,getTagKey:x=m,addOnBlur:C=!0,getRemoveButtonAriaLabel:w=h,tokensAriaLabel:k=`Добавленные теги`,inputClassName:A,className:j,id:M,name:N,form:P,required:te,maxLength:F,onKeyDown:ne,onPaste:re,onBlur:ie,onCompositionStart:ae,onCompositionEnd:oe,"aria-describedby":I,"aria-labelledby":L,...R}){let z=(0,T.useRef)(null),B=(0,T.useRef)(null),V=(0,T.useRef)(!1),[H,U]=(0,T.useState)(``),[W,G]=(0,T.useState)(``),{controlId:K,labelId:q,descriptionId:se,errorId:ce,describedBy:le}=l({id:M,hasLabel:i!=null,hasDescription:!!o,hasError:!!_}),J=y===void 0?1/0:Math.max(0,Math.floor(y)),Y=d||g,X=f(le,I),ue=f(q,L);(0,T.useImperativeHandle)(e,()=>{let e=z.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(Y)return;v?.();let r=[...t],i=new Set(r.map(e=>x(e))),a=[],o=0,s=!1;for(let t of e){let e=b(t);if(!e)continue;if(F!==void 0&&e.length>F){G(`Тег «${e}» длиннее допустимого значения.`);continue}let n=x(e);if(i.has(n)){o+=1;continue}if(r.length>=J){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),G(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?G(`Достигнуто максимальное количество тегов: ${J}.`):o>0&&G(`Такой тег уже добавлен.`)},Q=()=>H?(Z(H.split(O)),U(``),!0):!1,$=e=>{if(Y)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),v?.(),G(`Удалён тег «${r}».`),z.current?.focus())},de=e=>{if(ne?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||V.current||Y)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&H.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(re?.(e),e.defaultPrevented||Y)return;let t=e.clipboardData.getData(`text`);if(!D.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??H.length,r=e.currentTarget.selectionEnd??n,i=`${H.slice(0,n)}${t}${H.slice(r)}`;Z(i.split(O)),U(``)};return(0,E.jsxs)(ee,{label:i,description:o,disabled:d,className:j,size:u,error:_,controlId:K,labelId:q,descriptionId:se,errorId:ce,children:[(0,E.jsxs)(`div`,{ref:B,className:a(s.uiControl,_&&s.invalid,S.control),"data-disabled":d?``:void 0,"data-readonly":g?``:void 0,"data-invalid":_?``:void 0,onClick:()=>z.current?.focus(),children:[t.length>0&&(0,E.jsx)(`ul`,{className:S.tagList,"aria-label":k,children:t.map((e,t)=>(0,E.jsxs)(`li`,{className:S.tag,children:[(0,E.jsx)(`span`,{className:S.tagText,children:e}),!Y&&(0,E.jsx)(`button`,{type:`button`,className:S.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":w(e,t),children:(0,E.jsx)(r,{"aria-hidden":`true`})})]},`${x(e)}-${t}`))}),(0,E.jsx)(`input`,{...R,ref:z,id:K,form:P,disabled:d,readOnly:g,required:te&&t.length===0,maxLength:F,value:H,placeholder:t.length===0?c:void 0,"aria-invalid":!!_||void 0,"aria-labelledby":ue,"aria-describedby":X,className:a(S.input,A),onChange:e=>{let t=e.target.value,n=D.test(t);if(V.current)U(t);else if(n){let e=t.split(O),n=D.test(t.at(-1)??``)?``:e.pop()??``;Z(e),U(n)}else U(t);(V.current||!n)&&v?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{V.current=!0,ae?.(e)},onCompositionEnd:e=>{V.current=!1,oe?.(e)},onBlur:e=>{ie?.(e);let t=e.relatedTarget,n=t instanceof Node&&B.current?.contains(t);!e.defaultPrevented&&!n&&C&&!Y&&Q()}}),N&&t.map((e,t)=>(0,E.jsx)(`input`,{type:`hidden`,name:N,value:e,form:P,disabled:d},`${x(e)}-${t}`))]}),(0,E.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:W})]})}var T,E,D,O;function k(){return(k=e((()=>{T=t(),o(),n(),u(),d(),c(),C(),E=i(),D=/[,\r\n]/,O=/[,\r\n]+/,w.__docgenInfo={description:"Controlled-поле для создания коротких строковых тегов.\n\nНовое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\nтолько незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.",methods:[],displayName:`TagInput`,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:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLInputElement`}],raw:`Ref<HTMLInputElement>`},description:"Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop."},error:{required:!1,tsType:{name:`string`},description:"Сообщение валидации, связанное с полем через `aria-describedby`."},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Сбрасывает внешнюю ошибку после изменения черновика или набора тегов.`},readOnly:{required:!1,tsType:{name:`boolean`},description:`Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст.`,defaultValue:{value:`false`,computed:!1}},maxTags:{required:!1,tsType:{name:`number`},description:`Максимальное количество тегов. Отсутствие значения не ограничивает набор.`},normalizeTag:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Нормализует введённое значение перед проверкой дубликата и добавлением.
2
2
  По умолчанию удаляет пробелы в начале и конце.`,defaultValue:{value:`function defaultNormalizeTag(value: string) {
3
3
  return value.trim();
4
4
  }`,computed:!1}},getTagKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-ltYEol2F.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TagInput-D9gedxBU.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:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-1Nw_zWMi.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TagInput-DuJLeiyT.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
2
  render: renderTagInputStory,
3
3
  args: {
4
4
  label: "Теги материала",
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-ltYEol2F.js";import{a as r,i}from"./utils-tg3ibbzi.js";function a({size:e,color:t,weight:n,italic:i,uppercase:a,wrap:o,className:c}){return(0,s.useMemo)(()=>{let s=[];return e&&s.push(u[e]),n&&s.push(d[n]),o&&s.push(f[o]),i&&s.push(`fontItalic`),a&&s.push(`textUppercase`),t&&s.push(l[t]),r(...s,c)},[e,n,t,i,a,o,c])}function o({children:e,as:t,style:n,role:r,size:i,color:o,weight:s,italic:l,uppercase:u,wrap:d,className:f,...p}){let m=a({size:i,color:o,weight:s,italic:l,uppercase:u,wrap:d,className:f});return(0,c.jsx)(t||`span`,{...p,role:r,className:m,style:n,children:e})}var s,c,l,u,d,f;function p(){return(p=e((()=>{s=t(),i(),c=n(),l={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},u={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},d={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},f={wrap:`textWrap`,noWrap:`textNoWrap`},o.__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:``},role:{required:!1,tsType:{name:`AriaRole`},description:``},children:{required:!0,tsType:{name:`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:``}},composes:[`AriaAttributes`]}})))()}export{p as n,o as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-1Nw_zWMi.js";import{a as r,i}from"./utils-tg3ibbzi.js";function a({size:e,color:t,weight:n,italic:i,uppercase:a,wrap:o,className:c}){return(0,s.useMemo)(()=>{let s=[];return e&&s.push(u[e]),n&&s.push(d[n]),o&&s.push(f[o]),i&&s.push(`fontItalic`),a&&s.push(`textUppercase`),t&&s.push(l[t]),r(...s,c)},[e,n,t,i,a,o,c])}function o({children:e,as:t,style:n,role:r,size:i,color:o,weight:s,italic:l,uppercase:u,wrap:d,className:f,...p}){let m=a({size:i,color:o,weight:s,italic:l,uppercase:u,wrap:d,className:f});return(0,c.jsx)(t||`span`,{...p,role:r,className:m,style:n,children:e})}var s,c,l,u,d,f;function p(){return(p=e((()=>{s=t(),i(),c=n(),l={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},u={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},d={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},f={wrap:`textWrap`,noWrap:`textNoWrap`},o.__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:``},role:{required:!1,tsType:{name:`AriaRole`},description:``},children:{required:!0,tsType:{name:`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:``}},composes:[`AriaAttributes`]}})))()}export{p as n,o as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./ui.module-l7VCYIW-.js";import{d as o,l as s,s as c,u as l}from"./Input-b2F0zrLw.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-1Nw_zWMi.js";import{a as n,i as r}from"./utils-tg3ibbzi.js";import{n as i,t as a}from"./ui.module-l7VCYIW-.js";import{d as o,l as s,s as c,u as l}from"./Input-7N70tL0u.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,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.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-Bdsl8TP-.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-BwqxG2lk.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-1Nw_zWMi.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-DR4JL0hD.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-DvQ2dDNh.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.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-ltYEol2F.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./Textarea-DXOTj2Y7.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:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-1Nw_zWMi.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./Textarea-BImI6Q6v.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
2
  args: {
3
3
  value: "Первичный комментарий"
4
4
  },
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-ltYEol2F.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{g as a,s as o}from"./odata-service-CWkHASdw-DAt28ZWr.js";import{h as s,m as c}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{i as l,r as u}from"./date-segments-DeoMkKv9.js";function d(e=0,t=0){return c(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 c(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):c(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(),s(),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-1Nw_zWMi.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{g as a,s as o}from"./odata-service-CWkHASdw-DAt28ZWr.js";import{h as s,m as c}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{i as l,r as u}from"./date-segments-DeoMkKv9.js";function d(e=0,t=0){return c(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 c(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):c(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(),s(),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,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{n,t as r}from"./createControlledStoryRender-BouhvX-R.js";import{n as i,t as a}from"./TimePanel-DroAbbvD.js";var o,s,c,l,u,d,f;function p(){return(p=e((()=>{n(),i(),o=t(),{fn:s}=__STORYBOOK_MODULE_TEST__,c={title:`UI/Internal/DateTime/TimePanel`,component:a,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=r((e,t)=>{let n=e.value;return(0,o.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,o.jsx)(a,{...e,value:n,onChange:(r,i)=>{e.onChange(r,i),t({value:new Date(n.getFullYear(),n.getMonth(),n.getDate(),r,i,0,0)})}})})}),u={render:l},d={render:l,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)}},u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.js";import{n,t as r}from"./createControlledStoryRender-BouhvX-R.js";import{n as i,t as a}from"./TimePanel-Cg2G5Hab.js";var o,s,c,l,u,d,f;function p(){return(p=e((()=>{n(),i(),o=t(),{fn:s}=__STORYBOOK_MODULE_TEST__,c={title:`UI/Internal/DateTime/TimePanel`,component:a,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=r((e,t)=>{let n=e.value;return(0,o.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,o.jsx)(a,{...e,value:n,onChange:(r,i)=>{e.onChange(r,i),t({value:new Date(n.getFullYear(),n.getMonth(),n.getDate(),r,i,0,0)})}})})}),u={render:l},d={render:l,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)}},u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
2
2
  render: renderTimePanelStory
3
3
  }`,...u.parameters?.docs?.source},description:{story:`Демонстрирует базовую wheel-панель времени.`,...u.parameters?.docs?.description}}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
4
4
  render: renderTimePanelStory,
@@ -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-ltYEol2F.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-l7VCYIW-.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-1Nw_zWMi.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-l7VCYIW-.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,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.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-Bdsl8TP-.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-BYU9hS62.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-1Nw_zWMi.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-DR4JL0hD.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-CmyyubM8.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.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-ltYEol2F.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./Toggle-BUSzQ1ww.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:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-1Nw_zWMi.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./Toggle-CroC7YOK.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
2
  render: renderToggleStory,
3
3
  args: {
4
4
  label: "Режим синхронизации",
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-1Nw_zWMi.js";import{i as r,n as i,r as a,t as o}from"./formatMultiSelectOptionCount-xGq1uM2H.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-ZEBy3EVT.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 o(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:i=`Выберите значения`,size:a,nodes:o,value:f,onChange:v,query:x,defaultQuery:S,onQuery:C,isLoading:w,error:T,fieldError:E,required:D,optionsLayout:O=`tree`,defaultExpandedCodeKeys:k}){let[A,j]=(0,y.useState)(!1),M=(0,y.useMemo)(()=>p(o),[o]),{draftValue:N,setDraftValue:P,prepareOpen:F}=r({value:f,open:A,onCommit:v,isEqual:(e,t)=>_(e,t,M)}),I=A?N:f,L=(0,y.useMemo)(()=>d(I,M),[I,M]),R=(0,y.useMemo)(()=>s(L,M),[L,M]),z=(0,y.useMemo)(()=>new Set([...M.nodeById.keys()].filter(e=>M.nodeById.get(e)?.disabled!==!0&&!m(e,L,M)&&!R.selectedIds.has(e)&&u(M,[e]).size===0)),[L,R.selectedIds,M]),B=(0,y.useMemo)(()=>g(L,M),[L,M]);return(0,b.jsx)(h,{label:e,description:t,disabled:n,placeholder:i,size:a,nodes:o,selectedIds:R.selectedIds,partialIds:R.partialIds,selectionMode:`multi`,optionsLayout:O,defaultExpandedCodeKeys:k,unavailableNodeIds:z,open:A,onOpenChange:e=>{e&&!A&&F(),j(e)},bulkActions:{onSelectAll:()=>{P(l(u(M),M))},onDeselectAll:()=>P({})},triggerMode:`search`,selectedSummary:B,query:x,defaultQuery:S,onQuery:C,onNodeActivate:(e,t)=>{P(c({},e.id,M,t))},onNodeToggleSelection:(e,t)=>{P(n=>c(n,e.id,M,t))},onClearSelection:()=>{P({}),A||v({})},isLoading:w,error:T,fieldError:E,required:D})}var y,b;function x(){return(x=e((()=>{y=t(),i(),a(),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:``},fieldError:{required:!1,tsType:{name:`string`},description:`Ошибка выбранного значения; error сообщает о сбое загрузки дерева в popup.`},required:{required:!1,tsType:{name:`boolean`},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};
@@ -0,0 +1,22 @@
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-1Nw_zWMi.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-DR4JL0hD.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,u as S}from"./TreeMultiSelect.stories-BNsE1zgF.js";function C(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
2
+ `,(0,T.jsx)(u,{children:`TreeMultiSelect`}),`
3
+ `,(0,T.jsx)(o,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
4
+ `,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
5
+ `,(0,T.jsxs)(t.p,{children:[`В режиме `,(0,T.jsx)(t.code,{children:`tree`}),` строки образуют `,(0,T.jsx)(t.code,{children:`treegrid`}),`: checkbox меняет только черновик и оставляет список открытым, а кнопка узла выбирает только этот узел, сразу применяет значение и закрывает список. При фокусе строки `,(0,T.jsx)(t.code,{children:`Space`}),` меняет черновик, `,(0,T.jsx)(t.code,{children:`Enter`}),` сразу применяет текущий узел, стрелки перемещают фокус и раскрывают ветки. Режим `,(0,T.jsx)(t.code,{children:`columns`}),` остаётся диалогом с тем же разделением действий checkbox и кнопки.`]}),`
6
+ `,(0,T.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
7
+ `,(0,T.jsx)(f,{}),`
8
+ `,(0,T.jsx)(i,{of:_}),`
9
+ `,(0,T.jsx)(t.h2,{id:`сценарии`,children:`Сценарии`}),`
10
+ `,(0,T.jsx)(d,{of:_}),`
11
+ `,(0,T.jsx)(d,{of:v}),`
12
+ `,(0,T.jsx)(d,{of:h}),`
13
+ `,(0,T.jsx)(d,{of:y}),`
14
+ `,(0,T.jsx)(d,{of:x}),`
15
+ `,(0,T.jsx)(d,{of:p}),`
16
+ `,(0,T.jsx)(d,{of:m}),`
17
+ `,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`required`}),` помечает набор узлов как обязательный. `,(0,T.jsx)(t.code,{children:`fieldError`}),` показывает ошибку значения под полем и задаёт `,(0,T.jsx)(t.code,{children:`aria-invalid`}),`; `,(0,T.jsx)(t.code,{children:`error`}),` по-прежнему описывает ошибку загрузки дерева в popup. Проверку выбора выполняет форма.`]}),`
18
+ `,(0,T.jsx)(d,{of:b}),`
19
+ `,(0,T.jsx)(t.h2,{id:`api`,children:`API`}),`
20
+ `,(0,T.jsx)(l,{of:g}),`
21
+ `,(0,T.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
22
+ `,(0,T.jsx)(a,{includePrimary:!1})]})}function w(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,T.jsx)(t,{...e,children:(0,T.jsx)(C,{...e})}):C(e)}var T;function E(){return(E=e((()=>{T=t(),r(),c(),S()})))()}E();export{w as default};