@ryuzaki13/react-foundation-ui 1.8.2 → 1.8.4

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 (423) hide show
  1. package/dist/advanced-search/index.js +8 -8
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DGElHRTJ.js → CalendarView-BJx6akIp.js} +2 -2
  7. package/dist/chunks/{CalendarView-DGElHRTJ.js.map → CalendarView-BJx6akIp.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js → TextEditorLexicalClient-Ca89d-Db.js} +6 -6
  10. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js.map → TextEditorLexicalClient-Ca89d-Db.js.map} +1 -1
  11. package/dist/chunks/{badge-DMM8cOHd.js → badge-DUI2ET6q.js} +2 -2
  12. package/dist/chunks/{badge-DMM8cOHd.js.map → badge-DUI2ET6q.js.map} +1 -1
  13. package/dist/chunks/{base-table-DNSYOO9t.js → base-table-CsnUiMTe.js} +2 -2
  14. package/dist/chunks/{base-table-DNSYOO9t.js.map → base-table-CsnUiMTe.js.map} +1 -1
  15. package/dist/chunks/{button-BsvHGWPc.js → button-C53OkqTg.js} +3 -3
  16. package/dist/chunks/{button-BsvHGWPc.js.map → button-C53OkqTg.js.map} +1 -1
  17. package/dist/chunks/{check-box-sfGjYczQ.js → check-box-CC8CDnSR.js} +3 -3
  18. package/dist/chunks/{check-box-sfGjYczQ.js.map → check-box-CC8CDnSR.js.map} +1 -1
  19. package/dist/chunks/context-menu-C8sA7xCN.js +525 -0
  20. package/dist/chunks/context-menu-C8sA7xCN.js.map +1 -0
  21. package/dist/chunks/{date-input-C4GcKul6.js → date-input-g6l1iDmf.js} +5 -5
  22. package/dist/chunks/{date-input-C4GcKul6.js.map → date-input-g6l1iDmf.js.map} +1 -1
  23. package/dist/chunks/defaultRenderers-Dbhg2hHc.js +38 -0
  24. package/dist/chunks/defaultRenderers-Dbhg2hHc.js.map +1 -0
  25. package/dist/chunks/{input-CCdBtl-C.js → input-d08WN5FV.js} +2 -2
  26. package/dist/chunks/{input-CCdBtl-C.js.map → input-d08WN5FV.js.map} +1 -1
  27. package/dist/chunks/{input-files-TXdXrSAs.js → input-files-_NdSQM_3.js} +3 -3
  28. package/dist/chunks/{input-files-TXdXrSAs.js.map → input-files-_NdSQM_3.js.map} +1 -1
  29. package/dist/chunks/{input-search-Ca8iqeK2.js → input-search-BjtTMoRu.js} +2 -2
  30. package/dist/chunks/{input-search-Ca8iqeK2.js.map → input-search-BjtTMoRu.js.map} +1 -1
  31. package/dist/chunks/{modal-DLRYn-Lr.js → modal-Bar-j5a4.js} +2 -2
  32. package/dist/chunks/{modal-DLRYn-Lr.js.map → modal-Bar-j5a4.js.map} +1 -1
  33. package/dist/chunks/multi-select-Cvjz9W07.js +466 -0
  34. package/dist/chunks/multi-select-Cvjz9W07.js.map +1 -0
  35. package/dist/chunks/picker-0I1yMKIY.js +435 -0
  36. package/dist/chunks/picker-0I1yMKIY.js.map +1 -0
  37. package/dist/chunks/{radio-group-BAeJjyZ5.js → radio-group-DhpP7JSJ.js} +2 -2
  38. package/dist/chunks/{radio-group-BAeJjyZ5.js.map → radio-group-DhpP7JSJ.js.map} +1 -1
  39. package/dist/chunks/select-CUQ91FIc.js +363 -0
  40. package/dist/chunks/select-CUQ91FIc.js.map +1 -0
  41. package/dist/chunks/{table-RO4dfMAj.js → table-z9kyd9U3.js} +2 -2
  42. package/dist/chunks/{table-RO4dfMAj.js.map → table-z9kyd9U3.js.map} +1 -1
  43. package/dist/chunks/{ui.module-DHVTOqZ0.js → ui.module-BsDio9A3.js} +4 -3
  44. package/dist/chunks/ui.module-BsDio9A3.js.map +1 -0
  45. package/dist/chunks/{uiClasses-UkaejTdf.js → uiClasses-BVwFzzsr.js} +2 -2
  46. package/dist/chunks/{uiClasses-UkaejTdf.js.map → uiClasses-BVwFzzsr.js.map} +1 -1
  47. package/dist/chunks/useODataSelectBase-DR4PrY1j.js +117 -0
  48. package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -0
  49. package/dist/context-menu/components/ContextMenu.d.ts +2 -1
  50. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  51. package/dist/context-menu/components/DropdownMenu.d.ts +2 -1
  52. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  53. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  54. package/dist/context-menu/components/MenuItem.d.ts +6 -6
  55. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  56. package/dist/context-menu/components/MenuRoot.d.ts +1 -1
  57. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  58. package/dist/context-menu/index.js +1 -1
  59. package/dist/date-input/index.js +2 -2
  60. package/dist/date-time-input/index.js +3 -3
  61. package/dist/disclosure/index.js +2 -2
  62. package/dist/drop-zone/index.js +1 -1
  63. package/dist/expandable-action-panel/index.js +1 -1
  64. package/dist/image/index.js +4 -4
  65. package/dist/input/index.js +1 -1
  66. package/dist/input-date-time/index.js +2 -2
  67. package/dist/input-file/index.js +2 -2
  68. package/dist/input-files/index.js +1 -1
  69. package/dist/input-image/index.js +2 -2
  70. package/dist/input-search/index.js +1 -1
  71. package/dist/layout-picker/index.js +66 -68
  72. package/dist/layout-picker/index.js.map +1 -1
  73. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  74. package/dist/listbox/Listbox.d.ts +1 -1
  75. package/dist/listbox/Listbox.d.ts.map +1 -1
  76. package/dist/listbox/index.js +71 -59
  77. package/dist/listbox/index.js.map +1 -1
  78. package/dist/modal/index.js +1 -1
  79. package/dist/multi-select/index.js +2 -2
  80. package/dist/multi-select/ui/MultiSelect.d.ts +11 -1
  81. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  82. package/dist/multi-select/ui/defaultRenderers.d.ts +6 -4
  83. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  84. package/dist/multi-select/ui/index.d.ts +0 -1
  85. package/dist/multi-select/ui/index.d.ts.map +1 -1
  86. package/dist/notifications/index.js +1 -1
  87. package/dist/option/CustomOptionButton.d.ts +6 -0
  88. package/dist/option/CustomOptionButton.d.ts.map +1 -0
  89. package/dist/option/Option.d.ts +14 -0
  90. package/dist/option/Option.d.ts.map +1 -0
  91. package/dist/option/OptionButton.d.ts +8 -0
  92. package/dist/option/OptionButton.d.ts.map +1 -0
  93. package/dist/option/OptionCode.d.ts +6 -0
  94. package/dist/option/OptionCode.d.ts.map +1 -0
  95. package/dist/option/OptionContent.d.ts +19 -0
  96. package/dist/option/OptionContent.d.ts.map +1 -0
  97. package/dist/option/OptionHotkey.d.ts +6 -0
  98. package/dist/option/OptionHotkey.d.ts.map +1 -0
  99. package/dist/option/OptionIcon.d.ts +6 -0
  100. package/dist/option/OptionIcon.d.ts.map +1 -0
  101. package/dist/option/OptionLink.d.ts +8 -0
  102. package/dist/option/OptionLink.d.ts.map +1 -0
  103. package/dist/option/OptionText.d.ts +6 -0
  104. package/dist/option/OptionText.d.ts.map +1 -0
  105. package/dist/option/index.d.ts +10 -0
  106. package/dist/option/index.d.ts.map +1 -0
  107. package/dist/option/index.js +112 -0
  108. package/dist/option/index.js.map +1 -0
  109. package/dist/picker/PickerClearButton.d.ts +9 -0
  110. package/dist/picker/PickerClearButton.d.ts.map +1 -0
  111. package/dist/picker/PickerOptions.d.ts +22 -0
  112. package/dist/picker/PickerOptions.d.ts.map +1 -0
  113. package/dist/picker/PickerPlaceholder.d.ts +14 -0
  114. package/dist/picker/PickerPlaceholder.d.ts.map +1 -0
  115. package/dist/picker/PickerPopup.d.ts +4 -3
  116. package/dist/picker/PickerPopup.d.ts.map +1 -1
  117. package/dist/picker/PickerSelectedToken.d.ts +7 -0
  118. package/dist/picker/PickerSelectedToken.d.ts.map +1 -0
  119. package/dist/picker/PickerTrigger.d.ts +29 -0
  120. package/dist/picker/PickerTrigger.d.ts.map +1 -0
  121. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  122. package/dist/picker/PickerTriggerInput.d.ts +1 -2
  123. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  124. package/dist/picker/index.d.ts +5 -0
  125. package/dist/picker/index.d.ts.map +1 -1
  126. package/dist/picker/index.js +2 -2
  127. package/dist/picker/model/extractPickerTextContent.d.ts +1 -1
  128. package/dist/picker/model/extractPickerTextContent.d.ts.map +1 -1
  129. package/dist/preset-range-date-input/index.js +1 -1
  130. package/dist/preset-select/PresetSelect.d.ts +1 -1
  131. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  132. package/dist/preset-select/index.js +1 -1
  133. package/dist/preset-select/index.js.map +1 -1
  134. package/dist/radio-button/index.js +2 -2
  135. package/dist/radio-group/index.js +1 -1
  136. package/dist/select/Select.d.ts +4 -2
  137. package/dist/select/Select.d.ts.map +1 -1
  138. package/dist/select/SelectOptionGroup.d.ts +1 -1
  139. package/dist/select/SelectOptionGroup.d.ts.map +1 -1
  140. package/dist/select/index.js +1 -1
  141. package/dist/simple-table/index.js +1 -1
  142. package/dist/slider/index.js +3 -3
  143. package/dist/state-select/StateSelect.d.ts +1 -1
  144. package/dist/state-select/StateSelect.d.ts.map +1 -1
  145. package/dist/state-select/index.js +1 -1
  146. package/dist/state-select/index.js.map +1 -1
  147. package/dist/styles.css +1 -1
  148. package/dist/switch/index.js +1 -1
  149. package/dist/table/index.js +1 -1
  150. package/dist/table-sorting/index.js +1 -1
  151. package/dist/tabs/index.js +2 -2
  152. package/dist/tag-input/index.js +2 -2
  153. package/dist/text-editor/index.js +1 -1
  154. package/dist/textarea/index.js +2 -2
  155. package/dist/toggle/index.js +1 -1
  156. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  157. package/dist/tree-select/TreeNodeContent.d.ts +2 -1
  158. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  159. package/dist/tree-select/TreePickerBase.d.ts +4 -1
  160. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  161. package/dist/tree-select/index.js +322 -353
  162. package/dist/tree-select/index.js.map +1 -1
  163. package/dist/tree-table/index.js +1 -1
  164. package/package.json +5 -1
  165. package/src/styles/themes/_interactive-surface.scss +67 -0
  166. package/storybook-static/assets/{Badge-Dis0WdSI.js → Badge-BazfGubN.js} +1 -1
  167. package/storybook-static/assets/{Badge.stories-DKUJOyg3.js → Badge.stories-VRDt3jMW.js} +1 -1
  168. package/storybook-static/assets/{BadgeList-C_ImRsat.js → BadgeList-CCz0WCRb.js} +1 -1
  169. package/storybook-static/assets/{Button-BSsRzaxX.js → Button-CMYD3NJ-.js} +1 -1
  170. package/storybook-static/assets/{Button-DxGg9rB3.js → Button-DWcNl5Zj.js} +1 -1
  171. package/storybook-static/assets/{Button.stories-fHvDvt2w.js → Button.stories-B3Apb2Ql.js} +1 -1
  172. package/storybook-static/assets/{CalendarView-BFcwl9Vq.js → CalendarView-PEudhNak.js} +1 -1
  173. package/storybook-static/assets/{CheckBox-CSbi2BEU.js → CheckBox-BJzDZz1m.js} +1 -1
  174. package/storybook-static/assets/CheckBox-DWrG0yT0.css +1 -0
  175. package/storybook-static/assets/{CheckBox-SuVeN-FY.js → CheckBox-yw29uS-5.js} +1 -1
  176. package/storybook-static/assets/{CheckBox.stories-C6PF0zG1.js → CheckBox.stories-s55oWii9.js} +1 -1
  177. package/storybook-static/assets/{Color-6AOWCN3U-DX3p6XEG.js → Color-6AOWCN3U-Cv5TeHjl.js} +1 -1
  178. package/storybook-static/assets/{ContextMenu-f0QZPgBQ.js → ContextMenu-B4wKUE8V.js} +1 -1
  179. package/storybook-static/assets/ContextMenu-CFPrlO2u.css +1 -0
  180. package/storybook-static/assets/ContextMenu-Py3xGtjx.js +1 -0
  181. package/storybook-static/assets/ContextMenu.stories-D0tE2Py7.js +37 -0
  182. package/storybook-static/assets/CustomOptionButton-DfUeGOyK.js +1 -0
  183. package/storybook-static/assets/{DateInput-C0K0JvWe.js → DateInput-CAh9jnPm.js} +1 -1
  184. package/storybook-static/assets/{DateInput-BmL4c3wO.js → DateInput-PGhcIb-N.js} +1 -1
  185. package/storybook-static/assets/{DateInput.stories-65WMYAML.js → DateInput.stories-3PkULX39.js} +1 -1
  186. package/storybook-static/assets/{DateRangePresetSelect-DVAqXJt1.js → DateRangePresetSelect-BAul11Hu.js} +1 -1
  187. package/storybook-static/assets/{DateRangePresetSelect-DdpNa-Yj.js → DateRangePresetSelect-QD9hMhTi.js} +1 -1
  188. package/storybook-static/assets/DateRangePresetSelect.stories-DHZcrIJ5.js +19 -0
  189. package/storybook-static/assets/{Detail-1rmVP04K.js → Detail-B4bZrxtj.js} +1 -1
  190. package/storybook-static/assets/{Detail.stories-CW2YXAPy.js → Detail.stories-BqZjQl2L.js} +1 -1
  191. package/storybook-static/assets/{Dialog-CszRheXL.js → Dialog-DnXPYFBh.js} +1 -1
  192. package/storybook-static/assets/{Dialog-DcdGv_Bv.js → Dialog-r6FZVhKu.js} +1 -1
  193. package/storybook-static/assets/{Dialog.stories-CN9vtGuI.js → Dialog.stories-BpFQ8-23.js} +1 -1
  194. package/storybook-static/assets/{Disclosure-DWeZZ2i8.js → Disclosure-DOU_WgGj.js} +1 -1
  195. package/storybook-static/assets/{Disclosure.stories-pZXR5BOM.js → Disclosure.stories-C9wGRzxY.js} +1 -1
  196. package/storybook-static/assets/{DisclosureGroup-BWba17wI.js → DisclosureGroup-D6JXQUMx.js} +1 -1
  197. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BYN3Mg4U.js → DocsRenderer-JROSPFPF-CgT68qHp.js} +1 -1
  198. package/storybook-static/assets/{DropZone-ByDIyQgI.js → DropZone-B_9dX3jy.js} +1 -1
  199. package/storybook-static/assets/{DropZone-BCe20YiO.js → DropZone-Cx2F0t9p.js} +1 -1
  200. package/storybook-static/assets/{DropZone.stories-CLXe7D8H.js → DropZone.stories-quFSsVRn.js} +1 -1
  201. package/storybook-static/assets/{DropdownMenu-BD-pc32j.js → DropdownMenu-BOSAD3oH.js} +1 -1
  202. package/storybook-static/assets/{ExpandableActionPanel-v-DZaEKX.js → ExpandableActionPanel-D6NDXTu4.js} +1 -1
  203. package/storybook-static/assets/{ExpandableActionPanel.stories-BhHYM4mJ.js → ExpandableActionPanel.stories-CVjY1iX5.js} +1 -1
  204. package/storybook-static/assets/{Flex-DukB58MF.js → Flex-BLsAxNZH.js} +1 -1
  205. package/storybook-static/assets/{Flex.stories-DQmoW5jb.js → Flex.stories-COgd-m61.js} +1 -1
  206. package/storybook-static/assets/{FloatingPopover-fnwAyZil.js → FloatingPopover-BHoALAyc.js} +1 -1
  207. package/storybook-static/assets/{FormattedTableCell-CK1yXePp.js → FormattedTableCell-jahnzzXB.js} +1 -1
  208. package/storybook-static/assets/{Grid-BoLaxbR_.js → Grid-D6u5WD3Q.js} +1 -1
  209. package/storybook-static/assets/{Grid.stories-CSuOTbao.js → Grid.stories-CcoCu0LK.js} +1 -1
  210. package/storybook-static/assets/{ImageCropper.stories-BRi_qlO4.js → ImageCropper.stories-BltZdz_w.js} +1 -1
  211. package/storybook-static/assets/{ImageRenderer-BiV2g53B.js → ImageRenderer-BTz3VRCH.js} +1 -1
  212. package/storybook-static/assets/{ImageRenderer.stories-Da7QE7_Q.js → ImageRenderer.stories-Bgaa216V.js} +1 -1
  213. package/storybook-static/assets/{ImageView.stories-DSFBxOa6.js → ImageView.stories-DNR6oWH-.js} +1 -1
  214. package/storybook-static/assets/{ImageViewer.stories-D2rcovap.js → ImageViewer.stories-BN4RTTO5.js} +2 -2
  215. package/storybook-static/assets/{ImageViewerRuntime-B2CS1UFL.js → ImageViewerRuntime-DaiwPOBp.js} +1 -1
  216. package/storybook-static/assets/{Input-CVs7SVMJ.js → Input-Ctu1FLAo.js} +1 -1
  217. package/storybook-static/assets/{Input-BIy4zhlA.js → Input-gekKw4Qs.js} +1 -1
  218. package/storybook-static/assets/{Input.stories-BBXrateo.js → Input.stories-BggH3U4m.js} +1 -1
  219. package/storybook-static/assets/{InputDateTime-VUiW2Znv.js → InputDateTime-BilfVxzl.js} +1 -1
  220. package/storybook-static/assets/{InputDateTime.stories-lqECZY7T.js → InputDateTime.stories-Dg12XqNR.js} +1 -1
  221. package/storybook-static/assets/{InputFile-D0aHVW1q.js → InputFile-CgfUHLMj.js} +1 -1
  222. package/storybook-static/assets/{InputFile-DEeRFq2f.js → InputFile-GlyPqFhE.js} +1 -1
  223. package/storybook-static/assets/{InputFile.stories-9fBhIus4.js → InputFile.stories-67US4MbA.js} +1 -1
  224. package/storybook-static/assets/{InputFiles-C_KIqiN9.js → InputFiles-CEfoc97w.js} +1 -1
  225. package/storybook-static/assets/{InputFiles-DTy038xW.js → InputFiles-DgoOF_5y.js} +1 -1
  226. package/storybook-static/assets/{InputFiles.stories-CspkI6-Y.js → InputFiles.stories-O8pudhPC.js} +1 -1
  227. package/storybook-static/assets/{InputFilesList-BQdSFOI1.js → InputFilesList-_qhXHNH0.js} +1 -1
  228. package/storybook-static/assets/{InputImage-C0kyUtT0.js → InputImage-BPUac2Z0.js} +1 -1
  229. package/storybook-static/assets/{InputImage-VJaqApEh.js → InputImage-BR8hGCOw.js} +1 -1
  230. package/storybook-static/assets/{InputImage.stories-DKXeva5i.js → InputImage.stories-BAa0Lev5.js} +1 -1
  231. package/storybook-static/assets/{InteractiveComponents-B8zzCcZ_.js → InteractiveComponents-Cc3uRY7X.js} +1 -1
  232. package/storybook-static/assets/{InteractiveComponents.stories-DP0Jma43.js → InteractiveComponents.stories-nMxOIkmX.js} +1 -1
  233. package/storybook-static/assets/LayoutPicker-BY4-fUQa.css +1 -0
  234. package/storybook-static/assets/{LayoutPicker-BpcPcCDz.js → LayoutPicker-Cb4v3x_G.js} +1 -1
  235. package/storybook-static/assets/LayoutPicker-KZTxqlGf.js +376 -0
  236. package/storybook-static/assets/{LayoutPicker.stories-POpVHww7.js → LayoutPicker.stories-BbV9ZXzc.js} +1 -1
  237. package/storybook-static/assets/Listbox-C92C4jC8.js +1 -0
  238. package/storybook-static/assets/{Listbox-gHitzePa.js → Listbox-DkvAwfwh.js} +1 -1
  239. package/storybook-static/assets/{Listbox.stories-Dw3IdYZA.js → Listbox.stories-DTXTRenl.js} +1 -1
  240. package/storybook-static/assets/{Modal-CY7qfD1u.js → Modal-CIwNzxbo.js} +1 -1
  241. package/storybook-static/assets/{Modal.stories-Boa7oW-a.js → Modal.stories-9ktsjdlT.js} +1 -1
  242. package/storybook-static/assets/{ModalManagerProvider-GYXaQe-7.js → ModalManagerProvider-CqG-xbfj.js} +1 -1
  243. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +1 -0
  244. package/storybook-static/assets/{MultiSelect-DToMWi-I.js → MultiSelect-DQm2lbrO.js} +1 -1
  245. package/storybook-static/assets/MultiSelect-qwlU7fvU.js +2 -0
  246. package/storybook-static/assets/{MultiSelect.stories-DLuXOl9Q.js → MultiSelect.stories-bq1Xkq9E.js} +1 -1
  247. package/storybook-static/assets/{NoData-Bzj7vNCz.js → NoData-CeVr2a_m.js} +1 -1
  248. package/storybook-static/assets/{NotificationsHost-Bs93X8Nv.js → NotificationsHost-ubJMdXdC.js} +1 -1
  249. package/storybook-static/assets/{NotificationsHost.stories-DxVOVOf8.js → NotificationsHost.stories-CZQ9euOx.js} +1 -1
  250. package/storybook-static/assets/{ODataMultiSelect-Dh33YJP6.js → ODataMultiSelect-BHIpg_P7.js} +1 -1
  251. package/storybook-static/assets/ODataMultiSelect.stories-B8XwUQQ6.js +126 -0
  252. package/storybook-static/assets/{ODataSelect-lpN9sKth.js → ODataSelect-CE3b_939.js} +1 -1
  253. package/storybook-static/assets/ODataSelect.stories-DICkWxpb.js +148 -0
  254. package/storybook-static/assets/{ODataTreeMultiSelect-DFY2FJBX.js → ODataTreeMultiSelect-D-qt-iEB.js} +1 -1
  255. package/storybook-static/assets/ODataTreeMultiSelect.stories-D01WD4zP.js +74 -0
  256. package/storybook-static/assets/{ODataTreeSelect-DdniMRRE.js → ODataTreeSelect-IZZlfBOq.js} +1 -1
  257. package/storybook-static/assets/ODataTreeSelect.stories-B__1Vzqt.js +46 -0
  258. package/storybook-static/assets/{OneStepScroller-CHvIHlYx.js → OneStepScroller-CyJbFkoT.js} +1 -1
  259. package/storybook-static/assets/Option-CJBK9i2B.css +1 -0
  260. package/storybook-static/assets/Option-DQa5SXb3.js +10 -0
  261. package/storybook-static/assets/OptionButton-Dl4UZEH-.js +1 -0
  262. package/storybook-static/assets/{PeriodSelect-T1qaj11S.js → PeriodSelect-C_1wt-mw.js} +1 -1
  263. package/storybook-static/assets/{PeriodSelect-BgAak8GG.js → PeriodSelect-CexnILTv.js} +1 -1
  264. package/storybook-static/assets/{PeriodSelect.stories-DYEtD47p.js → PeriodSelect.stories-Dkne0t8f.js} +1 -1
  265. package/storybook-static/assets/PickerTriggerActions-BceJ6-XM.js +1 -0
  266. package/storybook-static/assets/{Popover-BVP-wMdK.js → Popover-BYKBmS3g.js} +1 -1
  267. package/storybook-static/assets/{Popover-DQKHL6wc.js → Popover-Dp9cqgB7.js} +1 -1
  268. package/storybook-static/assets/{Popover.stories-Pt4-7Aof.js → Popover.stories-CVddfiw-.js} +1 -1
  269. package/storybook-static/assets/{PresetRangeDateInput-C4_NegG_.js → PresetRangeDateInput-B0L3i9jd.js} +1 -1
  270. package/storybook-static/assets/{PresetRangeDateInput-DQ3rlCp5.js → PresetRangeDateInput-CdWhErE7.js} +1 -1
  271. package/storybook-static/assets/{PresetRangeDateInput.stories-3AzmySZv.js → PresetRangeDateInput.stories-zF3rsqzw.js} +1 -1
  272. package/storybook-static/assets/{PresetSelect-BTh53LoO.js → PresetSelect-Cgy9Fxp1.js} +1 -1
  273. package/storybook-static/assets/{RadioButton-BfBSX73Y.js → RadioButton-C2vBV1hA.js} +1 -1
  274. package/storybook-static/assets/{RadioButton-Ci25eUL_.js → RadioButton-CXC1Cx3U.js} +1 -1
  275. package/storybook-static/assets/{RadioButton.stories-JVGXFlz8.js → RadioButton.stories-BB8LUjRM.js} +1 -1
  276. package/storybook-static/assets/{RadioGroup-CL7EHd6O.js → RadioGroup-BtbFmZdj.js} +1 -1
  277. package/storybook-static/assets/{RadioGroup-CW39hD_-.js → RadioGroup-t3X9UtTe.js} +1 -1
  278. package/storybook-static/assets/{RadioGroup.stories-MS9Jl6AT.js → RadioGroup.stories-9zY5fs7x.js} +1 -1
  279. package/storybook-static/assets/{Scrollable-Bo4197LC.js → Scrollable-BJ9U5zou.js} +1 -1
  280. package/storybook-static/assets/{Select-CxQqH8H5.js → Select-BvTVuFC9.js} +1 -1
  281. package/storybook-static/assets/Select-C714MPRu.js +12 -0
  282. package/storybook-static/assets/{Select.stories-DfjNWXba.js → Select.stories-4Q5T_g3F.js} +1 -1
  283. package/storybook-static/assets/{SerializableSelect-BktENdyg.js → SerializableSelect-D-Zq3RWA.js} +1 -1
  284. package/storybook-static/assets/{SerializableSelect.stories-B8zxcu66.js → SerializableSelect.stories-CMP1sVcs.js} +1 -1
  285. package/storybook-static/assets/{SingleDateTimeInput-DZBRm3dM.js → SingleDateTimeInput-CFu-yAx-.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput-DvpU1DkI.js → SingleDateTimeInput-CRF8VyEy.js} +1 -1
  287. package/storybook-static/assets/{SingleDateTimeInput.stories-Bku5Zc05.js → SingleDateTimeInput.stories-D-3ZQXEM.js} +1 -1
  288. package/storybook-static/assets/{Slider-BN2xXBOi.js → Slider-C1IZK88-.js} +1 -1
  289. package/storybook-static/assets/{Slider-BJkB6IoW.js → Slider-DkVzyjnU.js} +1 -1
  290. package/storybook-static/assets/{Slider.stories-CM3yNojO.js → Slider.stories-CL2kGwWV.js} +1 -1
  291. package/storybook-static/assets/{SliderInput-2ZiuvbpQ.js → SliderInput-CrWP_doO.js} +1 -1
  292. package/storybook-static/assets/{SliderInput-CPX2bJK3.js → SliderInput-qSo8a1-L.js} +1 -1
  293. package/storybook-static/assets/{SliderInput.stories-dJX-tRtA.js → SliderInput.stories-C_55M3Rx.js} +1 -1
  294. package/storybook-static/assets/{Sortable-Bkr-xnO4.js → Sortable-DQN5jv9g.js} +1 -1
  295. package/storybook-static/assets/{Sortable.stories-BPEg99e5.js → Sortable.stories-D6JJK92g.js} +1 -1
  296. package/storybook-static/assets/{Splitter-D4en_f5n.js → Splitter-3xKtU1Lb.js} +1 -1
  297. package/storybook-static/assets/{Splitter.stories-Cynn_kHV.js → Splitter.stories-BX8ALiZg.js} +1 -1
  298. package/storybook-static/assets/{StateSelect-PcH0VuO_.js → StateSelect-BpPBAs_C.js} +3 -3
  299. package/storybook-static/assets/{StateSelect-BgbwMGGc.js → StateSelect-CRvQIHMd.js} +1 -1
  300. package/storybook-static/assets/{StateSelect.stories-CShqVH9Y.js → StateSelect.stories-BjFEEWVC.js} +1 -1
  301. package/storybook-static/assets/{StringToggle.stories-CypR3oB_.js → StringToggle.stories-CAHHreic.js} +1 -1
  302. package/storybook-static/assets/{Switch-D-cSDh8j.js → Switch-QlzemgHG.js} +1 -1
  303. package/storybook-static/assets/{Switch-BVN6TcVZ.js → Switch-ams7jd2Z.js} +1 -1
  304. package/storybook-static/assets/{Switch.stories-C0s7gvBf.js → Switch.stories-CYHyTttw.js} +1 -1
  305. package/storybook-static/assets/{Table-CwXJDDe6.js → Table-CQdV4VHj.js} +1 -1
  306. package/storybook-static/assets/{Table.stories-vqttnROX.js → Table.stories-DruTDpdl.js} +1 -1
  307. package/storybook-static/assets/{Tabs-BRSEvQpk.js → Tabs-BJSbr7kb.js} +1 -1
  308. package/storybook-static/assets/{Tabs.stories-R_7jiTQc.js → Tabs.stories-lf-mDq_D.js} +1 -1
  309. package/storybook-static/assets/{TabsBox-CqSxAUdJ.js → TabsBox-ZVImR6p0.js} +1 -1
  310. package/storybook-static/assets/{TagInput-C3ahaF-B.js → TagInput-DQytVtEo.js} +1 -1
  311. package/storybook-static/assets/{TagInput.stories-C3O2gBUY.js → TagInput.stories-BQqHbyr3.js} +1 -1
  312. package/storybook-static/assets/{Text-b8fMr5Hd.js → Text-B5iDs3oJ.js} +1 -1
  313. package/storybook-static/assets/{Textarea-BDL_MwcM.js → Textarea-8wa0S9LS.js} +1 -1
  314. package/storybook-static/assets/{Textarea-CCgxNL6F.js → Textarea-D70Fh5jz.js} +1 -1
  315. package/storybook-static/assets/{Textarea.stories-kc_LXBix.js → Textarea.stories-CbBM7a9o.js} +1 -1
  316. package/storybook-static/assets/{TimePanel-BCotjEKQ.js → TimePanel-Cef9klO_.js} +1 -1
  317. package/storybook-static/assets/{TimePanel.stories-B8paqA-_.js → TimePanel.stories-DFhohiAp.js} +1 -1
  318. package/storybook-static/assets/{Toggle-CT4IyZPI.js → Toggle-DNQFJhW_.js} +1 -1
  319. package/storybook-static/assets/{Toggle-CbsKNs_c.js → Toggle-v-5-JSE0.js} +1 -1
  320. package/storybook-static/assets/{Toggle.stories-YsQZk4DA.js → Toggle.stories-cZNfdzmw.js} +1 -1
  321. package/storybook-static/assets/{TreeMultiSelect-DRLoUCXF.js → TreeMultiSelect-BnE3mYFf.js} +1 -1
  322. package/storybook-static/assets/TreeMultiSelect-CxPv6whw.js +1 -0
  323. package/storybook-static/assets/{TreeMultiSelect.stories-CV65ZVUo.js → TreeMultiSelect.stories-DlYN_GCe.js} +1 -1
  324. package/storybook-static/assets/TreePickerBase-B6DED6Hz.css +1 -0
  325. package/storybook-static/assets/TreePickerBase-C7qpkbpz.js +34 -0
  326. package/storybook-static/assets/{TreeSelect-FhEH7bMx.js → TreeSelect-CIEqH8S9.js} +1 -1
  327. package/storybook-static/assets/{TreeSelect-CsYGUC6s.js → TreeSelect-hddQ7fyj.js} +1 -1
  328. package/storybook-static/assets/TreeSelect.stories-D40eyoD9.js +32 -0
  329. package/storybook-static/assets/{TreeTable-Bajr80HM.js → TreeTable-CpYB4MSV.js} +1 -1
  330. package/storybook-static/assets/{TreeTable.stories-DDCGoB2u.js → TreeTable.stories-DOy9GHlG.js} +1 -1
  331. package/storybook-static/assets/{async-CWrFMaux.js → async-MCpAOgGj.js} +1 -1
  332. package/storybook-static/assets/{blocks-CrYcG0WD.js → blocks-B8O-SmXz.js} +3 -3
  333. package/storybook-static/assets/{browserAndReact-DSxaVMjM.js → browserAndReact-CWhfyF1v.js} +1 -1
  334. package/storybook-static/assets/{check-Cnuffb78.js → check-CABFFBZp.js} +1 -1
  335. package/storybook-static/assets/{chevron-down-ChPfAmdy.js → chevron-down-D9EpqOx3.js} +1 -1
  336. package/storybook-static/assets/{chevron-left-CEB5eAVk.js → chevron-left-lXvtYh2L.js} +1 -1
  337. package/storybook-static/assets/{chevron-right-DHw2yjh1.js → chevron-right-DEPi2-vh.js} +1 -1
  338. package/storybook-static/assets/{chunk-W22LQPXL-i9Cm4c-p.js → chunk-W22LQPXL-BnFjL7A4.js} +1 -1
  339. package/storybook-static/assets/{circle-alert-B0REyiCt.js → circle-alert-BFTgQNUa.js} +1 -1
  340. package/storybook-static/assets/{circle-check-D6WZ24rj.js → circle-check-BwBhaE4u.js} +1 -1
  341. package/storybook-static/assets/{components-BCe0UvQp.js → components-b7MrsXAu.js} +3 -3
  342. package/storybook-static/assets/{contextMenu-De66k1si.js → contextMenu-CgfU49vo.js} +1 -1
  343. package/storybook-static/assets/defaultRenderers-V5HI39JH.js +1 -0
  344. package/storybook-static/assets/{download-C1DiezfA.js → download-C27enrZU.js} +1 -1
  345. package/storybook-static/assets/{filesAndExcel-BVMGH9OS.js → filesAndExcel-BiY4Bovb.js} +1 -1
  346. package/storybook-static/assets/{floating-ui.react-BswSORmJ.js → floating-ui.react-DEyIFiNo.js} +1 -1
  347. package/storybook-static/assets/{formatters-D27XMzPd.js → formatters-g8ZqvE1G.js} +1 -1
  348. package/storybook-static/assets/{formatters-runtime-B_C8yQOS.js → formatters-runtime-CXUIlmJj.js} +1 -1
  349. package/storybook-static/assets/{foundationLib-BmwSyi1e.js → foundationLib-BPodAJdq.js} +1 -1
  350. package/storybook-static/assets/{hooks-CXlVTo5i.js → hooks-e6Pq1dhk.js} +1 -1
  351. package/storybook-static/assets/{iframe-Baz8D-0E.css → iframe-BIt4o49Q.css} +1 -1
  352. package/storybook-static/assets/{iframe-Bbj4T0X2.js → iframe-MGtmawLC.js} +3 -3
  353. package/storybook-static/assets/iframe-arpq4Gv1.js +1 -0
  354. package/storybook-static/assets/{info-D_YlGthq.js → info-BaBKhExm.js} +1 -1
  355. package/storybook-static/assets/{odata-CDuIqs1a.js → odata-CU8OqBfR.js} +1 -1
  356. package/storybook-static/assets/{odataAndTables-D4R4KHZc.js → odataAndTables-owHlC75n.js} +1 -1
  357. package/storybook-static/assets/{odataFetchFn-Sw0FicJe.js → odataFetchFn-I0wds8hr.js} +1 -1
  358. package/storybook-static/assets/{odataStoryFixtures-z1HaQHNb.js → odataStoryFixtures-B8Q5eYoW.js} +2 -2
  359. package/storybook-static/assets/{persisted-TRx901TV.js → persisted-ia9NSjyZ.js} +1 -1
  360. package/storybook-static/assets/{pureUtilities-B8KVYaZx.js → pureUtilities-qAyFc8Y7.js} +1 -1
  361. package/storybook-static/assets/{react-CTGFMmtV.js → react-CDRSjgW9.js} +1 -1
  362. package/storybook-static/assets/{refresh-cw-BuhtDwqw.js → refresh-cw-Cy7nKRWv.js} +1 -1
  363. package/storybook-static/assets/{runtimeAndState-DDPlVhTs.js → runtimeAndState-CnHg6P7-.js} +1 -1
  364. package/storybook-static/assets/{settings-2-DESCgIcH.js → settings-2-C_voZFm1.js} +1 -1
  365. package/storybook-static/assets/{sortable-BxGw7kip.js → sortable-CjH0UUUz.js} +1 -1
  366. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-B0d7LXTh.js → syntaxhighlighter-T5IQBZDB-Ckcddreo.js} +1 -1
  367. package/storybook-static/assets/{trash-2-D0Ed43_3.js → trash-2-EOy5mjuJ.js} +1 -1
  368. package/storybook-static/assets/{triangle-alert-CpgcfVSf.js → triangle-alert-BRrEHiq1.js} +1 -1
  369. package/storybook-static/assets/{ui-BMhMvV6y.css → ui-CatTcSJL.css} +1 -1
  370. package/storybook-static/assets/ui.module-D4CuGr8r.js +1 -0
  371. package/storybook-static/assets/{uiClasses-DiXn3Hc-.js → uiClasses-CVGbL980.js} +1 -1
  372. package/storybook-static/assets/{useODataSelectBase-CFR7eJND.js → useODataSelectBase-69zlLmHt.js} +1 -1
  373. package/storybook-static/assets/{useODataTreeData-DgEKknmd.js → useODataTreeData-BLZGLxQw.js} +1 -1
  374. package/storybook-static/assets/usePickerQuery-mBLwpp5S.js +1 -0
  375. package/storybook-static/assets/usePickerTriggerController-B3JWoIjX.js +6 -0
  376. package/storybook-static/assets/{x-_GQ6nyHW.js → x-DGdEDv4r.js} +1 -1
  377. package/storybook-static/iframe.html +3 -3
  378. package/storybook-static/project.json +1 -1
  379. package/dist/chunks/context-menu-6nJkPmKV.js +0 -535
  380. package/dist/chunks/context-menu-6nJkPmKV.js.map +0 -1
  381. package/dist/chunks/multi-select-Clsst6DE.js +0 -538
  382. package/dist/chunks/multi-select-Clsst6DE.js.map +0 -1
  383. package/dist/chunks/picker-CrRdwdA5.js +0 -340
  384. package/dist/chunks/picker-CrRdwdA5.js.map +0 -1
  385. package/dist/chunks/select-B0xc6g81.js +0 -355
  386. package/dist/chunks/select-B0xc6g81.js.map +0 -1
  387. package/dist/chunks/ui.module-DHVTOqZ0.js.map +0 -1
  388. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js +0 -141
  389. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js.map +0 -1
  390. package/dist/multi-select/ui/MultiSelectOption.d.ts +0 -14
  391. package/dist/multi-select/ui/MultiSelectOption.d.ts.map +0 -1
  392. package/dist/multi-select/ui/MultiSelectToken.d.ts +0 -9
  393. package/dist/multi-select/ui/MultiSelectToken.d.ts.map +0 -1
  394. package/storybook-static/assets/CheckBox-BnO90VKX.css +0 -1
  395. package/storybook-static/assets/ContextMenu-BgzIzwzM.css +0 -1
  396. package/storybook-static/assets/ContextMenu-BhGu3QoC.js +0 -1
  397. package/storybook-static/assets/ContextMenu.stories-V9d5mjak.js +0 -37
  398. package/storybook-static/assets/DateRangePresetSelect.stories-BGgd7TOu.js +0 -19
  399. package/storybook-static/assets/LayoutPicker-DjUZ5y7M.js +0 -376
  400. package/storybook-static/assets/LayoutPicker-DudPIiwb.css +0 -1
  401. package/storybook-static/assets/Listbox-Cg1OczYK.js +0 -1
  402. package/storybook-static/assets/MultiSelect-D8qN-i5f.js +0 -2
  403. package/storybook-static/assets/ODataMultiSelect.stories-DUmFRMTU.js +0 -139
  404. package/storybook-static/assets/ODataSelect.stories-BkFs5uIY.js +0 -161
  405. package/storybook-static/assets/ODataTreeMultiSelect.stories-B_Izm4eH.js +0 -87
  406. package/storybook-static/assets/ODataTreeSelect.stories-DxNhuLVU.js +0 -55
  407. package/storybook-static/assets/PickerSelectionToolbar-DWtGYc4E.js +0 -2
  408. package/storybook-static/assets/PickerTriggerActions-BIH8_o_b.js +0 -1
  409. package/storybook-static/assets/Select-CO4ZHP9h.css +0 -1
  410. package/storybook-static/assets/Select-DBsWg0wv.js +0 -12
  411. package/storybook-static/assets/SelectOptionContent-Bie2pzia.js +0 -1
  412. package/storybook-static/assets/TreeMultiSelect-CmAa_Gin.js +0 -1
  413. package/storybook-static/assets/TreePickerBase-hyMFakp7.css +0 -1
  414. package/storybook-static/assets/TreePickerBase-rB-Q9Uwf.js +0 -24
  415. package/storybook-static/assets/TreeSelect.stories-Cw4IkrNG.js +0 -40
  416. package/storybook-static/assets/defaultRenderers-B7PDT-nL.css +0 -1
  417. package/storybook-static/assets/defaultRenderers-D0Z-7t0H.js +0 -1
  418. package/storybook-static/assets/iframe-DLZ4F2nx.js +0 -1
  419. package/storybook-static/assets/ui.module-CiLQZm_L.js +0 -1
  420. package/storybook-static/assets/usePickerQuery-Be3WSeUa.js +0 -1
  421. package/storybook-static/assets/usePickerTriggerController-BZZv-jDV.js +0 -1
  422. package/storybook-static/assets/usePickerTriggerController-DzBkX15M.css +0 -1
  423. /package/storybook-static/assets/{CheckBox.module-BNQm6HXI.js → CheckBox.module-CoYygdZx.js} +0 -0
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{a as r,i,o as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-CiLQZm_L.js";import{i as c,n as l}from"./uiClasses-DiXn3Hc-.js";import{i as u,n as d,r as f,t as p}from"./NoData-Bzj7vNCz.js";import{n as m,t as h}from"./OneStepScroller-CHvIHlYx.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;function B(){return(B=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`ZSAoAa`,D=`psYhsZ`,O=`mNDq9-`,k=`_28F3fs`,A=`g156KO`,j=`C2mO1e`,M=`UKZXTZ`,N=`jiTafe`,P=`nhD0k7`,F=`G8FICe`,I=`W50XHh`,L=`vnjXkU`,R=`Nzvfhw`,z={tabsContainer:w,clean:T,tabs:E,panels:D,horizontal:O,tab:k,vertical:A,panelScrollable:j,selected:M,panel:N,panelBody:P,layoutPanels:F,layoutPanel:I,layoutSection:L,layoutContent:R}})))()}function V({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,H.jsxs)(`div`,{className:e,children:[(0,H.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,H.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(z.tab,`skeletonLine`),children:`Загрузка...`})}),(0,H.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,H.jsx)(`div`,{className:i,children:(0,H.jsx)(`div`,{className:a,children:(0,H.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var H;function U(){return(U=e((()=>{i(),u(),B(),H=n(),V.__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 W({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,G.jsx)(`div`,{className:e,children:(0,G.jsx)(`div`,{className:t,children:(0,G.jsx)(`div`,{className:n,children:(0,G.jsx)(`div`,{className:r,children:(0,G.jsx)(p,{className:`radiusSm`})})})})})}var G;function K(){return(K=e((()=>{d(),G=n(),W.__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 q({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,J.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var J;function Y(){return(Y=e((()=>{t(),J=n(),q.__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:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){return(0,Z.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":i,"aria-labelledby":a,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,Z.jsx)(h,{children:e}):(0,Z.jsx)(Z.Fragment,{children:e}))(e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(z.tab,`textWrap`,e.id===t.selectedTabId&&z.selected),children:e.title},e.id)))})}var Z;function Q(){return(Q=e((()=>{i(),m(),B(),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 ee({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(z.tabsContainer,h?z.clean:o.uiFilledPanel,z[u],l(m),a),S=z.tabs,C=r(z.panels,z.panelScrollable,`scrollable overscroll`),w=z.panel,T=z.panelBody;return s?(0,$.jsx)(V,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,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;return y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)})?(0,$.jsx)(q,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:(0,$.jsx)(`div`,{className:T,children:e.content})},e.id):null})})]}):(0,$.jsx)(W,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function te(){return(te=e((()=>{i(),s(),c(),C(),B(),U(),K(),Y(),Q(),$=n(),ee.__docgenInfo={description:`Простой items-based tabs-компонент.
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-MGtmawLC.js";import{a as r,i,o as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-D4CuGr8r.js";import{i as c,n as l}from"./uiClasses-CVGbL980.js";import{i as u,n as d,r as f,t as p}from"./NoData-CeVr2a_m.js";import{n as m,t as h}from"./OneStepScroller-CyJbFkoT.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;function B(){return(B=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`ZSAoAa`,D=`psYhsZ`,O=`mNDq9-`,k=`_28F3fs`,A=`g156KO`,j=`C2mO1e`,M=`UKZXTZ`,N=`jiTafe`,P=`nhD0k7`,F=`G8FICe`,I=`W50XHh`,L=`vnjXkU`,R=`Nzvfhw`,z={tabsContainer:w,clean:T,tabs:E,panels:D,horizontal:O,tab:k,vertical:A,panelScrollable:j,selected:M,panel:N,panelBody:P,layoutPanels:F,layoutPanel:I,layoutSection:L,layoutContent:R}})))()}function V({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,H.jsxs)(`div`,{className:e,children:[(0,H.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,H.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(z.tab,`skeletonLine`),children:`Загрузка...`})}),(0,H.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,H.jsx)(`div`,{className:i,children:(0,H.jsx)(`div`,{className:a,children:(0,H.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var H;function U(){return(U=e((()=>{i(),u(),B(),H=n(),V.__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 W({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,G.jsx)(`div`,{className:e,children:(0,G.jsx)(`div`,{className:t,children:(0,G.jsx)(`div`,{className:n,children:(0,G.jsx)(`div`,{className:r,children:(0,G.jsx)(p,{className:`radiusSm`})})})})})}var G;function K(){return(K=e((()=>{d(),G=n(),W.__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 q({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,J.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var J;function Y(){return(Y=e((()=>{t(),J=n(),q.__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:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){return(0,Z.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":i,"aria-labelledby":a,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,Z.jsx)(h,{children:e}):(0,Z.jsx)(Z.Fragment,{children:e}))(e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(z.tab,`textWrap`,e.id===t.selectedTabId&&z.selected),children:e.title},e.id)))})}var Z;function Q(){return(Q=e((()=>{i(),m(),B(),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 ee({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(z.tabsContainer,h?z.clean:o.uiFilledPanel,z[u],l(m),a),S=z.tabs,C=r(z.panels,z.panelScrollable,`scrollable overscroll`),w=z.panel,T=z.panelBody;return s?(0,$.jsx)(V,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,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;return y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)})?(0,$.jsx)(q,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:(0,$.jsx)(`div`,{className:T,children:e.content})},e.id):null})})]}):(0,$.jsx)(W,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function te(){return(te=e((()=>{i(),s(),c(),C(),B(),U(),K(),Y(),Q(),$=n(),ee.__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{q as a,B as c,b as d,y as f,Q as i,C as l,te as n,Y as o,X as r,z as s,ee as t,x as u};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-_GQ6nyHW.js";import{n as i}from"./iframe-Bbj4T0X2.js";import{a,i as o}from"./utils-DUM89eIj.js";import{n as s,t as c}from"./ui.module-CiLQZm_L.js";import{d as l,l as u,s as ee,u as d}from"./Input-CVs7SVMJ.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-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-DGdEDv4r.js";import{n as i}from"./iframe-MGtmawLC.js";import{a,i as o}from"./utils-DUM89eIj.js";import{n as s,t as c}from"./ui.module-D4CuGr8r.js";import{d as l,l as u,s as ee,u as d}from"./Input-Ctu1FLAo.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-C0FnF6B9.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./TagInput-C3ahaF-B.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:`Shared/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-C0FnF6B9.js";import{n}from"./iframe-MGtmawLC.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./TagInput-DQytVtEo.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:`Shared/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,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-Bbj4T0X2.js";import{a as i,i as a}from"./utils-DUM89eIj.js";var o,s,c,l,u,d,f,p;function m(){return(m=e((()=>{o=t(n(),1),a(),s=r(),c={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},l={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},u={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},d={wrap:`textWrap`,noWrap:`textNoWrap`},f=({size:e,color:t,weight:n,italic:r,uppercase:a,wrap:s,className:f})=>(0,o.useMemo)(()=>{let o=[];return e&&o.push(l[e]),n&&o.push(u[n]),s&&o.push(d[s]),r&&o.push(`fontItalic`),a&&o.push(`textUppercase`),t&&o.push(c[t]),i(...o,f)},[e,n,t,r,a,s,f]),p=({children:e,as:t,style:n,...r})=>{let i=f(r);return(0,s.jsx)(t||`span`,{className:i,style:n,children:e})},p.__docgenInfo={description:``,methods:[],displayName:`Text`,props:{size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``},weight:{required:!1,tsType:{name:`union`,raw:`"lighter" | "light" | "regular" | "medium" | "bold" | "bolder"`,elements:[{name:`literal`,value:`"lighter"`},{name:`literal`,value:`"light"`},{name:`literal`,value:`"regular"`},{name:`literal`,value:`"medium"`},{name:`literal`,value:`"bold"`},{name:`literal`,value:`"bolder"`}]},description:``},italic:{required:!1,tsType:{name:`boolean`},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``},wrap:{required:!1,tsType:{name:`union`,raw:`"wrap" | "noWrap"`,elements:[{name:`literal`,value:`"wrap"`},{name:`literal`,value:`"noWrap"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},as:{required:!1,tsType:{name:`union`,raw:`"code" | "span" | "p" | "div" | "h2" | "h3" | "h4" | "h5" | "h6"`,elements:[{name:`literal`,value:`"code"`},{name:`literal`,value:`"span"`},{name:`literal`,value:`"p"`},{name:`literal`,value:`"div"`},{name:`literal`,value:`"h2"`},{name:`literal`,value:`"h3"`},{name:`literal`,value:`"h4"`},{name:`literal`,value:`"h5"`},{name:`literal`,value:`"h6"`}]},description:``}}}})))()}export{m as n,p as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-MGtmawLC.js";import{a as i,i as a}from"./utils-DUM89eIj.js";var o,s,c,l,u,d,f,p;function m(){return(m=e((()=>{o=t(n(),1),a(),s=r(),c={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},l={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},u={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},d={wrap:`textWrap`,noWrap:`textNoWrap`},f=({size:e,color:t,weight:n,italic:r,uppercase:a,wrap:s,className:f})=>(0,o.useMemo)(()=>{let o=[];return e&&o.push(l[e]),n&&o.push(u[n]),s&&o.push(d[s]),r&&o.push(`fontItalic`),a&&o.push(`textUppercase`),t&&o.push(c[t]),i(...o,f)},[e,n,t,r,a,s,f]),p=({children:e,as:t,style:n,...r})=>{let i=f(r);return(0,s.jsx)(t||`span`,{className:i,style:n,children:e})},p.__docgenInfo={description:``,methods:[],displayName:`Text`,props:{size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``},weight:{required:!1,tsType:{name:`union`,raw:`"lighter" | "light" | "regular" | "medium" | "bold" | "bolder"`,elements:[{name:`literal`,value:`"lighter"`},{name:`literal`,value:`"light"`},{name:`literal`,value:`"regular"`},{name:`literal`,value:`"medium"`},{name:`literal`,value:`"bold"`},{name:`literal`,value:`"bolder"`}]},description:``},italic:{required:!1,tsType:{name:`boolean`},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``},wrap:{required:!1,tsType:{name:`union`,raw:`"wrap" | "noWrap"`,elements:[{name:`literal`,value:`"wrap"`},{name:`literal`,value:`"noWrap"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},as:{required:!1,tsType:{name:`union`,raw:`"code" | "span" | "p" | "div" | "h2" | "h3" | "h4" | "h5" | "h6"`,elements:[{name:`literal`,value:`"code"`},{name:`literal`,value:`"span"`},{name:`literal`,value:`"p"`},{name:`literal`,value:`"div"`},{name:`literal`,value:`"h2"`},{name:`literal`,value:`"h3"`},{name:`literal`,value:`"h4"`},{name:`literal`,value:`"h5"`},{name:`literal`,value:`"h6"`}]},description:``}}}})))()}export{m as n,p as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{a as n,i as r}from"./utils-DUM89eIj.js";import{n as i,t as a}from"./ui.module-CiLQZm_L.js";import{d as o,l as s,s as c,u as l}from"./Input-CVs7SVMJ.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-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{a as n,i as r}from"./utils-DUM89eIj.js";import{n as i,t as a}from"./ui.module-D4CuGr8r.js";import{d as o,l as s,s as c,u as l}from"./Input-Ctu1FLAo.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-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.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-CrYcG0WD.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-kc_LXBix.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-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{i as n,r}from"./react-qN2cStNd.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-B8O-SmXz.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-CbBM7a9o.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-C0FnF6B9.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./Textarea-BDL_MwcM.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:`Shared/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-C0FnF6B9.js";import{n}from"./iframe-MGtmawLC.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./Textarea-8wa0S9LS.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:`Shared/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-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{a as r,i}from"./utils-DUM89eIj.js";import{b as a,g as o}from"./odata-service-B6TxBSLm-BW9QLSrS.js";import{m as s,y as c}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{i as l,r as u}from"./date-segments-D3HouZ37.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w;function T(){return(T=e((()=>{u(),c(),a(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)})))()}function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}function E(){return(E=e((()=>{T()})))()}function D(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function te(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function ie(e,t,n){return n<=0||t<=0?0:D(Math.round(e/t),n)}var k,A,j,M,N,P,F;function I(){return(I=e((()=>{k=`GLhdJ6`,A=`_2xLNL2`,j=`dgX32S`,M=`WfOtQ9`,N=`XIdSMi`,P=`_--Hsbk`,F={wheelPicker:k,viewport:A,scroller:j,items:M,item:N,selectionFrame:P}})))()}function L({items:e,value:t,onChange:n,ariaLabel:i,disabled:a,className:o,minHeight:s=B,visibleRows:c=V,formatItem:l,getItemKey:u}){let d=(0,R.useRef)(null),f=(0,R.useRef)(null),p=(0,R.useRef)(null),m=(0,R.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,R.useState)(0),_=te(h,s),v=ne(_,c),y=re(_,v),b=(0,R.useRef)(m),x=(0,R.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,R.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=ie(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,R.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},H)},[S]);(0,R.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,R.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=D(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,R.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,R.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=D(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,z.jsx)(`div`,{ref:d,className:r(F.wheelPicker,o),style:T,children:(0,z.jsxs)(`div`,{className:F.viewport,children:[(0,z.jsx)(`div`,{ref:f,className:F.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":i,"aria-disabled":a||void 0,onKeyDown:w,children:(0,z.jsx)(`div`,{className:F.items,children:e.map((e,t)=>{let r=t===m;return(0,z.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:F.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,z.jsx)(`div`,{className:F.selectionFrame,"aria-hidden":`true`})]})})}var R,z,B,V,H;function U(){return(U=e((()=>{R=t(),i(),I(),z=n(),B=192,V=7,H=96,L.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})))()}var W,G,K,q,J,Y,X;function Z(){return(Z=e((()=>{W=`_5-SSnO`,G=`s1NHua`,K=`KQC9-8`,q=`WDu02W`,J=`_9mEhfD`,Y=`N-Fzjk`,X={timePanel:W,hint:G,fields:K,field:q,label:J,wheel:Y}})))()}function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsx)(`p`,{className:X.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsxs)(`div`,{className:X.fields,children:[(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Часы`}),(0,$.jsx)(L,{className:X.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Минуты`}),(0,$.jsx)(L,{className:X.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $;function ae(){return(ae=e((()=>{U(),E(),Z(),$=n(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}})))()}export{f as a,h as c,_ as d,d as i,g as l,ae as n,T as o,y as r,m as s,Q as t,p as u};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-MGtmawLC.js";import{a as r,i}from"./utils-DUM89eIj.js";import{b as a,g as o}from"./odata-service-B6TxBSLm-BW9QLSrS.js";import{m as s,y as c}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{i as l,r as u}from"./date-segments-D3HouZ37.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w;function T(){return(T=e((()=>{u(),c(),a(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)})))()}function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}function E(){return(E=e((()=>{T()})))()}function D(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function te(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function ie(e,t,n){return n<=0||t<=0?0:D(Math.round(e/t),n)}var k,A,j,M,N,P,F;function I(){return(I=e((()=>{k=`GLhdJ6`,A=`_2xLNL2`,j=`dgX32S`,M=`WfOtQ9`,N=`XIdSMi`,P=`_--Hsbk`,F={wheelPicker:k,viewport:A,scroller:j,items:M,item:N,selectionFrame:P}})))()}function L({items:e,value:t,onChange:n,ariaLabel:i,disabled:a,className:o,minHeight:s=B,visibleRows:c=V,formatItem:l,getItemKey:u}){let d=(0,R.useRef)(null),f=(0,R.useRef)(null),p=(0,R.useRef)(null),m=(0,R.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,R.useState)(0),_=te(h,s),v=ne(_,c),y=re(_,v),b=(0,R.useRef)(m),x=(0,R.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,R.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=ie(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,R.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},H)},[S]);(0,R.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,R.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=D(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,R.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,R.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=D(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,z.jsx)(`div`,{ref:d,className:r(F.wheelPicker,o),style:T,children:(0,z.jsxs)(`div`,{className:F.viewport,children:[(0,z.jsx)(`div`,{ref:f,className:F.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":i,"aria-disabled":a||void 0,onKeyDown:w,children:(0,z.jsx)(`div`,{className:F.items,children:e.map((e,t)=>{let r=t===m;return(0,z.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:F.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,z.jsx)(`div`,{className:F.selectionFrame,"aria-hidden":`true`})]})})}var R,z,B,V,H;function U(){return(U=e((()=>{R=t(),i(),I(),z=n(),B=192,V=7,H=96,L.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})))()}var W,G,K,q,J,Y,X;function Z(){return(Z=e((()=>{W=`_5-SSnO`,G=`s1NHua`,K=`KQC9-8`,q=`WDu02W`,J=`_9mEhfD`,Y=`N-Fzjk`,X={timePanel:W,hint:G,fields:K,field:q,label:J,wheel:Y}})))()}function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsx)(`p`,{className:X.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsxs)(`div`,{className:X.fields,children:[(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Часы`}),(0,$.jsx)(L,{className:X.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Минуты`}),(0,$.jsx)(L,{className:X.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $;function ae(){return(ae=e((()=>{U(),E(),Z(),$=n(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}})))()}export{f as a,h as c,_ as d,d as i,g as l,ae as n,T as o,y as r,m as s,Q as t,p as u};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{n,t as r}from"./TimePanel-BCotjEKQ.js";function i(e){let[,t]=o(),n=e.value;return(0,a.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,a.jsx)(r,{...e,value:n,onChange:(r,i)=>{e.onChange(r,i),t({value:new Date(n.getFullYear(),n.getMonth(),n.getDate(),r,i,0,0)})}})})}var a,o,s,c,l,u,d;function f(){return(f=e((()=>{n(),a=t(),{useArgs:o}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:s}=__STORYBOOK_MODULE_TEST__,c={title:`Shared/UI/Internal/DateTime/TimePanel`,component:r,args:{value:new Date(2026,2,10,12,30,0,0),onChange:s(),disabled:!1,mode:`date-time`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{value:{description:`Текущая дата, из которой панель берёт календарный день и время.`,control:!1},disabled:{description:`Блокирует оба wheel-picker-а.`,control:`boolean`},minDate:{description:`Нижняя граница доступного времени для выбранного дня.`,control:`date`},maxDate:{description:`Верхняя граница доступного времени для выбранного дня.`,control:`date`},mode:{description:`Режим вычисления доступного времени.`,control:`inline-radio`,options:[`date-time`,`time`]},onChange:{description:`Вызывается с выбранными часами и минутами.`,control:!1}}},l={render:function(e){return(0,a.jsx)(i,{...e})}},u={render:function(e){return(0,a.jsx)(i,{...e})},args:{value:new Date(2026,2,10,9,30,0,0),minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0)}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{n,t as r}from"./TimePanel-Cef9klO_.js";function i(e){let[,t]=o(),n=e.value;return(0,a.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,a.jsx)(r,{...e,value:n,onChange:(r,i)=>{e.onChange(r,i),t({value:new Date(n.getFullYear(),n.getMonth(),n.getDate(),r,i,0,0)})}})})}var a,o,s,c,l,u,d;function f(){return(f=e((()=>{n(),a=t(),{useArgs:o}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:s}=__STORYBOOK_MODULE_TEST__,c={title:`Shared/UI/Internal/DateTime/TimePanel`,component:r,args:{value:new Date(2026,2,10,12,30,0,0),onChange:s(),disabled:!1,mode:`date-time`},parameters:{atomicCanvas:!0,layout:`centered`},argTypes:{value:{description:`Текущая дата, из которой панель берёт календарный день и время.`,control:!1},disabled:{description:`Блокирует оба wheel-picker-а.`,control:`boolean`},minDate:{description:`Нижняя граница доступного времени для выбранного дня.`,control:`date`},maxDate:{description:`Верхняя граница доступного времени для выбранного дня.`,control:`date`},mode:{description:`Режим вычисления доступного времени.`,control:`inline-radio`,options:[`date-time`,`time`]},onChange:{description:`Вызывается с выбранными часами и минутами.`,control:!1}}},l={render:function(e){return(0,a.jsx)(i,{...e})}},u={render:function(e){return(0,a.jsx)(i,{...e})},args:{value:new Date(2026,2,10,9,30,0,0),minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0)}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render(args) {
3
3
  return <TimePanelStoryCanvas {...args} />;
4
4
  }
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-Bbj4T0X2.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-CiLQZm_L.js";var c,l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{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=e((()=>{y=t(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{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-MGtmawLC.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-D4CuGr8r.js";var c,l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{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=e((()=>{y=t(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-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.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-CrYcG0WD.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-YsQZk4DA.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-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{i as n,r}from"./react-qN2cStNd.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-B8O-SmXz.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-cZNfdzmw.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-C0FnF6B9.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./Toggle-CT4IyZPI.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:`Shared/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-C0FnF6B9.js";import{n}from"./iframe-MGtmawLC.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./Toggle-DNQFJhW_.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:`Shared/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: "Режим синхронизации",
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.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-CrYcG0WD.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./TreeMultiSelect.stories-CV65ZVUo.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{i as n,r}from"./react-qN2cStNd.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-B8O-SmXz.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./TreeMultiSelect.stories-DlYN_GCe.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,w.jsx)(u,{children:`TreeMultiSelect`}),`
3
3
  `,(0,w.jsx)(o,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
4
4
  `,(0,w.jsxs)(t.p,{children:[(0,w.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-MGtmawLC.js";import{i as r,o as i,r as a,s as o}from"./defaultRenderers-V5HI39JH.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-C7qpkbpz.js";function g(e,t){let n=l(e,t),r=Object.values(n).reduce((e,t)=>e+t.length,0);if(r!==0){if(r===1){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1))[0],r=t.nodeById.get(n);return r?r.label:void 0}return a(r)}}function _(e,t,n){let r=d(e,n),i=d(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function v({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:i,nodes:a,value:f,onChange:v,query:x,defaultQuery:S,onQuery:C,isLoading:w,error:T,optionsLayout:E=`tree`,defaultExpandedCodeKeys:D}){let[O,k]=(0,y.useState)(!1),A=(0,y.useMemo)(()=>p(a),[a]),{draftValue:j,setDraftValue:M,prepareOpen:N}=o({value:f,open:O,onCommit:v,isEqual:(e,t)=>_(e,t,A)}),P=O?j:f,F=(0,y.useMemo)(()=>d(P,A),[P,A]),I=(0,y.useMemo)(()=>s(F,A),[F,A]),L=(0,y.useMemo)(()=>new Set([...A.nodeById.keys()].filter(e=>A.nodeById.get(e)?.disabled!==!0&&!m(e,F,A)&&!I.selectedIds.has(e)&&u(A,[e]).size===0)),[F,I.selectedIds,A]),R=(0,y.useMemo)(()=>g(F,A),[F,A]);return(0,b.jsx)(h,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:a,selectedIds:I.selectedIds,partialIds:I.partialIds,selectionMode:`multi`,optionsLayout:E,defaultExpandedCodeKeys:D,unavailableNodeIds:L,open:O,onOpenChange:e=>{e&&!O&&N(),k(e)},bulkActions:{onSelectAll:()=>{M(l(u(A),A))},onDeselectAll:()=>M({})},triggerMode:`search`,selectedSummary:R,query:x,defaultQuery:S,onQuery:C,onNodeActivate:e=>{M(c({},e.id,A))},onNodeToggleSelection:e=>{M(t=>c(t,e.id,A))},onClearSelection:()=>{M({}),O||v({})},isLoading:w,error:T})}var y,b;function x(){return(x=e((()=>{y=t(),r(),i(),f(),b=n(),v.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Определяет обычное раскрываемое дерево или полностью открытый адаптивный набор колонок.`,defaultValue:{value:`"tree"`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."}},composes:[`Omit`]}})))()}export{x as n,v as t};
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./TreeMultiSelect-CmAa_Gin.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-Ci7STpiz.js";var u=t({BalancedColumns:()=>x,Basic:()=>_,FirstTwoLevelsExpanded:()=>b,MixedSelection:()=>y,OrphanProtectionColumns:()=>S,ParentCompression:()=>v,RightEdgeColumns:()=>C,__namedExportsOrder:()=>w,default:()=>g});function d({args:e,updateArgs:t}){return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(e.value)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{r(),a(),s(),f=n(),p=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),m=i((e,t)=>(0,f.jsx)(d,{args:e,updateArgs:t})),h=i((e,t)=>(0,f.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,f.jsx)(`div`,{style:{width:260},children:(0,f.jsx)(d,{args:e,updateArgs:t})})})),g={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранных узлов.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Контролируемое отображение выбранных узлов по codeKey.`,control:!1},onChange:{description:`Вызывается при commit набора узлов.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},optionsLayout:{description:`Способ показа: дерево или адаптивные колонки.`,control:`inline-radio`,options:[`tree`,`columns`]},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},_={render:m,args:{value:{OWNER:[`P0001`]}}},v={render:m,args:{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,value:{REGION:[`R01`]}}},y={render:m,args:{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,value:{BRANCH:[`B0101`],OWNER:[`P0004`]}}},b={render:m,args:{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]}},x={render:m,args:{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,value:{BRANCH:[`B0101`]}}},S={render:m,args:{label:`Защита начала большой группы`,description:`Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый.`,optionsLayout:`columns`,nodes:c}},C={render:h,args:{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:p}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-MGtmawLC.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./TreeMultiSelect-CxPv6whw.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-Ci7STpiz.js";var u=t({BalancedColumns:()=>x,Basic:()=>_,FirstTwoLevelsExpanded:()=>b,MixedSelection:()=>y,OrphanProtectionColumns:()=>S,ParentCompression:()=>v,RightEdgeColumns:()=>C,__namedExportsOrder:()=>w,default:()=>g});function d({args:e,updateArgs:t}){return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(e.value)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{r(),a(),s(),f=n(),p=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),m=i((e,t)=>(0,f.jsx)(d,{args:e,updateArgs:t})),h=i((e,t)=>(0,f.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,f.jsx)(`div`,{style:{width:260},children:(0,f.jsx)(d,{args:e,updateArgs:t})})})),g={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранных узлов.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Контролируемое отображение выбранных узлов по codeKey.`,control:!1},onChange:{description:`Вызывается при commit набора узлов.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},optionsLayout:{description:`Способ показа: дерево или адаптивные колонки.`,control:`inline-radio`,options:[`tree`,`columns`]},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},_={render:m,args:{value:{OWNER:[`P0001`]}}},v={render:m,args:{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,value:{REGION:[`R01`]}}},y={render:m,args:{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,value:{BRANCH:[`B0101`],OWNER:[`P0004`]}}},b={render:m,args:{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]}},x={render:m,args:{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,value:{BRANCH:[`B0101`]}}},S={render:m,args:{label:`Защита начала большой группы`,description:`Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый.`,optionsLayout:`columns`,nodes:c}},C={render:h,args:{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:p}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
2
2
  render: renderTreeMultiSelectStory,
3
3
  args: {
4
4
  value: {
@@ -0,0 +1 @@
1
+ ._6EH37F{gap:var(--space-sm)}.UBll8Q{gap:var(--space-sm);display:grid}.-y3RZP{grid-template-columns:repeat(var(--tree-column-count,1), minmax(0, 1fr));grid-template-rows:repeat(var(--tree-row-count,1), minmax(var(--control-height), auto));column-gap:var(--space-sm);align-content:start;width:100%;min-width:0;display:grid}.ayLJ50{grid-column-start:var(--tree-option-column);grid-row-start:var(--tree-option-row);min-width:0}._430vL2{max-height:none}._2MFkGF{--check-box-control-size:auto;flex-shrink:0;display:inline-flex}.o5NWnX{width:calc(var(--tree-level) * 1em);flex-shrink:0}.ibSd-S,.lXezvv{width:var(--text-height);height:var(--text-height);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ibSd-S{border-radius:var(--radius-sm);color:var(--content-2);background:0 0;border:none}.ibSd-S:hover{color:var(--content-accent)}.FMlLGX{transition:transform var(--transition-fast) ease}.d2Zt7U{transform:rotate(90deg)}
@@ -0,0 +1,34 @@
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./chevron-right-DEPi2-vh.js";import{n as i,t as a}from"./CheckBox-yw29uS-5.js";import{n as o}from"./iframe-MGtmawLC.js";import{a as s,i as c}from"./utils-DUM89eIj.js";import{n as l,t as u}from"./OptionButton-Dl4UZEH-.js";import{l as d,o as f}from"./Input-Ctu1FLAo.js";import{c as p,i as m,l as h,m as g,n as ee,p as te,r as ne,s as re,t as _,u as v}from"./usePickerTriggerController-B3JWoIjX.js";import{a as ie,n as ae,o as y,t as oe}from"./Option-DQa5SXb3.js";import{i as se,n as ce,r as le,t as ue}from"./usePickerQuery-mBLwpp5S.js";function b(e,t){return`${e}::${t}`}function de(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Map,c=0,l=(e,u)=>{t.set(e.id,e),n.set(e.id,u),i.set(e.id,c++);let d=b(e.codeKey,e.value);a.set(d,e.id);let f=o.get(d);f?f.push(e.id):o.set(d,[e.id]);let p=(e.children??[]).map(e=>e.id);r.set(e.id,p);for(let t of e.children??[])l(t,e.id);s.set(e.id,e.disabled===!0||p.some(e=>s.get(e)===!0))};for(let t of e)l(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a,nodeIdsByCodeValue:o,subtreeContainsDisabledById:s}}function x(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(b(n.codeKey,n.value))??[]:[]}function fe(e,t){if(e)return t.nodeIdByCodeValue.get(b(e.codeKey,e.value))}function pe(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i)for(let i of t.nodeIdsByCodeValue.get(b(r,e))??[])n.add(i);return O(n,t)}function S(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={},i=new Set;for(let e of n){let n=t.nodeById.get(e);if(!n)continue;let a=b(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function C(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function w(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function T(e,t){let n=x(e,t);return!n.length||n.some(e=>{let n=t.nodeById.get(e);return!n||n.selectionBehavior===`descendants`||t.subtreeContainsDisabledById.get(e)===!0})?!1:!n.some((e,r)=>n.some((n,i)=>r!==i&&(w(e,n,t)||w(n,e,t))))}function me(e,t){return T(e,t)?x(e,t):[e]}function he(e,t,n){for(let r of[...e])w(r,t,n)&&e.delete(r)}function E(e,t,n){let r=[t];for(let t=0;t<r.length;t+=1){let i=r[t];if(i){r.push(...n.childrenById.get(i)??[]);for(let t of x(i,n))e.delete(t)}}}function D(e,t,n){if(t.has(e))return!0;if(n.nodeById.get(e)?.disabled)return!1;let r=n.childrenById.get(e)??[];return r.length!==0&&r.every(e=>D(e,t,n))}function O(e,t){let n=new Set(e);for(let e of[...n])if(t.nodeById.get(e)?.selectionBehavior===`descendants`){n.delete(e);for(let r of M(t,t.childrenById.get(e)??[]))n.add(r)}for(let e of[...n])C(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>D(e,n,t))){let r=x(e,t);if(T(e,t)&&r.every(e=>{let r=t.nodeById.get(e);return r&&!r.disabled&&r.selectionBehavior!==`descendants`&&D(e,n,t)}))for(let e of r)he(n,e,t),n.add(e)}}return n}function ge(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of x(r,n))if(e.has(t)){e.delete(t);for(let r of M(n,n.childrenById.get(t)??[]))e.add(r)}return!0}r=n.parentById.get(r)}return!1}function k(e,t,n){return t.has(e)?!0:C(e,n).some(e=>t.has(e))}function A(e,t,n,r){let i=n.childrenById.get(e)??[];if(t.has(e))return r.selectedIds.add(e),{selected:!0,partial:!1};if(i.length===0)return{selected:!1,partial:!1};let a=i.map(e=>A(e,t,n,r)),o=a.every(e=>e.selected&&!e.partial),s=a.some(e=>e.selected||e.partial);return o?(r.selectedIds.add(e),{selected:!0,partial:!1}):s?(r.partialIds.add(e),{selected:!1,partial:!0}):{selected:!1,partial:!1}}function j(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)A(r,e,t,n);return n}function M(e,t=e.rootIds){let n=t=>{let r=e.nodeById.get(t),i=(e.childrenById.get(t)??[]).map(n),a=i.flatMap(e=>e.selectedIds),o=r?.disabled===!0||i.some(e=>e.containsDisabled);if(!r||r.disabled)return{containsDisabled:!0,selectedIds:a};if(r.selectionBehavior===`descendants`)return{containsDisabled:o,selectedIds:a};let s=!T(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function N(e,t,n){let r=pe(e,n);if(D(t,r,n))return E(r,t,n),S(O(r,n),n);let i=e=>{if(r.has(e)){E(r,e,n);return}if(D(e,r,n)){E(r,e,n);return}if(k(e,r,n)){ge(r,e,n)&&(k(e,r,n)||D(e,r,n)?i(e):E(r,e,n));return}for(let t of me(e,n))he(r,t,n),r.add(t)},a=[...M(n,[t])],o=a.length===0&&(k(t,r,n)||D(t,r,n))?[t]:a,s=o.length>0&&o.every(e=>k(e,r,n)||D(e,r,n));for(let e of o){let t=k(e,r,n)||D(e,r,n);(s&&t||!s&&!t)&&i(e)}return S(O(r,n),n)}function P(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function _e(e,t){let n=new Set;for(let r of e)P(r,t,n);return n}function ve(e,t,n){let r=new Set;for(let[i,a]of e.childrenById){if(a.length===0)continue;let o=e.nodeById.get(i);o&&(n.get(i)??t.has(o.codeKey))&&r.add(i)}return r}function ye(e,t,n){let r=(e.children??[]).map(e=>ye(e,t,n)).filter(e=>!!e);return!e.searchText.toLowerCase().includes(t)&&r.length===0?null:(r.length>0&&n.add(e.id),r.length===0?e:{...e,children:r})}function be(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>ye(e,n,r)).filter(e=>!!e),expandedIds:r}}function xe(e,t){let n=[],r=(e,i,a)=>{let o=(e.children?.length??0)>0,s=o&&t.has(e.id);if(n.push({node:e,level:i,parentId:a,hasChildren:o,isExpanded:s,isLeaf:!o}),s)for(let t of e.children??[])r(t,i+1,e.id)};for(let t of e)r(t,0);return n}function Se(){return(Se=e((()=>{})))()}function Ce(e){let t=[],n=0;for(;n<e.length;){let r=n+1;for(;r<e.length&&e[r]?.level!==0;)r+=1;t.push({startIndex:n,endIndexExclusive:r}),n=r}let r=t.map(({startIndex:e,endIndexExclusive:t})=>`${e}:${t}`).join(`|`);return{itemCount:e.length,groups:t,signature:`${e.length}|${r}`}}function F(e,t){return Number.isFinite(e)&&e>0?e:t}function I(e){let t=e.endIndexExclusive-e.startIndex;return Math.min(Ee,t)}function L(e,t){let n=Math.max(1,t),r=[],i=1,a=1,o=0;for(let t of e.groups){let e=I(t),s=n-a+1;a>1&&e>s&&(o+=s,i+=1,a=1);for(let e=t.startIndex;e<t.endIndexExclusive;e+=1)r[e]={column:i,row:a},a+=1,a>n&&(i+=1,a=1)}return{placements:r,usedColumnCount:r.length?Math.max(...r.map(e=>e.column)):1,intentionalGapCount:o}}function we({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=F(t,240),c=F(n,80),l=F(r,s+16),u=F(i,c),d=Math.max(1,Math.min(s,Math.max(1,l-16))),f=Math.max(1,Math.min(c,u-16)),p=Math.max(1,F(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-R+V)/234)),g=Math.max(1,Math.min(H,h,o||1)),ee=e.groups.reduce((e,t)=>Math.max(e,I(t)),1);if(o===0)return{columnCount:1,rowCount:1,width:m,minWidth:m,maxHeight:f,placements:[]};let te,ne=1/0;for(let t=1;t<=g;t+=1){let n=Math.max(ee,Math.ceil(o/t)),r=L(e,n);for(;r.usedColumnCount>t&&n<o;)n+=1,r=L(e,n);let i=r.usedColumnCount,a=Math.max(m,R+i*B+(i-1)*V),s=z+n*Te,c=a/d,l=s/f,u=(i*n-o)/o,p=r.intentionalGapCount/o,h=Math.max(c,l)+.25*Math.abs(c-l)+.01*u+.02*p+.04*(i-1);h<ne&&(ne=h,te={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return te??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,z,B,V,Te,H,Ee;function U(){return(U=e((()=>{R=16,z=48,B=224,V=10,Te=32,H=6,Ee=3})))()}var W,De,Oe,ke,Ae,je,G,Me,Ne,K,Pe,q;function J(){return(J=e((()=>{W=`_6EH37F`,De=`UBll8Q`,Oe=`-y3RZP`,ke=`ayLJ50`,Ae=`_430vL2`,je=`_2MFkGF`,G=`o5NWnX`,Me=`ibSd-S`,Ne=`lXezvv`,K=`FMlLGX`,Pe=`d2Zt7U`,q={treeNodeButton:W,treePopupHeader:De,treeColumns:Oe,treeColumnRow:ke,treeColumnsPopupLayout:Ae,treeColumnCheckBox:je,treeIndent:G,treeExpander:Me,treeExpanderPlaceholder:Ne,treeExpanderIcon:K,treeExpanderIconExpanded:Pe}})))()}function Fe({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:c,partial:l,selectionMode:d,optionsLayout:f=`tree`,onToggleExpand:p,onToggleSelection:m,onActivate:h}){let g=f===`tree`,ee=f===`columns`&&t===0;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:q.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&i?(0,Y.jsx)(`button`,{type:`button`,className:q.treeExpander,onClick:e=>{e.stopPropagation(),p?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Y.jsx)(r,{className:s(q.treeExpanderIcon,o&&q.treeExpanderIconExpanded)})}):g?(0,Y.jsx)(`div`,{className:q.treeExpanderPlaceholder,"aria-hidden":`true`}):null,d===`multi`?(0,Y.jsx)(`div`,{className:q.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Y.jsx)(a,{value:c,indeterminate:l,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Y.jsx)(u,{className:q.treeNodeButton,tabIndex:-1,disabled:e.disabled,text:e.label,code:e.code,searchText:n,emphasizeContent:ee,onMouseDown:e=>e.preventDefault(),onClick:h})]})}var Y;function X(){return(X=e((()=>{c(),n(),i(),l(),J(),Y=o(),Fe.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
2
+ id: string;
3
+ codeKey: string;
4
+ value: string;
5
+ label: string;
6
+ code?: string;
7
+ searchText: string;
8
+ children?: TreeSelectNode[];
9
+ disabled?: boolean;
10
+ selectionBehavior?: TreeMultiSelectNodeSelectionBehavior;
11
+ }`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}},{key:`selectionBehavior`,value:{name:`union`,raw:`"self" | "descendants"`,elements:[{name:`literal`,value:`"self"`},{name:`literal`,value:`"descendants"`}],required:!1}}]}},description:``},level:{required:!0,tsType:{name:`number`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},hasChildren:{required:!0,tsType:{name:`boolean`},description:``},isExpanded:{required:!0,tsType:{name:`boolean`},description:``},selected:{required:!0,tsType:{name:`boolean`},description:``},partial:{required:!0,tsType:{name:`boolean`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},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}},onToggleExpand:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onToggleSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onActivate:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}})))()}function Ie({label:e,description:t,disabled:n,placeholder:r,size:i,nodes:a,selectedIds:o,partialIds:c,selectionMode:l,optionsLayout:u=`tree`,defaultExpandedCodeKeys:d,unavailableNodeIds:p,open:g,onOpenChange:ne,bulkActions:_,triggerMode:v=`display`,selectedSummary:ae,selectedSummaryText:y,query:se,defaultQuery:ue,onQuery:b,onNodeActivate:x,onNodeToggleSelection:fe,onClearSelection:pe,isLoading:S,error:C}){let w=(0,Z.useRef)(null),T=(0,Z.useRef)(null),[me,he]=(0,Z.useState)(!1),E=g!==void 0,D=E?g:me,[O,ge]=(0,Z.useState)(()=>new Map),A=v===`search`?l===`multi`?`search-multi`:`search-single`:`display`,j=(0,Z.useMemo)(()=>de(a),[a]),M=(0,Z.useMemo)(()=>new Set(d),[d]),{query:N,setQuery:P,resetQueryOnClose:ye}=ce({query:se,defaultQuery:ue,onQuery:b,triggerMode:A}),Se=e=>{D&&!e&&ye&&P(``),E||he(e),ne?.(e)},{nodes:F,expandedIds:I}=(0,Z.useMemo)(()=>be(a,N),[a,N]),L=(0,Z.useMemo)(()=>_e(o,j),[o,j]),R=(0,Z.useMemo)(()=>ve(j,M,O),[M,O,j]),z=(0,Z.useMemo)(()=>new Set([...j.childrenById].filter(([,e])=>e.length>0).map(([e])=>e)),[j]),B=(0,Z.useMemo)(()=>u===`columns`?z:new Set([...R,...I,...L]),[z,R,u,I,L]),V=(0,Z.useMemo)(()=>xe(F,B),[F,B]),Te=(0,Z.useMemo)(()=>V.findIndex(e=>o.has(e.node.id)),[o,V]),H=(0,Z.useMemo)(()=>Ce(V),[V]),Ee=(0,Z.useCallback)(e=>{let t=we({...e,descriptor:H}),n={};return t.placements.forEach((e,t)=>{n[`--tree-option-${t}-column`]=String(e.column),n[`--tree-option-${t}-row`]=String(e.row)}),{width:`${t.width}px`,minWidth:`${t.minWidth}px`,maxWidth:`${t.width}px`,maxHeight:`${t.maxHeight}px`,"--tree-column-count":String(t.columnCount),"--tree-row-count":String(t.rowCount),...n}},[H]),{activeIndex:U,context:W,floatingStyles:De,getFloatingProps:Oe,setReference:ke,setFloating:Ae,setOptionRef:je,close:G,openList:Me,toggleOpen:Ne,selectOption:K,handleReferenceKeyDown:Pe,handleFloatingKeyDown:J,getOptionId:Y,getActiveOptionId:X}=m({options:V,selectedIndex:Te,open:D,onOpenChange:Se,onSelect:e=>x(e.node),getOptionDisabled:e=>e.node.disabled===!0||p?.has(e.node.id)===!0,disabled:n||S,closeOnSelect:!0,allowOpenWithoutOptions:!0,triggerMode:A,placementStrategy:u===`columns`?`auto`:`flip`,resolveFloatingSize:u===`columns`?Ee:void 0}),Ie=W.update,Le=o.size>0,Re=v===`search`&&(D||N.length>0),ze=Re?N:y??``,$=ee({mode:A,open:D,currentQuery:N,hasDisplayValue:!!y,inputRef:w,setQuery:P,openList:Me,close:G,toggleOpen:Ne}),Be=u===`columns`&&l===`multi`&&_,Ve=v===`display`,He=Be||Ve?(0,Q.jsxs)(`div`,{className:q.treePopupHeader,children:[Be?(0,Q.jsx)(ie,{onSelectAll:_.onSelectAll,onDeselectAll:_.onDeselectAll,selectAllButtonRef:T}):null,Ve?(0,Q.jsx)(f,{value:N,onChange:P,onClear:()=>P(``),placeholder:`Поиск по дереву`,onKeyDown:e=>{e.key!==`Escape`&&e.key!==`Tab`&&e.stopPropagation()},onClick:e=>{e.stopPropagation()}}):null]}):void 0;(0,Z.useLayoutEffect)(()=>{D&&u===`columns`&&Ie()},[H.signature,D,u,Ie]);let Ue=e=>{w.current=e},We=()=>{pe?.(),P(``),l===`single`&&G()},Ge=e=>{e.hasChildren&&ge(t=>{let n=new Map(t),r=t.get(e.node.id)??M.has(e.node.codeKey);return n.set(e.node.id,!r),n})};return(0,Q.jsx)(te,{label:e,description:t,disabled:n,size:i,children:({controlId:t,labelId:i,describedBy:a})=>{let d=`${t}-listbox`,f=typeof e==`string`?e:r;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(re,{ref:Ue,rootRef:ke,id:t,type:`text`,role:`combobox`,autoComplete:`off`,isLoading:S,disabled:n,open:D,optionCount:j.nodeById.size,label:e,placeholder:r,readOnly:v!==`search`,value:ze,selectedValue:ae??y,hasSelection:Le,showSelectedValue:Le&&(A===`search-multi`?N.length===0:!Re),clearable:pe!==void 0,onClear:We,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,"aria-labelledby":i,"aria-label":i?void 0:r,"aria-describedby":a,"aria-haspopup":u===`columns`?`dialog`:`listbox`,"aria-expanded":D,"aria-controls":D?d:void 0,"aria-autocomplete":u!==`columns`&&v===`search`?`list`:`none`,"aria-activedescendant":u!==`columns`&&D&&V.length>0?X(d):void 0,onChange:e=>{v===`search`&&$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{if(u===`columns`&&D&&e.key===`Tab`&&!e.shiftKey&&T.current){e.preventDefault(),T.current.focus();return}Pe(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{let e=U>=0?V[U]:void 0;e&&K(e)},enableSpaceActivation:v===`display`})}}),(0,Q.jsx)(h,{open:D,context:W,floatingStyles:De,listId:d,labelId:i,popupAriaLabel:f,descriptionId:a,activeOptionId:u!==`columns`&&V.length>0?X(d):void 0,ariaMultiselectable:u!==`columns`&&l===`multi`,popupRole:u===`columns`?`dialog`:`listbox`,setFloating:Ae,getFloatingProps:Oe,onKeyDown:J,layoutClassName:u===`columns`?q.treeColumnsPopupLayout:void 0,bodyClassName:`scrollable`,toolbar:He,children:(0,Q.jsx)(`div`,{className:s(u===`columns`&&q.treeColumns),children:V.length===0?(0,Q.jsx)(le,{errorState:C,emptyState:!C&&!S?`Нет данных`:void 0}):V.map((e,t)=>{let n=l===`multi`?k(e.node.id,o,j):o.has(e.node.id),r=l===`multi`&&!n&&c.has(e.node.id),i=t===U,a=e.node.disabled===!0||p?.has(e.node.id)===!0;return(0,Q.jsx)(oe,{"data-ui":`tree-select-option`,id:Y(d,t),ref:e=>je(t,e),role:u===`columns`?void 0:`option`,"aria-selected":u===`columns`?void 0:n,disabled:a,active:i,selected:n,className:u===`columns`?q.treeColumnRow:void 0,style:u===`columns`?{"--tree-option-column":`var(--tree-option-${t}-column, auto)`,"--tree-option-row":`var(--tree-option-${t}-row, auto)`}:void 0,children:(0,Q.jsx)(Fe,{node:a?{...e.node,disabled:!0}:e.node,level:e.level,highlight:N,hasChildren:e.hasChildren,isExpanded:e.isExpanded,selected:n,partial:r,selectionMode:l,optionsLayout:u,onToggleExpand:()=>Ge(e),onToggleSelection:()=>fe?.(e.node),onActivate:()=>K(e)})},e.node.id)})})})]})}})}var Z,Q;function Le(){return(Le=e((()=>{Z=t(),c(),d(),ae(),g(),v(),y(),se(),p(),ne(),ue(),_(),U(),X(),J(),Q=o(),Ie.__docgenInfo={description:``,methods:[],displayName:`TreePickerBase`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},selectedIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},partialIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},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:``},unavailableNodeIds:{required:!1,tsType:{name:`ReadonlySet`,elements:[{name:`string`}],raw:`ReadonlySet<string>`},description:`Узлы, которые текущий multi-select contract не может безопасно сериализовать.`},open:{required:!1,tsType:{name:`boolean`},description:``},onOpenChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(open: boolean) => void`,signature:{arguments:[{type:{name:`boolean`},name:`open`}],return:{name:`void`}}},description:``},bulkActions:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
12
+ onSelectAll: () => void;
13
+ onDeselectAll: () => void;
14
+ }`,signature:{properties:[{key:`onSelectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}},{key:`onDeselectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}}]}},description:``},triggerMode:{required:!1,tsType:{name:`union`,raw:`"display" | "search"`,elements:[{name:`literal`,value:`"display"`},{name:`literal`,value:`"search"`}]},description:``,defaultValue:{value:`"display"`,computed:!1}},selectedSummary:{required:!1,tsType:{name:`ReactNode`},description:``},selectedSummaryText:{required:!1,tsType:{name:`string`},description:``},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:``},onNodeActivate:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(node: TreeSelectNode) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
15
+ id: string;
16
+ codeKey: string;
17
+ value: string;
18
+ label: string;
19
+ code?: string;
20
+ searchText: string;
21
+ children?: TreeSelectNode[];
22
+ disabled?: boolean;
23
+ selectionBehavior?: TreeMultiSelectNodeSelectionBehavior;
24
+ }`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}},{key:`selectionBehavior`,value:{name:`union`,raw:`"self" | "descendants"`,elements:[{name:`literal`,value:`"self"`},{name:`literal`,value:`"descendants"`}],required:!1}}]}},name:`node`}],return:{name:`void`}}},description:`Основное действие OptionButton выбирает узел и завершает текущий выбор.`},onNodeToggleSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(node: TreeSelectNode) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
25
+ id: string;
26
+ codeKey: string;
27
+ value: string;
28
+ label: string;
29
+ code?: string;
30
+ searchText: string;
31
+ children?: TreeSelectNode[];
32
+ disabled?: boolean;
33
+ selectionBehavior?: TreeMultiSelectNodeSelectionBehavior;
34
+ }`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}},{key:`selectionBehavior`,value:{name:`union`,raw:`"self" | "descendants"`,elements:[{name:`literal`,value:`"self"`},{name:`literal`,value:`"descendants"`}],required:!1}}]}},name:`node`}],return:{name:`void`}}},description:`Независимый checkbox меняет черновик, не закрывая popup.`},onClearSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{j as a,N as c,S as d,M as i,pe as l,Le as n,Se as o,de as r,k as s,Ie as t,fe as u};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.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-CrYcG0WD.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./TreeSelect.stories-Cw4IkrNG.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{i as n,r}from"./react-qN2cStNd.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-B8O-SmXz.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./TreeSelect.stories-D40eyoD9.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`TreeSelect`}),`
3
3
  `,(0,x.jsx)(o,{children:`Single-select для выбора одного узла из дерева`}),`
4
4
  `,(0,x.jsxs)(t.p,{children:[(0,x.jsx)(t.code,{children:`TreeSelect`}),` подходит для сценариев, где выбор должен происходить по одному узлу, но пользователь работает не с плоским списком, а с иерархией.`]}),`
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{n as r,r as i,t as a,u as o}from"./TreePickerBase-rB-Q9Uwf.js";function s(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function c({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:c,nodes:d,value:f,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,l.useMemo)(()=>i(d),[d]),S=o(f,x),C=S?x.nodeById.get(S):void 0;return(0,u.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:c,nodes:d,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:s(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var l,u;function d(){return(d=e((()=>{l=t(),r(),u=n(),c.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}})))()}export{d as n,c as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-MGtmawLC.js";import{n as r,r as i,t as a,u as o}from"./TreePickerBase-C7qpkbpz.js";function s(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function c({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:c,nodes:d,value:f,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,l.useMemo)(()=>i(d),[d]),S=o(f,x),C=S?x.nodeById.get(S):void 0;return(0,u.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:c,nodes:d,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:s(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var l,u;function d(){return(d=e((()=>{l=t(),r(),u=n(),c.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}})))()}export{d as n,c as t};
@@ -0,0 +1,32 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-MGtmawLC.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./treeStoryFixtures-Ci7STpiz.js";import{n as s,t as c}from"./TreeSelect-hddQ7fyj.js";var l=t({Basic:()=>m,Empty:()=>_,FirstLevelExpanded:()=>g,SelectParent:()=>h,__namedExportsOrder:()=>v,default:()=>p});function u({args:e,updateArgs:t}){return(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,d.jsx)(c,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,d.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value?`${e.value.codeKey}=${e.value.value}`:`пусто`]})]})}var d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{r(),s(),a(),d=n(),f=i((e,t)=>(0,d.jsx)(u,{args:e,updateArgs:t})),p={title:`Shared/UI/TreeSelect`,component:c,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:o,value:void 0,onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранного узла.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Выбранный узел в формате codeKey/value.`,control:!1},onChange:{description:`Вызывается при выборе узла.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},clearable:{description:`Показывает действие очистки выбора.`,control:`boolean`},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},m={render:f,args:{value:{codeKey:`BRANCH`,value:`B0101`}}},h={render:f,args:{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,value:{codeKey:`REGION`,value:`R01`}}},g={render:f,args:{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]}},_={render:f,args:{nodes:[],description:`Состояние без доступных узлов.`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
+ render: renderTreeSelectStory,
3
+ args: {
4
+ value: {
5
+ codeKey: "BRANCH",
6
+ value: "B0101"
7
+ }
8
+ }
9
+ }`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
10
+ render: renderTreeSelectStory,
11
+ args: {
12
+ label: "Выбор родителя",
13
+ description: "Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.",
14
+ value: {
15
+ codeKey: "REGION",
16
+ value: "R01"
17
+ }
18
+ }
19
+ }`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
20
+ render: renderTreeSelectStory,
21
+ args: {
22
+ label: "Раскрыт первый уровень",
23
+ description: "Все узлы уровня REGION раскрыты до первого ручного действия пользователя.",
24
+ defaultExpandedCodeKeys: ["REGION"]
25
+ }
26
+ }`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
27
+ render: renderTreeSelectStory,
28
+ args: {
29
+ nodes: [],
30
+ description: "Состояние без доступных узлов."
31
+ }
32
+ }`,..._.parameters?.docs?.source}}},v=[`Basic`,`SelectParent`,`FirstLevelExpanded`,`Empty`]})))()}export{l as a,h as i,_ as n,y as o,g as r,m as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.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-CrYcG0WD.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./TreeTable.stories-DDCGoB2u.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-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{i as n,r}from"./react-qN2cStNd.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-B8O-SmXz.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./TreeTable.stories-DOy9GHlG.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,M.jsx)(u,{children:`TreeTable`}),`
3
3
  `,(0,M.jsx)(o,{children:`Древовидная таблица для плоских OData-данных на базе TanStack Table`}),`
4
4
  `,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`TreeTable`}),` предназначен для сценариев, где данные приходят плоским списком, но в UI должны выглядеть как дерево.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./chevron-down-ChPfAmdy.js";import{n as a,t as o}from"./chevron-right-DHw2yjh1.js";import{n as s}from"./iframe-Bbj4T0X2.js";import{J as c,X as l,Y as u,_ as ee,b as d,g as te,h as ne,n as re,q as ie,s as ae,y as oe}from"./odata-CDuIqs1a.js";import{a as se,i as ce}from"./utils-DUM89eIj.js";import{i as le,y as ue}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{_ as de,a as fe,b 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,x as Ae,y as je}from"./FormattedTableCell-CK1yXePp.js";function Me(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function f(e){return Array.from(new Set(e))}function Ne(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[],s=[],c=[];for(let o of e){let e=t.getRowId(o);if(n.has(e)){a.push(e);continue}let s=t.getParentRowId(o)??null;n.set(e,o),r.set(e,s),c.push(e),s!==null&&s!==e&&Me(i,s,e)}let l=[];for(let e of c){let t=r.get(e)??null;if(t===null){l.push(e);continue}if(t===e){s.push(e),l.push(e);continue}n.has(t)||(o.push(e),l.push(e))}let u=new Set,ee=(e,t)=>{let r=n.get(e);if(!r)throw Error(`Не удалось построить дерево: строка "${e}" отсутствует в индексе.`);u.add(e);let a=new Set(t);a.add(e);let o={...r},c=i.get(e)??[],l=[];for(let e of c){if(a.has(e)){s.push(e);continue}u.has(e)||l.push(ee(e,a))}return l.length>0&&(o.children=l),o},d=[],te=[];for(let e of l)u.has(e)||(d.push(ee(e,new Set)),te.push(e));for(let e of c)u.has(e)||(s.push(e),d.push(ee(e,new Set)),te.push(e));return{rows:d,rowById:n,allRowIds:c,rootRowIds:f(te),orphanRowIds:f(o),duplicateRowIds:f(a),cyclicRowIds:f(s)}}function p(){return(p=e((()=>{})))()}var m,Pe,Fe,h,g,_,v,y;function b(){return(b=e((()=>{m=`jOS9rT`,Pe=`zHOAf7`,Fe=`j48cXg`,h=`mf4-Kr`,g=`p8pb0F`,_=`KIudLf`,v=`bJsPGU`,y={treeColumnCell:m,selectedIndicatorCell:Pe,treeCell:Fe,treeCellContent:h,expanderButton:g,expanderSpacer:_,sentinel:v}})))()}function Ie(e){return Object.fromEntries(e.map(e=>[e,!0]))}function Le(e){return typeof e==`boolean`?[]:Object.keys(e).filter(t=>e[t])}function x(e,t){return t.get(e.id)??e.original}function Re(e,t,n,r){return e.cell.column.id===n?(0,w.jsxs)(`div`,{className:y.treeCell,style:{paddingInlineStart:`calc(${e.row.depth} * ${oe(r)??`0em`})`},children:[e.row.getCanExpand()?(0,w.jsx)(`button`,{type:`button`,className:y.expanderButton,"aria-label":e.row.getIsExpanded()?`Свернуть строку`:`Развернуть строку`,"data-tree-table-interactive":`true`,"data-ui":`tree-table-expander`,"data-action":e.row.getIsExpanded()?`collapse-tree-table-row`:`expand-tree-table-row`,onClick:t=>{t.stopPropagation(),e.row.toggleExpanded()},children:e.row.getIsExpanded()?(0,w.jsx)(i,{size:16}):(0,w.jsx)(o,{size:16})}):(0,w.jsx)(`span`,{className:y.expanderSpacer,"aria-hidden":`true`}),(0,w.jsx)(`div`,{className:y.treeCellContent,children:t})]}):t}function S({title:e,isLoading:t,isFetching:n,data:r,columns:i,hierarchy:a,selectionMode:o=`none`,expandFirstLevel:s=!1,defaultExpandedRowIds:c,treeColumnId:l,indentSize:u=1,className:d,tableClassName:ne,columnVisibility:re,defaultColumnVisibility:ie,columnOrder:ae,defaultColumnOrder:oe,columnSizing:ce,defaultColumnSizing:ue,columnPinning:fe,defaultColumnPinning:pe,enableColumnResizing:he=!1,enableColumnReordering:_e=!1,columnResizeMinWidth:ye,onColumnVisibilityChange:be,onColumnOrderChange:xe,onColumnSizingChange:Se,onColumnPinningChange:Ee,onRowClick:je,onRowSelectionChange:Me,onExpandedRowIdsChange:f,onReachEnd:p,getRowCanSelect:m,getRowClassName:Pe,renderHeaderContextMenu:Fe,renderCellContent:h}){let g=(0,C.useMemo)(()=>Ne(r??[],a),[r,a]),_=(0,C.useMemo)(()=>ve(i),[i]),v=(0,C.useMemo)(()=>{let e=new Set(c??[]);if(s)for(let t of g.rootRowIds)e.add(t);return Array.from(e)},[c,s,g.rootRowIds]),[b,S]=(0,C.useState)({}),T=(0,C.useRef)(!1),E=(0,C.useRef)(null),ze=(0,C.useRef)(null),{rowSelection:Be,activateRowSelection:D}=te({availableRowIds:g.allRowIds,rowById:g.rowById,selectionMode:o,onRowSelectionChange:Me}),{columnVisibility:O,onColumnVisibilityChange:Ve}=Ce({columnVisibility:re,defaultColumnVisibility:ie,onColumnVisibilityChange:be}),{columnOrder:k,onColumnOrderChange:He}=ge({columnOrder:ae,defaultColumnOrder:oe,onColumnOrderChange:xe}),{columnSizing:A,onColumnSizingChange:Ue}=me({columnSizing:ce,defaultColumnSizing:ue,columnResizeMinWidth:ye,onColumnSizingChange:Se}),{columnPinning:j,onColumnPinningChange:We}=Oe({columnPinning:fe,defaultColumnPinning:pe,onColumnPinningChange:Ee}),Ge=(0,C.useMemo)(()=>({columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O}),[k,j,A,O]),M=(0,C.useEffectEvent)((e,t)=>{if(e.length===0){T.current=!1,S({});return}let n=new Set(e);S(e=>{let r=Le(e).filter(e=>n.has(e));return T.current?Ie(r):(T.current=!0,Ie(Array.from(new Set([...r,...t.filter(e=>n.has(e))]))))})}),Ke=(0,C.useEffectEvent)(e=>{f?.(Le(e))}),N=(0,C.useEffectEvent)(()=>{p?.()});(0,C.useEffect)(()=>{M(g.allRowIds,v)},[v,g.allRowIds]),(0,C.useEffect)(()=>{Ke(b)},[b]),(0,C.useEffect)(()=>{if(!p||!E.current||!ze.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&N()},{root:E.current,threshold:.1});return e.observe(ze.current),()=>e.disconnect()},[t,p,g.rows.length]);let P=Ae({features:ee,data:g.rows,columns:i,state:{columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O,expanded:b,rowSelection:Be},getRowId:e=>a.getRowId(e),getSubRows:e=>e.children,onColumnOrderChange:He,onColumnPinningChange:We,onColumnSizingChange:Ue,onColumnVisibilityChange:Ve,onExpandedChange:S,enableMultiRowSelection:o===`multi`,enableRowSelection:e=>{if(o===`none`)return!1;let t=x(e,g.rowById);return!m||m(t)}}),F=ke(P,Ge),I=l??F[0]?.id,qe=P.getRowModel().rows,Je=(0,C.useMemo)(()=>we({rows:qe,columns:F,resolveRowBoundaryKey:e=>e.depth,excludeColumnIds:I?new Set([I]):void 0}),[qe,F,I]);return(0,w.jsx)(Te,{table:P,columnState:Ge,title:e,isLoading:t,isFetching:n,className:d,tableClassName:ne,selectionMode:o,scrollableRef:E,interactiveElementSelector:`[data-tree-table-interactive="true"]`,onActivateRow:o!==`none`||je?e=>{let t=x(e,g.rowById);D(e.id,e.getCanSelect()),je?.(t)}:void 0,isRowInteractive:e=>!!(je||o!==`none`&&e.getCanSelect()),getRowClassName:e=>{let t=x(e,g.rowById);return Pe?.(t)},getCellClassName:({row:e,cell:t})=>se(t.column.id===I&&y.treeColumnCell,t.column.id===I&&e.getIsSelected()&&y.selectedIndicatorCell),getCellLayout:({cell:e})=>Je.get(e.id),renderHeaderContextMenu:Fe,enableColumnResizing:he,enableColumnReordering:_e,columnResizeMinWidth:ye,renderCellContent:e=>{let t=x(e.row,g.rowById),n=le({field:_.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:t,rowKind:`tree`}),r=de({columnId:e.cell.column.id,runtimeByColumnId:_.runtimeByColumnId,customCellColumnIds:_.customCellColumnIds})?(0,w.jsx)(De,{displayValue:n,align:e.columnMeta?.align}):e.defaultContent;return Re(e,h?h({...e,defaultContent:r,displayValue:n}):r,I,u)},afterTableContent:p?(0,w.jsx)(`div`,{ref:ze,className:y.sentinel,"aria-hidden":`true`}):null})}var C,w;function T(){return(T=e((()=>{C=n(),ue(),d(),p(),ce(),pe(),r(),a(),ye(),xe(),_e(),Se(),je(),he(),be(),Ee(),fe(),b(),w=s(),S.__docgenInfo={description:`Древовидная таблица на базе TanStack Table для плоских OData-данных.`,methods:[],displayName:`TreeTable`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок через исходный тип строки.`},hierarchy:{required:!0,tsType:{name:`TreeTableFlatHierarchy`,elements:[{name:`TData`}],raw:`TreeTableFlatHierarchy<TData>`},description:`Правила восстановления дерева из плоского списка.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},expandFirstLevel:{required:!1,tsType:{name:`boolean`},description:"Если `true`, при первом появлении данных раскрывает корневой уровень.",defaultValue:{value:`false`,computed:!1}},defaultExpandedRowIds:{required:!1,tsType:{name:`unknown`},description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`},treeColumnId:{required:!1,tsType:{name:`string`},description:`Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.
1
+ import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./chevron-down-D9EpqOx3.js";import{n as a,t as o}from"./chevron-right-DEPi2-vh.js";import{n as s}from"./iframe-MGtmawLC.js";import{J as c,X as l,Y as u,_ as ee,b as d,g as te,h as ne,n as re,q as ie,s as ae,y as oe}from"./odata-CU8OqBfR.js";import{a as se,i as ce}from"./utils-DUM89eIj.js";import{i as le,y as ue}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{_ as de,a as fe,b 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,x as Ae,y as je}from"./FormattedTableCell-jahnzzXB.js";function Me(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function f(e){return Array.from(new Set(e))}function Ne(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[],s=[],c=[];for(let o of e){let e=t.getRowId(o);if(n.has(e)){a.push(e);continue}let s=t.getParentRowId(o)??null;n.set(e,o),r.set(e,s),c.push(e),s!==null&&s!==e&&Me(i,s,e)}let l=[];for(let e of c){let t=r.get(e)??null;if(t===null){l.push(e);continue}if(t===e){s.push(e),l.push(e);continue}n.has(t)||(o.push(e),l.push(e))}let u=new Set,ee=(e,t)=>{let r=n.get(e);if(!r)throw Error(`Не удалось построить дерево: строка "${e}" отсутствует в индексе.`);u.add(e);let a=new Set(t);a.add(e);let o={...r},c=i.get(e)??[],l=[];for(let e of c){if(a.has(e)){s.push(e);continue}u.has(e)||l.push(ee(e,a))}return l.length>0&&(o.children=l),o},d=[],te=[];for(let e of l)u.has(e)||(d.push(ee(e,new Set)),te.push(e));for(let e of c)u.has(e)||(s.push(e),d.push(ee(e,new Set)),te.push(e));return{rows:d,rowById:n,allRowIds:c,rootRowIds:f(te),orphanRowIds:f(o),duplicateRowIds:f(a),cyclicRowIds:f(s)}}function p(){return(p=e((()=>{})))()}var m,Pe,Fe,h,g,_,v,y;function b(){return(b=e((()=>{m=`jOS9rT`,Pe=`zHOAf7`,Fe=`j48cXg`,h=`mf4-Kr`,g=`p8pb0F`,_=`KIudLf`,v=`bJsPGU`,y={treeColumnCell:m,selectedIndicatorCell:Pe,treeCell:Fe,treeCellContent:h,expanderButton:g,expanderSpacer:_,sentinel:v}})))()}function Ie(e){return Object.fromEntries(e.map(e=>[e,!0]))}function Le(e){return typeof e==`boolean`?[]:Object.keys(e).filter(t=>e[t])}function x(e,t){return t.get(e.id)??e.original}function Re(e,t,n,r){return e.cell.column.id===n?(0,w.jsxs)(`div`,{className:y.treeCell,style:{paddingInlineStart:`calc(${e.row.depth} * ${oe(r)??`0em`})`},children:[e.row.getCanExpand()?(0,w.jsx)(`button`,{type:`button`,className:y.expanderButton,"aria-label":e.row.getIsExpanded()?`Свернуть строку`:`Развернуть строку`,"data-tree-table-interactive":`true`,"data-ui":`tree-table-expander`,"data-action":e.row.getIsExpanded()?`collapse-tree-table-row`:`expand-tree-table-row`,onClick:t=>{t.stopPropagation(),e.row.toggleExpanded()},children:e.row.getIsExpanded()?(0,w.jsx)(i,{size:16}):(0,w.jsx)(o,{size:16})}):(0,w.jsx)(`span`,{className:y.expanderSpacer,"aria-hidden":`true`}),(0,w.jsx)(`div`,{className:y.treeCellContent,children:t})]}):t}function S({title:e,isLoading:t,isFetching:n,data:r,columns:i,hierarchy:a,selectionMode:o=`none`,expandFirstLevel:s=!1,defaultExpandedRowIds:c,treeColumnId:l,indentSize:u=1,className:d,tableClassName:ne,columnVisibility:re,defaultColumnVisibility:ie,columnOrder:ae,defaultColumnOrder:oe,columnSizing:ce,defaultColumnSizing:ue,columnPinning:fe,defaultColumnPinning:pe,enableColumnResizing:he=!1,enableColumnReordering:_e=!1,columnResizeMinWidth:ye,onColumnVisibilityChange:be,onColumnOrderChange:xe,onColumnSizingChange:Se,onColumnPinningChange:Ee,onRowClick:je,onRowSelectionChange:Me,onExpandedRowIdsChange:f,onReachEnd:p,getRowCanSelect:m,getRowClassName:Pe,renderHeaderContextMenu:Fe,renderCellContent:h}){let g=(0,C.useMemo)(()=>Ne(r??[],a),[r,a]),_=(0,C.useMemo)(()=>ve(i),[i]),v=(0,C.useMemo)(()=>{let e=new Set(c??[]);if(s)for(let t of g.rootRowIds)e.add(t);return Array.from(e)},[c,s,g.rootRowIds]),[b,S]=(0,C.useState)({}),T=(0,C.useRef)(!1),E=(0,C.useRef)(null),ze=(0,C.useRef)(null),{rowSelection:Be,activateRowSelection:D}=te({availableRowIds:g.allRowIds,rowById:g.rowById,selectionMode:o,onRowSelectionChange:Me}),{columnVisibility:O,onColumnVisibilityChange:Ve}=Ce({columnVisibility:re,defaultColumnVisibility:ie,onColumnVisibilityChange:be}),{columnOrder:k,onColumnOrderChange:He}=ge({columnOrder:ae,defaultColumnOrder:oe,onColumnOrderChange:xe}),{columnSizing:A,onColumnSizingChange:Ue}=me({columnSizing:ce,defaultColumnSizing:ue,columnResizeMinWidth:ye,onColumnSizingChange:Se}),{columnPinning:j,onColumnPinningChange:We}=Oe({columnPinning:fe,defaultColumnPinning:pe,onColumnPinningChange:Ee}),Ge=(0,C.useMemo)(()=>({columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O}),[k,j,A,O]),M=(0,C.useEffectEvent)((e,t)=>{if(e.length===0){T.current=!1,S({});return}let n=new Set(e);S(e=>{let r=Le(e).filter(e=>n.has(e));return T.current?Ie(r):(T.current=!0,Ie(Array.from(new Set([...r,...t.filter(e=>n.has(e))]))))})}),Ke=(0,C.useEffectEvent)(e=>{f?.(Le(e))}),N=(0,C.useEffectEvent)(()=>{p?.()});(0,C.useEffect)(()=>{M(g.allRowIds,v)},[v,g.allRowIds]),(0,C.useEffect)(()=>{Ke(b)},[b]),(0,C.useEffect)(()=>{if(!p||!E.current||!ze.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&N()},{root:E.current,threshold:.1});return e.observe(ze.current),()=>e.disconnect()},[t,p,g.rows.length]);let P=Ae({features:ee,data:g.rows,columns:i,state:{columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:O,expanded:b,rowSelection:Be},getRowId:e=>a.getRowId(e),getSubRows:e=>e.children,onColumnOrderChange:He,onColumnPinningChange:We,onColumnSizingChange:Ue,onColumnVisibilityChange:Ve,onExpandedChange:S,enableMultiRowSelection:o===`multi`,enableRowSelection:e=>{if(o===`none`)return!1;let t=x(e,g.rowById);return!m||m(t)}}),F=ke(P,Ge),I=l??F[0]?.id,qe=P.getRowModel().rows,Je=(0,C.useMemo)(()=>we({rows:qe,columns:F,resolveRowBoundaryKey:e=>e.depth,excludeColumnIds:I?new Set([I]):void 0}),[qe,F,I]);return(0,w.jsx)(Te,{table:P,columnState:Ge,title:e,isLoading:t,isFetching:n,className:d,tableClassName:ne,selectionMode:o,scrollableRef:E,interactiveElementSelector:`[data-tree-table-interactive="true"]`,onActivateRow:o!==`none`||je?e=>{let t=x(e,g.rowById);D(e.id,e.getCanSelect()),je?.(t)}:void 0,isRowInteractive:e=>!!(je||o!==`none`&&e.getCanSelect()),getRowClassName:e=>{let t=x(e,g.rowById);return Pe?.(t)},getCellClassName:({row:e,cell:t})=>se(t.column.id===I&&y.treeColumnCell,t.column.id===I&&e.getIsSelected()&&y.selectedIndicatorCell),getCellLayout:({cell:e})=>Je.get(e.id),renderHeaderContextMenu:Fe,enableColumnResizing:he,enableColumnReordering:_e,columnResizeMinWidth:ye,renderCellContent:e=>{let t=x(e.row,g.rowById),n=le({field:_.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:t,rowKind:`tree`}),r=de({columnId:e.cell.column.id,runtimeByColumnId:_.runtimeByColumnId,customCellColumnIds:_.customCellColumnIds})?(0,w.jsx)(De,{displayValue:n,align:e.columnMeta?.align}):e.defaultContent;return Re(e,h?h({...e,defaultContent:r,displayValue:n}):r,I,u)},afterTableContent:p?(0,w.jsx)(`div`,{ref:ze,className:y.sentinel,"aria-hidden":`true`}):null})}var C,w;function T(){return(T=e((()=>{C=n(),ue(),d(),p(),ce(),pe(),r(),a(),ye(),xe(),_e(),Se(),je(),he(),be(),Ee(),fe(),b(),w=s(),S.__docgenInfo={description:`Древовидная таблица на базе TanStack Table для плоских OData-данных.`,methods:[],displayName:`TreeTable`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок через исходный тип строки.`},hierarchy:{required:!0,tsType:{name:`TreeTableFlatHierarchy`,elements:[{name:`TData`}],raw:`TreeTableFlatHierarchy<TData>`},description:`Правила восстановления дерева из плоского списка.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},expandFirstLevel:{required:!1,tsType:{name:`boolean`},description:"Если `true`, при первом появлении данных раскрывает корневой уровень.",defaultValue:{value:`false`,computed:!1}},defaultExpandedRowIds:{required:!1,tsType:{name:`unknown`},description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`},treeColumnId:{required:!1,tsType:{name:`string`},description:`Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.
2
2
 
3
3
  Если не указан, используется первая видимая колонка.`},indentSize:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:`Отступ на один уровень вложенности.
4
4
 
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-Bbj4T0X2.js";import{i as n,r}from"./react-qN2cStNd.js";import{c as i,l as a,m as o}from"./blocks-CrYcG0WD.js";var s;function c(){return(c=e((()=>{s=`# Async helpers
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-MGtmawLC.js";import{i as n,r}from"./react-qN2cStNd.js";import{c as i,l as a,m as o}from"./blocks-B8O-SmXz.js";var s;function c(){return(c=e((()=>{s=`# Async helpers
2
2
 
3
3
  Модуль \`src/shared/api/async\` содержит инфраструктурный helper для пакетного запуска async-задач с ограничением по параллелизму.
4
4