@ryuzaki13/react-foundation-ui 3.9.0 → 3.10.1

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 (376) hide show
  1. package/dist/badge/index.js +1 -1
  2. package/dist/barcode-scanner/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/base-table/ui/BaseTable.d.ts +9 -1
  5. package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
  6. package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js → TextEditorLexicalClient-Cj6yjCGm.js} +3 -3
  7. package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js.map → TextEditorLexicalClient-Cj6yjCGm.js.map} +1 -1
  8. package/dist/chunks/{base-table-9H5YuVvB.js → base-table-CoVXG2FT.js} +132 -114
  9. package/dist/chunks/base-table-CoVXG2FT.js.map +1 -0
  10. package/dist/chunks/{context-menu-BV8636Ou.js → context-menu-BlLesqpZ.js} +2 -2
  11. package/dist/chunks/{context-menu-BV8636Ou.js.map → context-menu-BlLesqpZ.js.map} +1 -1
  12. package/dist/chunks/flex-BhrQCH4I.js +401 -0
  13. package/dist/chunks/flex-BhrQCH4I.js.map +1 -0
  14. package/dist/chunks/grid-D6wPRCjx.js +394 -0
  15. package/dist/chunks/grid-D6wPRCjx.js.map +1 -0
  16. package/dist/chunks/{misc-BjdDK6mm.js → misc-Dcr24uDY.js} +2 -2
  17. package/dist/chunks/{misc-BjdDK6mm.js.map → misc-Dcr24uDY.js.map} +1 -1
  18. package/dist/chunks/{modal-CBGNsqrq.js → modal-DeABSKrb.js} +4 -4
  19. package/dist/chunks/{modal-CBGNsqrq.js.map → modal-DeABSKrb.js.map} +1 -1
  20. package/dist/chunks/{picker-DagDe9OH.js → picker-CWx7vPE8.js} +2 -2
  21. package/dist/chunks/{picker-DagDe9OH.js.map → picker-CWx7vPE8.js.map} +1 -1
  22. package/dist/chunks/responsiveLayout-D2mtCDdh.js +28 -0
  23. package/dist/chunks/responsiveLayout-D2mtCDdh.js.map +1 -0
  24. package/dist/chunks/{select-C-1U-ujV.js → select-CHBBo5fn.js} +2 -2
  25. package/dist/chunks/{select-C-1U-ujV.js.map → select-CHBBo5fn.js.map} +1 -1
  26. package/dist/chunks/table-Cm9NhT9K.js +154 -0
  27. package/dist/chunks/table-Cm9NhT9K.js.map +1 -0
  28. package/dist/context-menu/index.js +1 -1
  29. package/dist/disclosure/index.js +1 -1
  30. package/dist/errors/index.js +1 -1
  31. package/dist/expandable-action-panel/index.js +1 -1
  32. package/dist/flex/FlexContainer.d.ts +1 -1
  33. package/dist/flex/FlexContainer.d.ts.map +1 -1
  34. package/dist/flex/FlexItem.d.ts +1 -1
  35. package/dist/flex/FlexItem.d.ts.map +1 -1
  36. package/dist/flex/PredefinedFlex.d.ts +1 -1
  37. package/dist/flex/PredefinedFlex.d.ts.map +1 -1
  38. package/dist/flex/getFlexClasses.d.ts +5 -0
  39. package/dist/flex/getFlexClasses.d.ts.map +1 -0
  40. package/dist/flex/index.js +1 -1
  41. package/dist/grid/GridContainer.d.ts.map +1 -1
  42. package/dist/grid/GridItem.d.ts.map +1 -1
  43. package/dist/grid/getGridClasses.d.ts +12 -0
  44. package/dist/grid/getGridClasses.d.ts.map +1 -0
  45. package/dist/grid/index.js +1 -1
  46. package/dist/image/index.js +2 -2
  47. package/dist/layout-picker/index.js +1 -1
  48. package/dist/list/index.js +2 -2
  49. package/dist/listbox/index.js +1 -1
  50. package/dist/misc/index.js +1 -1
  51. package/dist/modal/index.js +1 -1
  52. package/dist/multi-select/index.js +1 -1
  53. package/dist/notifications/index.js +1 -1
  54. package/dist/picker/index.js +1 -1
  55. package/dist/preset-range-date-input/index.js +1 -1
  56. package/dist/preset-select/index.js +1 -1
  57. package/dist/responsive-layout/responsiveLayout.d.ts +17 -0
  58. package/dist/responsive-layout/responsiveLayout.d.ts.map +1 -0
  59. package/dist/select/index.js +1 -1
  60. package/dist/simple-table/index.js +1 -1
  61. package/dist/slider/index.js +1 -1
  62. package/dist/state-select/index.js +1 -1
  63. package/dist/styles.css +1 -1
  64. package/dist/table/Table.d.ts +10 -1
  65. package/dist/table/Table.d.ts.map +1 -1
  66. package/dist/table/index.js +1 -1
  67. package/dist/table-sorting/index.js +1 -1
  68. package/dist/tabs/index.js +1 -1
  69. package/dist/text-editor/index.js +2 -2
  70. package/dist/toolbar/index.js +2 -2
  71. package/dist/tree-select/index.js +1 -1
  72. package/dist/tree-table/index.js +1 -1
  73. package/package.json +1 -1
  74. package/storybook-static/assets/{Badge-CL58JilM.js → Badge-7nsS5Yyj.js} +1 -1
  75. package/storybook-static/assets/{Badge.stories-CXFTvV3D.js → Badge.stories-BzQKeDqC.js} +1 -1
  76. package/storybook-static/assets/{BadgeList-DLssobfd.js → BadgeList-WzFV9MB1.js} +1 -1
  77. package/storybook-static/assets/{BarcodeScannerDialog.stories-CpMywpKq.js → BarcodeScannerDialog.stories-Ci8Mf9WX.js} +1 -1
  78. package/storybook-static/assets/{Button-CSbLv1K7.js → Button-6F3OVyTc.js} +1 -1
  79. package/storybook-static/assets/{Button-DMAPWgMI.js → Button-DqsSng-I.js} +1 -1
  80. package/storybook-static/assets/{Button.stories-CU1kYMvA.js → Button.stories-PNc3lIYB.js} +1 -1
  81. package/storybook-static/assets/{CalendarView-DuCLo_x5.js → CalendarView-BT9X9tky.js} +1 -1
  82. package/storybook-static/assets/{CheckBox-BBPasWSk.js → CheckBox-BJhTyl1K.js} +1 -1
  83. package/storybook-static/assets/{CheckBox-Bfcdvr2o.js → CheckBox-BasxUZYS.js} +1 -1
  84. package/storybook-static/assets/{CheckBox.stories-sGH6EuU4.js → CheckBox.stories-DLRA5q3H.js} +1 -1
  85. package/storybook-static/assets/{Color-6AOWCN3U-5NJhf8m9.js → Color-6AOWCN3U-C4R02nIA.js} +1 -1
  86. package/storybook-static/assets/{ContextMenu-CxuYkXjJ.js → ContextMenu-BckwURZg.js} +1 -1
  87. package/storybook-static/assets/{ContextMenu-z6NKmD0I.js → ContextMenu-OOsbvmOa.js} +1 -1
  88. package/storybook-static/assets/{ContextMenu.stories-CI5IW_KX.js → ContextMenu.stories-BD-wMDNw.js} +1 -1
  89. package/storybook-static/assets/{DateInput-BkCbK0M5.js → DateInput-B5MxQUHL.js} +1 -1
  90. package/storybook-static/assets/{DateInput-A8NURpCX.js → DateInput-DT6btAWU.js} +1 -1
  91. package/storybook-static/assets/{DateInput.stories-DnzeyBpg.js → DateInput.stories-BK2brwe_.js} +1 -1
  92. package/storybook-static/assets/{DateRangePresetSelect-Bh7qMFTr.js → DateRangePresetSelect-Dplr79Cm.js} +1 -1
  93. package/storybook-static/assets/{DateRangePresetSelect-CGZkf8Ty.js → DateRangePresetSelect-gRdIuTx9.js} +1 -1
  94. package/storybook-static/assets/{DateRangePresetSelect.stories-Drm2FCnJ.js → DateRangePresetSelect.stories-BRksGdxw.js} +1 -1
  95. package/storybook-static/assets/{DeprecatedMultiSelect-BebYsPmQ.js → DeprecatedMultiSelect-1MSPac-V.js} +1 -1
  96. package/storybook-static/assets/{DeprecatedMultiSelect-8TWWhsLi.js → DeprecatedMultiSelect-BOxmEW2D.js} +1 -1
  97. package/storybook-static/assets/{DeprecatedMultiSelect.stories-7iL6YOgh.js → DeprecatedMultiSelect.stories-Ax0zv6Kb.js} +1 -1
  98. package/storybook-static/assets/{Detail-BOZkPwOI.js → Detail-_5TyqOha.js} +1 -1
  99. package/storybook-static/assets/{Detail.stories-RZALoKmD.js → Detail.stories-CJbeEBiY.js} +1 -1
  100. package/storybook-static/assets/{Dialog-CeukIYpx.js → Dialog-BodfEiIi.js} +1 -1
  101. package/storybook-static/assets/{Dialog-BsslYClj.js → Dialog-HBOYhMQq.js} +1 -1
  102. package/storybook-static/assets/{Dialog.stories-y7MpdGQr.js → Dialog.stories-Ds4F0ZoJ.js} +1 -1
  103. package/storybook-static/assets/{Disclosure-CiTnWx5y.js → Disclosure-BbvtIOyN.js} +1 -1
  104. package/storybook-static/assets/{Disclosure.stories-UWW9oheF.js → Disclosure.stories-CnSK79hZ.js} +1 -1
  105. package/storybook-static/assets/{DisclosureGroup-CT3BdQXr.js → DisclosureGroup-Dd0BeL4o.js} +1 -1
  106. package/storybook-static/assets/{DocsRenderer-JROSPFPF-x50rjjKP.js → DocsRenderer-JROSPFPF-BX-ThlFg.js} +1 -1
  107. package/storybook-static/assets/{DropZone-gWSeoAx6.js → DropZone-CCkHaYAD.js} +1 -1
  108. package/storybook-static/assets/{DropZone-DUn9vW2w.js → DropZone-DPqYieZH.js} +1 -1
  109. package/storybook-static/assets/{DropZone.stories-CmaVl9to.js → DropZone.stories-lfKkNIIl.js} +1 -1
  110. package/storybook-static/assets/{DropdownMenu-DkeS8gOF.js → DropdownMenu-QWp-lSol.js} +1 -1
  111. package/storybook-static/assets/{ExpandableActionPanel-DdqWZDe2.js → ExpandableActionPanel-DxPp3zYd.js} +1 -1
  112. package/storybook-static/assets/{ExpandableActionPanel.stories-CA-dpb07.js → ExpandableActionPanel.stories-BiklI55p.js} +1 -1
  113. package/storybook-static/assets/Flex-S4mwRnc2.js +81 -0
  114. package/storybook-static/assets/Flex.stories-DRBLrgrW.js +454 -0
  115. package/storybook-static/assets/FlexContainer-4Ap7vbIt.js +1 -0
  116. package/storybook-static/assets/{FlexItem-DsoW-br3.js → FlexItem-Dwqi7KeT.js} +2 -2
  117. package/storybook-static/assets/{FloatingPopover-7MpESGU4.js → FloatingPopover-D8FScEoc.js} +1 -1
  118. package/storybook-static/assets/FormattedTableCell-BKSpyxnu.js +15 -0
  119. package/storybook-static/assets/{Grid-eqZxtRIA.js → Grid-CJ5RLrgv.js} +2 -2
  120. package/storybook-static/assets/Grid-DIYjEdUA.js +84 -0
  121. package/storybook-static/assets/Grid.stories-Bl35lMkU.js +657 -0
  122. package/storybook-static/assets/{GridContainer-B9JaLUGE.js → GridContainer-B2iAnXeB.js} +2 -2
  123. package/storybook-static/assets/GridContainer-DgBuOs_1.css +1 -0
  124. package/storybook-static/assets/{ImageCropper.stories-W76XOOMv.js → ImageCropper.stories--E79MUTS.js} +1 -1
  125. package/storybook-static/assets/{ImageRenderer-DYg7BkPO.js → ImageRenderer-D0stahXz.js} +1 -1
  126. package/storybook-static/assets/{ImageRenderer.stories-rgJV0OBp.js → ImageRenderer.stories-C_Ir6A3m.js} +1 -1
  127. package/storybook-static/assets/{ImageView.stories-D9h6sg3j.js → ImageView.stories-DbY7pwWs.js} +1 -1
  128. package/storybook-static/assets/{ImageViewer.stories-Bd0WJOp1.js → ImageViewer.stories-D2jfTzCV.js} +2 -2
  129. package/storybook-static/assets/{ImageViewerRuntime-DOjvjbv0.js → ImageViewerRuntime-DlvGnNv4.js} +1 -1
  130. package/storybook-static/assets/{Input-7N70tL0u.js → Input-CzvWPW0I.js} +1 -1
  131. package/storybook-static/assets/{Input-BxrxwNyD.js → Input-av5ktymr.js} +1 -1
  132. package/storybook-static/assets/{Input.stories-Df1j802b.js → Input.stories-CvLnu270.js} +1 -1
  133. package/storybook-static/assets/{InputDateTime-UdemHZXV.js → InputDateTime-D5bQuB9a.js} +1 -1
  134. package/storybook-static/assets/{InputDateTime.stories-yRwAe5_5.js → InputDateTime.stories-BD9Pt7vB.js} +1 -1
  135. package/storybook-static/assets/{InputFile-5LpFR1Fq.js → InputFile-C3nj3qsi.js} +1 -1
  136. package/storybook-static/assets/{InputFile-DDhf7A_J.js → InputFile-ulrG6ECh.js} +1 -1
  137. package/storybook-static/assets/{InputFile.stories-BVDT-BAx.js → InputFile.stories-CEewSWb_.js} +1 -1
  138. package/storybook-static/assets/{InputFiles-CgM2BwNO.js → InputFiles-DZ1nUYOE.js} +1 -1
  139. package/storybook-static/assets/{InputFiles-D3CPIXiK.js → InputFiles-lF7Ys1hh.js} +1 -1
  140. package/storybook-static/assets/{InputFiles.stories-XMHBA9Fn.js → InputFiles.stories-CCptKLDn.js} +1 -1
  141. package/storybook-static/assets/{InputFilesList-DSivq9iT.js → InputFilesList-DTJkMHNI.js} +1 -1
  142. package/storybook-static/assets/{InputImage-CY0A9Xz-.js → InputImage-CIPZL6uS.js} +1 -1
  143. package/storybook-static/assets/{InputImage-BG_QyAh3.js → InputImage-lDHbW_ac.js} +1 -1
  144. package/storybook-static/assets/{InputImage.stories-DiGXytZU.js → InputImage.stories-CQ2BBGf-.js} +1 -1
  145. package/storybook-static/assets/{InteractiveComponents-Bf9KitNR.js → InteractiveComponents-DD7TZeA4.js} +1 -1
  146. package/storybook-static/assets/{InteractiveComponents.stories-TwALUGGN.js → InteractiveComponents.stories-Bbo3l8WO.js} +1 -1
  147. package/storybook-static/assets/{LayoutPicker-BLrNe8g_.js → LayoutPicker-A7VlDbc0.js} +1 -1
  148. package/storybook-static/assets/{LayoutPicker-MhA9N4WI.js → LayoutPicker-uw1knHzA.js} +1 -1
  149. package/storybook-static/assets/{LayoutPicker.stories-BCME5Ogr.js → LayoutPicker.stories-DDR6oiSN.js} +1 -1
  150. package/storybook-static/assets/{Listbox-B8F2xWvs.js → Listbox-CO1BjyFs.js} +1 -1
  151. package/storybook-static/assets/{Listbox-y_3VijHU.js → Listbox-CmkI7dm_.js} +1 -1
  152. package/storybook-static/assets/{Listbox.stories-mp0p0NpO.js → Listbox.stories-BIPmBbuG.js} +1 -1
  153. package/storybook-static/assets/{Modal-qIsW7BkG.js → Modal-C3JdXj6Q.js} +1 -1
  154. package/storybook-static/assets/{Modal-DgEV0vBs.js → Modal-IXMZUaaw.js} +1 -1
  155. package/storybook-static/assets/{Modal.stories-CQ-Hn4GK.js → Modal.stories-BD-UnVeM.js} +1 -1
  156. package/storybook-static/assets/{ModalManagerProvider-DEoq4q_O.js → ModalManagerProvider-zJVg8-dg.js} +1 -1
  157. package/storybook-static/assets/{MultiSelect-D-6XHQUG.js → MultiSelect-CGoyA8-m.js} +1 -1
  158. package/storybook-static/assets/{MultiSelect-PGooEkAK.js → MultiSelect-DZKjK53B.js} +1 -1
  159. package/storybook-static/assets/{MultiSelect.stories-B0JzMViN.js → MultiSelect.stories-D65mpYYt.js} +1 -1
  160. package/storybook-static/assets/{MultiSelectCore-B0VbnEBc.js → MultiSelectCore-ih1pgvuq.js} +1 -1
  161. package/storybook-static/assets/{NoData-DCuuvSoD.js → NoData-32gM9qt4.js} +1 -1
  162. package/storybook-static/assets/{NotificationsHost-CWqG91Yh.js → NotificationsHost-pkEhxgz2.js} +1 -1
  163. package/storybook-static/assets/{NotificationsHost.stories-CEp-AppV.js → NotificationsHost.stories-BqIayryx.js} +1 -1
  164. package/storybook-static/assets/{ODataMultiSelect-CwVneYzi.js → ODataMultiSelect-D42gAcHg.js} +1 -1
  165. package/storybook-static/assets/{ODataMultiSelect.stories-BRnVOZsK.js → ODataMultiSelect.stories-DfAkKAsG.js} +1 -1
  166. package/storybook-static/assets/{ODataSelect-DyKTFqk7.js → ODataSelect-DPOMWPKO.js} +1 -1
  167. package/storybook-static/assets/{ODataSelect.stories-B-3GaeU4.js → ODataSelect.stories-DHs3wp7E.js} +1 -1
  168. package/storybook-static/assets/{ODataTreeMultiSelect-16xNi9qI.js → ODataTreeMultiSelect-CC8yuaVP.js} +1 -1
  169. package/storybook-static/assets/{ODataTreeMultiSelect.stories-DI9tH2qD.js → ODataTreeMultiSelect.stories-BtwLdGK6.js} +1 -1
  170. package/storybook-static/assets/{ODataTreeSelect-Dk262plK.js → ODataTreeSelect-qcitpYxj.js} +1 -1
  171. package/storybook-static/assets/{ODataTreeSelect.stories-DfaL0dci.js → ODataTreeSelect.stories-1r_tkUVi.js} +1 -1
  172. package/storybook-static/assets/{OneStepScroller-DI8qlm5c.js → OneStepScroller-wz4Qujpx.js} +1 -1
  173. package/storybook-static/assets/{Option-CG3bU2cY.js → Option-Beom2xTg.js} +1 -1
  174. package/storybook-static/assets/{OptionButton-DF0E8aU5.js → OptionButton-D_ZCVbsd.js} +1 -1
  175. package/storybook-static/assets/{OptionContent-BZ3FiJQ4.js → OptionContent-FZ-u9L1s.js} +1 -1
  176. package/storybook-static/assets/{OptionContentContainer-CyI5IfqU.js → OptionContentContainer-HVNOgpjm.js} +1 -1
  177. package/storybook-static/assets/{PeriodSelect-uR-Xk4vQ.js → PeriodSelect-DbdeznMQ.js} +1 -1
  178. package/storybook-static/assets/{PeriodSelect-_gAbt3E6.js → PeriodSelect-qevVtoSU.js} +1 -1
  179. package/storybook-static/assets/{PeriodSelect.stories-D-Lp7QtA.js → PeriodSelect.stories-BLi_6rpY.js} +1 -1
  180. package/storybook-static/assets/{PickerField-CByAoAAO.js → PickerField-BHSRcQY6.js} +1 -1
  181. package/storybook-static/assets/{PickerTriggerActions-CYM-UvRz.js → PickerTriggerActions-Cxk3YQGF.js} +1 -1
  182. package/storybook-static/assets/{Popover-CdnsB1ss.js → Popover-BosMVXTI.js} +1 -1
  183. package/storybook-static/assets/{Popover-CRcVoLur.js → Popover-De2fvkIB.js} +1 -1
  184. package/storybook-static/assets/{Popover.stories-Dxdt7Jc5.js → Popover.stories-DM-Plj05.js} +1 -1
  185. package/storybook-static/assets/{PresetRangeDateInput-BmAGj8ye.js → PresetRangeDateInput-CCQuBkJj.js} +1 -1
  186. package/storybook-static/assets/{PresetRangeDateInput-BQkK3Nmd.js → PresetRangeDateInput-jersOEYO.js} +1 -1
  187. package/storybook-static/assets/{PresetRangeDateInput.stories-CUIwCB6T.js → PresetRangeDateInput.stories-DwqDWXX9.js} +1 -1
  188. package/storybook-static/assets/{PresetSelect-C7HG9CjN.js → PresetSelect-BhwHbWmS.js} +1 -1
  189. package/storybook-static/assets/{README-BmwSZfOQ.js → README-1UUrJXjZ.js} +1 -1
  190. package/storybook-static/assets/{README-zlaX5PMG.js → README-29WDFTDH.js} +1 -1
  191. package/storybook-static/assets/{README-D-urpNSn.js → README-33qTnj5l.js} +1 -1
  192. package/storybook-static/assets/{README-BbUo3mGT.js → README-B5eMX8_9.js} +1 -1
  193. package/storybook-static/assets/{README-DfRan6KR.js → README-B5rmNIab.js} +1 -1
  194. package/storybook-static/assets/{README-KCmlmH_Z.js → README-BAlXRtAz.js} +1 -1
  195. package/storybook-static/assets/{README-CNnGqdkH.js → README-BCEKAY_J.js} +1 -1
  196. package/storybook-static/assets/{README-DyKegKG_.js → README-BD5f1if4.js} +1 -1
  197. package/storybook-static/assets/{README-DMZYAdN0.js → README-BIvHy4kr.js} +1 -1
  198. package/storybook-static/assets/{README-Dhptn6UE.js → README-BK8k_Q4m.js} +1 -1
  199. package/storybook-static/assets/{README-CoENtXo_.js → README-BKLeD4y3.js} +1 -1
  200. package/storybook-static/assets/{README-C41zKsq6.js → README-BNsU3Cqx.js} +1 -1
  201. package/storybook-static/assets/{README-BL0-uTlP.js → README-BPSG9KrB.js} +1 -1
  202. package/storybook-static/assets/{README-BEYMpavt.js → README-BQDFmWGi.js} +1 -1
  203. package/storybook-static/assets/{README-BR8bdUjV.js → README-B_tg7QVI.js} +1 -1
  204. package/storybook-static/assets/{README-DxTRj-9a.js → README-BfRKdJtw.js} +1 -1
  205. package/storybook-static/assets/{README-ByIhL9zr.js → README-BoJXfTe6.js} +1 -1
  206. package/storybook-static/assets/{README-C5-oc7fP.js → README-By0zyJQ-.js} +1 -1
  207. package/storybook-static/assets/{README-De3j71sQ.js → README-BzVVPLXk.js} +1 -1
  208. package/storybook-static/assets/{README-BquP2lux.js → README-CHllxFPj.js} +1 -1
  209. package/storybook-static/assets/{README-CTBkJ27k.js → README-CJ6rsYUk.js} +1 -1
  210. package/storybook-static/assets/{README-DY7lgi4q.js → README-CJFgcV8C.js} +1 -1
  211. package/storybook-static/assets/{README-j-Czw7ww.js → README-CPZBUXWs.js} +1 -1
  212. package/storybook-static/assets/{README-DCWk-Vga.js → README-CioPc-xb.js} +1 -1
  213. package/storybook-static/assets/{README-CTGZXXVP.js → README-CmzO6bzh.js} +1 -1
  214. package/storybook-static/assets/{README-B0iHgO_3.js → README-Cpk-Tr_W.js} +1 -1
  215. package/storybook-static/assets/{README-DTMZk60G.js → README-CrhHHw0i.js} +1 -1
  216. package/storybook-static/assets/{README-DAH3lVWd.js → README-CvReVgGJ.js} +1 -1
  217. package/storybook-static/assets/{README-DQ1aeQ_i.js → README-CvzdarfH.js} +1 -1
  218. package/storybook-static/assets/{README-BUnl1FiN.js → README-Cz14JUTC.js} +1 -1
  219. package/storybook-static/assets/{README-DevTRU4A.js → README-D09okhy9.js} +1 -1
  220. package/storybook-static/assets/{README-DaaS2c7L.js → README-D5YLxtgR.js} +1 -1
  221. package/storybook-static/assets/{README-_8pxMMC7.js → README-DK5aZdOt.js} +1 -1
  222. package/storybook-static/assets/{README-VNB_Dj5F.js → README-DKI2c8YJ.js} +1 -1
  223. package/storybook-static/assets/{README-BAjs7T_d.js → README-DNeDK1_H.js} +1 -1
  224. package/storybook-static/assets/{README-DNrPuueH.js → README-DQl_3tX1.js} +1 -1
  225. package/storybook-static/assets/{README-B1GSwjas.js → README-DS63ZnOT.js} +1 -1
  226. package/storybook-static/assets/{README-Bdir2bPK.js → README-DT96eoyc.js} +1 -1
  227. package/storybook-static/assets/{README-n4utUGcX.js → README-D_d6frx1.js} +1 -1
  228. package/storybook-static/assets/{README-CpJmZHQJ.js → README-Dc2qBccm.js} +1 -1
  229. package/storybook-static/assets/{README-CtZBJdo2.js → README-DeHGaTaW.js} +1 -1
  230. package/storybook-static/assets/{README-B-ihyEBx.js → README-Df8F75dr.js} +1 -1
  231. package/storybook-static/assets/{README-C7NhXX-n.js → README-DmJq-c8n.js} +1 -1
  232. package/storybook-static/assets/{README-9DTI05kd.js → README-DzASMBMv.js} +1 -1
  233. package/storybook-static/assets/{README-CUghXL33.js → README-DzrrH56m.js} +1 -1
  234. package/storybook-static/assets/{README-xrMkjHIm.js → README-ECCgQcGo.js} +1 -1
  235. package/storybook-static/assets/{README-BurB0dhj.js → README-LWfExOhc.js} +1 -1
  236. package/storybook-static/assets/{README-CiJ5wkhQ.js → README-NHHRscRF.js} +1 -1
  237. package/storybook-static/assets/{README-CvP9yRMR.js → README-O9BJmE-H.js} +1 -1
  238. package/storybook-static/assets/{README-ByT9u_7g.js → README-Rk3Krdys.js} +1 -1
  239. package/storybook-static/assets/{README-CQlujiXR.js → README-bWB0c7pN.js} +1 -1
  240. package/storybook-static/assets/{README-C8jcwgeL.js → README-o4PUljT6.js} +1 -1
  241. package/storybook-static/assets/{README-CoQeAVdv.js → README-sPm51M3K.js} +1 -1
  242. package/storybook-static/assets/{RadioButton-CDIyYuS9.js → RadioButton-BZiBFXe1.js} +1 -1
  243. package/storybook-static/assets/{RadioButton-DV8K96H6.js → RadioButton-CBLdgMz4.js} +1 -1
  244. package/storybook-static/assets/{RadioButton.stories-CRNqKsyz.js → RadioButton.stories-BP5yM5qg.js} +1 -1
  245. package/storybook-static/assets/{RadioGroup-BnYFRvmn.js → RadioGroup-DYRfZVGC.js} +1 -1
  246. package/storybook-static/assets/{RadioGroup-CIIw962S.js → RadioGroup-epjQdSZn.js} +1 -1
  247. package/storybook-static/assets/{RadioGroup.stories-K4AidbLa.js → RadioGroup.stories-UOjXIk6v.js} +1 -1
  248. package/storybook-static/assets/ResponsiveLayoutPreview-BHBxtn2W.js +1 -0
  249. package/storybook-static/assets/ResponsiveLayoutPreview-CyXawjCA.css +1 -0
  250. package/storybook-static/assets/{Scrollable-BI1k9ogH.js → Scrollable-BBYov1Hn.js} +1 -1
  251. package/storybook-static/assets/{Scrollable-DAghtYuE.js → Scrollable-DKQa75cf.js} +1 -1
  252. package/storybook-static/assets/{Scrollable.stories-B6Doakiv.js → Scrollable.stories-BH1-i6nI.js} +1 -1
  253. package/storybook-static/assets/{Select-BNHTGJqG.js → Select-DU6Eh0Lt.js} +1 -1
  254. package/storybook-static/assets/{Select-BlnKV8rc.js → Select-DYOCTPiv.js} +1 -1
  255. package/storybook-static/assets/{Select.stories-DZPAoL4J.js → Select.stories-BF3svbAH.js} +1 -1
  256. package/storybook-static/assets/{Separator-CiETy9yM.js → Separator-CxviJxG5.js} +1 -1
  257. package/storybook-static/assets/{Separator-BCUzEQRV.js → Separator-_gvt1sqm.js} +1 -1
  258. package/storybook-static/assets/{Separator.stories-DTzurpM_.js → Separator.stories-DN6hlZl5.js} +1 -1
  259. package/storybook-static/assets/{SerializableSelect-CnQurr7F.js → SerializableSelect-BVTOrYLs.js} +1 -1
  260. package/storybook-static/assets/{SerializableSelect.stories-qJaV_fjJ.js → SerializableSelect.stories-pcWq603M.js} +1 -1
  261. package/storybook-static/assets/{ShimmerText-I292TqXa.js → ShimmerText-BDDa_Wf7.js} +1 -1
  262. package/storybook-static/assets/{ShimmerText.stories-AKqXqp1k.js → ShimmerText.stories-DdZPIKwl.js} +1 -1
  263. package/storybook-static/assets/{SingleDateTimeInput-DSn0vaW-.js → SingleDateTimeInput-q-eu2xUU.js} +1 -1
  264. package/storybook-static/assets/{SingleDateTimeInput-BrNi93tH.js → SingleDateTimeInput-sGTkT8ZA.js} +1 -1
  265. package/storybook-static/assets/{SingleDateTimeInput.stories-C910kkYc.js → SingleDateTimeInput.stories-X7CMAFsq.js} +1 -1
  266. package/storybook-static/assets/{Slider-DO460-pY.js → Slider-CaKY8LIJ.js} +1 -1
  267. package/storybook-static/assets/{Slider-CXA5Zwku.js → Slider-CqNWljkT.js} +1 -1
  268. package/storybook-static/assets/{Slider.stories-B874XxeK.js → Slider.stories-CMxutCGM.js} +1 -1
  269. package/storybook-static/assets/{SliderInput-DTidinPI.js → SliderInput-HUUN5_IF.js} +1 -1
  270. package/storybook-static/assets/{SliderInput-DsV8o7Yy.js → SliderInput-scYwk-4g.js} +1 -1
  271. package/storybook-static/assets/{SliderInput.stories-CDWNO90y.js → SliderInput.stories-CDhgeql1.js} +1 -1
  272. package/storybook-static/assets/{Sortable-CML34YIF.js → Sortable-CaysnUNW.js} +1 -1
  273. package/storybook-static/assets/{Sortable.stories-C-_fvnHM.js → Sortable.stories-C4gHc5ka.js} +1 -1
  274. package/storybook-static/assets/{Splitter-BcuA2qce.js → Splitter-6cU1s7Qr.js} +1 -1
  275. package/storybook-static/assets/{Splitter.stories-CA0-L_Ja.js → Splitter.stories-CA9A-CZ-.js} +1 -1
  276. package/storybook-static/assets/{StateSelect-B23bb_PO.js → StateSelect-BAqjdi4g.js} +1 -1
  277. package/storybook-static/assets/{StateSelect--FDEb4-v.js → StateSelect-OHl6KWge.js} +1 -1
  278. package/storybook-static/assets/{StateSelect.stories-CEVPThtC.js → StateSelect.stories-xX3ujKGO.js} +1 -1
  279. package/storybook-static/assets/{StatusIndicator-BbTCS7Ku.js → StatusIndicator-C_7dWY2t.js} +1 -1
  280. package/storybook-static/assets/{StatusIndicator.stories-BIps_Ecm.js → StatusIndicator.stories-BRlVzKf7.js} +1 -1
  281. package/storybook-static/assets/{StringToggle.stories-vhOfzslq.js → StringToggle.stories-DFPLwtHW.js} +1 -1
  282. package/storybook-static/assets/{Switch-DibS4nSc.js → Switch-CrlrIm3t.js} +1 -1
  283. package/storybook-static/assets/{Switch-jJgwtWFK.js → Switch-DHcMczAC.js} +1 -1
  284. package/storybook-static/assets/{Switch.stories-Cvky3KQz.js → Switch.stories-LhTPX_R-.js} +1 -1
  285. package/storybook-static/assets/Table-Ct8iqJEY.js +219 -0
  286. package/storybook-static/assets/Table.stories-DO30v6VO.js +184 -0
  287. package/storybook-static/assets/{TableEditor.stories-Be9nCkds.js → TableEditor.stories-Qtqr_l4g.js} +1 -1
  288. package/storybook-static/assets/{Tabs-CTL4MnkZ.js → Tabs-CC0IIQwl.js} +1 -1
  289. package/storybook-static/assets/{Tabs.stories-CIVbz7kW.js → Tabs.stories-Bo_Y-dq8.js} +1 -1
  290. package/storybook-static/assets/{TabsBox-C9g1p4du.js → TabsBox-BMNvHsCH.js} +1 -1
  291. package/storybook-static/assets/{TagInput-DuJLeiyT.js → TagInput-BLwbzCit.js} +1 -1
  292. package/storybook-static/assets/{TagInput.stories-BLVFWr-T.js → TagInput.stories-DNcD4tn4.js} +1 -1
  293. package/storybook-static/assets/{Text-Cr_TUUgL.js → Text-Bih-aO3C.js} +1 -1
  294. package/storybook-static/assets/{Textarea-DGaanGLG.js → Textarea-D3os1biP.js} +1 -1
  295. package/storybook-static/assets/{Textarea-BImI6Q6v.js → Textarea-DCnLF4aj.js} +1 -1
  296. package/storybook-static/assets/{Textarea.stories-DvQ2dDNh.js → Textarea.stories-CIFzZQ5Z.js} +1 -1
  297. package/storybook-static/assets/{TimePanel-Cg2G5Hab.js → TimePanel-BcVGesht.js} +1 -1
  298. package/storybook-static/assets/{TimePanel.stories-qy5mb3YN.js → TimePanel.stories-C6_xVdCq.js} +1 -1
  299. package/storybook-static/assets/{Toggle-Dj8Ic_Ak.js → Toggle-BD0YAuO2.js} +1 -1
  300. package/storybook-static/assets/{Toggle-CroC7YOK.js → Toggle-CtABgcO5.js} +1 -1
  301. package/storybook-static/assets/{Toggle.stories-CmyyubM8.js → Toggle.stories-DnTnFcGB.js} +1 -1
  302. package/storybook-static/assets/{TreeMultiSelect-BHNmPW50.js → TreeMultiSelect-Bp_Akwgc.js} +1 -1
  303. package/storybook-static/assets/{TreeMultiSelect-DBQYLjnA.js → TreeMultiSelect-DHk_QP2h.js} +1 -1
  304. package/storybook-static/assets/{TreeMultiSelect.stories-BNsE1zgF.js → TreeMultiSelect.stories-CBVQbR1c.js} +1 -1
  305. package/storybook-static/assets/{TreePickerBase-ZEBy3EVT.js → TreePickerBase-BhWXyIoO.js} +1 -1
  306. package/storybook-static/assets/{TreeSelect-T7G2pkyK.js → TreeSelect-DleoF0hJ.js} +1 -1
  307. package/storybook-static/assets/{TreeSelect-aiPeW2uJ.js → TreeSelect-HNbghKYG.js} +1 -1
  308. package/storybook-static/assets/{TreeSelect.stories-E6ObkYJe.js → TreeSelect.stories-BigcPfEn.js} +1 -1
  309. package/storybook-static/assets/{TreeTable-C0ORe5Pe.js → TreeTable-BNkuyFKP.js} +1 -1
  310. package/storybook-static/assets/{TreeTable.stories-PtGT_1X5.js → TreeTable.stories-Bdx3y7Yb.js} +1 -1
  311. package/storybook-static/assets/{array-D-_yMMUK-DnJ_b27D.js → array-D-_yMMUK-BBmW5vUr.js} +1 -1
  312. package/storybook-static/assets/{blocks-DR4JL0hD.js → blocks-DGivDYe5.js} +3 -3
  313. package/storybook-static/assets/{check-PtABqMc1.js → check-DRMDOowi.js} +1 -1
  314. package/storybook-static/assets/{chevron-down-BaujB0G_.js → chevron-down-D0ohA4RZ.js} +1 -1
  315. package/storybook-static/assets/{chevron-left-C1SZ4PrE.js → chevron-left-CLqpYqDQ.js} +1 -1
  316. package/storybook-static/assets/{chevron-right-CfCjHN8b.js → chevron-right-CXryGzSx.js} +1 -1
  317. package/storybook-static/assets/{chunk-W22LQPXL-Cis7lFT9.js → chunk-W22LQPXL-CxLeSIMq.js} +1 -1
  318. package/storybook-static/assets/{circle-alert-Mymt-6wl.js → circle-alert-l6NwXGUY.js} +1 -1
  319. package/storybook-static/assets/{circle-check-DzqMvzJX.js → circle-check-B-r716dD.js} +1 -1
  320. package/storybook-static/assets/{components-Do91qDh3.js → components-Vmrwp1qC.js} +3 -3
  321. package/storybook-static/assets/{contextMenu-8NKKgKoy.js → contextMenu-Br4n839h.js} +1 -1
  322. package/storybook-static/assets/{download-Cn6H3Bnv.js → download-DqFSGBvN.js} +1 -1
  323. package/storybook-static/assets/{floating-ui.react-BFqa49jG.js → floating-ui.react-B-qFeMZZ.js} +1 -1
  324. package/storybook-static/assets/{formatMultiSelectOptionCount-xGq1uM2H.js → formatMultiSelectOptionCount-BxXwE0wd.js} +1 -1
  325. package/storybook-static/assets/{formatters-DVE1YVNQ-YIdRxgw-.js → formatters-DVE1YVNQ-CJCkXjuI.js} +1 -1
  326. package/storybook-static/assets/{foundationApi-CChPwNx-.js → foundationApi-DxO3oR-c.js} +1 -1
  327. package/storybook-static/assets/{foundationLib-ClEyfTpa.js → foundationLib-CTFFCQvn.js} +1 -1
  328. package/storybook-static/assets/getFlexClasses-BBvI2V8h.css +1 -0
  329. package/storybook-static/assets/getFlexClasses-DOf6NlyJ.js +1 -0
  330. package/storybook-static/assets/{hooks-DUKyfcb_.js → hooks-CAgVZJ-F.js} +1 -1
  331. package/storybook-static/assets/{iframe-1Nw_zWMi.js → iframe-E950Ehp0.js} +4 -4
  332. package/storybook-static/assets/iframe-dKozSQh6.js +1 -0
  333. package/storybook-static/assets/{info-DMI56qGy.js → info-Dp6XZGwP.js} +1 -1
  334. package/storybook-static/assets/{odata-D9M3xPIL.js → odata-DuJbgix6.js} +1 -1
  335. package/storybook-static/assets/{odataStoryFixtures-eHJgW7OK.js → odataStoryFixtures-CDArjyM7.js} +1 -1
  336. package/storybook-static/assets/{react-DidV4ORc.js → react-CGpO0FqR.js} +1 -1
  337. package/storybook-static/assets/{refresh-cw-B1ChlhvT.js → refresh-cw-dMgbnEda.js} +1 -1
  338. package/storybook-static/assets/responsiveLayout-B9XAp69M.js +1 -0
  339. package/storybook-static/assets/{settings-2-BxwqnB9r.js → settings-2-CmW1dpao.js} +1 -1
  340. package/storybook-static/assets/{sortable-DMBM69Jm.js → sortable-D7TAXZBK.js} +1 -1
  341. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-BJZNAUo-.js → syntaxhighlighter-QEQV7K2Y-ok7zY4QK.js} +1 -1
  342. package/storybook-static/assets/{trash-2-B768_PZU.js → trash-2-5v1tbQ2V.js} +1 -1
  343. package/storybook-static/assets/{triangle-alert-B8H-k2Bq.js → triangle-alert-CVLPpc5j.js} +1 -1
  344. package/storybook-static/assets/{useODataSelectBase-BKAZcf4R.js → useODataSelectBase-Bkht6gRs.js} +1 -1
  345. package/storybook-static/assets/{useODataTreeData-Bxlcmpg8.js → useODataTreeData-DTWPuC9Y.js} +1 -1
  346. package/storybook-static/assets/{usePickerDefaultFilter-ien2ZY7g.js → usePickerDefaultFilter-Djn1liy6.js} +1 -1
  347. package/storybook-static/assets/{usePickerQuery-DJj2HmX9.js → usePickerQuery-BmoBHlzm.js} +1 -1
  348. package/storybook-static/assets/{usePickerTriggerController-CiD33ccS.js → usePickerTriggerController-Dvt7LsFZ.js} +1 -1
  349. package/storybook-static/assets/{x-Dt9SO3SL.js → x-DZpfbNy0.js} +1 -1
  350. package/storybook-static/iframe.html +2 -2
  351. package/storybook-static/index.json +1 -1
  352. package/storybook-static/project.json +1 -1
  353. package/dist/chunks/base-table-9H5YuVvB.js.map +0 -1
  354. package/dist/chunks/flex-D86M_h-0.js +0 -222
  355. package/dist/chunks/flex-D86M_h-0.js.map +0 -1
  356. package/dist/chunks/grid-CFuzBigM.js +0 -186
  357. package/dist/chunks/grid-CFuzBigM.js.map +0 -1
  358. package/dist/chunks/table-BRC1OTyE.js +0 -141
  359. package/dist/chunks/table-BRC1OTyE.js.map +0 -1
  360. package/dist/flex/useFlexClasses.d.ts +0 -8
  361. package/dist/flex/useFlexClasses.d.ts.map +0 -1
  362. package/dist/grid/useGridClasses.d.ts +0 -10
  363. package/dist/grid/useGridClasses.d.ts.map +0 -1
  364. package/storybook-static/assets/Flex-DpQpF63N.js +0 -61
  365. package/storybook-static/assets/Flex.stories-DtlKiJno.js +0 -300
  366. package/storybook-static/assets/FlexContainer-C1d63I55.js +0 -1
  367. package/storybook-static/assets/FormattedTableCell-B4RRbSFK.js +0 -15
  368. package/storybook-static/assets/Grid-DsCUaz46.js +0 -61
  369. package/storybook-static/assets/Grid.stories-DAGg0GWi.js +0 -495
  370. package/storybook-static/assets/GridContainer-K9R_IHaw.css +0 -1
  371. package/storybook-static/assets/Table-DcNGLEI6.js +0 -197
  372. package/storybook-static/assets/Table.stories-DbEzudxD.js +0 -178
  373. package/storybook-static/assets/iframe-BgBwFMGW.js +0 -1
  374. package/storybook-static/assets/media-D9cE2tzi.js +0 -1
  375. package/storybook-static/assets/useFlexClasses-IXK2se1Y.css +0 -1
  376. package/storybook-static/assets/useFlexClasses-SgVG37Bb.js +0 -1
@@ -1,50 +1,50 @@
1
- import { r as e } from "./grid-CFuzBigM.js";
2
- import { c as t, d as n, h as r, i } from "./misc-BjdDK6mm.js";
1
+ import { r as e } from "./grid-D6wPRCjx.js";
2
+ import { c as t, d as n, h as r, i } from "./misc-Dcr24uDY.js";
3
3
  import { t as a } from "./table-column-interactions-Do8LFtiv.js";
4
- import { n as o } from "./context-menu-BV8636Ou.js";
4
+ import { n as o } from "./context-menu-BlLesqpZ.js";
5
5
  import { s, t as c } from "./sortable-BujAJgFa.js";
6
6
  import { cn as l, handleKeyboardActivation as u } from "@ryuzaki13/react-foundation-lib/utils";
7
7
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
8
8
  import { useCallback as m, useEffect as h, useMemo as g, useRef as _, useState as v } from "react";
9
- import { compileFormattersPipelineRuntimeFields as ee, resolveValueStateClassName as te } from "@ryuzaki13/react-foundation-lib/formatters";
10
- import { useDndSortableSensors as ne } from "@ryuzaki13/react-foundation-lib/hooks";
11
- import { buildTableColumnLayout as y, getTableColumnFormattingMeta as b, getTableColumnMeta as x, isTableInteractiveElement as S, normalizeTableColumnOrder as C, normalizeTableColumnSizing as w, patchTableColumnWidth as re, removeTableColumnWidth as ie, resolveReorderedTableHeaderColumns as ae, resolveTableColumnOrder as T, resolveTableLength as E } from "@ryuzaki13/react-foundation-lib/table";
12
- import { filterAndDeduplicateIds as D, pickExistingMapValues as O } from "@ryuzaki13/react-foundation-lib/array";
13
- import { flexRender as oe, functionalUpdate as k } from "@tanstack/react-table";
14
- import { restrictToHorizontalAxis as se } from "@dnd-kit/modifiers";
9
+ import { compileFormattersPipelineRuntimeFields as y, resolveValueStateClassName as b } from "@ryuzaki13/react-foundation-lib/formatters";
10
+ import { useDndSortableSensors as ee } from "@ryuzaki13/react-foundation-lib/hooks";
11
+ import { buildTableColumnLayout as x, getTableColumnFormattingMeta as te, getTableColumnMeta as S, isTableInteractiveElement as C, normalizeTableColumnOrder as w, normalizeTableColumnSizing as T, patchTableColumnWidth as ne, removeTableColumnWidth as re, resolveReorderedTableHeaderColumns as ie, resolveTableColumnOrder as E, resolveTableLength as D } from "@ryuzaki13/react-foundation-lib/table";
12
+ import { filterAndDeduplicateIds as O, pickExistingMapValues as ae } from "@ryuzaki13/react-foundation-lib/array";
13
+ import { flexRender as k, functionalUpdate as A } from "@tanstack/react-table";
14
+ import { restrictToHorizontalAxis as oe, restrictToVerticalAxis as se } from "@dnd-kit/modifiers";
15
15
  //#region src/base-table/lib/columnPinning.ts
16
- function A(e) {
16
+ function j(e) {
17
17
  return {
18
18
  start: Array.from(new Set((e?.start ?? []).filter((e) => typeof e == "string" && e.trim().length > 0))),
19
19
  end: []
20
20
  };
21
21
  }
22
- function j(e, t) {
22
+ function M(e, t) {
23
23
  let n = t?.[e.id];
24
24
  if (typeof n == "number" && Number.isFinite(n) && n > 0) return `${Math.floor(n)}px`;
25
- let r = x(e.columnDef)?.width ?? 4;
26
- return typeof r == "number" && (r = Math.max(r, 4)), E(r);
25
+ let r = S(e.columnDef)?.width ?? 4;
26
+ return typeof r == "number" && (r = Math.max(r, 4)), D(r);
27
27
  }
28
- function M(e, t) {
29
- let n = e.getAllLeafColumns().filter((e) => e.getIsVisible()), r = new Map(n.map((e) => [e.id, e])), i = n.map((e) => e.id), a = D(t.columnPinning.start, i), o = D(t.columnPinning.end, i), s = /* @__PURE__ */ new Set([...a, ...o]), c = [];
28
+ function N(e, t) {
29
+ let n = e.getAllLeafColumns().filter((e) => e.getIsVisible()), r = new Map(n.map((e) => [e.id, e])), i = n.map((e) => e.id), a = O(t.columnPinning.start, i), o = O(t.columnPinning.end, i), s = /* @__PURE__ */ new Set([...a, ...o]), c = [];
30
30
  for (let e of n) s.has(e.id) || c.push(e.id);
31
- let l = T({
31
+ let l = E({
32
32
  ids: c,
33
33
  order: t.columnOrder
34
34
  });
35
- return O([
35
+ return ae([
36
36
  ...a,
37
37
  ...l,
38
38
  ...o
39
39
  ], r);
40
40
  }
41
- function N(e, t) {
42
- let n = M(e, t), r = new Map(n.map((e) => [e.id, e]));
43
- return y({
41
+ function ce(e, t) {
42
+ let n = N(e, t), r = new Map(n.map((e) => [e.id, e]));
43
+ return x({
44
44
  ids: n.map((e) => e.id),
45
45
  getWidth: (e) => {
46
46
  let n = r.get(e);
47
- return n ? j(n, t.columnSizing) : "0px";
47
+ return n ? M(n, t.columnSizing) : "0px";
48
48
  }
49
49
  }).flatMap((e) => {
50
50
  let t = r.get(e.id);
@@ -54,9 +54,9 @@ function N(e, t) {
54
54
  }] : [];
55
55
  });
56
56
  }
57
- function ce(e, t) {
57
+ function le(e, t) {
58
58
  let n = {}, r = [];
59
- for (let i of M(e, t)) i.getIsPinned() === "start" && (n[i.id] = P(r), r.push(j(i, t.columnSizing)));
59
+ for (let i of N(e, t)) i.getIsPinned() === "start" && (n[i.id] = P(r), r.push(M(i, t.columnSizing)));
60
60
  return n;
61
61
  }
62
62
  function P(e) {
@@ -86,7 +86,7 @@ function R(e) {
86
86
  let r = F(e);
87
87
  if (!r) return;
88
88
  I(e) && n.add(r);
89
- let i = b(e);
89
+ let i = te(e);
90
90
  i && (t[r] = {
91
91
  ...i,
92
92
  id: i.id ?? r,
@@ -94,7 +94,7 @@ function R(e) {
94
94
  type: i.type ?? "string"
95
95
  });
96
96
  }), {
97
- runtimeByColumnId: ee(t),
97
+ runtimeByColumnId: y(t),
98
98
  customCellColumnIds: n
99
99
  };
100
100
  }
@@ -114,7 +114,7 @@ function V(e, t) {
114
114
  }));
115
115
  }
116
116
  function H({ rows: e, columns: t, resolveRowBoundaryKey: n = () => "__all_rows__", excludeColumnIds: r }) {
117
- let i = t.filter((e) => !r?.has(e.id) && x(e.columnDef)?.mergeDuplicates === !0);
117
+ let i = t.filter((e) => !r?.has(e.id) && S(e.columnDef)?.mergeDuplicates === !0);
118
118
  if (e.length === 0 || i.length === 0) return /* @__PURE__ */ new Map();
119
119
  let a = V(e, n), o = /* @__PURE__ */ new Map();
120
120
  for (let e of i) {
@@ -153,7 +153,7 @@ function H({ rows: e, columns: t, resolveRowBoundaryKey: n = () => "__all_rows__
153
153
  //#endregion
154
154
  //#region src/base-table/model/useTableColumnOrder.ts
155
155
  function U({ columnOrder: e, defaultColumnOrder: t, onColumnOrderChange: n }) {
156
- let [r, i] = v(void 0), a = g(() => C(e ?? r ?? t), [
156
+ let [r, i] = v(void 0), a = g(() => w(e ?? r ?? t), [
157
157
  e,
158
158
  t,
159
159
  r
@@ -161,7 +161,7 @@ function U({ columnOrder: e, defaultColumnOrder: t, onColumnOrderChange: n }) {
161
161
  return {
162
162
  columnOrder: a,
163
163
  onColumnOrderChange: m((t) => {
164
- let r = C(k(t, a));
164
+ let r = w(A(t, a));
165
165
  e === void 0 && i(r), n?.(r);
166
166
  }, [
167
167
  e,
@@ -173,7 +173,7 @@ function U({ columnOrder: e, defaultColumnOrder: t, onColumnOrderChange: n }) {
173
173
  //#endregion
174
174
  //#region src/base-table/model/useTableColumnPinning.ts
175
175
  function W({ columnPinning: e, defaultColumnPinning: t, onColumnPinningChange: n }) {
176
- let [r, i] = v(void 0), a = g(() => A(e ?? r ?? t), [
176
+ let [r, i] = v(void 0), a = g(() => j(e ?? r ?? t), [
177
177
  e,
178
178
  t,
179
179
  r
@@ -181,7 +181,7 @@ function W({ columnPinning: e, defaultColumnPinning: t, onColumnPinningChange: n
181
181
  return {
182
182
  columnPinning: a,
183
183
  onColumnPinningChange: m((t) => {
184
- let r = { start: A(k(t, a)).start };
184
+ let r = { start: j(A(t, a)).start };
185
185
  e === void 0 && i(r), n?.(r);
186
186
  }, [
187
187
  e,
@@ -193,7 +193,7 @@ function W({ columnPinning: e, defaultColumnPinning: t, onColumnPinningChange: n
193
193
  //#endregion
194
194
  //#region src/base-table/model/useTableColumnSizing.ts
195
195
  function G({ columnSizing: e, defaultColumnSizing: t, columnResizeMinWidth: n, onColumnSizingChange: r }) {
196
- let [i, a] = v(void 0), o = g(() => w(e ?? i ?? t, n), [
196
+ let [i, a] = v(void 0), o = g(() => T(e ?? i ?? t, n), [
197
197
  n,
198
198
  e,
199
199
  t,
@@ -202,7 +202,7 @@ function G({ columnSizing: e, defaultColumnSizing: t, columnResizeMinWidth: n, o
202
202
  return {
203
203
  columnSizing: o,
204
204
  onColumnSizingChange: m((t) => {
205
- let i = w(k(t, o), n);
205
+ let i = T(A(t, o), n);
206
206
  e === void 0 && a(i), r?.(i);
207
207
  }, [
208
208
  n,
@@ -223,7 +223,7 @@ function K({ columnVisibility: e, defaultColumnVisibility: t, onColumnVisibility
223
223
  return {
224
224
  columnVisibility: a,
225
225
  onColumnVisibilityChange: m((t) => {
226
- let r = k(t, a);
226
+ let r = A(t, a);
227
227
  e === void 0 && i(r), n?.(r);
228
228
  }, [
229
229
  e,
@@ -284,7 +284,7 @@ function Y(e, t) {
284
284
  let n = e.getLeafHeaders().map((e) => t.get(e.column.id)).filter((e) => typeof e == "number");
285
285
  return n.length ? Math.min(...n) : 2 ** 53 - 1;
286
286
  }
287
- function le(e, t) {
287
+ function ue(e, t) {
288
288
  let n = e.getStartHeaderGroups(), r = e.getCenterHeaderGroups(), i = e.getEndHeaderGroups(), a = Math.max(n.length, r.length, i.length);
289
289
  return Array.from({ length: a }, (e, a) => [
290
290
  ...n[a]?.headers ?? [],
@@ -292,7 +292,7 @@ function le(e, t) {
292
292
  ...i[a]?.headers ?? []
293
293
  ].filter((e) => e.isPlaceholder ? !0 : e.getLeafHeaders().some((e) => t.has(e.column.id))).sort((e, n) => Y(e, t) - Y(n, t)));
294
294
  }
295
- function ue(e, t, n) {
295
+ function de(e, t, n) {
296
296
  let r = e.getLeafHeaders().map((e) => e.column.id);
297
297
  return r.length > 0 && r.every((e) => e in t) ? {
298
298
  isPinnedStart: !0,
@@ -303,80 +303,118 @@ function ue(e, t, n) {
303
303
  isPinnedBoundary: !1
304
304
  };
305
305
  }
306
- function de(e, t) {
306
+ function fe(e, t) {
307
307
  let n = e.getAllLeafColumns().map((e) => e.id);
308
- return T({
308
+ return E({
309
309
  ids: n,
310
310
  order: t.columnOrder
311
311
  });
312
312
  }
313
- function X({ table: i, columnState: a, title: h, isLoading: _, isFetching: v, className: ee, minHeight: te = "15em", tableClassName: y, selectionMode: b = "none", scrollableRef: C, interactiveElementSelector: w, onActivateRow: T, isRowInteractive: E, getRowClassName: D, getCellClassName: O, getCellStyle: k, getCellLayout: A, renderCellContent: j, renderHeaderContextMenu: M, enableColumnResizing: P = !1, enableColumnReordering: F = !1, columnResizeMinWidth: I, afterTableContent: L }) {
314
- let R = N(i, a), z = g(() => R.map((e) => e.column), [R]), B = g(() => R.map((e) => e.id), [R]), V = g(() => new Map(B.map((e, t) => [e, t])), [B]), H = g(() => new Set(B), [B]), U = ne({ activationDistance: 8 }), W = le(i, V), G = ce(i, a), K = z.filter((e) => e.getIsPinned() === "start").at(-1)?.id, Y = g(() => a.columnPinning.start ?? [], [a.columnPinning.start]), X = g(() => new Set(Y), [Y]), Z = i.getRowModel(), Q = !!h, $ = Z.rows.length > 0, fe = m((e) => [...e].sort((e, t) => (V.get(e.column.id) ?? 2 ** 53 - 1) - (V.get(t.column.id) ?? 2 ** 53 - 1)), [V]), pe = m((e, t) => {
315
- i.setColumnSizing((n) => re(n, e, t, I));
316
- }, [I, i]), me = m((e) => {
317
- i.setColumnSizing((t) => ie(t, e));
318
- }, [i]), he = m((e) => {
313
+ function X({ table: i, columnState: a, title: h, isLoading: _, isFetching: v, className: y, minHeight: b = "15em", tableClassName: x, selectionMode: te = "none", scrollableRef: w, interactiveElementSelector: T, onActivateRow: E, isRowInteractive: D, getRowClassName: O, getCellClassName: ae, getCellStyle: A, getCellLayout: j, renderCellContent: M, renderHeaderContextMenu: N, enableColumnResizing: P = !1, enableColumnReordering: F = !1, rowReordering: I, columnResizeMinWidth: L, afterTableContent: R }) {
314
+ let z = ce(i, a), B = g(() => z.map((e) => e.column), [z]), V = g(() => z.map((e) => e.id), [z]), H = g(() => new Map(V.map((e, t) => [e, t])), [V]), U = g(() => new Set(V), [V]), W = ee({ activationDistance: 8 }), G = ue(i, H), K = le(i, a), Y = B.filter((e) => e.getIsPinned() === "start").at(-1)?.id, X = g(() => a.columnPinning.start ?? [], [a.columnPinning.start]), Z = g(() => new Set(X), [X]), Q = i.getRowModel(), pe = g(() => Q.rows.map((e) => e.id), [Q.rows]), me = !!h, $ = Q.rows.length > 0, he = m((e) => [...e].sort((e, t) => (H.get(e.column.id) ?? 2 ** 53 - 1) - (H.get(t.column.id) ?? 2 ** 53 - 1)), [H]), ge = m((e, t) => {
315
+ i.setColumnSizing((n) => ne(n, e, t, L));
316
+ }, [L, i]), _e = m((e) => {
317
+ i.setColumnSizing((t) => re(t, e));
318
+ }, [i]), ve = m((e) => {
319
319
  let t = s({
320
320
  event: e,
321
- items: B
321
+ items: V
322
322
  });
323
323
  if (!t) return;
324
- let n = de(i, a), r = ae({
324
+ let n = fe(i, a), r = ie({
325
325
  order: n,
326
- headerIds: B,
327
- pinnedIds: Y,
326
+ headerIds: V,
327
+ pinnedIds: X,
328
328
  activeId: String(t.activeId),
329
329
  overId: String(t.overId)
330
330
  });
331
331
  r && i.setColumnOrder(r);
332
332
  }, [
333
333
  a,
334
- Y,
334
+ X,
335
335
  i,
336
- B
337
- ]), ge = (e) => {
336
+ V
337
+ ]), ye = (e) => {
338
338
  if (e.isPlaceholder) return null;
339
- let t = oe(e.column.columnDef.header, e.getContext()), n = M?.(e);
339
+ let t = k(e.column.columnDef.header, e.getContext()), n = N?.(e);
340
340
  return n ? /* @__PURE__ */ p(o, { children: [/* @__PURE__ */ f(o.Trigger, { children: /* @__PURE__ */ f("div", {
341
341
  className: q.headerContextMenuTrigger,
342
342
  tabIndex: 0,
343
343
  children: t
344
344
  }) }), /* @__PURE__ */ f(o.Content, { children: n })] }) : t;
345
- }, _e = (e, t) => {
346
- !(E?.(t) ?? !!T) || !T || S(e.target, w) || T(t);
347
- }, ve = (e, t) => {
348
- !(E?.(t) ?? !!T) || !T || S(e.target, w) || u(e, () => T(t));
345
+ }, be = (e, t) => {
346
+ !(D?.(t) ?? !!E) || !E || C(e.target, T) || E(t);
347
+ }, xe = (e, t) => {
348
+ !(D?.(t) ?? !!E) || !E || C(e.target, T) || u(e, () => E(t));
349
+ }, Se = (e) => {
350
+ let t = D?.(e) ?? !!E, n = he([
351
+ ...e.getStartVisibleCells(),
352
+ ...e.getCenterVisibleCells(),
353
+ ...e.getEndVisibleCells()
354
+ ]).map((t) => {
355
+ let n = S(t.column.columnDef), r = k(t.column.columnDef.cell, t.getContext()), i = {
356
+ row: e,
357
+ cell: t,
358
+ defaultContent: r,
359
+ columnMeta: n
360
+ }, a = j?.(i), o = t.column.getIsPinned() === "start", s = t.column.id === Y, c = {
361
+ ...n?.align ? { textAlign: n.align } : {},
362
+ ...o ? { insetInlineStart: K[t.column.id] ?? "0px" } : {},
363
+ ...A?.(i) ?? {}
364
+ };
365
+ return /* @__PURE__ */ f("td", {
366
+ className: l(q.bodyCell, o && q.bodyCellPinnedStart, s && q.pinnedStartBoundary, a?.mergeWithNext && q.bodyCellMergedWithNext, ae?.(i)),
367
+ style: c,
368
+ children: a?.hideContent ? null : M ? M(i) : r
369
+ }, t.id);
370
+ }), r = {
371
+ className: l(q.bodyRow, t && q.bodyRowInteractive, e.getIsSelected() && q.bodyRowSelected, O?.(e)),
372
+ "aria-selected": te === "none" ? void 0 : e.getIsSelected(),
373
+ tabIndex: t ? 0 : void 0,
374
+ onClick: (t) => be(t, e),
375
+ onKeyDown: (t) => xe(t, e)
376
+ };
377
+ return I ? /* @__PURE__ */ f(c.Item, {
378
+ as: "tr",
379
+ id: e.id,
380
+ disabled: I.disabled,
381
+ ...r,
382
+ children: n
383
+ }, e.id) : /* @__PURE__ */ f("tr", {
384
+ ...r,
385
+ children: n
386
+ }, e.id);
349
387
  };
350
388
  return /* @__PURE__ */ p(e, {
351
- templateRows: Q ? "auto 1fr" : "1fr",
352
- className: l("overflowHidden w100 h100", q.root, ee),
353
- style: { minHeight: te },
354
- children: [Q && /* @__PURE__ */ f("h3", {
389
+ templateRows: me ? "auto 1fr" : "1fr",
390
+ className: l("overflowHidden w100 h100", q.root, y),
391
+ style: { minHeight: b },
392
+ children: [me && /* @__PURE__ */ f("h3", {
355
393
  className: "marginBottomXs",
356
394
  children: h
357
395
  }), /* @__PURE__ */ p("div", {
358
396
  className: "surface0 overflowHidden relative w100 h100",
359
397
  children: [/* @__PURE__ */ f(t, {
360
- ref: C,
398
+ ref: w,
361
399
  className: "w100 h100",
362
400
  children: /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ p("table", {
363
- className: l(q.table, y),
401
+ className: l(q.table, x),
364
402
  children: [
365
- /* @__PURE__ */ f("colgroup", { children: R.map((e) => /* @__PURE__ */ f("col", { style: e.width ? { width: e.width } : void 0 }, e.id)) }),
403
+ /* @__PURE__ */ f("colgroup", { children: z.map((e) => /* @__PURE__ */ f("col", { style: e.width ? { width: e.width } : void 0 }, e.id)) }),
366
404
  /* @__PURE__ */ f("thead", {
367
405
  className: l("stickyTop", q.head),
368
406
  children: F ? /* @__PURE__ */ f(c.Root, {
369
- sensors: U,
370
- modifiers: [se],
371
- onDragEnd: he,
407
+ sensors: W,
408
+ modifiers: [oe],
409
+ onDragEnd: ve,
372
410
  children: /* @__PURE__ */ f(c.Container, {
373
411
  containerId: "base-table-header",
374
- items: B,
412
+ items: V,
375
413
  layout: "horizontal",
376
- children: W.map((e, t) => /* @__PURE__ */ f("tr", {
414
+ children: G.map((e, t) => /* @__PURE__ */ f("tr", {
377
415
  className: q.headerRow,
378
416
  children: e.map((e) => {
379
- let { isPinnedStart: t, insetInlineStart: n, isPinnedBoundary: r } = ue(e, G, K), i = e.isPlaceholder || !H.has(e.column.id) || X.has(e.column.id);
417
+ let { isPinnedStart: t, insetInlineStart: n, isPinnedBoundary: r } = de(e, K, Y), i = e.isPlaceholder || !U.has(e.column.id) || Z.has(e.column.id);
380
418
  return /* @__PURE__ */ f(J, {
381
419
  header: e,
382
420
  isPinnedStart: t,
@@ -385,18 +423,18 @@ function X({ table: i, columnState: a, title: h, isLoading: _, isFetching: v, cl
385
423
  isDragDisabled: i,
386
424
  enableColumnResizing: P,
387
425
  enableColumnReordering: F,
388
- columnResizeMinWidth: I,
389
- renderHeaderContent: ge,
390
- onResizeColumn: pe,
391
- onResetColumnWidth: me
426
+ columnResizeMinWidth: L,
427
+ renderHeaderContent: ye,
428
+ onResizeColumn: ge,
429
+ onResetColumnWidth: _e
392
430
  }, e.id);
393
431
  })
394
432
  }, `header-group-${t}`))
395
433
  })
396
- }) : W.map((e, t) => /* @__PURE__ */ f("tr", {
434
+ }) : G.map((e, t) => /* @__PURE__ */ f("tr", {
397
435
  className: q.headerRow,
398
436
  children: e.map((e) => {
399
- let { isPinnedStart: t, insetInlineStart: n, isPinnedBoundary: r } = ue(e, G, K);
437
+ let { isPinnedStart: t, insetInlineStart: n, isPinnedBoundary: r } = de(e, K, Y);
400
438
  return /* @__PURE__ */ f(J, {
401
439
  header: e,
402
440
  isPinnedStart: t,
@@ -405,54 +443,34 @@ function X({ table: i, columnState: a, title: h, isLoading: _, isFetching: v, cl
405
443
  isDragDisabled: !0,
406
444
  enableColumnResizing: P,
407
445
  enableColumnReordering: F,
408
- columnResizeMinWidth: I,
409
- renderHeaderContent: ge,
410
- onResizeColumn: pe,
411
- onResetColumnWidth: me
446
+ columnResizeMinWidth: L,
447
+ renderHeaderContent: ye,
448
+ onResizeColumn: ge,
449
+ onResetColumnWidth: _e
412
450
  }, e.id);
413
451
  })
414
452
  }, `header-group-${t}`))
415
453
  }),
416
- /* @__PURE__ */ p("tbody", { children: [Z.rows.map((e) => {
417
- let t = E?.(e) ?? !!T;
418
- return /* @__PURE__ */ f("tr", {
419
- className: l(q.bodyRow, t && q.bodyRowInteractive, e.getIsSelected() && q.bodyRowSelected, D?.(e)),
420
- "aria-selected": b === "none" ? void 0 : e.getIsSelected(),
421
- tabIndex: t ? 0 : void 0,
422
- onClick: (t) => _e(t, e),
423
- onKeyDown: (t) => ve(t, e),
424
- children: fe([
425
- ...e.getStartVisibleCells(),
426
- ...e.getCenterVisibleCells(),
427
- ...e.getEndVisibleCells()
428
- ]).map((t) => {
429
- let n = x(t.column.columnDef), r = oe(t.column.columnDef.cell, t.getContext()), i = {
430
- row: e,
431
- cell: t,
432
- defaultContent: r,
433
- columnMeta: n
434
- }, a = A?.(i), o = t.column.getIsPinned() === "start", s = t.column.id === K, c = {
435
- ...n?.align ? { textAlign: n.align } : {},
436
- ...o ? { insetInlineStart: G[t.column.id] ?? "0px" } : {},
437
- ...k?.(i) ?? {}
438
- };
439
- return /* @__PURE__ */ f("td", {
440
- className: l(q.bodyCell, o && q.bodyCellPinnedStart, s && q.pinnedStartBoundary, a?.mergeWithNext && q.bodyCellMergedWithNext, O?.(i)),
441
- style: c,
442
- children: a?.hideContent ? null : j ? j(i) : r
443
- }, t.id);
444
- })
445
- }, e.id);
446
- }), v && $ && /* @__PURE__ */ f("tr", {
454
+ /* @__PURE__ */ p("tbody", { children: [I ? /* @__PURE__ */ f(c.Root, {
455
+ sensors: W,
456
+ modifiers: [se],
457
+ onDragEnd: I.onDragEnd,
458
+ children: /* @__PURE__ */ f(c.Container, {
459
+ containerId: I.containerId ?? "base-table-body",
460
+ items: pe,
461
+ layout: "vertical",
462
+ children: Q.rows.map(Se)
463
+ })
464
+ }) : Q.rows.map(Se), v && $ && /* @__PURE__ */ f("tr", {
447
465
  className: q.fetchingRow,
448
466
  children: /* @__PURE__ */ f("td", {
449
- colSpan: Math.max(z.length, 1),
467
+ colSpan: Math.max(B.length, 1),
450
468
  className: q.feedbackCell,
451
469
  children: /* @__PURE__ */ f(r, {})
452
470
  })
453
471
  })] })
454
472
  ]
455
- }), L] })
473
+ }), R] })
456
474
  }), /* @__PURE__ */ p("div", {
457
475
  className: "absolute inset0 border",
458
476
  style: {
@@ -472,7 +490,7 @@ var Z = {
472
490
  //#endregion
473
491
  //#region src/base-table/ui/FormattedTableCell.tsx
474
492
  function Q({ displayValue: e, align: t = "left" }) {
475
- let n = _(null), r = e.showValue, a = e.showIcon ? e.icon : void 0, o = r && e.value != null ? String(e.value) : "", s = te(e.state), c = t === "right" ? "flex-end" : t === "center" ? "center" : "flex-start", u = t === "center" ? "center" : t === "right" ? "right" : "left";
493
+ let n = _(null), r = e.showValue, a = e.showIcon ? e.icon : void 0, o = r && e.value != null ? String(e.value) : "", s = b(e.state), c = t === "right" ? "flex-end" : t === "center" ? "center" : "flex-start", u = t === "center" ? "center" : t === "right" ? "right" : "left";
476
494
  return h(() => {
477
495
  let t = n.current;
478
496
  if (!t) return;
@@ -511,6 +529,6 @@ function Q({ displayValue: e, align: t = "left" }) {
511
529
  });
512
530
  }
513
531
  //#endregion
514
- export { W as a, R as c, z as d, N as f, j as g, A as h, G as i, I as l, ce as m, X as n, U as o, M as p, K as r, H as s, Q as t, F as u };
532
+ export { W as a, R as c, z as d, ce as f, M as g, j as h, G as i, I as l, le as m, X as n, U as o, N as p, K as r, H as s, Q as t, F as u };
515
533
 
516
- //# sourceMappingURL=base-table-9H5YuVvB.js.map
534
+ //# sourceMappingURL=base-table-CoVXG2FT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-table-CoVXG2FT.js","names":[],"sources":["../../src/base-table/lib/columnPinning.ts","../../src/base-table/lib/formatting.ts","../../src/base-table/lib/mergeDuplicates.ts","../../src/base-table/model/useTableColumnOrder.ts","../../src/base-table/model/useTableColumnPinning.ts","../../src/base-table/model/useTableColumnSizing.ts","../../src/base-table/model/useTableColumnVisibility.ts","../../src/base-table/ui/BaseTable.module.scss","../../src/base-table/ui/BaseTableHeaderCell.tsx","../../src/base-table/ui/BaseTable.tsx","../../src/base-table/ui/FormattedTableCell.module.scss","../../src/base-table/ui/FormattedTableCell.tsx"],"sourcesContent":["import { filterAndDeduplicateIds, pickExistingMapValues } from \"@ryuzaki13/react-foundation-lib/array\";\nimport {\n\tbuildTableColumnLayout,\n\ttype FoundationTableColumn,\n\ttype FoundationTableInstance,\n\ttype FoundationTableState,\n\tgetTableColumnMeta,\n\tresolveTableColumnOrder,\n\tresolveTableLength\n} from \"@ryuzaki13/react-foundation-lib/table\";\n\nimport type { ColumnPinningState } from \"@tanstack/react-table\";\n\nexport type BaseTableColumnLayoutItem<TData extends object> = {\n\tid: string;\n\tcolumn: FoundationTableColumn<TData>;\n\twidth: string;\n};\n\n/**\n * Реактивный срез состояния колонок, от которого зависит физический layout BaseTable.\n *\n * TanStack table instance остаётся стабильным объектом, поэтому BaseTable получает\n * этот срез отдельным prop: React Compiler не должен кэшировать разметку колонок\n * поверх изменившихся order/sizing/pinning/visibility.\n */\nexport type BaseTableColumnState = Pick<FoundationTableState, \"columnOrder\" | \"columnPinning\" | \"columnSizing\" | \"columnVisibility\">;\n\n/**\n * Публичное состояние закрепления колонок для shared-таблиц.\n *\n * Поддерживается только логическая начальная сторона: слева в LTR и справа в RTL.\n */\nexport interface TableColumnPinningState {\n\t/**\n\t * Идентификаторы колонок, закреплённых с начальной стороны, в порядке отображения.\n\t */\n\tstart?: string[];\n}\n\n/**\n * Нормализует публичное состояние закрепления к формату TanStack Table.\n *\n * Конечная зона принудительно очищается, чтобы не открывать неподдерживаемый API.\n */\nexport function normalizeTableColumnPinning(state?: TableColumnPinningState): ColumnPinningState {\n\treturn {\n\t\tstart: Array.from(\n\t\t\tnew Set(\n\t\t\t\t(state?.start ?? []).filter((columnId): columnId is string => typeof columnId === \"string\" && columnId.trim().length > 0)\n\t\t\t)\n\t\t),\n\t\tend: []\n\t};\n}\n\n/**\n * Возвращает ширину колонки в том же формате, что и colgroup базовой таблицы.\n */\nexport function resolveBaseTableColumnWidth<TData extends object>(\n\tcolumn: FoundationTableColumn<TData>,\n\tcolumnSizing?: Readonly<Record<string, number>>\n): string {\n\tconst resizedWidth = columnSizing?.[column.id];\n\tif (typeof resizedWidth === \"number\" && Number.isFinite(resizedWidth) && resizedWidth > 0) {\n\t\treturn `${Math.floor(resizedWidth)}px`;\n\t}\n\n\tconst meta = getTableColumnMeta(column.columnDef);\n\n\tlet width = meta?.width ?? 4;\n\n\tif (typeof width === \"number\") {\n\t\twidth = Math.max(width, 4);\n\t}\n\n\treturn resolveTableLength(width);\n}\n\n/**\n * Собирает видимые leaf-колонки в фактическом порядке рендера: pinned-start -> center -> pinned-end.\n *\n * В отличие от отдельных TanStack getters, порядок явно строится из одного\n * источника `columnOrder`, поэтому `<colgroup>`, header и body получают один\n * и тот же layout после drag&drop.\n */\nexport function getOrderedVisibleLeafColumns<TData extends object>(\n\ttable: FoundationTableInstance<TData>,\n\tcolumnState: BaseTableColumnState\n): FoundationTableColumn<TData>[] {\n\tconst visibleColumns = table.getAllLeafColumns().filter((column) => column.getIsVisible());\n\tconst columnById = new Map(visibleColumns.map((column) => [column.id, column]));\n\tconst visibleColumnIds = visibleColumns.map((column) => column.id);\n\tconst startIds = filterAndDeduplicateIds(columnState.columnPinning.start, visibleColumnIds);\n\tconst endIds = filterAndDeduplicateIds(columnState.columnPinning.end, visibleColumnIds);\n\tconst pinnedIds = new Set([...startIds, ...endIds]);\n\tconst centerIds: string[] = [];\n\n\tfor (const column of visibleColumns) {\n\t\tif (!pinnedIds.has(column.id)) {\n\t\t\tcenterIds.push(column.id);\n\t\t}\n\t}\n\n\tconst orderedCenterIds = resolveTableColumnOrder({\n\t\tids: centerIds,\n\t\torder: columnState.columnOrder\n\t});\n\n\treturn pickExistingMapValues([...startIds, ...orderedCenterIds, ...endIds], columnById);\n}\n\nexport function buildBaseTableColumnLayout<TData extends object>(\n\ttable: FoundationTableInstance<TData>,\n\tcolumnState: BaseTableColumnState\n): BaseTableColumnLayoutItem<TData>[] {\n\tconst columns = getOrderedVisibleLeafColumns(table, columnState);\n\tconst columnById = new Map(columns.map((column) => [column.id, column]));\n\n\treturn buildTableColumnLayout({\n\t\tids: columns.map((column) => column.id),\n\t\tgetWidth: (id) => {\n\t\t\tconst column = columnById.get(id);\n\t\t\treturn column ? resolveBaseTableColumnWidth(column, columnState.columnSizing) : \"0px\";\n\t\t}\n\t}).flatMap((item) => {\n\t\tconst column = columnById.get(item.id);\n\n\t\treturn column\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tcolumn\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t: [];\n\t});\n}\n\n/**\n * Вычисляет sticky-offset для колонок, закреплённых с логической начальной стороны.\n *\n * Значения возвращаются как CSS-length, чтобы корректно суммировать `em`, `px` и `calc(...)`.\n */\nexport function getStartPinnedColumnOffsets<TData extends object>(\n\ttable: FoundationTableInstance<TData>,\n\tcolumnState: BaseTableColumnState\n): Readonly<Record<string, string>> {\n\tconst offsets: Record<string, string> = {};\n\tconst accumulatedWidths: string[] = [];\n\n\tfor (const column of getOrderedVisibleLeafColumns(table, columnState)) {\n\t\tif (column.getIsPinned() !== \"start\") continue;\n\n\t\toffsets[column.id] = combineCssLengths(accumulatedWidths);\n\t\taccumulatedWidths.push(resolveBaseTableColumnWidth(column, columnState.columnSizing));\n\t}\n\n\treturn offsets;\n}\n\n/**\n * Складывает CSS-length значения в безопасную строку `calc(...)`.\n */\nfunction combineCssLengths(lengths: readonly string[]): string {\n\tif (lengths.length === 0) {\n\t\treturn \"0px\";\n\t}\n\n\tif (lengths.length === 1) {\n\t\treturn lengths[0]!;\n\t}\n\n\treturn `calc(${lengths.join(\" + \")})`;\n}\n","import {\n\tcompileFormattersPipelineRuntimeFields,\n\ttype FormattersPipelineRuntimeField,\n\ttype FormattersPipelineRuntimeFields\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { getTableColumnFormattingMeta, type TableColumnDef } from \"@ryuzaki13/react-foundation-lib/table\";\n\n/**\n * Снимок форматирующих данных, вычисленный из набора колонок.\n *\n * Используется и в `Table`, и в `TreeTable`, чтобы не дублировать\n * предкомпиляцию runtime и правила приоритета кастомного `cell`.\n */\nexport interface TableFormattingSnapshot {\n\t/**\n\t * Скомпилированный runtime по идентификаторам колонок.\n\t */\n\truntimeByColumnId: FormattersPipelineRuntimeFields<FormattersPipelineRuntimeField>;\n\t/**\n\t * Идентификаторы колонок с явным кастомным `cell`.\n\t */\n\tcustomCellColumnIds: Set<string>;\n}\n\n/**\n * Определяет стабильный идентификатор колонки для pipeline runtime.\n *\n * Порядок приоритета:\n * 1. `column.id`\n * 2. строковый `accessorKey`\n */\nexport function resolveTableFormattingColumnId<TData extends object>(column: TableColumnDef<TData>): string | undefined {\n\tif (typeof column.id === \"string\" && column.id.trim()) {\n\t\treturn column.id;\n\t}\n\n\tif (\"accessorKey\" in column && typeof column.accessorKey === \"string\" && column.accessorKey.trim()) {\n\t\treturn column.accessorKey;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Проверяет, задан ли у колонки явный кастомный `cell`.\n */\nexport function hasTableColumnCustomCellRenderer<TData extends object>(column: TableColumnDef<TData>): boolean {\n\treturn \"cell\" in column && column.cell != null;\n}\n\n/**\n * Обходит только leaf-колонки, пропуская group-узлы.\n */\nfunction visitLeafTableColumns<TData extends object>(\n\tcolumns: readonly TableColumnDef<TData>[],\n\tvisitor: (column: TableColumnDef<TData>) => void\n): void {\n\tfor (const column of columns) {\n\t\tif (\"columns\" in column && Array.isArray(column.columns) && column.columns.length > 0) {\n\t\t\tvisitLeafTableColumns(column.columns as TableColumnDef<TData>[], visitor);\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisitor(column);\n\t}\n}\n\n/**\n * Собирает snapshot pipeline runtime по описанию колонок.\n */\nexport function buildTableFormattingSnapshot<TData extends object>(columns: readonly TableColumnDef<TData>[]): TableFormattingSnapshot {\n\tconst formattingByColumnId: Record<string, FormattersPipelineRuntimeField> = {};\n\tconst customCellColumnIds = new Set<string>();\n\n\tvisitLeafTableColumns(columns, (column) => {\n\t\tconst columnId = resolveTableFormattingColumnId(column);\n\t\tif (!columnId) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (hasTableColumnCustomCellRenderer(column)) {\n\t\t\tcustomCellColumnIds.add(columnId);\n\t\t}\n\n\t\tconst formatting = getTableColumnFormattingMeta(column);\n\t\tif (!formatting) {\n\t\t\treturn;\n\t\t}\n\n\t\tformattingByColumnId[columnId] = {\n\t\t\t...formatting,\n\t\t\tid: formatting.id ?? columnId,\n\t\t\trole: formatting.role ?? \"dimension\",\n\t\t\ttype: formatting.type ?? \"string\"\n\t\t};\n\t});\n\n\treturn {\n\t\truntimeByColumnId: compileFormattersPipelineRuntimeFields(formattingByColumnId),\n\t\tcustomCellColumnIds\n\t};\n}\n\n/**\n * Определяет, должен ли компонент использовать pipeline runtime для ячейки.\n */\nexport function shouldUseTableFormatting(args: {\n\tcolumnId: string;\n\truntimeByColumnId: FormattersPipelineRuntimeFields<FormattersPipelineRuntimeField>;\n\tcustomCellColumnIds: ReadonlySet<string>;\n}): boolean {\n\tif (args.customCellColumnIds.has(args.columnId)) {\n\t\treturn false;\n\t}\n\n\treturn Boolean(args.runtimeByColumnId[args.columnId]);\n}\n","import {\n\ttype FoundationTableCell,\n\ttype FoundationTableColumn,\n\ttype FoundationTableRow,\n\tgetTableColumnMeta\n} from \"@ryuzaki13/react-foundation-lib/table\";\n\n/**\n * Layout-настройка body-ячейки базовой таблицы.\n */\nexport interface BaseTableCellLayout {\n\thideContent?: boolean;\n\tmergeWithNext?: boolean;\n}\n\n/**\n * Результат расчёта layout для body-ячейки по её `cell.id`.\n */\nexport type BaseTableCellLayoutById = ReadonlyMap<string, BaseTableCellLayout>;\n\n/**\n * Аргументы построения layout для display-only слияния дубликатов.\n */\nexport interface BuildBaseTableMergedCellsLayoutArgs<TData extends object> {\n\trows: readonly FoundationTableRow<TData>[];\n\tcolumns: readonly FoundationTableColumn<TData>[];\n\tresolveRowBoundaryKey?: (row: FoundationTableRow<TData>) => unknown;\n\texcludeColumnIds?: ReadonlySet<string>;\n}\n\ntype VisibleRowCellLookup<TData extends object> = {\n\trow: FoundationTableRow<TData>;\n\tboundaryKey: unknown;\n\tcellByColumnId: ReadonlyMap<string, FoundationTableCell<TData>>;\n};\n\nfunction isMergeableValue(value: unknown): boolean {\n\treturn value !== null && value !== undefined && value !== \"\";\n}\n\nfunction buildVisibleRowCellLookups<TData extends object>(\n\trows: readonly FoundationTableRow<TData>[],\n\tresolveRowBoundaryKey: (row: FoundationTableRow<TData>) => unknown\n): VisibleRowCellLookup<TData>[] {\n\treturn rows.map((row) => ({\n\t\trow,\n\t\tboundaryKey: resolveRowBoundaryKey(row),\n\t\tcellByColumnId: new Map(row.getVisibleCells().map((cell) => [cell.column.id, cell]))\n\t}));\n}\n\n/**\n * Строит layout display-only слияния для колонок с `meta.mergeDuplicates`.\n *\n * Слияние работает только для подряд идущих одинаковых raw-значений. Пустые\n * значения (`null`, `undefined`, `\"\"`) не объединяются.\n */\nexport function buildBaseTableMergedCellsLayout<TData extends object>({\n\trows,\n\tcolumns,\n\tresolveRowBoundaryKey = () => \"__all_rows__\",\n\texcludeColumnIds\n}: BuildBaseTableMergedCellsLayoutArgs<TData>): BaseTableCellLayoutById {\n\tconst mergeableColumns = columns.filter((column) => {\n\t\tif (excludeColumnIds?.has(column.id)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn getTableColumnMeta(column.columnDef)?.mergeDuplicates === true;\n\t});\n\n\tif (rows.length === 0 || mergeableColumns.length === 0) {\n\t\treturn new Map();\n\t}\n\n\tconst rowLookups = buildVisibleRowCellLookups(rows, resolveRowBoundaryKey);\n\tconst layoutByCellId = new Map<string, BaseTableCellLayout>();\n\n\tfor (const column of mergeableColumns) {\n\t\tlet groupStartIndex = -1;\n\t\tlet groupValue: unknown = undefined;\n\t\tlet groupBoundaryKey: unknown = undefined;\n\n\t\tconst finalizeGroup = (endIndexExclusive: number) => {\n\t\t\tif (groupStartIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupSize = endIndexExclusive - groupStartIndex;\n\t\t\tif (groupSize <= 1) {\n\t\t\t\tgroupStartIndex = -1;\n\t\t\t\tgroupValue = undefined;\n\t\t\t\tgroupBoundaryKey = undefined;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (let index = groupStartIndex; index < endIndexExclusive; index += 1) {\n\t\t\t\tconst cellId = rowLookups[index]?.cellByColumnId.get(column.id)?.id;\n\t\t\t\tif (cellId) {\n\t\t\t\t\tlayoutByCellId.set(cellId, {\n\t\t\t\t\t\thideContent: index > groupStartIndex,\n\t\t\t\t\t\tmergeWithNext: index < endIndexExclusive - 1\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroupStartIndex = -1;\n\t\t\tgroupValue = undefined;\n\t\t\tgroupBoundaryKey = undefined;\n\t\t};\n\n\t\tfor (let index = 0; index < rowLookups.length; index += 1) {\n\t\t\tconst currentRow = rowLookups[index];\n\t\t\tconst currentCell = currentRow?.cellByColumnId.get(column.id);\n\t\t\tconst currentValue = currentCell?.getValue();\n\n\t\t\tif (!currentCell || !isMergeableValue(currentValue)) {\n\t\t\t\tfinalizeGroup(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (groupStartIndex === -1) {\n\t\t\t\tgroupStartIndex = index;\n\t\t\t\tgroupValue = currentValue;\n\t\t\t\tgroupBoundaryKey = currentRow?.boundaryKey;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!Object.is(groupBoundaryKey, currentRow?.boundaryKey) || !Object.is(groupValue, currentValue)) {\n\t\t\t\tfinalizeGroup(index);\n\t\t\t\tgroupStartIndex = index;\n\t\t\t\tgroupValue = currentValue;\n\t\t\t\tgroupBoundaryKey = currentRow?.boundaryKey;\n\t\t\t}\n\t\t}\n\n\t\tfinalizeGroup(rowLookups.length);\n\t}\n\n\treturn layoutByCellId;\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { normalizeTableColumnOrder, type TableColumnOrderState } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { functionalUpdate, type ColumnOrderState, type Updater } from \"@tanstack/react-table\";\n\n/**\n * Аргументы управления порядком колонок таблицы.\n */\nexport interface UseTableColumnOrderArgs {\n\t/**\n\t * Внешнее controlled-состояние порядка колонок.\n\t */\n\tcolumnOrder?: readonly string[];\n\t/**\n\t * Стартовое uncontrolled-состояние порядка колонок.\n\t */\n\tdefaultColumnOrder?: readonly string[];\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n}\n\n/**\n * Результат работы hook управления column order.\n */\nexport interface UseTableColumnOrderResult {\n\t/**\n\t * Актуальный order-state в формате TanStack Table.\n\t */\n\tcolumnOrder: ColumnOrderState;\n\t/**\n\t * Обработчик изменения order-state из TanStack Table.\n\t */\n\tonColumnOrderChange: (updater: Updater<ColumnOrderState>) => void;\n}\n\n/**\n * Инкапсулирует controlled/uncontrolled-паттерн для порядка колонок.\n */\nexport function useTableColumnOrder({\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tonColumnOrderChange\n}: UseTableColumnOrderArgs): UseTableColumnOrderResult {\n\tconst [uncontrolledColumnOrder, setUncontrolledColumnOrder] = useState<TableColumnOrderState | undefined>(undefined);\n\tconst resolvedColumnOrder = useMemo(\n\t\t() => normalizeTableColumnOrder(columnOrder ?? uncontrolledColumnOrder ?? defaultColumnOrder),\n\t\t[columnOrder, defaultColumnOrder, uncontrolledColumnOrder]\n\t);\n\n\tconst handleColumnOrderChange = useCallback(\n\t\t(updater: Updater<ColumnOrderState>) => {\n\t\t\tconst nextColumnOrder = normalizeTableColumnOrder(functionalUpdate(updater, resolvedColumnOrder));\n\n\t\t\tif (columnOrder === undefined) {\n\t\t\t\tsetUncontrolledColumnOrder(nextColumnOrder);\n\t\t\t}\n\n\t\t\tonColumnOrderChange?.(nextColumnOrder);\n\t\t},\n\t\t[columnOrder, onColumnOrderChange, resolvedColumnOrder]\n\t);\n\n\treturn {\n\t\tcolumnOrder: resolvedColumnOrder,\n\t\tonColumnOrderChange: handleColumnOrderChange\n\t};\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { functionalUpdate, type ColumnPinningState, type Updater } from \"@tanstack/react-table\";\n\nimport { normalizeTableColumnPinning, type TableColumnPinningState } from \"../lib/columnPinning\";\n\n/**\n * Аргументы управления состоянием закрепления колонок.\n */\nexport interface UseTableColumnPinningArgs {\n\t/**\n\t * Внешнее controlled-состояние закрепления.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние закрепления.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Вызывается после любого изменения start-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n}\n\n/**\n * Результат работы hook управления column pinning.\n */\nexport interface UseTableColumnPinningResult {\n\t/**\n\t * Актуальный pinning-state в формате TanStack Table.\n\t */\n\tcolumnPinning: ColumnPinningState;\n\t/**\n\t * Обработчик изменения pinning-state из TanStack Table.\n\t */\n\tonColumnPinningChange: (updater: Updater<ColumnPinningState>) => void;\n}\n\n/**\n * Инкапсулирует controlled/uncontrolled-паттерн для логического start-pinning.\n */\nexport function useTableColumnPinning({\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tonColumnPinningChange\n}: UseTableColumnPinningArgs): UseTableColumnPinningResult {\n\tconst [uncontrolledColumnPinning, setUncontrolledColumnPinning] = useState<TableColumnPinningState | undefined>(undefined);\n\tconst resolvedColumnPinning = useMemo(\n\t\t() => normalizeTableColumnPinning(columnPinning ?? uncontrolledColumnPinning ?? defaultColumnPinning),\n\t\t[columnPinning, defaultColumnPinning, uncontrolledColumnPinning]\n\t);\n\n\tconst handleColumnPinningChange = useCallback(\n\t\t(updater: Updater<ColumnPinningState>) => {\n\t\t\tconst nextColumnPinning = normalizeTableColumnPinning(functionalUpdate(updater, resolvedColumnPinning));\n\t\t\tconst nextPublicColumnPinning: TableColumnPinningState = {\n\t\t\t\tstart: nextColumnPinning.start\n\t\t\t};\n\n\t\t\tif (columnPinning === undefined) {\n\t\t\t\tsetUncontrolledColumnPinning(nextPublicColumnPinning);\n\t\t\t}\n\n\t\t\tonColumnPinningChange?.(nextPublicColumnPinning);\n\t\t},\n\t\t[columnPinning, onColumnPinningChange, resolvedColumnPinning]\n\t);\n\n\treturn {\n\t\tcolumnPinning: resolvedColumnPinning,\n\t\tonColumnPinningChange: handleColumnPinningChange\n\t};\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { normalizeTableColumnSizing, type TableColumnSizingState } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { functionalUpdate, type ColumnSizingState, type Updater } from \"@tanstack/react-table\";\n\n/**\n * Аргументы управления шириной колонок таблицы.\n */\nexport interface UseTableColumnSizingArgs {\n\t/**\n\t * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Минимальная ширина колонки в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n}\n\n/**\n * Результат работы hook управления column sizing.\n */\nexport interface UseTableColumnSizingResult {\n\t/**\n\t * Актуальный sizing-state в формате TanStack Table.\n\t */\n\tcolumnSizing: ColumnSizingState;\n\t/**\n\t * Обработчик изменения sizing-state из TanStack Table.\n\t */\n\tonColumnSizingChange: (updater: Updater<ColumnSizingState>) => void;\n}\n\n/**\n * Инкапсулирует controlled/uncontrolled-паттерн для ширин колонок.\n */\nexport function useTableColumnSizing({\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnResizeMinWidth,\n\tonColumnSizingChange\n}: UseTableColumnSizingArgs): UseTableColumnSizingResult {\n\tconst [uncontrolledColumnSizing, setUncontrolledColumnSizing] = useState<TableColumnSizingState | undefined>(undefined);\n\tconst resolvedColumnSizing = useMemo(\n\t\t() => normalizeTableColumnSizing(columnSizing ?? uncontrolledColumnSizing ?? defaultColumnSizing, columnResizeMinWidth),\n\t\t[columnResizeMinWidth, columnSizing, defaultColumnSizing, uncontrolledColumnSizing]\n\t);\n\n\tconst handleColumnSizingChange = useCallback(\n\t\t(updater: Updater<ColumnSizingState>) => {\n\t\t\tconst nextColumnSizing = normalizeTableColumnSizing(functionalUpdate(updater, resolvedColumnSizing), columnResizeMinWidth);\n\n\t\t\tif (columnSizing === undefined) {\n\t\t\t\tsetUncontrolledColumnSizing(nextColumnSizing);\n\t\t\t}\n\n\t\t\tonColumnSizingChange?.(nextColumnSizing);\n\t\t},\n\t\t[columnResizeMinWidth, columnSizing, onColumnSizingChange, resolvedColumnSizing]\n\t);\n\n\treturn {\n\t\tcolumnSizing: resolvedColumnSizing,\n\t\tonColumnSizingChange: handleColumnSizingChange\n\t};\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { type TableColumnVisibilityState } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { functionalUpdate, type Updater } from \"@tanstack/react-table\";\n\n/**\n * Аргументы управления видимостью колонок таблицы.\n */\nexport interface UseTableColumnVisibilityArgs {\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Вызывается после любого изменения visibility-state.\n\t */\n\tonColumnVisibilityChange?: (state: TableColumnVisibilityState) => void;\n}\n\n/**\n * Результат работы hook управления видимостью колонок.\n */\nexport interface UseTableColumnVisibilityResult {\n\t/**\n\t * Актуальный visibility-state, который нужно передать в TanStack Table.\n\t */\n\tcolumnVisibility: TableColumnVisibilityState;\n\t/**\n\t * Обработчик изменения visibility-state из TanStack Table.\n\t */\n\tonColumnVisibilityChange: (updater: Updater<TableColumnVisibilityState>) => void;\n}\n\n/**\n * Инкапсулирует controlled/uncontrolled-паттерн для column visibility.\n *\n * Пока пользователь не изменял visibility локально, hook читает\n * `defaultColumnVisibility` напрямую, поэтому асинхронная metadata-инициализация\n * не требует синхронизации prop -> state через эффекты.\n */\nexport function useTableColumnVisibility({\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tonColumnVisibilityChange\n}: UseTableColumnVisibilityArgs): UseTableColumnVisibilityResult {\n\tconst [uncontrolledColumnVisibility, setUncontrolledColumnVisibility] = useState<TableColumnVisibilityState | undefined>(undefined);\n\tconst resolvedColumnVisibility = useMemo(\n\t\t() => columnVisibility ?? uncontrolledColumnVisibility ?? defaultColumnVisibility ?? {},\n\t\t[columnVisibility, defaultColumnVisibility, uncontrolledColumnVisibility]\n\t);\n\n\tconst handleColumnVisibilityChange = useCallback(\n\t\t(updater: Updater<TableColumnVisibilityState>) => {\n\t\t\tconst nextColumnVisibility = functionalUpdate(updater, resolvedColumnVisibility);\n\n\t\t\tif (columnVisibility === undefined) {\n\t\t\t\tsetUncontrolledColumnVisibility(nextColumnVisibility);\n\t\t\t}\n\n\t\t\tonColumnVisibilityChange?.(nextColumnVisibility);\n\t\t},\n\t\t[columnVisibility, onColumnVisibilityChange, resolvedColumnVisibility]\n\t);\n\n\treturn {\n\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange\n\t};\n}\n",".root,\n.headerContextMenuTrigger {\n\tmin-width: 0;\n}\n\n.table {\n\twidth: 100%;\n\tborder-collapse: separate;\n\tborder-spacing: 0;\n\ttable-layout: fixed;\n\tfont-variant-numeric: tabular-nums;\n\n\thyphens: auto;\n}\n\n.head {\n\tz-index: 10;\n}\n\n.pinnedStartBoundary {\n\tbox-shadow: inset var(--focus-offset) 0 0 var(--border-0);\n}\n\n.headerRow {\n\tbackground-color: var(--surface-0);\n}\n\n.headerCell {\n\tposition: relative;\n\tpadding: var(--space-sm) var(--space-md);\n\tbackground-color: var(--surface-2);\n\tborder-bottom: var(--border);\n\tcolor: var(--content-0);\n\tvertical-align: middle;\n}\n\n.headerCellContent {\n\tmin-width: 0;\n}\n\n.headerCellDraggable {\n\tcursor: grab;\n\ttouch-action: none;\n\tuser-select: none;\n\n\t&:active {\n\t\tcursor: grabbing;\n\t}\n}\n\n.headerCellDragging {\n\topacity: 0.75;\n}\n\n.headerCellPinnedStart {\n\tposition: sticky;\n\tz-index: 12;\n}\n\n.bodyRow {\n\ttransition: background-color var(--transition-fast) ease;\n}\n\n.bodyRowInteractive {\n\tcursor: pointer;\n\n\t&:hover .bodyCell,\n\t&:focus-visible .bodyCell {\n\t\tbackground-color: var(--surface-1);\n\t}\n}\n\n.bodyRowSelected {\n\t.bodyCell {\n\t\tbackground-color: var(--surface-1);\n\t}\n}\n\n.bodyCell {\n\tpadding: var(--space-sm) var(--space-md);\n\tbackground-color: var(--surface-0);\n\tborder-bottom: var(--border);\n\tvertical-align: middle;\n}\n\n.bodyCellPinnedStart {\n\tposition: sticky;\n\tz-index: 2;\n}\n\n.bodyCellMergedWithNext {\n\tborder-bottom-color: transparent;\n}\n\n.feedbackCell {\n\tpadding: var(--space-md);\n\tbackground-color: var(--surface-0);\n}\n\n.fetchingRow .feedbackCell {\n\tborder-bottom: 0;\n}\n\n.noData {\n\tpointer-events: none;\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 40;\n}\n","import { ReactNode } from \"react\";\n\nimport { type FoundationTableHeader } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableHeaderInteractionCell } from \"../../table-column-interactions\";\n\nimport styles from \"./BaseTable.module.scss\";\n\ninterface BaseTableHeaderCellProps<TData extends object> {\n\theader: FoundationTableHeader<TData>;\n\tisPinnedStart: boolean;\n\tinsetInlineStart?: string;\n\tisPinnedBoundary: boolean;\n\tisDragDisabled: boolean;\n\tenableColumnResizing: boolean;\n\tenableColumnReordering: boolean;\n\tcolumnResizeMinWidth: number | undefined;\n\trenderHeaderContent: (header: FoundationTableHeader<TData>) => ReactNode;\n\tonResizeColumn: (columnId: string, width: number) => void;\n\tonResetColumnWidth: (columnId: string) => void;\n}\n\nexport function BaseTableHeaderCell<TData extends object>({\n\theader,\n\tisPinnedStart,\n\tinsetInlineStart,\n\tisPinnedBoundary,\n\tisDragDisabled,\n\tenableColumnResizing,\n\tenableColumnReordering,\n\tcolumnResizeMinWidth,\n\trenderHeaderContent,\n\tonResizeColumn,\n\tonResetColumnWidth\n}: BaseTableHeaderCellProps<TData>) {\n\treturn (\n\t\t<TableHeaderInteractionCell\n\t\t\tcolumnId={header.column.id}\n\t\t\tcolSpan={header.colSpan}\n\t\t\tdragDisabled={!enableColumnReordering || isDragDisabled}\n\t\t\tdraggingClassName={styles.headerCellDragging}\n\t\t\tclassName={cn(styles.headerCell, isPinnedStart && styles.headerCellPinnedStart, isPinnedBoundary && styles.pinnedStartBoundary)}\n\t\t\tstyle={{\n\t\t\t\t// NOTE: заголовок всегда по левому краю\n\t\t\t\t// ...(meta?.align ? { textAlign: meta.align } : {}),\n\t\t\t\t...(isPinnedStart ? { insetInlineStart } : {})\n\t\t\t}}\n\t\t\tresizeHandle={\n\t\t\t\tenableColumnResizing && !header.isPlaceholder\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcolumnId: header.column.id,\n\t\t\t\t\t\t\tminWidth: columnResizeMinWidth,\n\t\t\t\t\t\t\tonResize: onResizeColumn,\n\t\t\t\t\t\t\tonReset: onResetColumnWidth\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined\n\t\t\t}>\n\t\t\t{({ listeners, setActivatorElement }) => (\n\t\t\t\t<div\n\t\t\t\t\tref={enableColumnReordering && !isDragDisabled ? setActivatorElement : undefined}\n\t\t\t\t\tclassName={cn(styles.headerCellContent, enableColumnReordering && !isDragDisabled && styles.headerCellDraggable)}\n\t\t\t\t\t{...(enableColumnReordering && !isDragDisabled ? (listeners ?? {}) : {})}>\n\t\t\t\t\t{renderHeaderContent(header)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</TableHeaderInteractionCell>\n\t);\n}\n","import {\n\tuseCallback,\n\tuseMemo,\n\ttype CSSProperties,\n\ttype KeyboardEvent as ReactKeyboardEvent,\n\ttype MouseEvent as ReactMouseEvent,\n\ttype ReactNode,\n\ttype Ref\n} from \"react\";\n\nimport { DragEndEvent, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { restrictToHorizontalAxis, restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport { useDndSortableSensors } from \"@ryuzaki13/react-foundation-lib/hooks\";\nimport {\n\ttype FoundationTableCell,\n\ttype FoundationTableHeader,\n\ttype FoundationTableInstance,\n\ttype FoundationTableRow,\n\tgetTableColumnMeta,\n\tisTableInteractiveElement,\n\tpatchTableColumnWidth,\n\tremoveTableColumnWidth,\n\tresolveReorderedTableHeaderColumns,\n\tresolveTableColumnOrder,\n\ttype TableColumnMeta,\n\ttype TableSelectionMode\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn, handleKeyboardActivation } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { flexRender } from \"@tanstack/react-table\";\n\nimport { ContextMenu } from \"../../context-menu\";\nimport { GridContainer } from \"../../grid\";\nimport { LoadingMessage, NoData, Scrollable } from \"../../misc\";\nimport { getSortableReorderResult, Sortable } from \"../../sortable\";\nimport { BaseTableColumnState, buildBaseTableColumnLayout, getStartPinnedColumnOffsets } from \"../lib/columnPinning\";\nimport { BaseTableCellLayout } from \"../lib/mergeDuplicates\";\n\nimport styles from \"./BaseTable.module.scss\";\nimport { BaseTableHeaderCell } from \"./BaseTableHeaderCell\";\n\nimport type { FormattersPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\n/**\n * Аргументы кастомизации рендера ячейки базовой таблицы.\n */\nexport interface BaseTableCellRenderArgs<TData extends object> {\n\trow: FoundationTableRow<TData>;\n\tcell: FoundationTableCell<TData>;\n\tdefaultContent: ReactNode;\n\t/**\n\t * Display-модель ячейки после общего formatting runtime.\n\t *\n\t * BaseTable сам не форматирует значения, поэтому поле заполняют адаптеры\n\t * `Table`/`TreeTable`. Слот может отсутствовать у низкоуровневых\n\t * потребителей BaseTable.\n\t */\n\tdisplayValue?: FormattersPipelineDisplayValue;\n\tcolumnMeta?: TableColumnMeta;\n}\n\n/** Низкоуровневый контракт DnD-строк для адаптеров `Table` поверх общего табличного каркаса. */\nexport interface BaseTableRowReordering {\n\tcontainerId?: UniqueIdentifier;\n\tdisabled?: boolean;\n\tonDragEnd: (event: DragEndEvent) => void;\n}\n\n/**\n * Внутренний базовый рендерер таблицы.\n *\n * Не знает о плоских или древовидных данных и работает с уже подготовленным экземпляром TanStack Table.\n *\n * @NOTE: не для использования напрямую, это база для `Table` и `TreeTable`\n */\nexport interface BaseTableProps<TData extends object> {\n\ttable: FoundationTableInstance<TData>;\n\tcolumnState: BaseTableColumnState;\n\ttitle?: string;\n\tisLoading?: boolean;\n\tisFetching?: boolean;\n\tclassName?: string;\n\tminHeight?: `${number}em` | `${number}%`;\n\ttableClassName?: string;\n\tselectionMode?: TableSelectionMode;\n\tscrollableRef?: Ref<HTMLDivElement>;\n\tinteractiveElementSelector?: string;\n\tonActivateRow?: (row: FoundationTableRow<TData>) => void;\n\tisRowInteractive?: (row: FoundationTableRow<TData>) => boolean;\n\tgetRowClassName?: (row: FoundationTableRow<TData>) => string | undefined;\n\tgetCellClassName?: (args: BaseTableCellRenderArgs<TData>) => string | undefined;\n\tgetCellStyle?: (args: BaseTableCellRenderArgs<TData>) => CSSProperties | undefined;\n\tgetCellLayout?: (args: BaseTableCellRenderArgs<TData>) => BaseTableCellLayout | undefined;\n\trenderCellContent?: (args: BaseTableCellRenderArgs<TData>) => ReactNode;\n\t/**\n\t * Общий слот контекстного меню заголовка.\n\t *\n\t * BaseTable намеренно не знает про сортировку, группировку или доменные\n\t * действия. Он только сохраняет единый доступный способ открыть меню для\n\t * `Table` и `TreeTable`, а содержимое передает потребитель.\n\t */\n\trenderHeaderContextMenu?: (header: FoundationTableHeader<TData>) => ReactNode;\n\tenableColumnResizing?: boolean;\n\tenableColumnReordering?: boolean;\n\trowReordering?: BaseTableRowReordering;\n\tcolumnResizeMinWidth?: number;\n\tafterTableContent?: ReactNode;\n}\n\n/**\n * Объединяет header groups из pinned-start/center/pinned-end зон в единый порядок рендера.\n */\nfunction resolveHeaderOrderIndex<TData extends object>(\n\theader: FoundationTableHeader<TData>,\n\tcolumnIndexById: ReadonlyMap<string, number>\n): number {\n\tconst indexes = header\n\t\t.getLeafHeaders()\n\t\t.map((leafHeader) => columnIndexById.get(leafHeader.column.id))\n\t\t.filter((index): index is number => typeof index === \"number\");\n\n\treturn indexes.length ? Math.min(...indexes) : Number.MAX_SAFE_INTEGER;\n}\n\nfunction buildOrderedHeaderGroups<TData extends object>(\n\ttable: FoundationTableInstance<TData>,\n\tcolumnIndexById: ReadonlyMap<string, number>\n): FoundationTableHeader<TData>[][] {\n\tconst startHeaderGroups = table.getStartHeaderGroups();\n\tconst centerHeaderGroups = table.getCenterHeaderGroups();\n\tconst endHeaderGroups = table.getEndHeaderGroups();\n\tconst headerGroupCount = Math.max(startHeaderGroups.length, centerHeaderGroups.length, endHeaderGroups.length);\n\n\treturn Array.from({ length: headerGroupCount }, (_, index) => {\n\t\tconst headers = [\n\t\t\t...(startHeaderGroups[index]?.headers ?? []),\n\t\t\t...(centerHeaderGroups[index]?.headers ?? []),\n\t\t\t...(endHeaderGroups[index]?.headers ?? [])\n\t\t];\n\n\t\treturn headers\n\t\t\t.filter((header) => {\n\t\t\t\tif (header.isPlaceholder) return true;\n\n\t\t\t\treturn header.getLeafHeaders().some((leafHeader) => columnIndexById.has(leafHeader.column.id));\n\t\t\t})\n\t\t\t.sort((left, right) => resolveHeaderOrderIndex(left, columnIndexById) - resolveHeaderOrderIndex(right, columnIndexById));\n\t});\n}\n\n/**\n * Проверяет, что весь header целиком относится к pinned-start зоне.\n *\n * Смешанные grouped headers намеренно не переводятся в sticky-режим в первой итерации.\n */\nfunction resolveHeaderPinnedStartState<TData extends object>(\n\theader: FoundationTableHeader<TData>,\n\tstartPinnedOffsets: Readonly<Record<string, string>>,\n\tlastPinnedColumnId: string | undefined\n): { isPinnedStart: boolean; insetInlineStart?: string; isPinnedBoundary: boolean } {\n\tconst leafHeaders = header.getLeafHeaders();\n\tconst leafColumnIds = leafHeaders.map((leafHeader) => leafHeader.column.id);\n\tconst isPinnedStart = leafColumnIds.length > 0 && leafColumnIds.every((columnId) => columnId in startPinnedOffsets);\n\n\tif (!isPinnedStart) {\n\t\treturn {\n\t\t\tisPinnedStart: false,\n\t\t\tisPinnedBoundary: false\n\t\t};\n\t}\n\n\treturn {\n\t\tisPinnedStart: true,\n\t\tinsetInlineStart: startPinnedOffsets[leafColumnIds[0]!] ?? \"0px\",\n\t\tisPinnedBoundary: Boolean(lastPinnedColumnId && leafColumnIds.includes(lastPinnedColumnId))\n\t};\n}\n\nfunction getCurrentLeafColumnOrder<TData extends object>(\n\ttable: FoundationTableInstance<TData>,\n\tcolumnState: BaseTableColumnState\n): string[] {\n\tconst definedColumnIds = table.getAllLeafColumns().map((column) => column.id);\n\n\treturn resolveTableColumnOrder({\n\t\tids: definedColumnIds,\n\t\torder: columnState.columnOrder\n\t});\n}\n\n/**\n * Базовая таблица с общим UI-каркасом для Table и TreeTable.\n *\n * @NOTE: не для использования напрямую, это база для `Table` и `TreeTable`\n */\nexport function BaseTable<TData extends object>({\n\ttable,\n\tcolumnState,\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tclassName,\n\tminHeight = \"15em\",\n\ttableClassName,\n\tselectionMode = \"none\",\n\tscrollableRef,\n\tinteractiveElementSelector,\n\tonActivateRow,\n\tisRowInteractive,\n\tgetRowClassName,\n\tgetCellClassName,\n\tgetCellStyle,\n\tgetCellLayout,\n\trenderCellContent,\n\trenderHeaderContextMenu,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\trowReordering,\n\tcolumnResizeMinWidth,\n\tafterTableContent\n}: BaseTableProps<TData>) {\n\tconst columnLayout = buildBaseTableColumnLayout(table, columnState);\n\tconst visibleColumns = useMemo(() => columnLayout.map((column) => column.column), [columnLayout]);\n\tconst visibleColumnIds = useMemo(() => columnLayout.map((column) => column.id), [columnLayout]);\n\tconst visibleColumnIndexById = useMemo(() => new Map(visibleColumnIds.map((columnId, index) => [columnId, index])), [visibleColumnIds]);\n\tconst visibleColumnIdSet = useMemo(() => new Set(visibleColumnIds), [visibleColumnIds]);\n\tconst sensors = useDndSortableSensors({ activationDistance: 8 });\n\tconst orderedHeaderGroups = buildOrderedHeaderGroups(table, visibleColumnIndexById);\n\tconst startPinnedOffsets = getStartPinnedColumnOffsets(table, columnState);\n\tconst lastPinnedColumnId = visibleColumns.filter((column) => column.getIsPinned() === \"start\").at(-1)?.id;\n\tconst pinnedStartColumnIds = useMemo(() => columnState.columnPinning.start ?? [], [columnState.columnPinning.start]);\n\tconst pinnedStartColumnIdSet = useMemo(() => new Set(pinnedStartColumnIds), [pinnedStartColumnIds]);\n\tconst rowModel = table.getRowModel();\n\tconst rowIds = useMemo(() => rowModel.rows.map((row) => row.id), [rowModel.rows]);\n\tconst hasTitle = Boolean(title);\n\tconst hasRows = rowModel.rows.length > 0;\n\tconst orderVisibleCells = useCallback(\n\t\t(cells: readonly FoundationTableCell<TData>[]) =>\n\t\t\t[...cells].sort(\n\t\t\t\t(left, right) =>\n\t\t\t\t\t(visibleColumnIndexById.get(left.column.id) ?? Number.MAX_SAFE_INTEGER) -\n\t\t\t\t\t(visibleColumnIndexById.get(right.column.id) ?? Number.MAX_SAFE_INTEGER)\n\t\t\t),\n\t\t[visibleColumnIndexById]\n\t);\n\n\tconst handleResizeColumn = useCallback(\n\t\t(columnId: string, width: number) => {\n\t\t\ttable.setColumnSizing((current) => patchTableColumnWidth(current, columnId, width, columnResizeMinWidth));\n\t\t},\n\t\t[columnResizeMinWidth, table]\n\t);\n\n\tconst handleResetColumnWidth = useCallback(\n\t\t(columnId: string) => {\n\t\t\ttable.setColumnSizing((current) => removeTableColumnWidth(current, columnId));\n\t\t},\n\t\t[table]\n\t);\n\n\tconst handleHeaderColumnDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tconst reorder = getSortableReorderResult({\n\t\t\t\tevent,\n\t\t\t\titems: visibleColumnIds\n\t\t\t});\n\t\t\tif (!reorder) return;\n\n\t\t\tconst currentOrder = getCurrentLeafColumnOrder(table, columnState);\n\t\t\tconst nextOrder = resolveReorderedTableHeaderColumns({\n\t\t\t\torder: currentOrder,\n\t\t\t\theaderIds: visibleColumnIds,\n\t\t\t\tpinnedIds: pinnedStartColumnIds,\n\t\t\t\tactiveId: String(reorder.activeId),\n\t\t\t\toverId: String(reorder.overId)\n\t\t\t});\n\n\t\t\tif (!nextOrder) return;\n\n\t\t\ttable.setColumnOrder(nextOrder);\n\t\t},\n\t\t[columnState, pinnedStartColumnIds, table, visibleColumnIds]\n\t);\n\n\tconst renderHeaderContent = (header: FoundationTableHeader<TData>) => {\n\t\tif (header.isPlaceholder) return null;\n\n\t\tconst content = flexRender(header.column.columnDef.header, header.getContext());\n\t\tconst menu = renderHeaderContextMenu?.(header);\n\n\t\tif (!menu) {\n\t\t\treturn content;\n\t\t}\n\n\t\treturn (\n\t\t\t<ContextMenu>\n\t\t\t\t<ContextMenu.Trigger>\n\t\t\t\t\t<div className={styles.headerContextMenuTrigger} tabIndex={0}>\n\t\t\t\t\t\t{content}\n\t\t\t\t\t</div>\n\t\t\t\t</ContextMenu.Trigger>\n\t\t\t\t<ContextMenu.Content>{menu}</ContextMenu.Content>\n\t\t\t</ContextMenu>\n\t\t);\n\t};\n\n\t/**\n\t * Обрабатывает клик по строке, не перехватывая вложенные интерактивные элементы.\n\t */\n\tconst handleRowClick = (event: ReactMouseEvent<HTMLTableRowElement>, row: FoundationTableRow<TData>) => {\n\t\tconst interactive = isRowInteractive?.(row) ?? Boolean(onActivateRow);\n\n\t\tif (!interactive || !onActivateRow || isTableInteractiveElement(event.target, interactiveElementSelector)) {\n\t\t\treturn;\n\t\t}\n\n\t\tonActivateRow(row);\n\t};\n\n\t/**\n\t * Дублирует активацию строки для клавиатуры.\n\t */\n\tconst handleRowKeyDown = (event: ReactKeyboardEvent<HTMLTableRowElement>, row: FoundationTableRow<TData>) => {\n\t\tconst interactive = isRowInteractive?.(row) ?? Boolean(onActivateRow);\n\n\t\tif (!interactive || !onActivateRow || isTableInteractiveElement(event.target, interactiveElementSelector)) {\n\t\t\treturn;\n\t\t}\n\n\t\thandleKeyboardActivation(event, () => onActivateRow(row));\n\t};\n\n\tconst renderBodyRow = (row: FoundationTableRow<TData>) => {\n\t\tconst interactive = isRowInteractive?.(row) ?? Boolean(onActivateRow);\n\t\tconst rowContent = orderVisibleCells([\n\t\t\t...row.getStartVisibleCells(),\n\t\t\t...row.getCenterVisibleCells(),\n\t\t\t...row.getEndVisibleCells()\n\t\t]).map((cell) => {\n\t\t\tconst columnMeta = getTableColumnMeta(cell.column.columnDef);\n\t\t\tconst defaultContent = flexRender(cell.column.columnDef.cell, cell.getContext());\n\t\t\tconst renderArgs: BaseTableCellRenderArgs<TData> = {\n\t\t\t\trow,\n\t\t\t\tcell,\n\t\t\t\tdefaultContent,\n\t\t\t\tcolumnMeta\n\t\t\t};\n\t\t\tconst cellLayout = getCellLayout?.(renderArgs);\n\t\t\tconst isPinnedStart = cell.column.getIsPinned() === \"start\";\n\t\t\tconst isPinnedBoundary = cell.column.id === lastPinnedColumnId;\n\t\t\tconst resolvedStyle = {\n\t\t\t\t...(columnMeta?.align ? { textAlign: columnMeta.align } : {}),\n\t\t\t\t...(isPinnedStart ? { insetInlineStart: startPinnedOffsets[cell.column.id] ?? \"0px\" } : {}),\n\t\t\t\t...(getCellStyle?.(renderArgs) ?? {})\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<td\n\t\t\t\t\tkey={cell.id}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tstyles.bodyCell,\n\t\t\t\t\t\tisPinnedStart && styles.bodyCellPinnedStart,\n\t\t\t\t\t\tisPinnedBoundary && styles.pinnedStartBoundary,\n\t\t\t\t\t\tcellLayout?.mergeWithNext && styles.bodyCellMergedWithNext,\n\t\t\t\t\t\tgetCellClassName?.(renderArgs)\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={resolvedStyle}>\n\t\t\t\t\t{cellLayout?.hideContent ? null : renderCellContent ? renderCellContent(renderArgs) : defaultContent}\n\t\t\t\t</td>\n\t\t\t);\n\t\t});\n\t\tconst rowProps = {\n\t\t\tclassName: cn(\n\t\t\t\tstyles.bodyRow,\n\t\t\t\tinteractive && styles.bodyRowInteractive,\n\t\t\t\trow.getIsSelected() && styles.bodyRowSelected,\n\t\t\t\tgetRowClassName?.(row)\n\t\t\t),\n\t\t\t\"aria-selected\": selectionMode !== \"none\" ? row.getIsSelected() : undefined,\n\t\t\ttabIndex: interactive ? 0 : undefined,\n\t\t\tonClick: (event: ReactMouseEvent<HTMLTableRowElement>) => handleRowClick(event, row),\n\t\t\tonKeyDown: (event: ReactKeyboardEvent<HTMLTableRowElement>) => handleRowKeyDown(event, row)\n\t\t};\n\n\t\treturn rowReordering ? (\n\t\t\t<Sortable.Item as=\"tr\" key={row.id} id={row.id} disabled={rowReordering.disabled} {...rowProps}>\n\t\t\t\t{rowContent}\n\t\t\t</Sortable.Item>\n\t\t) : (\n\t\t\t<tr key={row.id} {...rowProps}>\n\t\t\t\t{rowContent}\n\t\t\t</tr>\n\t\t);\n\t};\n\n\treturn (\n\t\t<GridContainer\n\t\t\ttemplateRows={hasTitle ? \"auto 1fr\" : \"1fr\"}\n\t\t\tclassName={cn(\"overflowHidden w100 h100\", styles.root, className)}\n\t\t\tstyle={{ minHeight }}>\n\t\t\t{hasTitle && <h3 className=\"marginBottomXs\">{title}</h3>}\n\n\t\t\t<div className=\"surface0 overflowHidden relative w100 h100\">\n\t\t\t\t<Scrollable ref={scrollableRef} className=\"w100 h100\">\n\t\t\t\t\t<>\n\t\t\t\t\t\t<table className={cn(styles.table, tableClassName)}>\n\t\t\t\t\t\t\t<colgroup>\n\t\t\t\t\t\t\t\t{columnLayout.map((column) => (\n\t\t\t\t\t\t\t\t\t<col key={column.id} style={column.width ? { width: column.width } : undefined} />\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</colgroup>\n\n\t\t\t\t\t\t\t<thead className={cn(\"stickyTop\", styles.head)}>\n\t\t\t\t\t\t\t\t{enableColumnReordering ? (\n\t\t\t\t\t\t\t\t\t<Sortable.Root\n\t\t\t\t\t\t\t\t\t\tsensors={sensors}\n\t\t\t\t\t\t\t\t\t\tmodifiers={[restrictToHorizontalAxis]}\n\t\t\t\t\t\t\t\t\t\tonDragEnd={handleHeaderColumnDragEnd}>\n\t\t\t\t\t\t\t\t\t\t<Sortable.Container containerId=\"base-table-header\" items={visibleColumnIds} layout=\"horizontal\">\n\t\t\t\t\t\t\t\t\t\t\t{orderedHeaderGroups.map((headers, headerGroupIndex) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<tr key={`header-group-${headerGroupIndex}`} className={styles.headerRow}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{headers.map((header) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst { isPinnedStart, insetInlineStart, isPinnedBoundary } =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolveHeaderPinnedStartState(header, startPinnedOffsets, lastPinnedColumnId);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isDragDisabled =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.isPlaceholder ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!visibleColumnIdSet.has(header.column.id) ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpinnedStartColumnIdSet.has(header.column.id);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<BaseTableHeaderCell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader={header}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPinnedStart={isPinnedStart}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinsetInlineStart={insetInlineStart}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPinnedBoundary={isPinnedBoundary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisDragDisabled={isDragDisabled}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderHeaderContent={renderHeaderContent}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonResizeColumn={handleResizeColumn}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonResetColumnWidth={handleResetColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</Sortable.Container>\n\t\t\t\t\t\t\t\t\t</Sortable.Root>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\torderedHeaderGroups.map((headers, headerGroupIndex) => (\n\t\t\t\t\t\t\t\t\t\t<tr key={`header-group-${headerGroupIndex}`} className={styles.headerRow}>\n\t\t\t\t\t\t\t\t\t\t\t{headers.map((header) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst { isPinnedStart, insetInlineStart, isPinnedBoundary } = resolveHeaderPinnedStartState(\n\t\t\t\t\t\t\t\t\t\t\t\t\theader,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartPinnedOffsets,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlastPinnedColumnId\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<BaseTableHeaderCell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theader={header}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPinnedStart={isPinnedStart}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinsetInlineStart={insetInlineStart}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPinnedBoundary={isPinnedBoundary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisDragDisabled\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderHeaderContent={renderHeaderContent}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonResizeColumn={handleResizeColumn}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonResetColumnWidth={handleResetColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</thead>\n\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t{rowReordering ? (\n\t\t\t\t\t\t\t\t\t<Sortable.Root\n\t\t\t\t\t\t\t\t\t\tsensors={sensors}\n\t\t\t\t\t\t\t\t\t\tmodifiers={[restrictToVerticalAxis]}\n\t\t\t\t\t\t\t\t\t\tonDragEnd={rowReordering.onDragEnd}>\n\t\t\t\t\t\t\t\t\t\t<Sortable.Container\n\t\t\t\t\t\t\t\t\t\t\tcontainerId={rowReordering.containerId ?? \"base-table-body\"}\n\t\t\t\t\t\t\t\t\t\t\titems={rowIds}\n\t\t\t\t\t\t\t\t\t\t\tlayout=\"vertical\">\n\t\t\t\t\t\t\t\t\t\t\t{rowModel.rows.map(renderBodyRow)}\n\t\t\t\t\t\t\t\t\t\t</Sortable.Container>\n\t\t\t\t\t\t\t\t\t</Sortable.Root>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\trowModel.rows.map(renderBodyRow)\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{isFetching && hasRows && (\n\t\t\t\t\t\t\t\t\t<tr className={styles.fetchingRow}>\n\t\t\t\t\t\t\t\t\t\t<td colSpan={Math.max(visibleColumns.length, 1)} className={styles.feedbackCell}>\n\t\t\t\t\t\t\t\t\t\t\t<LoadingMessage />\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\n\t\t\t\t\t\t{afterTableContent}\n\t\t\t\t\t</>\n\t\t\t\t</Scrollable>\n\n\t\t\t\t<div className=\"absolute inset0 border\" style={{ pointerEvents: \"none\", zIndex: 20 }}>\n\t\t\t\t\t{!isLoading && !isFetching && !hasRows && <NoData className={styles.noData} />}\n\t\t\t\t\t{isLoading && !hasRows && <LoadingMessage className=\"h100 w100\" />}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</GridContainer>\n\t);\n}\n",".formattedCellValue {\n\twidth: 100%;\n\tmin-width: 0;\n}\n\n.formattedCell,\n.formattedCellInner {\n\t@extend .formattedCellValue;\n\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.formattedCellInner {\n\tgap: var(--space-xs);\n}\n","import { useEffect, useRef } from \"react\";\n\nimport { type FormattersPipelineDisplayValue, resolveValueStateClassName } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { RenderStateIcon } from \"../../misc\";\n\nimport styles from \"./FormattedTableCell.module.scss\";\n\nimport type { TableColumnAlign } from \"@ryuzaki13/react-foundation-lib/table\";\n\n/**\n * Пропсы общего renderer форматированной ячейки.\n */\nexport interface FormattedTableCellProps {\n\t/**\n\t * Нормализованный display-result из formatting-runtime.\n\t */\n\tdisplayValue: FormattersPipelineDisplayValue;\n\t/**\n\t * Табличное выравнивание содержимого.\n\t */\n\talign?: TableColumnAlign;\n}\n\n/**\n * Общий renderer форматированной ячейки для `Table` и будущего `TreeTable`.\n *\n * Компонент отвечает только за UI-отрисовку уже вычисленного display-result:\n * runtime и бизнес-логика вычисления значения в него не входят.\n */\nexport function FormattedTableCell({ displayValue, align = \"left\" }: FormattedTableCellProps) {\n\tconst textRef = useRef<HTMLSpanElement | null>(null);\n\tconst showValue = displayValue.showValue;\n\tconst showIcon = displayValue.showIcon;\n\tconst icon = showIcon ? displayValue.icon : undefined;\n\tconst textValue = showValue && displayValue.value != null ? String(displayValue.value) : \"\";\n\tconst stateClassName = resolveValueStateClassName(displayValue.state);\n\tconst justifyContent = align === \"right\" ? \"flex-end\" : align === \"center\" ? \"center\" : \"flex-start\";\n\tconst textAlign = align === \"center\" ? \"center\" : align === \"right\" ? \"right\" : \"left\";\n\n\tuseEffect(() => {\n\t\tconst element = textRef.current;\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst updateTitle = () => {\n\t\t\tif (!displayValue.overflowTooltip || !textValue) {\n\t\t\t\telement.removeAttribute(\"title\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isOverflowing = element.scrollWidth > element.clientWidth + 1;\n\t\t\tif (isOverflowing) {\n\t\t\t\telement.setAttribute(\"title\", textValue);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.removeAttribute(\"title\");\n\t\t};\n\n\t\tupdateTitle();\n\n\t\tif (typeof ResizeObserver === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new ResizeObserver(updateTitle);\n\t\tobserver.observe(element);\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [displayValue.overflowTooltip, textValue]);\n\n\treturn (\n\t\t<div className={cn(styles.formattedCell, stateClassName)}>\n\t\t\t<div className={styles.formattedCellInner} style={{ justifyContent }}>\n\t\t\t\t{displayValue.iconPosition === \"left\" ? <RenderStateIcon state={icon} /> : null}\n\n\t\t\t\t{showValue ? (\n\t\t\t\t\t<span ref={textRef} className={cn(\"textOverflow\", styles.formattedCellValue)} style={{ textAlign }}>\n\t\t\t\t\t\t{textValue}\n\t\t\t\t\t</span>\n\t\t\t\t) : null}\n\n\t\t\t\t{displayValue.iconPosition === \"right\" ? <RenderStateIcon state={icon} /> : null}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}