@ryuzaki13/react-foundation-ui 1.6.15 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +36 -0
  2. package/dist/advanced-search/index.js +2 -2
  3. package/dist/base-table/index.js +2 -2
  4. package/dist/base-table/lib/columnPinning.d.ts +15 -17
  5. package/dist/base-table/lib/columnPinning.d.ts.map +1 -1
  6. package/dist/base-table/lib/mergeDuplicates.d.ts +4 -4
  7. package/dist/base-table/lib/mergeDuplicates.d.ts.map +1 -1
  8. package/dist/base-table/model/useTableColumnPinning.d.ts +2 -2
  9. package/dist/base-table/model/useTableColumnVisibility.d.ts +7 -6
  10. package/dist/base-table/model/useTableColumnVisibility.d.ts.map +1 -1
  11. package/dist/base-table/ui/BaseTable.d.ts +8 -9
  12. package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
  13. package/dist/base-table/ui/BaseTableHeaderCell.d.ts +6 -6
  14. package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -1
  15. package/dist/chunks/{base-table-CTafaxo2.js → base-table-DNSYOO9t.js} +29 -29
  16. package/dist/chunks/base-table-DNSYOO9t.js.map +1 -0
  17. package/dist/chunks/{multi-select-Bs1GU5MD.js → multi-select-Clsst6DE.js} +129 -118
  18. package/dist/chunks/{multi-select-Bs1GU5MD.js.map → multi-select-Clsst6DE.js.map} +1 -1
  19. package/dist/chunks/odata-dependent-C_DCbKY2.js +45 -0
  20. package/dist/chunks/odata-dependent-C_DCbKY2.js.map +1 -0
  21. package/dist/chunks/select-B0xc6g81.js +355 -0
  22. package/dist/chunks/select-B0xc6g81.js.map +1 -0
  23. package/dist/chunks/{table-DOwANXnt.js → table-RO4dfMAj.js} +9 -9
  24. package/dist/chunks/table-RO4dfMAj.js.map +1 -0
  25. package/dist/multi-select/index.js +1 -1
  26. package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts +5 -13
  27. package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts.map +1 -1
  28. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts +3 -20
  29. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -1
  30. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts +29 -0
  31. package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts.map +1 -0
  32. package/dist/odata-dependent/index.d.ts +3 -0
  33. package/dist/odata-dependent/index.d.ts.map +1 -0
  34. package/dist/odata-dependent/index.js +2 -0
  35. package/dist/odata-dependent/model/useODataDependentSelection.d.ts +50 -0
  36. package/dist/odata-dependent/model/useODataDependentSelection.d.ts.map +1 -0
  37. package/dist/preset-select/index.js +1 -1
  38. package/dist/select/ODataDependentSegmentSelect.d.ts +12 -0
  39. package/dist/select/ODataDependentSegmentSelect.d.ts.map +1 -0
  40. package/dist/select/index.d.ts +1 -0
  41. package/dist/select/index.d.ts.map +1 -1
  42. package/dist/select/index.js +2 -2
  43. package/dist/simple-table/SimpleTable.d.ts +2 -2
  44. package/dist/simple-table/SimpleTable.d.ts.map +1 -1
  45. package/dist/simple-table/index.js +7 -10
  46. package/dist/simple-table/index.js.map +1 -1
  47. package/dist/state-select/index.js +1 -1
  48. package/dist/styles.css +1 -1
  49. package/dist/table/Table.d.ts +7 -8
  50. package/dist/table/Table.d.ts.map +1 -1
  51. package/dist/table/index.js +1 -1
  52. package/dist/tree-select/index.js +1 -1
  53. package/dist/tree-table/TreeTable.d.ts +7 -8
  54. package/dist/tree-table/TreeTable.d.ts.map +1 -1
  55. package/dist/tree-table/index.js +104 -105
  56. package/dist/tree-table/index.js.map +1 -1
  57. package/package.json +13 -9
  58. package/storybook-static/assets/{Badge-y59HS6Mh.js → Badge-Dis0WdSI.js} +1 -1
  59. package/storybook-static/assets/{Badge.stories-CmAFVzHL.js → Badge.stories-DKUJOyg3.js} +1 -1
  60. package/storybook-static/assets/{BadgeList-B-LJdCLU.js → BadgeList-C_ImRsat.js} +1 -1
  61. package/storybook-static/assets/{Button-CbGK6ujA.js → Button-BSsRzaxX.js} +1 -1
  62. package/storybook-static/assets/{Button-CVhc13mG.js → Button-DxGg9rB3.js} +1 -1
  63. package/storybook-static/assets/{Button.stories-BxBE5epv.js → Button.stories-fHvDvt2w.js} +1 -1
  64. package/storybook-static/assets/{CalendarView-DC1MoZHd.js → CalendarView-BFcwl9Vq.js} +1 -1
  65. package/storybook-static/assets/{CheckBox-CJuQmvgS.js → CheckBox-CSbi2BEU.js} +1 -1
  66. package/storybook-static/assets/{CheckBox-CTF0MTwi.js → CheckBox-SuVeN-FY.js} +1 -1
  67. package/storybook-static/assets/{CheckBox.stories-Cgcw4ZWi.js → CheckBox.stories-C6PF0zG1.js} +1 -1
  68. package/storybook-static/assets/{Color-6AOWCN3U-BQ0wHxzY.js → Color-6AOWCN3U-DX3p6XEG.js} +1 -1
  69. package/storybook-static/assets/{ContextMenu-DKFfj-4J.js → ContextMenu-BhGu3QoC.js} +1 -1
  70. package/storybook-static/assets/{ContextMenu-CHa5JD2q.js → ContextMenu-f0QZPgBQ.js} +1 -1
  71. package/storybook-static/assets/{ContextMenu.stories-BrFpb6Zf.js → ContextMenu.stories-V9d5mjak.js} +1 -1
  72. package/storybook-static/assets/{DateInput-C4NbLkP1.js → DateInput-BmL4c3wO.js} +1 -1
  73. package/storybook-static/assets/{DateInput-DMar_jSh.js → DateInput-C0K0JvWe.js} +1 -1
  74. package/storybook-static/assets/{DateInput.stories-9NUN5Y-h.js → DateInput.stories-65WMYAML.js} +1 -1
  75. package/storybook-static/assets/{DateRangePresetSelect-C2YQ1Ta2.js → DateRangePresetSelect-DVAqXJt1.js} +1 -1
  76. package/storybook-static/assets/{DateRangePresetSelect-BNM2Z8v-.js → DateRangePresetSelect-DdpNa-Yj.js} +1 -1
  77. package/storybook-static/assets/{DateRangePresetSelect.stories-CU57n31Y.js → DateRangePresetSelect.stories-BGgd7TOu.js} +1 -1
  78. package/storybook-static/assets/{Detail-ClrynTH8.js → Detail-1rmVP04K.js} +1 -1
  79. package/storybook-static/assets/{Detail.stories-D8uN6AEx.js → Detail.stories-CW2YXAPy.js} +1 -1
  80. package/storybook-static/assets/{Dialog-F6geiNP6.js → Dialog-CszRheXL.js} +1 -1
  81. package/storybook-static/assets/{Dialog-B3yVDNey.js → Dialog-DcdGv_Bv.js} +1 -1
  82. package/storybook-static/assets/{Dialog.stories-BUISgmFq.js → Dialog.stories-CN9vtGuI.js} +1 -1
  83. package/storybook-static/assets/{Disclosure-D8eee9jT.js → Disclosure-DWeZZ2i8.js} +1 -1
  84. package/storybook-static/assets/{Disclosure.stories-C81bKGvm.js → Disclosure.stories-pZXR5BOM.js} +1 -1
  85. package/storybook-static/assets/{DisclosureGroup-Dql74J3c.js → DisclosureGroup-BWba17wI.js} +1 -1
  86. package/storybook-static/assets/{DocsRenderer-JROSPFPF-B_i8iiBi.js → DocsRenderer-JROSPFPF-BYN3Mg4U.js} +1 -1
  87. package/storybook-static/assets/{DropZone-CjYwzdtm.js → DropZone-BCe20YiO.js} +1 -1
  88. package/storybook-static/assets/{DropZone-CWU49UGV.js → DropZone-ByDIyQgI.js} +1 -1
  89. package/storybook-static/assets/{DropZone.stories-Bu9astzV.js → DropZone.stories-CLXe7D8H.js} +1 -1
  90. package/storybook-static/assets/{DropdownMenu-CIQZ1s_d.js → DropdownMenu-BD-pc32j.js} +1 -1
  91. package/storybook-static/assets/{ExpandableActionPanel-a-wSXVqz.js → ExpandableActionPanel-v-DZaEKX.js} +1 -1
  92. package/storybook-static/assets/{ExpandableActionPanel.stories-B5kDNMOA.js → ExpandableActionPanel.stories-BhHYM4mJ.js} +1 -1
  93. package/storybook-static/assets/{Flex-C-LVVZu8.js → Flex-DukB58MF.js} +1 -1
  94. package/storybook-static/assets/{Flex.stories-C3UyARP_.js → Flex.stories-DQmoW5jb.js} +1 -1
  95. package/storybook-static/assets/{FloatingPopover-C3jr4qCd.js → FloatingPopover-fnwAyZil.js} +1 -1
  96. package/storybook-static/assets/{FormattedTableCell-CY3E21k8.css → FormattedTableCell-AZc2IHfK.css} +1 -1
  97. package/storybook-static/assets/FormattedTableCell-CK1yXePp.js +15 -0
  98. package/storybook-static/assets/{Grid-T44eQhRH.js → Grid-BoLaxbR_.js} +1 -1
  99. package/storybook-static/assets/{Grid.stories-CCyTn5oG.js → Grid.stories-CSuOTbao.js} +1 -1
  100. package/storybook-static/assets/{ImageCropper.stories-Ctj0tTWD.js → ImageCropper.stories-BRi_qlO4.js} +1 -1
  101. package/storybook-static/assets/{ImageRenderer-BmzXaLnX.js → ImageRenderer-BiV2g53B.js} +1 -1
  102. package/storybook-static/assets/{ImageRenderer.stories-BchLDd9U.js → ImageRenderer.stories-Da7QE7_Q.js} +1 -1
  103. package/storybook-static/assets/{ImageView.stories-wZChQ7t6.js → ImageView.stories-DSFBxOa6.js} +1 -1
  104. package/storybook-static/assets/{ImageViewer.stories-CjwPt6ux.js → ImageViewer.stories-D2rcovap.js} +2 -2
  105. package/storybook-static/assets/{ImageViewerRuntime-CwHTx5CR.js → ImageViewerRuntime-B2CS1UFL.js} +1 -1
  106. package/storybook-static/assets/{Input-B9nkOQ6L.js → Input-BIy4zhlA.js} +1 -1
  107. package/storybook-static/assets/{Input-ByxjsYlG.js → Input-CVs7SVMJ.js} +1 -1
  108. package/storybook-static/assets/{Input.stories-Bcyy4kLt.js → Input.stories-BBXrateo.js} +1 -1
  109. package/storybook-static/assets/{InputDateTime-DfpHtYTi.js → InputDateTime-VUiW2Znv.js} +1 -1
  110. package/storybook-static/assets/{InputDateTime.stories-WDuCOx_6.js → InputDateTime.stories-lqECZY7T.js} +1 -1
  111. package/storybook-static/assets/{InputFile-DAko5xMV.js → InputFile-D0aHVW1q.js} +1 -1
  112. package/storybook-static/assets/{InputFile-DQUxyiai.js → InputFile-DEeRFq2f.js} +1 -1
  113. package/storybook-static/assets/{InputFile.stories-X6set_bl.js → InputFile.stories-9fBhIus4.js} +1 -1
  114. package/storybook-static/assets/{InputFiles-CYo3-wOK.js → InputFiles-C_KIqiN9.js} +1 -1
  115. package/storybook-static/assets/{InputFiles-B0Gs4B9M.js → InputFiles-DTy038xW.js} +1 -1
  116. package/storybook-static/assets/{InputFiles.stories-D04gwM6v.js → InputFiles.stories-CspkI6-Y.js} +1 -1
  117. package/storybook-static/assets/{InputFilesList-V2ras_Is.js → InputFilesList-BQdSFOI1.js} +1 -1
  118. package/storybook-static/assets/{InputImage-CuuPUX-y.js → InputImage-C0kyUtT0.js} +1 -1
  119. package/storybook-static/assets/{InputImage-CsAsZufs.js → InputImage-VJaqApEh.js} +1 -1
  120. package/storybook-static/assets/{InputImage.stories-ClhlRcMN.js → InputImage.stories-DKXeva5i.js} +1 -1
  121. package/storybook-static/assets/{InteractiveComponents-BjG6Uxcq.js → InteractiveComponents-B8zzCcZ_.js} +1 -1
  122. package/storybook-static/assets/{InteractiveComponents.stories-ljjqMc9s.js → InteractiveComponents.stories-DP0Jma43.js} +1 -1
  123. package/storybook-static/assets/{LayoutPicker-C3i1T7zB.js → LayoutPicker-BpcPcCDz.js} +1 -1
  124. package/storybook-static/assets/{LayoutPicker-C1APKtbC.js → LayoutPicker-DjUZ5y7M.js} +1 -1
  125. package/storybook-static/assets/{LayoutPicker.stories-Cn66HQfj.js → LayoutPicker.stories-POpVHww7.js} +1 -1
  126. package/storybook-static/assets/{Listbox-BhzabNF9.js → Listbox-Cg1OczYK.js} +1 -1
  127. package/storybook-static/assets/{Listbox-BQZFMdE4.js → Listbox-gHitzePa.js} +1 -1
  128. package/storybook-static/assets/{Listbox.stories-BmKd1TN6.js → Listbox.stories-Dw3IdYZA.js} +1 -1
  129. package/storybook-static/assets/{Modal-CrDusmmr.js → Modal-CY7qfD1u.js} +1 -1
  130. package/storybook-static/assets/{Modal.stories-CK7BwByp.js → Modal.stories-Boa7oW-a.js} +1 -1
  131. package/storybook-static/assets/{ModalManagerProvider-CP_LR9Sf.js → ModalManagerProvider-GYXaQe-7.js} +1 -1
  132. package/storybook-static/assets/{MultiSelect-DY9PZi68.js → MultiSelect-D8qN-i5f.js} +1 -1
  133. package/storybook-static/assets/{MultiSelect-DnqTZr96.js → MultiSelect-DToMWi-I.js} +1 -1
  134. package/storybook-static/assets/{MultiSelect.stories-CVX122Ie.js → MultiSelect.stories-DLuXOl9Q.js} +1 -1
  135. package/storybook-static/assets/{NoData-DtfUdNbp.js → NoData-Bzj7vNCz.js} +1 -1
  136. package/storybook-static/assets/{NotificationsHost-7zqHt4bx.js → NotificationsHost-Bs93X8Nv.js} +1 -1
  137. package/storybook-static/assets/{NotificationsHost.stories-Idv-3hmN.js → NotificationsHost.stories-DxVOVOf8.js} +1 -1
  138. package/storybook-static/assets/{ODataMultiSelect-CvzIsU5t.js → ODataMultiSelect-Dh33YJP6.js} +3 -2
  139. package/storybook-static/assets/ODataMultiSelect.stories-DUmFRMTU.js +139 -0
  140. package/storybook-static/assets/{ODataSelect-Cg4PjB9T.js → ODataSelect-lpN9sKth.js} +3 -1
  141. package/storybook-static/assets/ODataSelect.stories-BkFs5uIY.js +161 -0
  142. package/storybook-static/assets/{ODataTreeMultiSelect-DovHjUl1.js → ODataTreeMultiSelect-DFY2FJBX.js} +1 -1
  143. package/storybook-static/assets/{ODataTreeMultiSelect.stories-DgzqY4r0.js → ODataTreeMultiSelect.stories-B_Izm4eH.js} +1 -1
  144. package/storybook-static/assets/{ODataTreeSelect-JJ2vuX2u.js → ODataTreeSelect-DdniMRRE.js} +1 -1
  145. package/storybook-static/assets/{ODataTreeSelect.stories-C1htwHhJ.js → ODataTreeSelect.stories-DxNhuLVU.js} +1 -1
  146. package/storybook-static/assets/{OneStepScroller-Cj_Sots6.js → OneStepScroller-CHvIHlYx.js} +1 -1
  147. package/storybook-static/assets/{PeriodSelect-BCmsFuv0.js → PeriodSelect-BgAak8GG.js} +1 -1
  148. package/storybook-static/assets/{PeriodSelect-umbZa6Vz.js → PeriodSelect-T1qaj11S.js} +1 -1
  149. package/storybook-static/assets/{PeriodSelect.stories-iZew0d5P.js → PeriodSelect.stories-DYEtD47p.js} +1 -1
  150. package/storybook-static/assets/{PickerSelectionToolbar-BpRSRbT3.js → PickerSelectionToolbar-DWtGYc4E.js} +1 -1
  151. package/storybook-static/assets/{PickerTriggerActions-BBpUiawn.js → PickerTriggerActions-BIH8_o_b.js} +1 -1
  152. package/storybook-static/assets/{Popover-DlwBQ91i.js → Popover-BVP-wMdK.js} +1 -1
  153. package/storybook-static/assets/{Popover-COZU5MVS.js → Popover-DQKHL6wc.js} +1 -1
  154. package/storybook-static/assets/{Popover.stories-BsjqePTd.js → Popover.stories-Pt4-7Aof.js} +1 -1
  155. package/storybook-static/assets/{PresetRangeDateInput-Dk5jJC5w.js → PresetRangeDateInput-C4_NegG_.js} +1 -1
  156. package/storybook-static/assets/{PresetRangeDateInput-QfbYKw0Z.js → PresetRangeDateInput-DQ3rlCp5.js} +1 -1
  157. package/storybook-static/assets/{PresetRangeDateInput.stories-BuykZTZe.js → PresetRangeDateInput.stories-3AzmySZv.js} +1 -1
  158. package/storybook-static/assets/{PresetSelect-CZ7mJxKl.js → PresetSelect-BTh53LoO.js} +1 -1
  159. package/storybook-static/assets/{RadioButton-_kpqtWIo.js → RadioButton-BfBSX73Y.js} +1 -1
  160. package/storybook-static/assets/{RadioButton-ism7L8zl.js → RadioButton-Ci25eUL_.js} +1 -1
  161. package/storybook-static/assets/{RadioButton.stories-DfjhjPnV.js → RadioButton.stories-JVGXFlz8.js} +1 -1
  162. package/storybook-static/assets/{RadioGroup-DxYjpIR1.js → RadioGroup-CL7EHd6O.js} +1 -1
  163. package/storybook-static/assets/{RadioGroup-B7so-JDF.js → RadioGroup-CW39hD_-.js} +1 -1
  164. package/storybook-static/assets/{RadioGroup.stories-DpVtRTBk.js → RadioGroup.stories-MS9Jl6AT.js} +1 -1
  165. package/storybook-static/assets/{Scrollable-D6rD81Kz.js → Scrollable-Bo4197LC.js} +1 -1
  166. package/storybook-static/assets/{Select-DffwCANA.js → Select-CxQqH8H5.js} +1 -1
  167. package/storybook-static/assets/{Select-Ci-axJ2e.js → Select-DBsWg0wv.js} +1 -1
  168. package/storybook-static/assets/{Select.stories-C9LrrykH.js → Select.stories-DfjNWXba.js} +1 -1
  169. package/storybook-static/assets/{SelectOptionContent-DFbLFeJp.js → SelectOptionContent-Bie2pzia.js} +1 -1
  170. package/storybook-static/assets/{SerializableSelect-CE_lhNql.js → SerializableSelect-BktENdyg.js} +1 -1
  171. package/storybook-static/assets/{SerializableSelect.stories-DV6F91Gh.js → SerializableSelect.stories-B8zxcu66.js} +1 -1
  172. package/storybook-static/assets/{SingleDateTimeInput-DaL7cpjM.js → SingleDateTimeInput-DZBRm3dM.js} +1 -1
  173. package/storybook-static/assets/{SingleDateTimeInput-CGEUodYr.js → SingleDateTimeInput-DvpU1DkI.js} +1 -1
  174. package/storybook-static/assets/{SingleDateTimeInput.stories-C7qfFiPV.js → SingleDateTimeInput.stories-Bku5Zc05.js} +1 -1
  175. package/storybook-static/assets/{Slider-BrukeE6j.js → Slider-BJkB6IoW.js} +1 -1
  176. package/storybook-static/assets/{Slider-m5BO0wFz.js → Slider-BN2xXBOi.js} +1 -1
  177. package/storybook-static/assets/{Slider.stories-CNqzSJqp.js → Slider.stories-CM3yNojO.js} +1 -1
  178. package/storybook-static/assets/{SliderInput-D0UlZx-t.js → SliderInput-2ZiuvbpQ.js} +1 -1
  179. package/storybook-static/assets/{SliderInput-CS9d2VpF.js → SliderInput-CPX2bJK3.js} +1 -1
  180. package/storybook-static/assets/{SliderInput.stories-B5-aln-T.js → SliderInput.stories-dJX-tRtA.js} +1 -1
  181. package/storybook-static/assets/{Sortable-CSt-VcmM.js → Sortable-Bkr-xnO4.js} +1 -1
  182. package/storybook-static/assets/{Sortable.stories-CVUdrXGv.js → Sortable.stories-BPEg99e5.js} +1 -1
  183. package/storybook-static/assets/{Splitter-DcsxH_9j.js → Splitter-D4en_f5n.js} +1 -1
  184. package/storybook-static/assets/{Splitter.stories-BBfUYDeq.js → Splitter.stories-Cynn_kHV.js} +1 -1
  185. package/storybook-static/assets/{StateSelect-BDJRQxjc.js → StateSelect-BgbwMGGc.js} +1 -1
  186. package/storybook-static/assets/{StateSelect-CCQIdUHC.js → StateSelect-PcH0VuO_.js} +1 -1
  187. package/storybook-static/assets/{StateSelect.stories-7wPKSG6b.js → StateSelect.stories-CShqVH9Y.js} +1 -1
  188. package/storybook-static/assets/{StringToggle.stories-DRiRwW1z.js → StringToggle.stories-CypR3oB_.js} +1 -1
  189. package/storybook-static/assets/{Switch-Cw3jDgSx.js → Switch-BVN6TcVZ.js} +1 -1
  190. package/storybook-static/assets/{Switch-BtZXCfQa.js → Switch-D-cSDh8j.js} +1 -1
  191. package/storybook-static/assets/{Switch.stories-DprDLnyc.js → Switch.stories-C0s7gvBf.js} +1 -1
  192. package/storybook-static/assets/{Table-C0C6gEXh.js → Table-CwXJDDe6.js} +1 -1
  193. package/storybook-static/assets/Table.stories-vqttnROX.js +207 -0
  194. package/storybook-static/assets/{Tabs-Cmm9Be8c.js → Tabs-BRSEvQpk.js} +1 -1
  195. package/storybook-static/assets/{Tabs.stories-TZO3cqOu.js → Tabs.stories-R_7jiTQc.js} +1 -1
  196. package/storybook-static/assets/{TabsBox-CMleIsIx.js → TabsBox-CqSxAUdJ.js} +1 -1
  197. package/storybook-static/assets/{TagInput-C1w6bPXM.js → TagInput-C3ahaF-B.js} +1 -1
  198. package/storybook-static/assets/{TagInput.stories-DjZGRNf8.js → TagInput.stories-C3O2gBUY.js} +1 -1
  199. package/storybook-static/assets/{Text-B7BlP612.js → Text-b8fMr5Hd.js} +1 -1
  200. package/storybook-static/assets/{Textarea-QCTMJrzh.js → Textarea-BDL_MwcM.js} +1 -1
  201. package/storybook-static/assets/{Textarea-CR1BsDCZ.js → Textarea-CCgxNL6F.js} +1 -1
  202. package/storybook-static/assets/{Textarea.stories-BXVDnedp.js → Textarea.stories-kc_LXBix.js} +1 -1
  203. package/storybook-static/assets/{TimePanel-sVNwfNVp.js → TimePanel-BCotjEKQ.js} +1 -1
  204. package/storybook-static/assets/{TimePanel.stories-CgWwUSUo.js → TimePanel.stories-B8paqA-_.js} +1 -1
  205. package/storybook-static/assets/{Toggle-yuE_iKax.js → Toggle-CT4IyZPI.js} +1 -1
  206. package/storybook-static/assets/{Toggle-CsN8aXvZ.js → Toggle-CbsKNs_c.js} +1 -1
  207. package/storybook-static/assets/{Toggle.stories-cYH_nCrO.js → Toggle.stories-YsQZk4DA.js} +1 -1
  208. package/storybook-static/assets/{TreeMultiSelect-BUZ-QzJc.js → TreeMultiSelect-CmAa_Gin.js} +1 -1
  209. package/storybook-static/assets/{TreeMultiSelect-Bb8lGllH.js → TreeMultiSelect-DRLoUCXF.js} +1 -1
  210. package/storybook-static/assets/{TreeMultiSelect.stories-x-F-Y4_h.js → TreeMultiSelect.stories-CV65ZVUo.js} +1 -1
  211. package/storybook-static/assets/{TreePickerBase-DOT734vD.js → TreePickerBase-rB-Q9Uwf.js} +1 -1
  212. package/storybook-static/assets/{TreeSelect-DDgqDh2L.js → TreeSelect-CsYGUC6s.js} +1 -1
  213. package/storybook-static/assets/{TreeSelect-dx0121sD.js → TreeSelect-FhEH7bMx.js} +1 -1
  214. package/storybook-static/assets/{TreeSelect.stories-Ef4wBpPe.js → TreeSelect.stories-Cw4IkrNG.js} +1 -1
  215. package/storybook-static/assets/{TreeTable-DSBZR5Ak.js → TreeTable-Bajr80HM.js} +1 -1
  216. package/storybook-static/assets/{TreeTable.stories-ypxZKEv5.js → TreeTable.stories-DDCGoB2u.js} +4 -4
  217. package/storybook-static/assets/{async-B9dg7eWG.js → async-CWrFMaux.js} +1 -1
  218. package/storybook-static/assets/{blocks-Cta1XrWW.js → blocks-CrYcG0WD.js} +3 -3
  219. package/storybook-static/assets/{browserAndReact-BQ_KR_3d.js → browserAndReact-DSxaVMjM.js} +1 -1
  220. package/storybook-static/assets/{check-R_o7C6xx.js → check-Cnuffb78.js} +1 -1
  221. package/storybook-static/assets/{chevron-down-cKT7IMMQ.js → chevron-down-ChPfAmdy.js} +1 -1
  222. package/storybook-static/assets/{chevron-left-CiDPsfyq.js → chevron-left-CEB5eAVk.js} +1 -1
  223. package/storybook-static/assets/{chevron-right-C19a7OR-.js → chevron-right-DHw2yjh1.js} +1 -1
  224. package/storybook-static/assets/{chunk-W22LQPXL-DxKkuEyo.js → chunk-W22LQPXL-i9Cm4c-p.js} +1 -1
  225. package/storybook-static/assets/{circle-alert-DBOiovw1.js → circle-alert-B0REyiCt.js} +1 -1
  226. package/storybook-static/assets/{circle-check-7XeWOdm4.js → circle-check-D6WZ24rj.js} +1 -1
  227. package/storybook-static/assets/components-BCe0UvQp.js +241 -0
  228. package/storybook-static/assets/{contextMenu-CJYmqLQb.js → contextMenu-De66k1si.js} +1 -1
  229. package/storybook-static/assets/{defaultRenderers-CbaqmJz1.js → defaultRenderers-D0Z-7t0H.js} +1 -1
  230. package/storybook-static/assets/{download-7lMMZoAs.js → download-C1DiezfA.js} +1 -1
  231. package/storybook-static/assets/{filesAndExcel-ecqcdsWK.js → filesAndExcel-BVMGH9OS.js} +1 -1
  232. package/storybook-static/assets/{floating-ui.react-BZQpsoBF.js → floating-ui.react-BswSORmJ.js} +1 -1
  233. package/storybook-static/assets/{formatters-CVj-3Vn0-BFaHJqZL.js → formatters-CBgrBeSA-DY6OIAc8.js} +1 -1
  234. package/storybook-static/assets/{formatters-Do_IyKhx.js → formatters-D27XMzPd.js} +1 -1
  235. package/storybook-static/assets/{formatters-runtime-BzeLCcNv.js → formatters-runtime-B_C8yQOS.js} +1 -1
  236. package/storybook-static/assets/{foundationLib-llmpMqxO.js → foundationLib-BmwSyi1e.js} +1 -1
  237. package/storybook-static/assets/{hooks-C3kva5fu.js → hooks-CXlVTo5i.js} +1 -1
  238. package/storybook-static/assets/{iframe-dENsI_HJ.js → iframe-Bbj4T0X2.js} +4 -4
  239. package/storybook-static/assets/iframe-DLZ4F2nx.js +1 -0
  240. package/storybook-static/assets/{info-DNxF2xdK.js → info-D_YlGthq.js} +1 -1
  241. package/storybook-static/assets/odata-CDuIqs1a.js +1 -0
  242. package/storybook-static/assets/{odataAndTables-D36xYvsu.js → odataAndTables-D4R4KHZc.js} +3 -3
  243. package/storybook-static/assets/{odataFetchFn-38rx5VG-.js → odataFetchFn-Sw0FicJe.js} +1 -1
  244. package/storybook-static/assets/{odataStoryFixtures-CorPZlzg.js → odataStoryFixtures-z1HaQHNb.js} +2 -2
  245. package/storybook-static/assets/{persisted-8ua2a009.js → persisted-TRx901TV.js} +1 -1
  246. package/storybook-static/assets/{pureUtilities-ikdtRVqv.js → pureUtilities-B8KVYaZx.js} +1 -1
  247. package/storybook-static/assets/{react-B3i_po7W.js → react-CTGFMmtV.js} +1 -1
  248. package/storybook-static/assets/{refresh-cw-BauD2hhl.js → refresh-cw-BuhtDwqw.js} +1 -1
  249. package/storybook-static/assets/{runtimeAndState-BpTnjVHY.js → runtimeAndState-DDPlVhTs.js} +1 -1
  250. package/storybook-static/assets/{settings-2-BniDrt2R.js → settings-2-DESCgIcH.js} +1 -1
  251. package/storybook-static/assets/shim-BUMlC1GG.js +1 -0
  252. package/storybook-static/assets/{sortable-BVQGL4Rj.js → sortable-BxGw7kip.js} +1 -1
  253. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-DX_O-alN.js → syntaxhighlighter-T5IQBZDB-B0d7LXTh.js} +1 -1
  254. package/storybook-static/assets/{trash-2-BN_08GUs.js → trash-2-D0Ed43_3.js} +1 -1
  255. package/storybook-static/assets/{triangle-alert-CA9F5VpH.js → triangle-alert-CpgcfVSf.js} +1 -1
  256. package/storybook-static/assets/useODataSelectBase-CFR7eJND.js +1 -0
  257. package/storybook-static/assets/{useODataTreeData-BIIUO50-.js → useODataTreeData-DgEKknmd.js} +1 -1
  258. package/storybook-static/assets/{usePickerQuery-Di5pbi3P.js → usePickerQuery-Be3WSeUa.js} +1 -1
  259. package/storybook-static/assets/{usePickerTriggerController-Bk7ww9go.js → usePickerTriggerController-BZZv-jDV.js} +1 -1
  260. package/storybook-static/assets/{x-BF_8tdj4.js → x-_GQ6nyHW.js} +1 -1
  261. package/storybook-static/iframe.html +2 -2
  262. package/storybook-static/project.json +1 -1
  263. package/dist/chunks/base-table-CTafaxo2.js.map +0 -1
  264. package/dist/chunks/select-DeeGYtVc.js +0 -328
  265. package/dist/chunks/select-DeeGYtVc.js.map +0 -1
  266. package/dist/chunks/table-DOwANXnt.js.map +0 -1
  267. package/storybook-static/assets/FormattedTableCell-D4NXq8Pu.js +0 -18
  268. package/storybook-static/assets/ODataMultiSelect.stories-DATnsk6a.js +0 -137
  269. package/storybook-static/assets/ODataSelect.stories-DgJvyuln.js +0 -207
  270. package/storybook-static/assets/Table.stories-BgxeP7Dj.js +0 -207
  271. package/storybook-static/assets/components-CR7XtYhK.js +0 -241
  272. package/storybook-static/assets/iframe-BsjDYyde.js +0 -1
  273. package/storybook-static/assets/odata-KQkU-pBI.js +0 -1
  274. package/storybook-static/assets/useODataSelectBase-goRS7Fgm.js +0 -1
  275. /package/storybook-static/assets/{odata-service-B5w4YBao-BW9QLSrS.js → odata-service-B6TxBSLm-BW9QLSrS.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-dENsI_HJ.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./Toggle-yuE_iKax.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-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:`{
2
2
  render: renderToggleStory,
3
3
  args: {
4
4
  label: "Режим синхронизации",
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-dENsI_HJ.js";import{c as r,d as i,f as a,i as o,r as s,s as c}from"./defaultRenderers-CbaqmJz1.js";import{a as l,c as u,d,i as f,l as p,n as m,r as h,s as g,t as _}from"./TreePickerBase-DOT734vD.js";function v(e,t){let n=d(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 s(r)}}function y(e,t,n){let r=p(e,n),i=p(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function b({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:i,nodes:o,value:s,onChange:m,query:b,defaultQuery:C,onQuery:w,isLoading:T,error:E,optionsLayout:D=`tree`,defaultExpandedCodeKeys:O}){let[k,A]=(0,x.useState)(!1),j=(0,x.useMemo)(()=>h(o),[o]),{draftValue:M,setDraftValue:N,prepareOpen:P}=a({value:s,open:k,onCommit:m,isEqual:(e,t)=>y(e,t,j)}),F=k?M:s,I=(0,x.useMemo)(()=>p(F,j),[F,j]),L=(0,x.useMemo)(()=>l(I,j),[I,j]),R=(0,x.useMemo)(()=>new Set([...j.nodeById.keys()].filter(e=>j.nodeById.get(e)?.disabled!==!0&&!g(e,I,j)&&!L.selectedIds.has(e)&&f(j,[e]).size===0)),[I,L.selectedIds,j]),z=(0,x.useMemo)(()=>v(I,j),[I,j]);return(0,S.jsx)(_,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:o,selectedIds:L.selectedIds,partialIds:L.partialIds,selectionMode:`multi`,optionsLayout:D,defaultExpandedCodeKeys:O,unavailableNodeIds:R,open:k,onOpenChange:e=>{e&&!k&&P(),A(e)},bulkActions:{onSelectAll:()=>{N(d(f(j),j))},onDeselectAll:()=>N({})},triggerMode:`search`,selectedSummary:z?(0,S.jsx)(c,{value:z}):void 0,query:b,defaultQuery:C,onQuery:w,onNodeActivate:e=>{N(t=>u(t,e.id,j))},onClearSelection:()=>{N({}),k||m({})},isLoading:T,error:E})}var x,S;function C(){return(C=e((()=>{x=t(),r(),o(),i(),m(),S=n(),b.__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{C as n,b as t};
1
+ import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-Bbj4T0X2.js";import{c as r,d as i,f as a,i as o,r as s,s as c}from"./defaultRenderers-D0Z-7t0H.js";import{a as l,c as u,d,i as f,l as p,n as m,r as h,s as g,t as _}from"./TreePickerBase-rB-Q9Uwf.js";function v(e,t){let n=d(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 s(r)}}function y(e,t,n){let r=p(e,n),i=p(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function b({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:i,nodes:o,value:s,onChange:m,query:b,defaultQuery:C,onQuery:w,isLoading:T,error:E,optionsLayout:D=`tree`,defaultExpandedCodeKeys:O}){let[k,A]=(0,x.useState)(!1),j=(0,x.useMemo)(()=>h(o),[o]),{draftValue:M,setDraftValue:N,prepareOpen:P}=a({value:s,open:k,onCommit:m,isEqual:(e,t)=>y(e,t,j)}),F=k?M:s,I=(0,x.useMemo)(()=>p(F,j),[F,j]),L=(0,x.useMemo)(()=>l(I,j),[I,j]),R=(0,x.useMemo)(()=>new Set([...j.nodeById.keys()].filter(e=>j.nodeById.get(e)?.disabled!==!0&&!g(e,I,j)&&!L.selectedIds.has(e)&&f(j,[e]).size===0)),[I,L.selectedIds,j]),z=(0,x.useMemo)(()=>v(I,j),[I,j]);return(0,S.jsx)(_,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:o,selectedIds:L.selectedIds,partialIds:L.partialIds,selectionMode:`multi`,optionsLayout:D,defaultExpandedCodeKeys:O,unavailableNodeIds:R,open:k,onOpenChange:e=>{e&&!k&&P(),A(e)},bulkActions:{onSelectAll:()=>{N(d(f(j),j))},onDeselectAll:()=>N({})},triggerMode:`search`,selectedSummary:z?(0,S.jsx)(c,{value:z}):void 0,query:b,defaultQuery:C,onQuery:w,onNodeActivate:e=>{N(t=>u(t,e.id,j))},onClearSelection:()=>{N({}),k||m({})},isLoading:T,error:E})}var x,S;function C(){return(C=e((()=>{x=t(),r(),o(),i(),m(),S=n(),b.__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{C as n,b as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-dENsI_HJ.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-Cta1XrWW.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-x-F-Y4_h.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-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}}}),`
2
2
  `,(0,w.jsx)(u,{children:`TreeMultiSelect`}),`
3
3
  `,(0,w.jsx)(o,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
4
4
  `,(0,w.jsxs)(t.p,{children:[(0,w.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-dENsI_HJ.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./TreeMultiSelect-BUZ-QzJc.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-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:`{
2
2
  render: renderTreeMultiSelectStory,
3
3
  args: {
4
4
  value: {
@@ -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"./chevron-right-C19a7OR-.js";import{n as i,t as a}from"./CheckBox-CTF0MTwi.js";import{n as o,t as s}from"./x-BF_8tdj4.js";import{n as c}from"./iframe-dENsI_HJ.js";import{a as l,i as u}from"./utils-DUM89eIj.js";import{n as d,t as f}from"./SelectOptionContent-DFbLFeJp.js";import{n as p,t as m}from"./ui.module-CiLQZm_L.js";import{l as h,o as g}from"./Input-ByxjsYlG.js";import{c as ee,g as _,h as te,i as ne,l as re,n as ie,r as v,s as ae,t as y,u as b}from"./usePickerTriggerController-Bk7ww9go.js";import{n as oe,t as se}from"./PickerSelectionToolbar-BpRSRbT3.js";import{i as ce,n as le,r as ue,t as de}from"./usePickerQuery-Di5pbi3P.js";import{n as fe,t as pe}from"./PickerTriggerActions-BBpUiawn.js";function x(e,t){return`${e}::${t}`}function me(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=x(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 S(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(x(n.codeKey,n.value))??[]:[]}function he(e,t){if(e)return t.nodeIdByCodeValue.get(x(e.codeKey,e.value))}function ge(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(x(r,e))??[])n.add(i);return O(n,t)}function C(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=x(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function _e(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function ve(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function w(e,t){let n=S(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&&(ve(e,n,t)||ve(n,e,t))))}function T(e,t){return w(e,t)?S(e,t):[e]}function ye(e,t,n){for(let r of[...e])ve(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 S(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])_e(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>D(e,n,t))){let r=S(e,t);if(w(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)ye(n,e,t),n.add(e)}}return n}function be(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of S(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:_e(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=!w(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function xe(e,t,n){let r=ge(e,n);if(D(t,r,n))return E(r,t,n),C(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)){be(r,e,n)&&(k(e,r,n)||D(e,r,n)?i(e):E(r,e,n));return}for(let t of T(e,n))ye(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 C(O(r,n),n)}function Se(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function Ce(e,t){let n=new Set;for(let r of e)Se(r,t,n);return n}function we(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 N(e,t,n){let r=(e.children??[]).map(e=>N(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 Te(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>N(e,n,r)).filter(e=>!!e),expandedIds:r}}function Ee(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 P(){return(P=e((()=>{})))()}function De(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(H,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 Oe({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=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+B)/234)),g=Math.max(1,Math.min(V,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=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*ke+(i-1)*B),s=z+n*Ae,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<te&&(te=h,_={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return _??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,z,ke,B,Ae,V,H;function je(){return(je=e((()=>{R=16,z=48,ke=224,B=10,Ae=32,V=6,H=3})))()}var Me,Ne,Pe,Fe,U,Ie,Le,W,Re,ze,Be,G,Ve,K,He,Ue,q,We,Ge,J,Y,Ke,qe,Je,Ye,Xe,Ze,X;function Qe(){return(Qe=e((()=>{Me=`eMqOwq`,Ne=`JKstO-`,Pe=`hKgr8e`,Fe=`KjPZjd`,U=`_6EH37F`,Ie=`UBll8Q`,Le=`-y3RZP`,W=`ayLJ50`,Re=`_430vL2`,ze=`FkzTJI`,Be=`e8fE4t`,G=`_2MFkGF`,Ve=`SWQUvb`,K=`o5NWnX`,He=`ibSd-S`,Ue=`lXezvv`,q=`FMlLGX`,We=`d2Zt7U`,Ge=`_8PN4hs`,J=`_4JEoen`,Y=`GS8eEC`,Ke=`T8gVno`,qe=`o6stdX`,Je=`I5zvhe`,Ye=`KQ0PBI`,Xe=`_7hAQQA`,Ze=`XeUHNc`,X={treeRow:Me,treeRowSelected:Ne,treeRowActive:Pe,treeRowDisabled:Fe,treeNodeButton:U,treePopupHeader:Ie,treeColumns:Le,treeColumnRow:W,treeColumnsPopupLayout:Re,treeColumnRootLabel:ze,treeColumnRootCode:Be,treeColumnCheckBox:G,treeNodeOptionContent:Ve,treeIndent:K,treeExpander:He,treeExpanderPlaceholder:Ue,treeExpanderIcon:q,treeExpanderIconExpanded:We,treeSelection:Ge,treeSelectionChecked:J,treeSelectionPartial:Y,treeSelectionIcon:Ke,treeSummary:qe,inputWithOverlay:Je,valueOverlay:Ye,treeActions:Xe,treeClearButton:Ze}})))()}function $e({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:s,partial:c,selectionMode:u,optionsLayout:d=`tree`,onToggleExpand:p,onToggleSelection:m}){let h=d===`tree`,g=d===`columns`&&t===0;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:X.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),h&&i?(0,Z.jsx)(`button`,{type:`button`,className:X.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,Z.jsx)(r,{className:l(X.treeExpanderIcon,o&&X.treeExpanderIconExpanded)})}):h?(0,Z.jsx)(`span`,{className:X.treeExpanderPlaceholder,"aria-hidden":`true`}):null,u===`multi`||d===`columns`?(0,Z.jsx)(`span`,{className:X.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Z.jsx)(a,{value:s,indeterminate:c,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Z.jsx)(`div`,{className:X.treeNodeOptionContent,children:(0,Z.jsx)(f,{label:e.label,code:e.code,highlight:n,labelClassName:g?X.treeColumnRootLabel:void 0,codeClassName:g?X.treeColumnRootCode:void 0})})]})}var Z;function et(){return(et=e((()=>{u(),n(),i(),d(),Qe(),Z=c(),$e.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
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-DHw2yjh1.js";import{n as i,t as a}from"./CheckBox-SuVeN-FY.js";import{n as o,t as s}from"./x-_GQ6nyHW.js";import{n as c}from"./iframe-Bbj4T0X2.js";import{a as l,i as u}from"./utils-DUM89eIj.js";import{n as d,t as f}from"./SelectOptionContent-Bie2pzia.js";import{n as p,t as m}from"./ui.module-CiLQZm_L.js";import{l as h,o as g}from"./Input-CVs7SVMJ.js";import{c as ee,g as _,h as te,i as ne,l as re,n as ie,r as v,s as ae,t as y,u as b}from"./usePickerTriggerController-BZZv-jDV.js";import{n as oe,t as se}from"./PickerSelectionToolbar-DWtGYc4E.js";import{i as ce,n as le,r as ue,t as de}from"./usePickerQuery-Be3WSeUa.js";import{n as fe,t as pe}from"./PickerTriggerActions-BIH8_o_b.js";function x(e,t){return`${e}::${t}`}function me(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=x(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 S(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(x(n.codeKey,n.value))??[]:[]}function he(e,t){if(e)return t.nodeIdByCodeValue.get(x(e.codeKey,e.value))}function ge(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(x(r,e))??[])n.add(i);return O(n,t)}function C(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=x(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function _e(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function ve(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function w(e,t){let n=S(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&&(ve(e,n,t)||ve(n,e,t))))}function T(e,t){return w(e,t)?S(e,t):[e]}function ye(e,t,n){for(let r of[...e])ve(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 S(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])_e(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>D(e,n,t))){let r=S(e,t);if(w(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)ye(n,e,t),n.add(e)}}return n}function be(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of S(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:_e(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=!w(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function xe(e,t,n){let r=ge(e,n);if(D(t,r,n))return E(r,t,n),C(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)){be(r,e,n)&&(k(e,r,n)||D(e,r,n)?i(e):E(r,e,n));return}for(let t of T(e,n))ye(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 C(O(r,n),n)}function Se(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function Ce(e,t){let n=new Set;for(let r of e)Se(r,t,n);return n}function we(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 N(e,t,n){let r=(e.children??[]).map(e=>N(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 Te(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>N(e,n,r)).filter(e=>!!e),expandedIds:r}}function Ee(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 P(){return(P=e((()=>{})))()}function De(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(H,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 Oe({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=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+B)/234)),g=Math.max(1,Math.min(V,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=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*ke+(i-1)*B),s=z+n*Ae,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<te&&(te=h,_={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return _??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,z,ke,B,Ae,V,H;function je(){return(je=e((()=>{R=16,z=48,ke=224,B=10,Ae=32,V=6,H=3})))()}var Me,Ne,Pe,Fe,U,Ie,Le,W,Re,ze,Be,G,Ve,K,He,Ue,q,We,Ge,J,Y,Ke,qe,Je,Ye,Xe,Ze,X;function Qe(){return(Qe=e((()=>{Me=`eMqOwq`,Ne=`JKstO-`,Pe=`hKgr8e`,Fe=`KjPZjd`,U=`_6EH37F`,Ie=`UBll8Q`,Le=`-y3RZP`,W=`ayLJ50`,Re=`_430vL2`,ze=`FkzTJI`,Be=`e8fE4t`,G=`_2MFkGF`,Ve=`SWQUvb`,K=`o5NWnX`,He=`ibSd-S`,Ue=`lXezvv`,q=`FMlLGX`,We=`d2Zt7U`,Ge=`_8PN4hs`,J=`_4JEoen`,Y=`GS8eEC`,Ke=`T8gVno`,qe=`o6stdX`,Je=`I5zvhe`,Ye=`KQ0PBI`,Xe=`_7hAQQA`,Ze=`XeUHNc`,X={treeRow:Me,treeRowSelected:Ne,treeRowActive:Pe,treeRowDisabled:Fe,treeNodeButton:U,treePopupHeader:Ie,treeColumns:Le,treeColumnRow:W,treeColumnsPopupLayout:Re,treeColumnRootLabel:ze,treeColumnRootCode:Be,treeColumnCheckBox:G,treeNodeOptionContent:Ve,treeIndent:K,treeExpander:He,treeExpanderPlaceholder:Ue,treeExpanderIcon:q,treeExpanderIconExpanded:We,treeSelection:Ge,treeSelectionChecked:J,treeSelectionPartial:Y,treeSelectionIcon:Ke,treeSummary:qe,inputWithOverlay:Je,valueOverlay:Ye,treeActions:Xe,treeClearButton:Ze}})))()}function $e({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:s,partial:c,selectionMode:u,optionsLayout:d=`tree`,onToggleExpand:p,onToggleSelection:m}){let h=d===`tree`,g=d===`columns`&&t===0;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:X.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),h&&i?(0,Z.jsx)(`button`,{type:`button`,className:X.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,Z.jsx)(r,{className:l(X.treeExpanderIcon,o&&X.treeExpanderIconExpanded)})}):h?(0,Z.jsx)(`span`,{className:X.treeExpanderPlaceholder,"aria-hidden":`true`}):null,u===`multi`||d===`columns`?(0,Z.jsx)(`span`,{className:X.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Z.jsx)(a,{value:s,indeterminate:c,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Z.jsx)(`div`,{className:X.treeNodeOptionContent,children:(0,Z.jsx)(f,{label:e.label,code:e.code,highlight:n,labelClassName:g?X.treeColumnRootLabel:void 0,codeClassName:g?X.treeColumnRootCode:void 0})})]})}var Z;function et(){return(et=e((()=>{u(),n(),i(),d(),Qe(),Z=c(),$e.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
2
2
  id: string;
3
3
  codeKey: string;
4
4
  value: string;
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-dENsI_HJ.js";import{n as r,r as i,t as a,u as o}from"./TreePickerBase-DOT734vD.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-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,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-dENsI_HJ.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-Cta1XrWW.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./TreeSelect.stories-Ef4wBpPe.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-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}}}),`
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,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-dENsI_HJ.js";import{n as r,t as i}from"./treeStoryFixtures-Ci7STpiz.js";import{n as a,t as o}from"./TreeSelect-DDgqDh2L.js";var s=t({Basic:()=>f,Empty:()=>h,FirstLevelExpanded:()=>m,SelectParent:()=>p,__namedExportsOrder:()=>g,default:()=>d});function c(e){let[,t]=u();return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,l.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,l.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value?`${e.value.codeKey}=${e.value.value}`:`пусто`]})]})}var l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{a(),r(),l=n(),{useArgs:u}=__STORYBOOK_MODULE_PREVIEW_API__,d={title:`Shared/UI/TreeSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:i,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`]}}},f={render:function(e){return(0,l.jsx)(c,{...e})},args:{value:{codeKey:`BRANCH`,value:`B0101`}}},p={render:function(e){return(0,l.jsx)(c,{...e})},args:{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,value:{codeKey:`REGION`,value:`R01`}}},m={render:function(e){return(0,l.jsx)(c,{...e})},args:{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]}},h={render:function(e){return(0,l.jsx)(c,{...e})},args:{nodes:[],description:`Состояние без доступных узлов.`}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
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"./treeStoryFixtures-Ci7STpiz.js";import{n as a,t as o}from"./TreeSelect-CsYGUC6s.js";var s=t({Basic:()=>f,Empty:()=>h,FirstLevelExpanded:()=>m,SelectParent:()=>p,__namedExportsOrder:()=>g,default:()=>d});function c(e){let[,t]=u();return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,l.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,l.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value?`${e.value.codeKey}=${e.value.value}`:`пусто`]})]})}var l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{a(),r(),l=n(),{useArgs:u}=__STORYBOOK_MODULE_PREVIEW_API__,d={title:`Shared/UI/TreeSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:i,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`]}}},f={render:function(e){return(0,l.jsx)(c,{...e})},args:{value:{codeKey:`BRANCH`,value:`B0101`}}},p={render:function(e){return(0,l.jsx)(c,{...e})},args:{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,value:{codeKey:`REGION`,value:`R01`}}},m={render:function(e){return(0,l.jsx)(c,{...e})},args:{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]}},h={render:function(e){return(0,l.jsx)(c,{...e})},args:{nodes:[],description:`Состояние без доступных узлов.`}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render(args) {
3
3
  return <TreeSelectStoryCanvas {...args} />;
4
4
  },
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-dENsI_HJ.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-Cta1XrWW.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-ypxZKEv5.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-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}}}),`
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,12 +1,12 @@
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-cKT7IMMQ.js";import{n as a,t as o}from"./chevron-right-C19a7OR-.js";import{n as s}from"./iframe-dENsI_HJ.js";import{D as c,E as l,T as u,c as d,d as f,n as p,p as ee,s as te,v as ne,w as re}from"./odata-KQkU-pBI.js";import{a as ie,i as ae}from"./utils-DUM89eIj.js";import{i as oe,y as se}from"./formatters-CVj-3Vn0-BFaHJqZL.js";import{C as ce,S as le,_ as ue,a as de,b as fe,c as pe,d as me,f as he,g as ge,h as _e,i as ve,l as ye,m as be,n as xe,o as Se,p as Ce,r as we,s as Te,t as Ee,u as De,v as Oe,x as ke,y as Ae}from"./FormattedTableCell-D4NXq8Pu.js";function je(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function m(e){return Array.from(new Set(e))}function Me(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[],s=[],c=[];for(let o of e){let e=t.getRowId(o);if(n.has(e)){a.push(e);continue}let s=t.getParentRowId(o)??null;n.set(e,o),r.set(e,s),c.push(e),s!==null&&s!==e&&je(i,s,e)}let l=[];for(let e of c){let t=r.get(e)??null;if(t===null){l.push(e);continue}if(t===e){s.push(e),l.push(e);continue}n.has(t)||(o.push(e),l.push(e))}let u=new Set,d=(e,t)=>{let r=n.get(e);if(!r)throw Error(`Не удалось построить дерево: строка "${e}" отсутствует в индексе.`);u.add(e);let a=new Set(t);a.add(e);let o={...r},c=i.get(e)??[],l=[];for(let e of c){if(a.has(e)){s.push(e);continue}u.has(e)||l.push(d(e,a))}return l.length>0&&(o.children=l),o},f=[],p=[];for(let e of l)u.has(e)||(f.push(d(e,new Set)),p.push(e));for(let e of c)u.has(e)||(s.push(e),f.push(d(e,new Set)),p.push(e));return{rows:f,rowById:n,allRowIds:c,rootRowIds:m(p),orphanRowIds:m(o),duplicateRowIds:m(a),cyclicRowIds:m(s)}}function h(){return(h=e((()=>{})))()}var Ne,Pe,Fe,g,_,v,y,b;function x(){return(x=e((()=>{Ne=`jOS9rT`,Pe=`zHOAf7`,Fe=`j48cXg`,g=`mf4-Kr`,_=`p8pb0F`,v=`KIudLf`,y=`bJsPGU`,b={treeColumnCell:Ne,selectedIndicatorCell:Pe,treeCell:Fe,treeCellContent:g,expanderButton:_,expanderSpacer:v,sentinel:y}})))()}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 S(e,t){return t.get(e.id)??e.original}function Re(e,t,n,r){return e.cell.column.id===n?(0,T.jsxs)(`div`,{className:b.treeCell,style:{paddingInlineStart:`calc(${e.row.depth} * ${f(r)??`0em`})`},children:[e.row.getCanExpand()?(0,T.jsx)(`button`,{type:`button`,className:b.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,T.jsx)(i,{size:16}):(0,T.jsx)(o,{size:16})}):(0,T.jsx)(`span`,{className:b.expanderSpacer,"aria-hidden":`true`}),(0,T.jsx)(`div`,{className:b.treeCellContent,children:t})]}):t}function C({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:f,tableClassName:p,columnVisibility:ee,defaultColumnVisibility:te,columnOrder:ne,defaultColumnOrder:re,columnSizing:ae,defaultColumnSizing:se,columnPinning:de,defaultColumnPinning:fe,enableColumnResizing:me=!1,enableColumnReordering:ge=!1,columnResizeMinWidth:ve,onColumnVisibilityChange:ye,onColumnOrderChange:be,onColumnSizingChange:xe,onColumnPinningChange:Te,onRowClick:Ae,onRowSelectionChange:je,onExpandedRowIdsChange:m,onReachEnd:h,getRowCanSelect:Ne,getRowClassName:Pe,renderHeaderContextMenu:Fe,renderCellContent:g}){let _=(0,w.useMemo)(()=>Me(r??[],a),[r,a]),v=(0,w.useMemo)(()=>_e(i),[i]),y=(0,w.useMemo)(()=>{let e=new Set(c??[]);if(s)for(let t of _.rootRowIds)e.add(t);return Array.from(e)},[c,s,_.rootRowIds]),[x,C]=(0,w.useState)({}),E=(0,w.useRef)(!1),D=(0,w.useRef)(null),ze=(0,w.useRef)(null),{rowSelection:Be,activateRowSelection:O}=d({availableRowIds:_.allRowIds,rowById:_.rowById,selectionMode:o,onRowSelectionChange:je}),{columnVisibility:Ve,onColumnVisibilityChange:He}=Se({columnVisibility:ee,defaultColumnVisibility:te,onColumnVisibilityChange:ye}),{columnOrder:k,onColumnOrderChange:Ue}=he({columnOrder:ne,defaultColumnOrder:re,onColumnOrderChange:be}),{columnSizing:A,onColumnSizingChange:We}=pe({columnSizing:ae,defaultColumnSizing:se,columnResizeMinWidth:ve,onColumnSizingChange:xe}),{columnPinning:j,onColumnPinningChange:Ge}=De({columnPinning:de,defaultColumnPinning:fe,onColumnPinningChange:Te}),Ke=(0,w.useMemo)(()=>({columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:Ve}),[k,j,A,Ve]),M=(0,w.useEffectEvent)((e,t)=>{if(e.length===0){E.current=!1,C({});return}let n=new Set(e);C(e=>{let r=Le(e).filter(e=>n.has(e));return E.current?Ie(r):(E.current=!0,Ie(Array.from(new Set([...r,...t.filter(e=>n.has(e))]))))})}),qe=(0,w.useEffectEvent)(e=>{m?.(Le(e))}),N=(0,w.useEffectEvent)(()=>{h?.()});(0,w.useEffect)(()=>{M(_.allRowIds,y)},[y,_.allRowIds]),(0,w.useEffect)(()=>{qe(x)},[x]),(0,w.useEffect)(()=>{if(!h||!D.current||!ze.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&N()},{root:D.current,threshold:.1});return e.observe(ze.current),()=>e.disconnect()},[t,h,_.rows.length]);let P=ke({data:_.rows,columns:i,state:{columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:Ve,expanded:x,rowSelection:Be},getRowId:e=>a.getRowId(e),getSubRows:e=>e.children,getCoreRowModel:le(),getExpandedRowModel:ce(),onColumnOrderChange:Ue,onColumnPinningChange:Ge,onColumnSizingChange:We,onColumnVisibilityChange:He,onExpandedChange:C,enableMultiRowSelection:o===`multi`,enableRowSelection:e=>{if(o===`none`)return!1;let t=S(e,_.rowById);return!Ne||Ne(t)}}),F=Oe(P,Ke),I=l??F[0]?.id,Je=P.getRowModel().rows,Ye=(0,w.useMemo)(()=>Ce({rows:Je,columns:F,resolveRowBoundaryKey:e=>e.depth,excludeColumnIds:I?new Set([I]):void 0}),[Je,F,I]);return(0,T.jsx)(we,{table:P,columnState:Ke,title:e,isLoading:t,isFetching:n,className:f,tableClassName:p,selectionMode:o,scrollableRef:D,interactiveElementSelector:`[data-tree-table-interactive="true"]`,onActivateRow:o!==`none`||Ae?e=>{let t=S(e,_.rowById);O(e.id,e.getCanSelect()),Ae?.(t)}:void 0,isRowInteractive:e=>!!(Ae||o!==`none`&&e.getCanSelect()),getRowClassName:e=>{let t=S(e,_.rowById);return Pe?.(t)},getCellClassName:({row:e,cell:t})=>ie(t.column.id===I&&b.treeColumnCell,t.column.id===I&&e.getIsSelected()&&b.selectedIndicatorCell),getCellLayout:({cell:e})=>Ye.get(e.id),renderHeaderContextMenu:Fe,enableColumnResizing:me,enableColumnReordering:ge,columnResizeMinWidth:ve,renderCellContent:e=>{let t=S(e.row,_.rowById),n=oe({field:v.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:t,rowKind:`tree`}),r=ue({columnId:e.cell.column.id,runtimeByColumnId:v.runtimeByColumnId,customCellColumnIds:v.customCellColumnIds})?(0,T.jsx)(Ee,{displayValue:n,align:e.columnMeta?.align}):e.defaultContent;return Re(e,g?g({...e,defaultContent:r,displayValue:n}):r,I,u)},afterTableContent:h?(0,T.jsx)(`div`,{ref:ze,className:b.sentinel,"aria-hidden":`true`}):null})}var w,T;function E(){return(E=e((()=>{w=n(),se(),ne(),h(),ae(),fe(),r(),a(),ve(),be(),ge(),xe(),Ae(),me(),ye(),Te(),de(),x(),T=s(),C.__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-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 и отступы.
2
2
 
3
3
  Если не указан, используется первая видимая колонка.`},indentSize:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:`Отступ на один уровень вложенности.
4
4
 
5
- Числовое значение трактуется как \`em\`.`,defaultValue:{value:`1`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:`Дополнительный CSS-класс корневого контейнера.`},tableClassName:{required:!1,tsType:{name:`string`},description:"Дополнительный CSS-класс тега `table`."},columnVisibility:{required:!1,tsType:{name:`VisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`VisibilityState`},description:`Стартовое uncontrolled-состояние видимости колонок.`},columnOrder:{required:!1,tsType:{name:`unknown`},description:`Внешнее controlled-состояние порядка колонок.`},defaultColumnOrder:{required:!1,tsType:{name:`unknown`},description:`Стартовое uncontrolled-состояние порядка колонок.`},columnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Внешнее controlled-состояние ширин колонок в px.`},defaultColumnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Стартовое uncontrolled-состояние ширин колонок в px.`},columnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Внешнее controlled-состояние left-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние left-pinning для колонок.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:`Включает изменение ширины колонок через header-handle.`,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:`Включает изменение порядка колонок через drag&drop заголовков.`,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:`Минимальная ширина колонки при resize в px.`},onColumnVisibilityChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: VisibilityState) => void`,signature:{arguments:[{type:{name:`VisibilityState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения видимости колонок.`},onColumnOrderChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnOrderState) => void`,signature:{arguments:[{type:{name:`TableColumnOrderState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения порядка колонок.`},onColumnSizingChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnSizingState) => void`,signature:{arguments:[{type:{name:`TableColumnSizingState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения ширины колонок.`},onColumnPinningChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnPinningState) => void`,signature:{arguments:[{type:{name:`TableColumnPinningState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения left-pinning state.`},onRowClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => void`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`void`}}},description:`Вызывается при активации строки кликом или клавиатурой.`},onRowSelectionChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rows: TData[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TData`}],raw:`TData[]`},name:`rows`}],return:{name:`void`}}},description:`Вызывается после изменения выбранных строк.`},onExpandedRowIdsChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rowIds: string[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`string`}],raw:`string[]`},name:`rowIds`}],return:{name:`void`}}},description:`Вызывается после изменения раскрытых узлов.`},onReachEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Вызывается при достижении конца таблицы внутри scroll-контейнера.`},getRowCanSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => boolean`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`boolean`}}},description:`Позволяет запретить выбор отдельных строк.`},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => string | undefined`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:`Позволяет добавить CSS-класс для конкретной строки.`},renderHeaderContextMenu:{required:!1,tsType:{name:`BaseTableProps["renderHeaderContextMenu"]`,raw:`BaseTableProps<TreeTableRuntimeRow<TData>>["renderHeaderContextMenu"]`},description:`Контекстное меню заголовка колонки. Получает runtime-строки дерева,
5
+ Числовое значение трактуется как \`em\`.`,defaultValue:{value:`1`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:`Дополнительный CSS-класс корневого контейнера.`},tableClassName:{required:!1,tsType:{name:`string`},description:"Дополнительный CSS-класс тега `table`."},columnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Стартовое uncontrolled-состояние видимости колонок.`},columnOrder:{required:!1,tsType:{name:`unknown`},description:`Внешнее controlled-состояние порядка колонок.`},defaultColumnOrder:{required:!1,tsType:{name:`unknown`},description:`Стартовое uncontrolled-состояние порядка колонок.`},columnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Внешнее controlled-состояние ширин колонок в px.`},defaultColumnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Стартовое uncontrolled-состояние ширин колонок в px.`},columnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Внешнее controlled-состояние start-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние start-pinning для колонок.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:`Включает изменение ширины колонок через header-handle.`,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:`Включает изменение порядка колонок через drag&drop заголовков.`,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:`Минимальная ширина колонки при resize в px.`},onColumnVisibilityChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnVisibilityState) => void`,signature:{arguments:[{type:{name:`TableColumnVisibilityState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения видимости колонок.`},onColumnOrderChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnOrderState) => void`,signature:{arguments:[{type:{name:`TableColumnOrderState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения порядка колонок.`},onColumnSizingChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnSizingState) => void`,signature:{arguments:[{type:{name:`TableColumnSizingState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения ширины колонок.`},onColumnPinningChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnPinningState) => void`,signature:{arguments:[{type:{name:`TableColumnPinningState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения start-pinning state.`},onRowClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => void`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`void`}}},description:`Вызывается при активации строки кликом или клавиатурой.`},onRowSelectionChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rows: TData[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TData`}],raw:`TData[]`},name:`rows`}],return:{name:`void`}}},description:`Вызывается после изменения выбранных строк.`},onExpandedRowIdsChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rowIds: string[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`string`}],raw:`string[]`},name:`rowIds`}],return:{name:`void`}}},description:`Вызывается после изменения раскрытых узлов.`},onReachEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Вызывается при достижении конца таблицы внутри scroll-контейнера.`},getRowCanSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => boolean`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`boolean`}}},description:`Позволяет запретить выбор отдельных строк.`},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => string | undefined`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:`Позволяет добавить CSS-класс для конкретной строки.`},renderHeaderContextMenu:{required:!1,tsType:{name:`BaseTableProps["renderHeaderContextMenu"]`,raw:`BaseTableProps<TreeTableRuntimeRow<TData>>["renderHeaderContextMenu"]`},description:`Контекстное меню заголовка колонки. Получает runtime-строки дерева,
6
6
  потому что BaseTable работает уже после сборки flat hierarchy.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TreeTableRuntimeRow<TData>>["renderCellContent"]`},description:`Точка расширения содержимого ячейки после общего форматирования.
7
7
 
8
8
  Для tree-column в \`defaultContent\` передается только содержимое ячейки:
9
- TreeTable сам добавит expander и отступ после выполнения слота.`}}}})))()}var D=t({Basic:()=>z,CollapsedByDefault:()=>V,Empty:()=>G,Fetching:()=>W,Loading:()=>K,MultiSelect:()=>B,WithDefaultExpandedBranch:()=>H,WithDisabledRows:()=>U,WithFormattedTreeColumn:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>tt,default:()=>et});function ze(){return{version:1,plan:{steps:[{id:`state`,type:`resolveValueState`,config:{resolver:{kind:`threshold`,thresholds:[100],states:[`success`,`warning`],invalidState:`none`},icon:{enabled:!0,showValue:!0,position:`right`}}},{id:`typed`,type:`typedValueFormat`}]}}}function Be(e){return[`odata`,`metadata`,{service:e}]}function O({args:e}){let[,t]=We();return(0,A.jsx)(C,{...e,onColumnVisibilityChange:n=>{e.onColumnVisibilityChange?.(n),t({columnVisibility:n})},onColumnOrderChange:n=>{e.onColumnOrderChange?.(n),t({columnOrder:n})},onColumnSizingChange:n=>{e.onColumnSizingChange?.(n),t({columnSizing:n})},onColumnPinningChange:n=>{e.onColumnPinningChange?.(n),t({columnPinning:n})}})}function Ve({args:e}){let{columns:t,metadata:n,isLoading:r}=p({service:L,target:R,mode:`build`});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим build: hook собрал `,t.length,` колонки из metadata`,n?` для сущности «${n.title}».`:`.`]}),(0,A.jsx)(O,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function He({args:e}){let{columns:t,metadata:n,isLoading:r}=p({service:L,target:R,mode:`enrich`,columns:[{id:`label`,accessorKey:`label`,header:`Статья`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:10,align:`right`}}]});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные tree-колонки и дополнил их formatting-контекстом`,n?` из metadata «${n.title}».`:`.`]}),(0,A.jsx)(O,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function k({args:e,intro:t}){let[n,r]=(0,Ue.useState)([]);return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[t?(0,A.jsx)(`div`,{children:t}):null,(0,A.jsxs)(`div`,{children:[`Выбрано: `,n.length>0?n.join(`, `):`ничего`]}),(0,A.jsx)(O,{args:{...e,onRowSelectionChange:t=>{e.onRowSelectionChange?.(t),r(t.map(e=>e.label))}}})]})}var Ue,A,We,j,Ge,Ke,M,qe,N,P,F,I,Je,Ye,Xe,Ze,L,R,Qe,$e,et,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,tt;function nt(){return(nt=e((()=>{Ue=n(),te(),u(),ne(),c(),E(),A=s(),{useArgs:We}=__STORYBOOK_MODULE_PREVIEW_API__,j=[{id:`revenue`,parentId:null,label:`Выручка`,jan:`1 240`,feb:`1 320`,mar:`1 410`,apr:`1 505`},{id:`revenue_clients`,parentId:`revenue`,label:`Клиентский сегмент`,jan:`920`,feb:`960`,mar:`1 020`,apr:`1 080`},{id:`revenue_exports`,parentId:`revenue`,label:`Экспорт`,jan:`320`,feb:`360`,mar:`390`,apr:`425`},{id:`margin`,parentId:null,label:`Маржинальность`,jan:`18%`,feb:`19%`,mar:`21%`,apr:`20%`},{id:`margin_sales`,parentId:`margin`,label:`Продажи`,jan:`12%`,feb:`13%`,mar:`14%`,apr:`14%`},{id:`margin_logistics`,parentId:`margin`,label:`Логистика`,jan:`6%`,feb:`6%`,mar:`7%`,apr:`6%`},{id:`margin_logistics_local`,parentId:`margin_logistics`,label:`Локальная логистика`,jan:`4%`,feb:`4%`,mar:`5%`,apr:`4%`},{id:`margin_logistics_export`,parentId:`margin_logistics`,label:`Экспортная логистика`,jan:`2%`,feb:`2%`,mar:`2%`,apr:`2%`,isLocked:!0},{id:`orphan_costs`,parentId:`missing_parent`,label:`Прочие расходы без родителя`,jan:`30`,feb:`28`,mar:`31`,apr:`35`}],Ge=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:18,align:`left`}},{id:`jan`,accessorKey:`jan`,header:`янв`,meta:{width:8,align:`right`}},{id:`feb`,accessorKey:`feb`,header:`фев`,meta:{width:8,align:`right`}},{id:`mar`,accessorKey:`mar`,header:`мар`,meta:{width:8,align:`right`}},{id:`apr`,accessorKey:`apr`,header:`апр`,meta:{width:8,align:`right`}}],Ke={getRowId:e=>e.id,getParentRowId:e=>e.parentId},M={getRowId:e=>e.id,getParentRowId:e=>e.parentId},qe={getRowId:e=>e.id,getParentRowId:e=>e.parentId},N=[{id:`revenue`,parentId:null,label:`Выручка`,purchasePrice:80,salePrice:125,healthScore:40,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1820},{id:`revenue_domestic`,parentId:`revenue`,label:`Внутренний рынок`,purchasePrice:82,salePrice:129,healthScore:120,pendingAmount:250,createdAt:`2026-03-18T10:00:00.000Z`,totalAmount:980},{id:`revenue_export`,parentId:`revenue`,label:`Экспорт`,purchasePrice:75,salePrice:118,healthScore:95,pendingAmount:0,createdAt:`2026-03-19T08:25:00.000Z`,totalAmount:840},{id:`margin`,parentId:null,label:`Маржинальность`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:640}],P=[{id:`div-root-1`,parentId:null,label:`Корень 1`,division:`ДВД`},{id:`div-root-2`,parentId:null,label:`Корень 2`,division:`ДВД`},{id:`div-root-3`,parentId:null,label:`Корень 3`,division:`УД`},{id:`div-child-1`,parentId:`div-root-3`,label:`Дочерний узел`,division:`УД`}],F=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}},{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}}],I=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],Je=[{id:`totalAmount`,accessorKey:`totalAmount`,header:`Сумма в дереве`,meta:{width:12,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:ze()}}},{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}}],Ye=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],Xe=[{id:`label`,type:`string`,originalType:`Edm.String`,label:`Показатель`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`createdAt`,type:`datetime`,originalType:`Edm.DateTime`,label:`Дата создания`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`totalAmount`,type:`decimal`,originalType:`Edm.Decimal`,label:`Сумма`,semanticType:`none`,sortable:!0,filterable:!0,role:`measure`}],Ze=ee(Xe),L=`ZDEMO_FINANCE_SRV`,R=`FinanceSet`,Qe={title:`Финансовая иерархия`,columns:Xe},$e=(e,t)=>{let n=(0,Ue.useMemo)(()=>{let e=re({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Be(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,A.jsx)(l,{client:n,children:e()})},et={title:`Shared/UI/TreeTable`,component:C,args:{title:`Финансовые показатели`,data:j,columns:Ge,hierarchy:Ke,selectionMode:`single`,expandFirstLevel:!0,indentSize:1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок таблицы.`,control:`text`},isLoading:{description:`Показывает состояние первичной загрузки.`,control:`boolean`},isFetching:{description:`Показывает фоновое обновление без очистки дерева.`,control:`boolean`},data:{description:`Плоский источник данных OData.`,control:!1},columns:{description:`Колонки TreeTable.`,control:!1},hierarchy:{description:`Функции получения id строки и id родителя.`,control:!1},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},expandFirstLevel:{description:`Автоматически раскрывает корневой уровень при первой инициализации.`,control:`boolean`},defaultExpandedRowIds:{description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`,control:!1},treeColumnId:{description:`Колонка, в которой рисуется дерево.`,control:`text`},indentSize:{description:`Отступ на уровень вложенности; число трактуется как em.`,control:`number`},columnVisibility:{description:`Controlled-состояние видимости колонок.`,control:!1},defaultColumnVisibility:{description:`Стартовое uncontrolled-состояние видимости колонок.`,control:!1},columnOrder:{description:`Controlled-порядок идентификаторов колонок.`,control:!1},defaultColumnOrder:{description:`Стартовый uncontrolled-порядок колонок.`,control:!1},columnSizing:{description:`Controlled-ширины колонок в px.`,control:!1},defaultColumnSizing:{description:`Стартовые uncontrolled-ширины колонок.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},enableColumnResizing:{description:`Включает изменение ширины колонок через header-handle.`,control:`boolean`},enableColumnReordering:{description:`Включает перетаскивание заголовков для изменения порядка колонок.`,control:`boolean`},columnResizeMinWidth:{description:`Минимальная ширина колонки при resize в px.`,control:`number`},onColumnVisibilityChange:{description:`Вызывается после изменения видимости колонок.`,control:!1},onColumnOrderChange:{description:`Вызывается после изменения порядка колонок.`,control:!1},onColumnSizingChange:{description:`Вызывается после изменения ширины колонок.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет назначить CSS-класс конкретной строке.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onExpandedRowIdsChange:{description:`Вызывается после изменения раскрытых строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца дерева внутри scroll-контейнера.`,control:!1},renderHeaderContextMenu:{description:`Слот контекстного меню заголовка колонки.`,control:!1},renderCellContent:{description:`Слот содержимого ячейки поверх стандартного formatting-runtime.`,control:!1}}},z={render:function(e){return(0,A.jsx)(O,{args:e})}},B={args:{selectionMode:`multi`},render:function(e){return(0,A.jsx)(k,{args:e})}},V={args:{expandFirstLevel:!1},render:function(e){return(0,A.jsx)(O,{args:e})}},H={args:{expandFirstLevel:!1,defaultExpandedRowIds:[`margin`,`margin_logistics`]},render:function(e){return(0,A.jsx)(O,{args:e})}},U={args:{selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:function(e){return(0,A.jsx)(k,{args:e,intro:`Строка «Экспортная логистика» остаётся в дереве, но не участвует в выборе.`})}},W={args:{isFetching:!0},render:function(e){return(0,A.jsx)(O,{args:e})}},G={args:{data:[]},render:function(e){return(0,A.jsx)(O,{args:e})}},K={args:{isLoading:!0},render:function(e){return(0,A.jsx)(O,{args:e})}},q={args:{title:`Формула в дереве`,data:N,columns:I,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(O,{args:e})}},J={args:{title:`Форматирование tree-колонки`,data:N,columns:Je,hierarchy:M,treeColumnId:`totalAmount`,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(O,{args:e})}},Y={args:{title:`Скрытие нулей в дереве`,data:N,columns:Ye,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(O,{args:e})}},X={args:{title:`Слияние дубликатов в дереве`,data:P,columns:F,hierarchy:qe,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(O,{args:e})}},Z={args:{title:`OData metadata adapter`,data:N,columns:Ze,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(O,{args:e})}},Q={args:{title:`useODataTableColumns: build`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[$e],parameters:{odataService:L,odataEntity:R,odataMetadata:Qe},render:function(e){return(0,A.jsx)(Ve,{args:e})}},$={args:{title:`useODataTableColumns: enrich`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[$e],parameters:{odataService:L,odataEntity:R,odataMetadata:Qe},render:function(e){return(0,A.jsx)(He,{args:e})}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
9
+ TreeTable сам добавит expander и отступ после выполнения слота.`}}}})))()}var E=t({Basic:()=>z,CollapsedByDefault:()=>V,Empty:()=>G,Fetching:()=>W,Loading:()=>K,MultiSelect:()=>B,WithDefaultExpandedBranch:()=>H,WithDisabledRows:()=>U,WithFormattedTreeColumn:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>et,default:()=>$e});function ze(){return{version:1,plan:{steps:[{id:`state`,type:`resolveValueState`,config:{resolver:{kind:`threshold`,thresholds:[100],states:[`success`,`warning`],invalidState:`none`},icon:{enabled:!0,showValue:!0,position:`right`}}},{id:`typed`,type:`typedValueFormat`}]}}}function Be(e){return[`odata`,`metadata`,{service:e}]}function D({args:e}){let[,t]=Ue();return(0,A.jsx)(S,{...e,onColumnVisibilityChange:n=>{e.onColumnVisibilityChange?.(n),t({columnVisibility:n})},onColumnOrderChange:n=>{e.onColumnOrderChange?.(n),t({columnOrder:n})},onColumnSizingChange:n=>{e.onColumnSizingChange?.(n),t({columnSizing:n})},onColumnPinningChange:n=>{e.onColumnPinningChange?.(n),t({columnPinning:n})}})}function O({args:e}){let{columns:t,metadata:n,isLoading:r}=re({service:L,target:R,mode:`build`});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим build: hook собрал `,t.length,` колонки из metadata`,n?` для сущности «${n.title}».`:`.`]}),(0,A.jsx)(D,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function Ve({args:e}){let{columns:t,metadata:n,isLoading:r}=re({service:L,target:R,mode:`enrich`,columns:[{id:`label`,accessorKey:`label`,header:`Статья`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:10,align:`right`}}]});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные tree-колонки и дополнил их formatting-контекстом`,n?` из metadata «${n.title}».`:`.`]}),(0,A.jsx)(D,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function k({args:e,intro:t}){let[n,r]=(0,He.useState)([]);return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[t?(0,A.jsx)(`div`,{children:t}):null,(0,A.jsxs)(`div`,{children:[`Выбрано: `,n.length>0?n.join(`, `):`ничего`]}),(0,A.jsx)(D,{args:{...e,onRowSelectionChange:t=>{e.onRowSelectionChange?.(t),r(t.map(e=>e.label))}}})]})}var He,A,Ue,j,We,Ge,M,Ke,N,P,F,I,qe,Je,Ye,Xe,L,R,Ze,Qe,$e,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,et;function tt(){return(tt=e((()=>{He=n(),ae(),c(),d(),l(),T(),A=s(),{useArgs:Ue}=__STORYBOOK_MODULE_PREVIEW_API__,j=[{id:`revenue`,parentId:null,label:`Выручка`,jan:`1 240`,feb:`1 320`,mar:`1 410`,apr:`1 505`},{id:`revenue_clients`,parentId:`revenue`,label:`Клиентский сегмент`,jan:`920`,feb:`960`,mar:`1 020`,apr:`1 080`},{id:`revenue_exports`,parentId:`revenue`,label:`Экспорт`,jan:`320`,feb:`360`,mar:`390`,apr:`425`},{id:`margin`,parentId:null,label:`Маржинальность`,jan:`18%`,feb:`19%`,mar:`21%`,apr:`20%`},{id:`margin_sales`,parentId:`margin`,label:`Продажи`,jan:`12%`,feb:`13%`,mar:`14%`,apr:`14%`},{id:`margin_logistics`,parentId:`margin`,label:`Логистика`,jan:`6%`,feb:`6%`,mar:`7%`,apr:`6%`},{id:`margin_logistics_local`,parentId:`margin_logistics`,label:`Локальная логистика`,jan:`4%`,feb:`4%`,mar:`5%`,apr:`4%`},{id:`margin_logistics_export`,parentId:`margin_logistics`,label:`Экспортная логистика`,jan:`2%`,feb:`2%`,mar:`2%`,apr:`2%`,isLocked:!0},{id:`orphan_costs`,parentId:`missing_parent`,label:`Прочие расходы без родителя`,jan:`30`,feb:`28`,mar:`31`,apr:`35`}],We=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:18,align:`left`}},{id:`jan`,accessorKey:`jan`,header:`янв`,meta:{width:8,align:`right`}},{id:`feb`,accessorKey:`feb`,header:`фев`,meta:{width:8,align:`right`}},{id:`mar`,accessorKey:`mar`,header:`мар`,meta:{width:8,align:`right`}},{id:`apr`,accessorKey:`apr`,header:`апр`,meta:{width:8,align:`right`}}],Ge={getRowId:e=>e.id,getParentRowId:e=>e.parentId},M={getRowId:e=>e.id,getParentRowId:e=>e.parentId},Ke={getRowId:e=>e.id,getParentRowId:e=>e.parentId},N=[{id:`revenue`,parentId:null,label:`Выручка`,purchasePrice:80,salePrice:125,healthScore:40,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1820},{id:`revenue_domestic`,parentId:`revenue`,label:`Внутренний рынок`,purchasePrice:82,salePrice:129,healthScore:120,pendingAmount:250,createdAt:`2026-03-18T10:00:00.000Z`,totalAmount:980},{id:`revenue_export`,parentId:`revenue`,label:`Экспорт`,purchasePrice:75,salePrice:118,healthScore:95,pendingAmount:0,createdAt:`2026-03-19T08:25:00.000Z`,totalAmount:840},{id:`margin`,parentId:null,label:`Маржинальность`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:640}],P=[{id:`div-root-1`,parentId:null,label:`Корень 1`,division:`ДВД`},{id:`div-root-2`,parentId:null,label:`Корень 2`,division:`ДВД`},{id:`div-root-3`,parentId:null,label:`Корень 3`,division:`УД`},{id:`div-child-1`,parentId:`div-root-3`,label:`Дочерний узел`,division:`УД`}],F=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}},{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}}],I=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],qe=[{id:`totalAmount`,accessorKey:`totalAmount`,header:`Сумма в дереве`,meta:{width:12,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:ze()}}},{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}}],Je=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],Ye=[{id:`label`,type:`string`,originalType:`Edm.String`,label:`Показатель`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`createdAt`,type:`datetime`,originalType:`Edm.DateTime`,label:`Дата создания`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`totalAmount`,type:`decimal`,originalType:`Edm.Decimal`,label:`Сумма`,semanticType:`none`,sortable:!0,filterable:!0,role:`measure`}],Xe=ne(Ye),L=`ZDEMO_FINANCE_SRV`,R=`FinanceSet`,Ze={title:`Финансовая иерархия`,columns:Ye},Qe=(e,t)=>{let n=(0,He.useMemo)(()=>{let e=ie({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Be(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,A.jsx)(u,{client:n,children:e()})},$e={title:`Shared/UI/TreeTable`,component:S,args:{title:`Финансовые показатели`,data:j,columns:We,hierarchy:Ge,selectionMode:`single`,expandFirstLevel:!0,indentSize:1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок таблицы.`,control:`text`},isLoading:{description:`Показывает состояние первичной загрузки.`,control:`boolean`},isFetching:{description:`Показывает фоновое обновление без очистки дерева.`,control:`boolean`},data:{description:`Плоский источник данных OData.`,control:!1},columns:{description:`Колонки TreeTable.`,control:!1},hierarchy:{description:`Функции получения id строки и id родителя.`,control:!1},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},expandFirstLevel:{description:`Автоматически раскрывает корневой уровень при первой инициализации.`,control:`boolean`},defaultExpandedRowIds:{description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`,control:!1},treeColumnId:{description:`Колонка, в которой рисуется дерево.`,control:`text`},indentSize:{description:`Отступ на уровень вложенности; число трактуется как em.`,control:`number`},columnVisibility:{description:`Controlled-состояние видимости колонок.`,control:!1},defaultColumnVisibility:{description:`Стартовое uncontrolled-состояние видимости колонок.`,control:!1},columnOrder:{description:`Controlled-порядок идентификаторов колонок.`,control:!1},defaultColumnOrder:{description:`Стартовый uncontrolled-порядок колонок.`,control:!1},columnSizing:{description:`Controlled-ширины колонок в px.`,control:!1},defaultColumnSizing:{description:`Стартовые uncontrolled-ширины колонок.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},enableColumnResizing:{description:`Включает изменение ширины колонок через header-handle.`,control:`boolean`},enableColumnReordering:{description:`Включает перетаскивание заголовков для изменения порядка колонок.`,control:`boolean`},columnResizeMinWidth:{description:`Минимальная ширина колонки при resize в px.`,control:`number`},onColumnVisibilityChange:{description:`Вызывается после изменения видимости колонок.`,control:!1},onColumnOrderChange:{description:`Вызывается после изменения порядка колонок.`,control:!1},onColumnSizingChange:{description:`Вызывается после изменения ширины колонок.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет назначить CSS-класс конкретной строке.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onExpandedRowIdsChange:{description:`Вызывается после изменения раскрытых строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца дерева внутри scroll-контейнера.`,control:!1},renderHeaderContextMenu:{description:`Слот контекстного меню заголовка колонки.`,control:!1},renderCellContent:{description:`Слот содержимого ячейки поверх стандартного formatting-runtime.`,control:!1}}},z={render:function(e){return(0,A.jsx)(D,{args:e})}},B={args:{selectionMode:`multi`},render:function(e){return(0,A.jsx)(k,{args:e})}},V={args:{expandFirstLevel:!1},render:function(e){return(0,A.jsx)(D,{args:e})}},H={args:{expandFirstLevel:!1,defaultExpandedRowIds:[`margin`,`margin_logistics`]},render:function(e){return(0,A.jsx)(D,{args:e})}},U={args:{selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:function(e){return(0,A.jsx)(k,{args:e,intro:`Строка «Экспортная логистика» остаётся в дереве, но не участвует в выборе.`})}},W={args:{isFetching:!0},render:function(e){return(0,A.jsx)(D,{args:e})}},G={args:{data:[]},render:function(e){return(0,A.jsx)(D,{args:e})}},K={args:{isLoading:!0},render:function(e){return(0,A.jsx)(D,{args:e})}},q={args:{title:`Формула в дереве`,data:N,columns:I,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},J={args:{title:`Форматирование tree-колонки`,data:N,columns:qe,hierarchy:M,treeColumnId:`totalAmount`,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Y={args:{title:`Скрытие нулей в дереве`,data:N,columns:Je,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},X={args:{title:`Слияние дубликатов в дереве`,data:P,columns:F,hierarchy:Ke,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Z={args:{title:`OData metadata adapter`,data:N,columns:Xe,hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:function(e){return(0,A.jsx)(D,{args:e})}},Q={args:{title:`useODataTableColumns: build`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[Qe],parameters:{odataService:L,odataEntity:R,odataMetadata:Ze},render:function(e){return(0,A.jsx)(O,{args:e})}},$={args:{title:`useODataTableColumns: enrich`,data:N,columns:[],hierarchy:M,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[Qe],parameters:{odataService:L,odataEntity:R,odataMetadata:Ze},render:function(e){return(0,A.jsx)(Ve,{args:e})}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
10
10
  render: function Render(args) {
11
11
  return <TreeTableStoryCanvas args={args} />;
12
12
  }
@@ -165,4 +165,4 @@ TreeTable сам добавит expander и отступ после выполн
165
165
  render: function Render(args) {
166
166
  return <HookEnrichTreeTableStory args={args} />;
167
167
  }
168
- }`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich для TreeTable.",...$.parameters?.docs?.description}}},tt=[`Basic`,`MultiSelect`,`CollapsedByDefault`,`WithDefaultExpandedBranch`,`WithDisabledRows`,`Fetching`,`Empty`,`Loading`,`WithFormulaColumn`,`WithFormattedTreeColumn`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{nt as _,K as a,H as c,q as d,Y as f,$ as g,Q as h,W as i,U as l,Z as m,V as n,B as o,X as p,G as r,D as s,z as t,J as u};
168
+ }`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich для TreeTable.",...$.parameters?.docs?.description}}},et=[`Basic`,`MultiSelect`,`CollapsedByDefault`,`WithDefaultExpandedBranch`,`WithDisabledRows`,`Fetching`,`Empty`,`Loading`,`WithFormulaColumn`,`WithFormattedTreeColumn`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{tt as _,K as a,H as c,q as d,Y as f,$ as g,Q as h,W as i,U as l,Z as m,V as n,B as o,X as p,G as r,E as s,z as t,J as u};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-dENsI_HJ.js";import{i as n,r}from"./react-qN2cStNd.js";import{c as i,l as a,m as o}from"./blocks-Cta1XrWW.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-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
2
2
 
3
3
  Модуль \`src/shared/api/async\` содержит инфраструктурный helper для пакетного запуска async-задач с ограничением по параллелизму.
4
4