@ryuzaki13/react-foundation-ui 1.8.1 → 1.8.3

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 (424) hide show
  1. package/dist/advanced-search/index.js +8 -8
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DGElHRTJ.js → CalendarView-BJx6akIp.js} +2 -2
  7. package/dist/chunks/{CalendarView-DGElHRTJ.js.map → CalendarView-BJx6akIp.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js → TextEditorLexicalClient-Ca89d-Db.js} +6 -6
  10. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js.map → TextEditorLexicalClient-Ca89d-Db.js.map} +1 -1
  11. package/dist/chunks/{badge-DMM8cOHd.js → badge-DUI2ET6q.js} +2 -2
  12. package/dist/chunks/{badge-DMM8cOHd.js.map → badge-DUI2ET6q.js.map} +1 -1
  13. package/dist/chunks/{base-table-DNSYOO9t.js → base-table-CsnUiMTe.js} +2 -2
  14. package/dist/chunks/{base-table-DNSYOO9t.js.map → base-table-CsnUiMTe.js.map} +1 -1
  15. package/dist/chunks/{button-BsvHGWPc.js → button-C53OkqTg.js} +3 -3
  16. package/dist/chunks/{button-BsvHGWPc.js.map → button-C53OkqTg.js.map} +1 -1
  17. package/dist/chunks/{check-box-sfGjYczQ.js → check-box-CC8CDnSR.js} +3 -3
  18. package/dist/chunks/{check-box-sfGjYczQ.js.map → check-box-CC8CDnSR.js.map} +1 -1
  19. package/dist/chunks/context-menu-C8sA7xCN.js +525 -0
  20. package/dist/chunks/context-menu-C8sA7xCN.js.map +1 -0
  21. package/dist/chunks/{date-input-C4GcKul6.js → date-input-g6l1iDmf.js} +5 -5
  22. package/dist/chunks/{date-input-C4GcKul6.js.map → date-input-g6l1iDmf.js.map} +1 -1
  23. package/dist/chunks/defaultRenderers-Dbhg2hHc.js +38 -0
  24. package/dist/chunks/defaultRenderers-Dbhg2hHc.js.map +1 -0
  25. package/dist/chunks/{input-CCdBtl-C.js → input-d08WN5FV.js} +2 -2
  26. package/dist/chunks/{input-CCdBtl-C.js.map → input-d08WN5FV.js.map} +1 -1
  27. package/dist/chunks/{input-files-TXdXrSAs.js → input-files-_NdSQM_3.js} +3 -3
  28. package/dist/chunks/{input-files-TXdXrSAs.js.map → input-files-_NdSQM_3.js.map} +1 -1
  29. package/dist/chunks/{input-search-Ca8iqeK2.js → input-search-BjtTMoRu.js} +2 -2
  30. package/dist/chunks/{input-search-Ca8iqeK2.js.map → input-search-BjtTMoRu.js.map} +1 -1
  31. package/dist/chunks/{modal-DLRYn-Lr.js → modal-Bar-j5a4.js} +2 -2
  32. package/dist/chunks/{modal-DLRYn-Lr.js.map → modal-Bar-j5a4.js.map} +1 -1
  33. package/dist/chunks/multi-select-Cvjz9W07.js +466 -0
  34. package/dist/chunks/multi-select-Cvjz9W07.js.map +1 -0
  35. package/dist/chunks/picker-0I1yMKIY.js +435 -0
  36. package/dist/chunks/picker-0I1yMKIY.js.map +1 -0
  37. package/dist/chunks/{radio-group-BAeJjyZ5.js → radio-group-DhpP7JSJ.js} +2 -2
  38. package/dist/chunks/{radio-group-BAeJjyZ5.js.map → radio-group-DhpP7JSJ.js.map} +1 -1
  39. package/dist/chunks/select-CUQ91FIc.js +363 -0
  40. package/dist/chunks/select-CUQ91FIc.js.map +1 -0
  41. package/dist/chunks/{table-RO4dfMAj.js → table-z9kyd9U3.js} +2 -2
  42. package/dist/chunks/{table-RO4dfMAj.js.map → table-z9kyd9U3.js.map} +1 -1
  43. package/dist/chunks/{ui.module-DHVTOqZ0.js → ui.module-BsDio9A3.js} +4 -3
  44. package/dist/chunks/ui.module-BsDio9A3.js.map +1 -0
  45. package/dist/chunks/{uiClasses-UkaejTdf.js → uiClasses-BVwFzzsr.js} +2 -2
  46. package/dist/chunks/{uiClasses-UkaejTdf.js.map → uiClasses-BVwFzzsr.js.map} +1 -1
  47. package/dist/chunks/useODataSelectBase-DR4PrY1j.js +117 -0
  48. package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -0
  49. package/dist/context-menu/components/ContextMenu.d.ts +2 -1
  50. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  51. package/dist/context-menu/components/DropdownMenu.d.ts +2 -1
  52. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  53. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  54. package/dist/context-menu/components/MenuItem.d.ts +6 -6
  55. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  56. package/dist/context-menu/components/MenuRoot.d.ts +1 -1
  57. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  58. package/dist/context-menu/index.js +1 -1
  59. package/dist/date-input/index.js +2 -2
  60. package/dist/date-time-input/index.js +3 -3
  61. package/dist/disclosure/index.js +2 -2
  62. package/dist/drop-zone/index.js +1 -1
  63. package/dist/expandable-action-panel/index.js +1 -1
  64. package/dist/image/index.js +4 -4
  65. package/dist/input/index.js +1 -1
  66. package/dist/input-date-time/index.js +2 -2
  67. package/dist/input-file/index.js +2 -2
  68. package/dist/input-files/index.js +1 -1
  69. package/dist/input-image/index.js +2 -2
  70. package/dist/input-search/index.js +1 -1
  71. package/dist/layout-picker/index.js +66 -68
  72. package/dist/layout-picker/index.js.map +1 -1
  73. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  74. package/dist/listbox/Listbox.d.ts +1 -1
  75. package/dist/listbox/Listbox.d.ts.map +1 -1
  76. package/dist/listbox/index.js +71 -59
  77. package/dist/listbox/index.js.map +1 -1
  78. package/dist/modal/index.js +1 -1
  79. package/dist/multi-select/index.js +2 -2
  80. package/dist/multi-select/ui/MultiSelect.d.ts +11 -1
  81. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  82. package/dist/multi-select/ui/defaultRenderers.d.ts +6 -4
  83. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  84. package/dist/multi-select/ui/index.d.ts +0 -1
  85. package/dist/multi-select/ui/index.d.ts.map +1 -1
  86. package/dist/notifications/index.js +1 -1
  87. package/dist/option/CustomOptionButton.d.ts +6 -0
  88. package/dist/option/CustomOptionButton.d.ts.map +1 -0
  89. package/dist/option/Option.d.ts +14 -0
  90. package/dist/option/Option.d.ts.map +1 -0
  91. package/dist/option/OptionButton.d.ts +8 -0
  92. package/dist/option/OptionButton.d.ts.map +1 -0
  93. package/dist/option/OptionCode.d.ts +6 -0
  94. package/dist/option/OptionCode.d.ts.map +1 -0
  95. package/dist/option/OptionContent.d.ts +19 -0
  96. package/dist/option/OptionContent.d.ts.map +1 -0
  97. package/dist/option/OptionHotkey.d.ts +6 -0
  98. package/dist/option/OptionHotkey.d.ts.map +1 -0
  99. package/dist/option/OptionIcon.d.ts +6 -0
  100. package/dist/option/OptionIcon.d.ts.map +1 -0
  101. package/dist/option/OptionLink.d.ts +8 -0
  102. package/dist/option/OptionLink.d.ts.map +1 -0
  103. package/dist/option/OptionText.d.ts +6 -0
  104. package/dist/option/OptionText.d.ts.map +1 -0
  105. package/dist/option/index.d.ts +10 -0
  106. package/dist/option/index.d.ts.map +1 -0
  107. package/dist/option/index.js +112 -0
  108. package/dist/option/index.js.map +1 -0
  109. package/dist/picker/PickerClearButton.d.ts +9 -0
  110. package/dist/picker/PickerClearButton.d.ts.map +1 -0
  111. package/dist/picker/PickerOptions.d.ts +22 -0
  112. package/dist/picker/PickerOptions.d.ts.map +1 -0
  113. package/dist/picker/PickerPlaceholder.d.ts +14 -0
  114. package/dist/picker/PickerPlaceholder.d.ts.map +1 -0
  115. package/dist/picker/PickerPopup.d.ts +4 -3
  116. package/dist/picker/PickerPopup.d.ts.map +1 -1
  117. package/dist/picker/PickerSelectedToken.d.ts +7 -0
  118. package/dist/picker/PickerSelectedToken.d.ts.map +1 -0
  119. package/dist/picker/PickerTrigger.d.ts +29 -0
  120. package/dist/picker/PickerTrigger.d.ts.map +1 -0
  121. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  122. package/dist/picker/PickerTriggerInput.d.ts +1 -2
  123. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  124. package/dist/picker/index.d.ts +5 -0
  125. package/dist/picker/index.d.ts.map +1 -1
  126. package/dist/picker/index.js +2 -2
  127. package/dist/picker/model/extractPickerTextContent.d.ts +1 -1
  128. package/dist/picker/model/extractPickerTextContent.d.ts.map +1 -1
  129. package/dist/preset-range-date-input/index.js +1 -1
  130. package/dist/preset-select/PresetSelect.d.ts +1 -1
  131. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  132. package/dist/preset-select/index.js +1 -1
  133. package/dist/preset-select/index.js.map +1 -1
  134. package/dist/radio-button/index.js +2 -2
  135. package/dist/radio-group/index.js +1 -1
  136. package/dist/select/Select.d.ts +4 -2
  137. package/dist/select/Select.d.ts.map +1 -1
  138. package/dist/select/SelectOptionGroup.d.ts +1 -1
  139. package/dist/select/SelectOptionGroup.d.ts.map +1 -1
  140. package/dist/select/index.js +1 -1
  141. package/dist/select/model/useODataSelectBase.d.ts.map +1 -1
  142. package/dist/simple-table/index.js +1 -1
  143. package/dist/slider/index.js +3 -3
  144. package/dist/state-select/StateSelect.d.ts +1 -1
  145. package/dist/state-select/StateSelect.d.ts.map +1 -1
  146. package/dist/state-select/index.js +1 -1
  147. package/dist/state-select/index.js.map +1 -1
  148. package/dist/styles.css +1 -1
  149. package/dist/switch/index.js +1 -1
  150. package/dist/table/index.js +1 -1
  151. package/dist/table-sorting/index.js +1 -1
  152. package/dist/tabs/index.js +2 -2
  153. package/dist/tag-input/index.js +2 -2
  154. package/dist/text-editor/index.js +1 -1
  155. package/dist/textarea/index.js +2 -2
  156. package/dist/toggle/index.js +1 -1
  157. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  158. package/dist/tree-select/TreeNodeContent.d.ts +2 -1
  159. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  160. package/dist/tree-select/TreePickerBase.d.ts +4 -1
  161. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  162. package/dist/tree-select/index.js +322 -353
  163. package/dist/tree-select/index.js.map +1 -1
  164. package/dist/tree-table/index.js +1 -1
  165. package/package.json +5 -1
  166. package/src/styles/themes/_interactive-surface.scss +67 -0
  167. package/storybook-static/assets/{Badge-vnYXe1um.js → Badge-Wsl03RiZ.js} +1 -1
  168. package/storybook-static/assets/{Badge.stories-5LcplF_Q.js → Badge.stories-C5FJ05zx.js} +1 -1
  169. package/storybook-static/assets/{BadgeList-B1Mn9GtM.js → BadgeList-DHcmb--r.js} +1 -1
  170. package/storybook-static/assets/{Button-tokZDQsV.js → Button-9Vdg-8pF.js} +1 -1
  171. package/storybook-static/assets/{Button-Ez6zTRLH.js → Button-CEzU6vMY.js} +1 -1
  172. package/storybook-static/assets/{Button.stories-BeJ5wldz.js → Button.stories-BfDF7T_l.js} +1 -1
  173. package/storybook-static/assets/{CalendarView-BYiJjzKd.js → CalendarView-DCLQ6cmR.js} +1 -1
  174. package/storybook-static/assets/{CheckBox-BFCmk9Is.js → CheckBox-BJ3STl44.js} +1 -1
  175. package/storybook-static/assets/CheckBox-DWrG0yT0.css +1 -0
  176. package/storybook-static/assets/{CheckBox-O5kReKiZ.js → CheckBox-UlZDcbgz.js} +1 -1
  177. package/storybook-static/assets/{CheckBox.stories-BUNYAiF-.js → CheckBox.stories-Pt5RIIb4.js} +1 -1
  178. package/storybook-static/assets/{Color-6AOWCN3U-CYSLqqAa.js → Color-6AOWCN3U-3Ir6qwTW.js} +1 -1
  179. package/storybook-static/assets/ContextMenu-BrYtLHPB.css +1 -0
  180. package/storybook-static/assets/{ContextMenu-D7IH0vrL.js → ContextMenu-CU7qp0QU.js} +1 -1
  181. package/storybook-static/assets/ContextMenu-teXimUtT.js +1 -0
  182. package/storybook-static/assets/ContextMenu.stories-BhkVXZCg.js +37 -0
  183. package/storybook-static/assets/CustomOptionButton-BWYYtI_M.js +1 -0
  184. package/storybook-static/assets/{DateInput-xKfdW4xy.js → DateInput-B0xrPmg8.js} +1 -1
  185. package/storybook-static/assets/{DateInput-Clx9NJfT.js → DateInput-CRNvZef4.js} +1 -1
  186. package/storybook-static/assets/{DateInput.stories-VgCgoB2M.js → DateInput.stories-CrMRn_FQ.js} +1 -1
  187. package/storybook-static/assets/{DateRangePresetSelect-PvUDbbbE.js → DateRangePresetSelect-B96SINg3.js} +1 -1
  188. package/storybook-static/assets/{DateRangePresetSelect-CalAPOdY.js → DateRangePresetSelect-BGdt7rCz.js} +1 -1
  189. package/storybook-static/assets/DateRangePresetSelect.stories-B20eqYGr.js +19 -0
  190. package/storybook-static/assets/{Detail-Bls5nJys.js → Detail-CUNNfYz6.js} +1 -1
  191. package/storybook-static/assets/{Detail.stories-BS7JQ0sv.js → Detail.stories-DPp7roXv.js} +1 -1
  192. package/storybook-static/assets/{Dialog-DzFUQBt1.js → Dialog-B7eTlIWU.js} +1 -1
  193. package/storybook-static/assets/{Dialog-T74XF-bA.js → Dialog-DdONtJUb.js} +1 -1
  194. package/storybook-static/assets/{Dialog.stories-DwAyLLWR.js → Dialog.stories-CF6Q0tJ-.js} +1 -1
  195. package/storybook-static/assets/{Disclosure-DukYcfZ8.js → Disclosure-BI4KMSDK.js} +1 -1
  196. package/storybook-static/assets/{Disclosure.stories-BwbQhJLc.js → Disclosure.stories-BaTneJlv.js} +1 -1
  197. package/storybook-static/assets/{DisclosureGroup-C2j4-sfq.js → DisclosureGroup-Dx2-SHha.js} +1 -1
  198. package/storybook-static/assets/{DocsRenderer-JROSPFPF-aOEkU93H.js → DocsRenderer-JROSPFPF-mMjwDILp.js} +1 -1
  199. package/storybook-static/assets/{DropZone-DmXfqTac.js → DropZone-BizNinsQ.js} +1 -1
  200. package/storybook-static/assets/{DropZone-CX6FCvI6.js → DropZone-D93x3skJ.js} +1 -1
  201. package/storybook-static/assets/{DropZone.stories-CWUYTr9y.js → DropZone.stories-Dn72HUME.js} +1 -1
  202. package/storybook-static/assets/{DropdownMenu-9_GcY2uX.js → DropdownMenu-Bpjyamf_.js} +1 -1
  203. package/storybook-static/assets/{ExpandableActionPanel-nt3MqFv9.js → ExpandableActionPanel-Q4xXTfPB.js} +1 -1
  204. package/storybook-static/assets/{ExpandableActionPanel.stories-olHfqsW_.js → ExpandableActionPanel.stories-Dr40xqrz.js} +1 -1
  205. package/storybook-static/assets/{Flex-RLn0K4Ow.js → Flex-Qj0CmbNT.js} +1 -1
  206. package/storybook-static/assets/{Flex.stories-DQDMHquA.js → Flex.stories-CMB4ZAgy.js} +1 -1
  207. package/storybook-static/assets/{FloatingPopover-C3zX8ub-.js → FloatingPopover-jH57LEGX.js} +1 -1
  208. package/storybook-static/assets/{FormattedTableCell-B4pCfcrR.js → FormattedTableCell-vbqJ5gib.js} +1 -1
  209. package/storybook-static/assets/{Grid-tCvypgeR.js → Grid-AZBb1w5n.js} +1 -1
  210. package/storybook-static/assets/{Grid.stories-B5vW8L5j.js → Grid.stories-BaeYzAP-.js} +1 -1
  211. package/storybook-static/assets/{ImageCropper.stories-ZYBRPrX5.js → ImageCropper.stories-Da9IaNLO.js} +1 -1
  212. package/storybook-static/assets/{ImageRenderer-BNfa_o00.js → ImageRenderer-CNFqjqvE.js} +1 -1
  213. package/storybook-static/assets/{ImageRenderer.stories-Dpnwae9g.js → ImageRenderer.stories-8pPWqLHi.js} +1 -1
  214. package/storybook-static/assets/{ImageView.stories-B0AdmHu8.js → ImageView.stories-P0OBwcHv.js} +1 -1
  215. package/storybook-static/assets/{ImageViewer.stories-BjS-HrS8.js → ImageViewer.stories-A8gBQaCk.js} +2 -2
  216. package/storybook-static/assets/{ImageViewerRuntime-CUjlGhkL.js → ImageViewerRuntime-C2LHl9xa.js} +1 -1
  217. package/storybook-static/assets/{Input-BfxuEl-U.js → Input-LI8Ij2VV.js} +1 -1
  218. package/storybook-static/assets/{Input-BZvdvztj.js → Input-X5FLaExp.js} +1 -1
  219. package/storybook-static/assets/{Input.stories-CRyRl5-A.js → Input.stories-r4hSNMWI.js} +1 -1
  220. package/storybook-static/assets/{InputDateTime-BoHXIqs0.js → InputDateTime-B9IQGLxQ.js} +1 -1
  221. package/storybook-static/assets/{InputDateTime.stories-4TKy1puk.js → InputDateTime.stories-t-IFoW6A.js} +1 -1
  222. package/storybook-static/assets/{InputFile-9rfT18Tp.js → InputFile-YhjpMsir.js} +1 -1
  223. package/storybook-static/assets/{InputFile-cHVEMDCa.js → InputFile-yUYuRSfc.js} +1 -1
  224. package/storybook-static/assets/{InputFile.stories-Dfz4dP6-.js → InputFile.stories-DvMCOp6p.js} +1 -1
  225. package/storybook-static/assets/{InputFiles-B7hAFUUH.js → InputFiles-Dq9QZAWM.js} +1 -1
  226. package/storybook-static/assets/{InputFiles-D-yaCNy7.js → InputFiles-b6Ne7Ph9.js} +1 -1
  227. package/storybook-static/assets/{InputFiles.stories-BuyS7aob.js → InputFiles.stories-Q7rdTg-e.js} +1 -1
  228. package/storybook-static/assets/{InputFilesList-AVN7l6tF.js → InputFilesList-u59R9lsq.js} +1 -1
  229. package/storybook-static/assets/{InputImage-B9XqXq0w.js → InputImage-BTap4i1_.js} +1 -1
  230. package/storybook-static/assets/{InputImage-HJDF6igx.js → InputImage-_b_bmfXz.js} +1 -1
  231. package/storybook-static/assets/{InputImage.stories-BV70MC-m.js → InputImage.stories-F08TWbxk.js} +1 -1
  232. package/storybook-static/assets/{InteractiveComponents-CHY0kEDq.js → InteractiveComponents-CpJd5e3W.js} +1 -1
  233. package/storybook-static/assets/{InteractiveComponents.stories-D6arBycE.js → InteractiveComponents.stories-CM9yNzcF.js} +1 -1
  234. package/storybook-static/assets/LayoutPicker-8Q1MpMYR.js +376 -0
  235. package/storybook-static/assets/LayoutPicker-BY4-fUQa.css +1 -0
  236. package/storybook-static/assets/{LayoutPicker-SjhPWivQ.js → LayoutPicker-vwoAIGrk.js} +1 -1
  237. package/storybook-static/assets/{LayoutPicker.stories-CbEGkcsV.js → LayoutPicker.stories-BW8B8i8S.js} +1 -1
  238. package/storybook-static/assets/{Listbox-C3sJ_hRZ.js → Listbox-Cf_DMAva.js} +1 -1
  239. package/storybook-static/assets/Listbox-D7r9R1Of.js +1 -0
  240. package/storybook-static/assets/{Listbox.stories-CVdUd7oX.js → Listbox.stories-CxYyfkFU.js} +1 -1
  241. package/storybook-static/assets/{Modal-0PfZiQTc.js → Modal-BaprwyBJ.js} +1 -1
  242. package/storybook-static/assets/{Modal.stories-CVsQnsPB.js → Modal.stories-Rn_bgNdm.js} +1 -1
  243. package/storybook-static/assets/{ModalManagerProvider-CtrgehPS.js → ModalManagerProvider-BoJChAx2.js} +1 -1
  244. package/storybook-static/assets/MultiSelect-CILXhKyj.js +2 -0
  245. package/storybook-static/assets/{MultiSelect-C4uTzWsY.js → MultiSelect-CU7avopN.js} +1 -1
  246. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +1 -0
  247. package/storybook-static/assets/{MultiSelect.stories-BbRKK0p6.js → MultiSelect.stories-DFtFExi3.js} +1 -1
  248. package/storybook-static/assets/{NoData-FOwrLS3D.js → NoData-u6T3MI60.js} +1 -1
  249. package/storybook-static/assets/{NotificationsHost-CvUyoPxm.js → NotificationsHost-63IJh9Kr.js} +1 -1
  250. package/storybook-static/assets/{NotificationsHost.stories-CxAmUl63.js → NotificationsHost.stories-CRKVOYWB.js} +1 -1
  251. package/storybook-static/assets/{ODataMultiSelect-MtLFqFdV.js → ODataMultiSelect-tfqbyVgv.js} +1 -1
  252. package/storybook-static/assets/ODataMultiSelect.stories-DuC1gg-Q.js +126 -0
  253. package/storybook-static/assets/{ODataSelect-C2mNXOs7.js → ODataSelect-0ax3OIQy.js} +1 -1
  254. package/storybook-static/assets/ODataSelect.stories-aGZEvBIO.js +148 -0
  255. package/storybook-static/assets/{ODataTreeMultiSelect-DKuQpEHJ.js → ODataTreeMultiSelect-C4ZN4DaL.js} +1 -1
  256. package/storybook-static/assets/ODataTreeMultiSelect.stories-BThoYYsE.js +74 -0
  257. package/storybook-static/assets/{ODataTreeSelect-iOpfYI9F.js → ODataTreeSelect-DvrUSJsi.js} +1 -1
  258. package/storybook-static/assets/ODataTreeSelect.stories-B9582VZ6.js +46 -0
  259. package/storybook-static/assets/{OneStepScroller-BMbG0e_H.js → OneStepScroller-BoIh7KcH.js} +1 -1
  260. package/storybook-static/assets/Option-CJBK9i2B.css +1 -0
  261. package/storybook-static/assets/Option-DqmRqyOQ.js +10 -0
  262. package/storybook-static/assets/OptionButton-CQVIwI2y.js +1 -0
  263. package/storybook-static/assets/{PeriodSelect-Cs81vXtY.js → PeriodSelect-CdTxjZC3.js} +1 -1
  264. package/storybook-static/assets/{PeriodSelect-MupKtCZ2.js → PeriodSelect-Dw3EsMrL.js} +1 -1
  265. package/storybook-static/assets/{PeriodSelect.stories-B2FDkAfy.js → PeriodSelect.stories-DYinImmY.js} +1 -1
  266. package/storybook-static/assets/PickerTriggerActions-B0z5qfFF.js +1 -0
  267. package/storybook-static/assets/{Popover-UdAXxj_x.js → Popover-0xwjVe6K.js} +1 -1
  268. package/storybook-static/assets/{Popover-dlyvIeXz.js → Popover-ijEoQcUp.js} +1 -1
  269. package/storybook-static/assets/{Popover.stories-CO2yrZc-.js → Popover.stories-CMNjjwu5.js} +1 -1
  270. package/storybook-static/assets/{PresetRangeDateInput-Bbgpqy-r.js → PresetRangeDateInput-CdvdO4mf.js} +1 -1
  271. package/storybook-static/assets/{PresetRangeDateInput-TTU2ggx2.js → PresetRangeDateInput-DysqM_NV.js} +1 -1
  272. package/storybook-static/assets/{PresetRangeDateInput.stories-DUMiMPe7.js → PresetRangeDateInput.stories-nVojLSRm.js} +1 -1
  273. package/storybook-static/assets/{PresetSelect-DmdRTAVo.js → PresetSelect-mjBaMbt6.js} +1 -1
  274. package/storybook-static/assets/{RadioButton-CsZACDyv.js → RadioButton-CVGKMhGV.js} +1 -1
  275. package/storybook-static/assets/{RadioButton-CMxc7Jvy.js → RadioButton-jB744vXz.js} +1 -1
  276. package/storybook-static/assets/{RadioButton.stories-Aav_OAcv.js → RadioButton.stories-CJsU4D3L.js} +1 -1
  277. package/storybook-static/assets/{RadioGroup-C34FTwLU.js → RadioGroup-BGF3aoOc.js} +1 -1
  278. package/storybook-static/assets/{RadioGroup-U2EEs5od.js → RadioGroup-DbqvBGw3.js} +1 -1
  279. package/storybook-static/assets/{RadioGroup.stories-wL2AX-Yg.js → RadioGroup.stories-Bkny6-9V.js} +1 -1
  280. package/storybook-static/assets/{Scrollable-DUOHq_cZ.js → Scrollable-DZp3ByoS.js} +1 -1
  281. package/storybook-static/assets/{Select-CaoNBi5X.js → Select-BJcT2K35.js} +1 -1
  282. package/storybook-static/assets/Select-CcuhYAW8.js +12 -0
  283. package/storybook-static/assets/{Select.stories-Db-PRiir.js → Select.stories-BowB7kdj.js} +1 -1
  284. package/storybook-static/assets/{SerializableSelect-HSwx4Kn2.js → SerializableSelect-DRczsfxk.js} +1 -1
  285. package/storybook-static/assets/{SerializableSelect.stories-DdHotcES.js → SerializableSelect.stories-BcYeXF_R.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput-MYajYmv1.js → SingleDateTimeInput-HDsmYVP2.js} +1 -1
  287. package/storybook-static/assets/{SingleDateTimeInput-CQVoGA2w.js → SingleDateTimeInput-pHA1ci5g.js} +1 -1
  288. package/storybook-static/assets/{SingleDateTimeInput.stories-BbUphbSp.js → SingleDateTimeInput.stories-KUrLpnh_.js} +1 -1
  289. package/storybook-static/assets/{Slider-BrQ4ksxF.js → Slider-DaJGOEf-.js} +1 -1
  290. package/storybook-static/assets/{Slider-s7ST-3RJ.js → Slider-XnQRU_In.js} +1 -1
  291. package/storybook-static/assets/{Slider.stories-w50A1paF.js → Slider.stories-ByS4Bo7v.js} +1 -1
  292. package/storybook-static/assets/{SliderInput-1_Egcch8.js → SliderInput-BjyCba0D.js} +1 -1
  293. package/storybook-static/assets/{SliderInput-Cnm3KcyF.js → SliderInput-Dan5pyQh.js} +1 -1
  294. package/storybook-static/assets/{SliderInput.stories-DLBBUxKz.js → SliderInput.stories-d4F5pqct.js} +1 -1
  295. package/storybook-static/assets/{Sortable-B0TvDh0j.js → Sortable-Bdzx4D0R.js} +1 -1
  296. package/storybook-static/assets/{Sortable.stories-B31jbM4x.js → Sortable.stories-BIhgYQ1m.js} +1 -1
  297. package/storybook-static/assets/{Splitter-D4B3BVbz.js → Splitter-B3hepEkw.js} +1 -1
  298. package/storybook-static/assets/{Splitter.stories-szzG_E9V.js → Splitter.stories-L6R3ImTr.js} +1 -1
  299. package/storybook-static/assets/{StateSelect-BNneTJ8H.js → StateSelect-C4oHSG2B.js} +1 -1
  300. package/storybook-static/assets/{StateSelect-Ceh8_VLn.js → StateSelect-CylM2NVF.js} +3 -3
  301. package/storybook-static/assets/{StateSelect.stories-CJxr-Qm_.js → StateSelect.stories-Djw_nuLJ.js} +1 -1
  302. package/storybook-static/assets/{StringToggle.stories-Cwdk9yWF.js → StringToggle.stories-pqZzNPRQ.js} +1 -1
  303. package/storybook-static/assets/{Switch-uGSRbqVn.js → Switch-BK5DQYpV.js} +1 -1
  304. package/storybook-static/assets/{Switch-f5NHm5hJ.js → Switch-BkHwzkeD.js} +1 -1
  305. package/storybook-static/assets/{Switch.stories-HaYKntQH.js → Switch.stories-BG1MHajd.js} +1 -1
  306. package/storybook-static/assets/{Table-DxQuA1Dc.js → Table-BQPiMPmF.js} +1 -1
  307. package/storybook-static/assets/{Table.stories-SMhKCmIb.js → Table.stories-b5gmGDu_.js} +1 -1
  308. package/storybook-static/assets/{Tabs-BDX7aIIu.js → Tabs-B13rDpZt.js} +1 -1
  309. package/storybook-static/assets/{Tabs.stories-CjlYBZ8E.js → Tabs.stories-D0sg-2Nx.js} +1 -1
  310. package/storybook-static/assets/{TabsBox-t8UA3Ghh.js → TabsBox-DZwTlYNa.js} +1 -1
  311. package/storybook-static/assets/{TagInput-YHV8sAGl.js → TagInput-RYhIr0kM.js} +1 -1
  312. package/storybook-static/assets/{TagInput.stories-VKkEKC9A.js → TagInput.stories-7iTWdjmj.js} +1 -1
  313. package/storybook-static/assets/{Text-BQ5vHbkZ.js → Text-5-YdhIB8.js} +1 -1
  314. package/storybook-static/assets/{Textarea-ogSh20Tb.js → Textarea-0L2M-xFG.js} +1 -1
  315. package/storybook-static/assets/{Textarea-BY_dHgap.js → Textarea-pQp1ju2W.js} +1 -1
  316. package/storybook-static/assets/{Textarea.stories-BixCwInt.js → Textarea.stories-pJFWbXcf.js} +1 -1
  317. package/storybook-static/assets/{TimePanel-CgR59Au6.js → TimePanel-DlfW-4Rv.js} +1 -1
  318. package/storybook-static/assets/{TimePanel.stories-D3uV3m77.js → TimePanel.stories-DpXHb66k.js} +1 -1
  319. package/storybook-static/assets/{Toggle-Cit9qQ37.js → Toggle-CwgQ0NbP.js} +1 -1
  320. package/storybook-static/assets/{Toggle-BbYcoBEJ.js → Toggle-Q04RQyAN.js} +1 -1
  321. package/storybook-static/assets/{Toggle.stories-uPLdFwPH.js → Toggle.stories-DOYwhorJ.js} +1 -1
  322. package/storybook-static/assets/{TreeMultiSelect-RMw3Sgov.js → TreeMultiSelect--Z9jdUna.js} +1 -1
  323. package/storybook-static/assets/TreeMultiSelect-CcBXMmXH.js +1 -0
  324. package/storybook-static/assets/{TreeMultiSelect.stories-eVCsLnck.js → TreeMultiSelect.stories-CSlNe1qA.js} +1 -1
  325. package/storybook-static/assets/TreePickerBase-B6DED6Hz.css +1 -0
  326. package/storybook-static/assets/TreePickerBase-BBHbtNFV.js +34 -0
  327. package/storybook-static/assets/{TreeSelect-MAH_yWl9.js → TreeSelect-BMcChauO.js} +1 -1
  328. package/storybook-static/assets/{TreeSelect-CAWkriLu.js → TreeSelect-DMC-rviy.js} +1 -1
  329. package/storybook-static/assets/TreeSelect.stories-68LYkP9A.js +32 -0
  330. package/storybook-static/assets/{TreeTable-0VRrM8GW.js → TreeTable-DNArfw0m.js} +1 -1
  331. package/storybook-static/assets/{TreeTable.stories-CNS5t3Hd.js → TreeTable.stories-GybZTfJf.js} +1 -1
  332. package/storybook-static/assets/{async-D1pthPMH.js → async-BpUNPciD.js} +1 -1
  333. package/storybook-static/assets/{blocks-DGyM6J7r.js → blocks-CdL0FBl-.js} +3 -3
  334. package/storybook-static/assets/{browserAndReact-nVftiNpl.js → browserAndReact-DJiCma8q.js} +1 -1
  335. package/storybook-static/assets/{check-CiBhUcLr.js → check-Bff_8tRJ.js} +1 -1
  336. package/storybook-static/assets/{chevron-down-B5rz2XNJ.js → chevron-down-D9beWxJi.js} +1 -1
  337. package/storybook-static/assets/{chevron-left-CzhF1KUP.js → chevron-left-0YewhZTT.js} +1 -1
  338. package/storybook-static/assets/{chevron-right-B0yOnjFl.js → chevron-right-_-7FrDV5.js} +1 -1
  339. package/storybook-static/assets/{chunk-W22LQPXL-8PHxgOk1.js → chunk-W22LQPXL-O2d-a7Cd.js} +1 -1
  340. package/storybook-static/assets/{circle-alert-BoM4TTd8.js → circle-alert-Ch96LToC.js} +1 -1
  341. package/storybook-static/assets/{circle-check-Dehe_1cN.js → circle-check-a4WDWsNJ.js} +1 -1
  342. package/storybook-static/assets/{components-pGFA2Z8i.js → components-DdhcMCr2.js} +3 -3
  343. package/storybook-static/assets/{contextMenu-CVWcJjzy.js → contextMenu-BGjkv4UB.js} +1 -1
  344. package/storybook-static/assets/defaultRenderers-V5HI39JH.js +1 -0
  345. package/storybook-static/assets/{download-OLJFBMAt.js → download-CX1IvM3C.js} +1 -1
  346. package/storybook-static/assets/{filesAndExcel-BA3jxJBm.js → filesAndExcel-dK5pwBOD.js} +1 -1
  347. package/storybook-static/assets/{floating-ui.react-CdJawQTm.js → floating-ui.react-CxLdvcYS.js} +1 -1
  348. package/storybook-static/assets/{formatters-wR_e2lQa.js → formatters-j9sx7DvH.js} +1 -1
  349. package/storybook-static/assets/{formatters-runtime-C4C-phHX.js → formatters-runtime-CHMYu4ZC.js} +1 -1
  350. package/storybook-static/assets/{foundationLib-Bz2ZS9e8.js → foundationLib-C_06ZSSf.js} +1 -1
  351. package/storybook-static/assets/{hooks-B3pvBii1.js → hooks-Bykafh9C.js} +1 -1
  352. package/storybook-static/assets/{iframe-Baz8D-0E.css → iframe-BIt4o49Q.css} +1 -1
  353. package/storybook-static/assets/{iframe-CE1ro1AE.js → iframe-CIzkWNwp.js} +3 -3
  354. package/storybook-static/assets/iframe-sQ6b5u6U.js +1 -0
  355. package/storybook-static/assets/{info-D18FxvY-.js → info-DmoUv3Za.js} +1 -1
  356. package/storybook-static/assets/{odata-BBdp3RzK.js → odata-BOmzCjsk.js} +1 -1
  357. package/storybook-static/assets/{odataAndTables-CcXirND0.js → odataAndTables-CCmlxLmc.js} +1 -1
  358. package/storybook-static/assets/{odataFetchFn-vrHbdkDn.js → odataFetchFn-CTQe0sIR.js} +1 -1
  359. package/storybook-static/assets/{odataStoryFixtures-BPO4gqpN.js → odataStoryFixtures-BSZ-qA-M.js} +2 -2
  360. package/storybook-static/assets/{persisted-1Sxmb7Az.js → persisted--WJ7KKPs.js} +1 -1
  361. package/storybook-static/assets/{pureUtilities-CvNXMzzV.js → pureUtilities-GyB4PF6P.js} +1 -1
  362. package/storybook-static/assets/{react-B2hhruMd.js → react-BBjpR4Fr.js} +1 -1
  363. package/storybook-static/assets/{refresh-cw-pmQ0tFtI.js → refresh-cw-Bc5fTdGR.js} +1 -1
  364. package/storybook-static/assets/{runtimeAndState-DV7ilYb6.js → runtimeAndState-B2HA42QC.js} +1 -1
  365. package/storybook-static/assets/{settings-2-BEyMy2Fq.js → settings-2-Cm9uvgs-.js} +1 -1
  366. package/storybook-static/assets/{sortable-BNF14v_A.js → sortable-U9GPAzJm.js} +1 -1
  367. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-CaaXbF-I.js → syntaxhighlighter-T5IQBZDB-Do8Zvv4y.js} +1 -1
  368. package/storybook-static/assets/{trash-2-CQnHnUJa.js → trash-2-D6H0PpPX.js} +1 -1
  369. package/storybook-static/assets/{triangle-alert-DSpoU8D0.js → triangle-alert-5r13MQCo.js} +1 -1
  370. package/storybook-static/assets/{ui-BMhMvV6y.css → ui-CatTcSJL.css} +1 -1
  371. package/storybook-static/assets/ui.module-D4CuGr8r.js +1 -0
  372. package/storybook-static/assets/{uiClasses-DiXn3Hc-.js → uiClasses-CVGbL980.js} +1 -1
  373. package/storybook-static/assets/{useODataSelectBase-Czwwb448.js → useODataSelectBase-bY7vnHqq.js} +1 -1
  374. package/storybook-static/assets/{useODataTreeData-CnsLoUDj.js → useODataTreeData-Dsp1d8h5.js} +1 -1
  375. package/storybook-static/assets/usePickerQuery-BfayEntP.js +1 -0
  376. package/storybook-static/assets/usePickerTriggerController-B1Mub3-v.js +6 -0
  377. package/storybook-static/assets/{x-DRm1wyYI.js → x-DpV1OV1-.js} +1 -1
  378. package/storybook-static/iframe.html +3 -3
  379. package/storybook-static/project.json +1 -1
  380. package/dist/chunks/context-menu-6nJkPmKV.js +0 -535
  381. package/dist/chunks/context-menu-6nJkPmKV.js.map +0 -1
  382. package/dist/chunks/multi-select-D5b3Gxsv.js +0 -538
  383. package/dist/chunks/multi-select-D5b3Gxsv.js.map +0 -1
  384. package/dist/chunks/picker-CrRdwdA5.js +0 -340
  385. package/dist/chunks/picker-CrRdwdA5.js.map +0 -1
  386. package/dist/chunks/select-D3EnRya6.js +0 -355
  387. package/dist/chunks/select-D3EnRya6.js.map +0 -1
  388. package/dist/chunks/ui.module-DHVTOqZ0.js.map +0 -1
  389. package/dist/chunks/useODataSelectBase-Cc79kBNk.js +0 -125
  390. package/dist/chunks/useODataSelectBase-Cc79kBNk.js.map +0 -1
  391. package/dist/multi-select/ui/MultiSelectOption.d.ts +0 -14
  392. package/dist/multi-select/ui/MultiSelectOption.d.ts.map +0 -1
  393. package/dist/multi-select/ui/MultiSelectToken.d.ts +0 -9
  394. package/dist/multi-select/ui/MultiSelectToken.d.ts.map +0 -1
  395. package/storybook-static/assets/CheckBox-BnO90VKX.css +0 -1
  396. package/storybook-static/assets/ContextMenu-BgzIzwzM.css +0 -1
  397. package/storybook-static/assets/ContextMenu-CXsCt4Ca.js +0 -1
  398. package/storybook-static/assets/ContextMenu.stories-BugHcFL7.js +0 -37
  399. package/storybook-static/assets/DateRangePresetSelect.stories-DrLZercZ.js +0 -19
  400. package/storybook-static/assets/LayoutPicker-BGk1niU3.js +0 -376
  401. package/storybook-static/assets/LayoutPicker-DudPIiwb.css +0 -1
  402. package/storybook-static/assets/Listbox-D8KrJkpi.js +0 -1
  403. package/storybook-static/assets/MultiSelect-BmMO3Np9.js +0 -2
  404. package/storybook-static/assets/ODataMultiSelect.stories-BqdZ_SmQ.js +0 -139
  405. package/storybook-static/assets/ODataSelect.stories-Ch9pJFtV.js +0 -161
  406. package/storybook-static/assets/ODataTreeMultiSelect.stories-rhaGxNb0.js +0 -87
  407. package/storybook-static/assets/ODataTreeSelect.stories-DO1bOEQc.js +0 -55
  408. package/storybook-static/assets/PickerSelectionToolbar-DkWserZQ.js +0 -2
  409. package/storybook-static/assets/PickerTriggerActions-BOhoXiBt.js +0 -1
  410. package/storybook-static/assets/Select-CO4ZHP9h.css +0 -1
  411. package/storybook-static/assets/Select-JY35jdqV.js +0 -12
  412. package/storybook-static/assets/SelectOptionContent-BcvkiM5d.js +0 -1
  413. package/storybook-static/assets/TreeMultiSelect-CYvFBp49.js +0 -1
  414. package/storybook-static/assets/TreePickerBase-CU303uk2.js +0 -24
  415. package/storybook-static/assets/TreePickerBase-hyMFakp7.css +0 -1
  416. package/storybook-static/assets/TreeSelect.stories-CIfGlEJN.js +0 -40
  417. package/storybook-static/assets/defaultRenderers-B7PDT-nL.css +0 -1
  418. package/storybook-static/assets/defaultRenderers-DvwV_t0j.js +0 -1
  419. package/storybook-static/assets/iframe-D3TD9_FU.js +0 -1
  420. package/storybook-static/assets/ui.module-CiLQZm_L.js +0 -1
  421. package/storybook-static/assets/usePickerQuery-DSDKSoxY.js +0 -1
  422. package/storybook-static/assets/usePickerTriggerController-CTVRGuZE.js +0 -1
  423. package/storybook-static/assets/usePickerTriggerController-DzBkX15M.css +0 -1
  424. /package/storybook-static/assets/{CheckBox.module-BNQm6HXI.js → CheckBox.module-CoYygdZx.js} +0 -0
@@ -0,0 +1,363 @@
1
+ import { t as e } from "./ui.module-BsDio9A3.js";
2
+ import { HighlightText as t } from "../text/index.js";
3
+ import { u as n } from "./input-d08WN5FV.js";
4
+ import { CustomOptionButton as r, Option as i, OptionButton as a, OptionCode as o, OptionText as s } from "../option/index.js";
5
+ import { a as c, f as l, i as u, m as d, r as f, s as p, t as m, u as ee, v as te } from "./picker-0I1yMKIY.js";
6
+ import { t as h } from "./odata-dependent-C_DCbKY2.js";
7
+ import { n as g } from "./useODataSelectBase-DR4PrY1j.js";
8
+ import { Fragment as ne, useCallback as _, useMemo as v, useRef as re, useState as ie } from "react";
9
+ import { useODataCollectionModel as y } from "@ryuzaki13/react-foundation-api/odata";
10
+ import { cn as b } from "@ryuzaki13/react-foundation-lib/utils";
11
+ import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
12
+ import { CheckIcon as ae } from "lucide-react";
13
+ //#region src/select/lib/getOptionSearchText.ts
14
+ function oe({ option: e, getOptionLabel: t, getOptionCode: n, getOptionGroup: r }) {
15
+ return [
16
+ d(t(e)),
17
+ d(n?.(e)),
18
+ d(r?.(e)?.label)
19
+ ].filter((e) => !!e).join(" ").toLowerCase();
20
+ }
21
+ function w(e, t, n) {
22
+ return e.find((e) => e.value === t) ?? n;
23
+ }
24
+ //#endregion
25
+ //#region src/select/model/useODataSelect.ts
26
+ function T({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
27
+ let o = g({
28
+ odata: e,
29
+ segment: t,
30
+ model: n,
31
+ value: r ? [r] : [],
32
+ dependencies: i
33
+ }), s = o.selectedItems[0], c = v(() => s ? [s, ...o.filteredItems] : o.filteredItems, [o.filteredItems, s]), l = (e) => {
34
+ a(e?.[o.selectionKey]);
35
+ };
36
+ return {
37
+ ...o,
38
+ selectedItem: s,
39
+ options: c,
40
+ handleChange: l
41
+ };
42
+ }
43
+ //#endregion
44
+ //#region src/select/lib/createSelectOptionSections.ts
45
+ function se(e, t) {
46
+ let n = [];
47
+ return e.forEach((e, r) => {
48
+ let i = t(e), a = n.at(-1), o = a?.group?.key === i?.key;
49
+ if (a && o) {
50
+ a.items.push({
51
+ option: e,
52
+ index: r
53
+ });
54
+ return;
55
+ }
56
+ n.push({
57
+ group: i,
58
+ items: [{
59
+ option: e,
60
+ index: r
61
+ }]
62
+ });
63
+ }), n;
64
+ }
65
+ //#endregion
66
+ //#region src/select/Select.tsx
67
+ function E(t) {
68
+ let { label: n, description: o, disabled: s, placeholder: h, size: g, options: y, value: w, onChange: T, getOptionKey: E, getOptionLabel: D, getOptionCode: O, getOptionSearchText: k, getOptionDisabled: A, getOptionAriaLabel: j, getOptionGroup: M, getOptionClassName: N, renderOption: P, renderValue: F, className: ce, buttonClassName: le, optionsClassName: ue, optionsMaxWidth: de, optionsContentClassName: fe, searchable: I = !1, defaultFilter: pe = !0, query: me, defaultQuery: he, onQuery: ge, renderPopupHeader: _e, emptyState: ve, isLoading: ye, errorState: be, placement: xe = "bottom-start", clearable: Se = !1 } = t, L = T, R = re(null), [z, Ce] = ie(!1), B = I ? "search-single" : "display", V = w === void 0 ? void 0 : E(w), H = V === void 0 ? void 0 : y.find((e) => E(e) === V) ?? w, { query: U, setQuery: W, resetQueryOnClose: we } = f({
69
+ query: me,
70
+ defaultQuery: he,
71
+ onQuery: ge,
72
+ triggerMode: B
73
+ }), Te = (e) => {
74
+ z && !e && we && W(""), Ce(e);
75
+ }, Ee = _((e) => k?.(e) ?? oe({
76
+ option: e,
77
+ getOptionLabel: D,
78
+ getOptionCode: O,
79
+ getOptionGroup: M
80
+ }), [
81
+ k,
82
+ O,
83
+ M,
84
+ D
85
+ ]), G = c({
86
+ options: y,
87
+ query: U,
88
+ enabled: I && pe,
89
+ getSearchText: Ee
90
+ }), K = v(() => M ? se(G, M) : void 0, [M, G]), De = V === void 0 ? -1 : G.findIndex((e) => E(e) === V), { activeIndex: Oe, context: ke, floatingStyles: Ae, getFloatingProps: je, setReference: Me, setFloating: Ne, setOptionRef: Pe, close: q, openList: Fe, toggleOpen: Ie, selectOption: J, selectActiveOption: Le, handleReferenceKeyDown: Re, handleFloatingKeyDown: ze, getOptionId: Be, getActiveOptionId: Y } = u({
91
+ options: G,
92
+ selectedIndex: De,
93
+ open: z,
94
+ onOpenChange: Te,
95
+ getOptionDisabled: A,
96
+ onSelect: L,
97
+ disabled: s,
98
+ placement: xe,
99
+ triggerMode: B
100
+ }), X = G.length > 0, Z = H === void 0 ? void 0 : D(H), Q = H === void 0 ? void 0 : F ? F(H) : Z, Ve = d(Z), He = H === void 0 ? void 0 : d(O?.(H)), Ue = d(Q) ?? Ve ?? He ?? (V === void 0 ? "" : String(V)), We = I && (z || U.length > 0), Ge = We ? U : H === void 0 ? "" : Ue, $ = m({
101
+ mode: B,
102
+ open: z,
103
+ currentQuery: U,
104
+ hasDisplayValue: H !== void 0,
105
+ inputRef: R,
106
+ setQuery: W,
107
+ openList: Fe,
108
+ close: q,
109
+ toggleOpen: Ie
110
+ }), Ke = (e) => {
111
+ R.current = e;
112
+ }, qe = () => {
113
+ Se && L(void 0), W(""), q();
114
+ }, Je = (e, t, n) => {
115
+ let o = E(t), s = V !== void 0 && o === V, c = n === Oe, l = A?.(t) ?? !1, u = {
116
+ active: c,
117
+ selected: s,
118
+ disabled: l
119
+ };
120
+ return /* @__PURE__ */ S(i, {
121
+ id: Be(e, n),
122
+ ref: (e) => Pe(n, e),
123
+ role: "option",
124
+ "aria-selected": s,
125
+ "aria-disabled": l || void 0,
126
+ "aria-label": j?.(t),
127
+ active: c,
128
+ selected: s,
129
+ disabled: l,
130
+ className: N?.(t, u),
131
+ children: P ? /* @__PURE__ */ S(r, {
132
+ tabIndex: -1,
133
+ disabled: l,
134
+ onMouseDown: (e) => e.preventDefault(),
135
+ onClick: () => J(t),
136
+ children: P(t, u)
137
+ }) : /* @__PURE__ */ S(a, {
138
+ tabIndex: -1,
139
+ disabled: l,
140
+ icon: S(s ? ae : "span", {}),
141
+ text: D(t),
142
+ code: O?.(t),
143
+ onMouseDown: (e) => e.preventDefault(),
144
+ onClick: () => J(t)
145
+ })
146
+ }, o);
147
+ };
148
+ return /* @__PURE__ */ S(te, {
149
+ label: n,
150
+ description: o,
151
+ disabled: s,
152
+ size: g,
153
+ className: ce,
154
+ children: ({ controlId: t, labelId: r, describedBy: i }) => {
155
+ let a = `${t}-listbox`;
156
+ return /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(p, {
157
+ ref: Ke,
158
+ rootRef: Me,
159
+ id: t,
160
+ type: "text",
161
+ disabled: s,
162
+ readOnly: !I,
163
+ autoComplete: "off",
164
+ role: "combobox",
165
+ isLoading: ye,
166
+ open: z,
167
+ optionCount: y.length,
168
+ label: n,
169
+ placeholder: h,
170
+ value: Ge,
171
+ selectedValue: Q ?? Ue,
172
+ hasSelection: H !== void 0,
173
+ showSelectedValue: H !== void 0 && !We,
174
+ clearable: !!Se,
175
+ onClear: qe,
176
+ onToggleMouseDown: $.handleToggleMouseDown,
177
+ onToggleClick: $.handleToggleClick,
178
+ "aria-labelledby": r,
179
+ "aria-describedby": i,
180
+ "aria-haspopup": "listbox",
181
+ "aria-expanded": z,
182
+ "aria-controls": z ? a : void 0,
183
+ "aria-autocomplete": I ? "list" : "none",
184
+ "aria-activedescendant": z ? Y(a) : void 0,
185
+ inputClassName: b(le, "textOverflow"),
186
+ onChange: (e) => {
187
+ I && $.handleTriggerInputChange(e.target.value);
188
+ },
189
+ onClick: $.handleTriggerClick,
190
+ onFocus: (e) => {
191
+ $.handleTriggerFocus(e.currentTarget);
192
+ },
193
+ onKeyDown: (e) => {
194
+ Re(e), !e.defaultPrevented && $.handleTriggerKeyDown({
195
+ event: e,
196
+ onActivateWhenOpen: Le,
197
+ enableSpaceActivation: !I
198
+ });
199
+ }
200
+ }), /* @__PURE__ */ S(l, {
201
+ open: z,
202
+ context: ke,
203
+ floatingStyles: Ae,
204
+ listId: a,
205
+ labelId: r,
206
+ descriptionId: i,
207
+ activeOptionId: X ? Y(a) : void 0,
208
+ setFloating: Ne,
209
+ getFloatingProps: je,
210
+ onKeyDown: ze,
211
+ className: ue,
212
+ maxWidth: de,
213
+ toolbar: _e,
214
+ children: /* @__PURE__ */ S("div", {
215
+ className: b(fe, "h100 scrollable"),
216
+ children: X ? K ? K.map((t, n) => {
217
+ let r = t.group ? `${a}-group-${n}` : void 0, i = t.items.map(({ option: e, index: t }) => Je(a, e, t));
218
+ return t.group ? /* @__PURE__ */ C("div", {
219
+ role: "group",
220
+ "aria-labelledby": r,
221
+ children: [/* @__PURE__ */ S("div", {
222
+ id: r,
223
+ className: e.uiPopupGroupLabel,
224
+ children: t.group.label
225
+ }), i]
226
+ }, `group-${String(t.group.key)}-${n}`) : /* @__PURE__ */ S(ne, { children: i }, `options-${n}`);
227
+ }) : G.map((e, t) => Je(a, e, t)) : /* @__PURE__ */ S(ee, {
228
+ emptyState: ve,
229
+ errorState: be
230
+ })
231
+ })
232
+ })] });
233
+ }
234
+ });
235
+ }
236
+ //#endregion
237
+ //#region src/select/SelectOptionContent.tsx
238
+ function D({ label: e, code: n, highlight: r, labelClassName: i, codeClassName: a }) {
239
+ return /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(s, {
240
+ className: b("flexEllipsis", i),
241
+ children: /* @__PURE__ */ S(t, {
242
+ text: e,
243
+ highlight: r
244
+ })
245
+ }), n && /* @__PURE__ */ S(o, {
246
+ className: a,
247
+ children: /* @__PURE__ */ S(t, {
248
+ text: n,
249
+ highlight: r
250
+ })
251
+ })] });
252
+ }
253
+ //#endregion
254
+ //#region src/select/ODataSelect.tsx
255
+ function O(e, t, n) {
256
+ return e ? t || Object.keys(e).find((e) => e !== n) || n : t || n;
257
+ }
258
+ var k = ({ odata: e, segment: t, model: r, size: i, label: a, description: o, disabled: s, value: c, dependencies: l, onChange: u, clearable: d }) => {
259
+ let f = T({
260
+ odata: e,
261
+ segment: t,
262
+ model: y(r),
263
+ value: c,
264
+ dependencies: l,
265
+ onChange: u
266
+ });
267
+ if (f.isLoading) return /* @__PURE__ */ S(n, {
268
+ size: i,
269
+ label: a,
270
+ description: o
271
+ });
272
+ let p = t.hideCode ?? e.hideCode, m = O(f.selectedItem ?? f.options[0], f.textKey, f.codeKey);
273
+ return /* @__PURE__ */ S(E, {
274
+ size: i,
275
+ label: a,
276
+ description: o,
277
+ options: f.options,
278
+ value: f.selectedItem,
279
+ onChange: f.handleChange,
280
+ getOptionKey: (e) => e[f.codeKey],
281
+ getOptionLabel: (e) => e[m],
282
+ getOptionCode: p ? void 0 : (e) => e[f.codeKey],
283
+ getOptionAriaLabel: (e) => p || e[m] === e[f.codeKey] ? String(e[m]) : `${e[m]} ${e[f.codeKey]}`,
284
+ renderValue: (e) => /* @__PURE__ */ S(D, {
285
+ label: e[m],
286
+ code: p ? void 0 : e[f.codeKey]
287
+ }),
288
+ renderOption: (e) => /* @__PURE__ */ S(D, {
289
+ label: e[m],
290
+ code: p ? void 0 : e[f.codeKey],
291
+ highlight: f.debouncedQuery
292
+ }),
293
+ searchable: !0,
294
+ query: f.query,
295
+ onQuery: f.setQuery,
296
+ defaultFilter: !1,
297
+ disabled: s || f.isLoading,
298
+ placeholder: f.placeholder,
299
+ isLoading: f.isLoading,
300
+ errorState: f.isError ? "Ошибка загрузки" : void 0,
301
+ emptyState: !f.isLoading && !f.isError ? "Нет данных" : void 0,
302
+ clearable: d
303
+ });
304
+ };
305
+ //#endregion
306
+ //#region src/select/ODataDependentSegmentSelect.tsx
307
+ function A(e) {
308
+ let { item: t, disabled: n, label: r, description: i, size: a, width: o = 15, clearable: s } = e, c = h(e), { updateSegment: l } = c, u = `calc(${o}em + var(--width-add))`, d = _((e) => {
309
+ l(t.id, e === void 0 ? [] : [e]);
310
+ }, [t.id, l]);
311
+ return /* @__PURE__ */ S("div", {
312
+ style: {
313
+ maxWidth: u,
314
+ minWidth: u
315
+ },
316
+ children: /* @__PURE__ */ S(k, {
317
+ odata: t.odata,
318
+ segment: t.segment,
319
+ model: t.model,
320
+ dependencies: c.values,
321
+ value: c.values[t.id]?.[0],
322
+ onChange: d,
323
+ disabled: n || c.isSegmentDisabled(t.id),
324
+ label: r,
325
+ description: i,
326
+ size: a,
327
+ clearable: s
328
+ })
329
+ });
330
+ }
331
+ //#endregion
332
+ //#region src/select/SerializableSelect.tsx
333
+ function j(e, t) {
334
+ return String(e[t]);
335
+ }
336
+ function M(e, t, n) {
337
+ let r = e[t];
338
+ if (typeof r == "string" || typeof r == "number") return String(r);
339
+ let i = j(e, n);
340
+ return String(i);
341
+ }
342
+ function N({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u, className: d, clearable: f }) {
343
+ let p = o === void 0 ? void 0 : a.find((e) => j(e, c) === o);
344
+ return /* @__PURE__ */ S(E, {
345
+ label: e,
346
+ description: t,
347
+ disabled: n,
348
+ placeholder: r,
349
+ size: i,
350
+ options: a,
351
+ value: p,
352
+ onChange: (e) => s(e ? j(e, c) : void 0),
353
+ getOptionKey: (e) => j(e, c),
354
+ getOptionLabel: (e) => M(e, l, c),
355
+ getOptionCode: u ? (e) => j(e, c) : void 0,
356
+ className: d,
357
+ clearable: f
358
+ });
359
+ }
360
+ //#endregion
361
+ export { w as a, E as i, A as n, k as r, N as t };
362
+
363
+ //# sourceMappingURL=select-CUQ91FIc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-CUQ91FIc.js","names":[],"sources":["../../src/select/lib/getOptionSearchText.ts","../../src/select/model/useODataSelect.ts","../../src/select/lib/createSelectOptionSections.ts","../../src/select/Select.tsx","../../src/select/SelectOptionContent.tsx","../../src/select/ODataSelect.tsx","../../src/select/ODataDependentSegmentSelect.tsx","../../src/select/SerializableSelect.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { extractPickerTextContent } from \"../../picker\";\nimport { type SelectOptionGroup } from \"../SelectOptionGroup\";\n\nexport function getOptionSearchText<T extends InputType>({\n\toption,\n\tgetOptionLabel,\n\tgetOptionCode,\n\tgetOptionGroup\n}: {\n\toption: T;\n\tgetOptionLabel: (option: T) => ReactNode;\n\tgetOptionCode?: (option: T) => ReactNode;\n\tgetOptionGroup?: (option: T) => SelectOptionGroup | undefined;\n}) {\n\treturn [\n\t\textractPickerTextContent(getOptionLabel(option)),\n\t\textractPickerTextContent(getOptionCode?.(option)),\n\t\textractPickerTextContent(getOptionGroup?.(option)?.label)\n\t]\n\t\t.filter((part): part is string => Boolean(part))\n\t\t.join(\" \")\n\t\t.toLowerCase();\n}\n\n/** Находит selected option по value и возвращает fallback, если значение еще не нормализовано. */\nexport function resolveSelectedOption<TOption extends { value: string }>(\n\toptions: readonly TOption[],\n\tvalue: string,\n\tfallback: TOption\n): TOption {\n\treturn options.find((option) => option.value === value) ?? fallback;\n}\n","import { useMemo } from \"react\";\n\nimport { ODataCollectionModel, ODataSingleSelectProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { useODataSelectBase } from \"./useODataSelectBase\";\n\ninterface UseODataSelectOptions extends Omit<ODataSingleSelectProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (value: string | undefined) => void;\n}\n\nexport function useODataSelect({ odata, segment, model, value, dependencies, onChange }: UseODataSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue: value ? [value] : [],\n\t\tdependencies\n\t});\n\n\tconst selectedItem = odataModel.selectedItems[0];\n\tconst options = useMemo(() => {\n\t\tif (!selectedItem) {\n\t\t\treturn odataModel.filteredItems;\n\t\t}\n\n\t\treturn [selectedItem, ...odataModel.filteredItems];\n\t}, [odataModel.filteredItems, selectedItem]);\n\n\tconst handleChange = (item: CollectionItem | undefined) => {\n\t\tonChange(item?.[odataModel.selectionKey]);\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\tselectedItem,\n\t\toptions,\n\t\thandleChange\n\t};\n}\n","import { type SelectOptionGroup } from \"../SelectOptionGroup\";\n\nexport type SelectOptionSectionItem<TOption> = {\n\treadonly option: TOption;\n\treadonly index: number;\n};\n\nexport type SelectOptionSection<TOption> = {\n\treadonly group: SelectOptionGroup | undefined;\n\treadonly items: readonly SelectOptionSectionItem<TOption>[];\n};\n\n/**\n * Собирает соседние опции с одинаковым group key в секции, сохраняя исходные индексы для клавиатурной навигации listbox.\n */\nexport function createSelectOptionSections<TOption>(\n\toptions: readonly TOption[],\n\tgetOptionGroup: (option: TOption) => SelectOptionGroup | undefined\n): readonly SelectOptionSection<TOption>[] {\n\tconst sections: Array<{ group: SelectOptionGroup | undefined; items: SelectOptionSectionItem<TOption>[] }> = [];\n\n\toptions.forEach((option, index) => {\n\t\tconst group = getOptionGroup(option);\n\t\tconst currentSection = sections.at(-1);\n\t\tconst belongsToCurrentSection = currentSection?.group?.key === group?.key;\n\n\t\tif (currentSection && belongsToCurrentSection) {\n\t\t\tcurrentSection.items.push({ option, index });\n\t\t\treturn;\n\t\t}\n\n\t\tsections.push({\n\t\t\tgroup,\n\t\t\titems: [{ option, index }]\n\t\t});\n\t});\n\n\treturn sections;\n}\n","import { type CSSProperties, Fragment, ReactNode, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { CustomOptionButton, Option, OptionButton } from \"../option\";\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTrigger,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerTriggerController\n} from \"../picker\";\nimport { ChangeHandler, UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { getOptionSearchText } from \"./lib\";\nimport { createSelectOptionSections } from \"./lib/createSelectOptionSections\";\nimport { type SelectOptionGroup, type SelectOptionKey } from \"./SelectOptionGroup\";\n\nexport { type SelectOptionGroup, type SelectOptionKey } from \"./SelectOptionGroup\";\n\nexport type SelectOptionState = {\n\tactive: boolean;\n\tselected: boolean;\n\tdisabled: boolean;\n};\n\ntype SelectSharedProps<TOption extends InputType> = Omit<UiBaseProps<TOption, TOption | undefined>, \"onChange\"> & {\n\toptions: readonly TOption[];\n\tgetOptionKey: (option: TOption) => SelectOptionKey;\n\tgetOptionLabel: (option: TOption) => string;\n\tgetOptionCode?: (option: TOption) => string;\n\t/** Явный поисковый текст для опции с произвольным ReactNode-render. */\n\tgetOptionSearchText?: (option: TOption) => string | readonly string[];\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionAriaLabel?: (option: TOption) => string;\n\tgetOptionGroup?: (option: TOption) => SelectOptionGroup | undefined;\n\tgetOptionClassName?: (option: TOption, state: SelectOptionState) => string | undefined;\n\trenderOption?: (option: TOption, state: SelectOptionState) => ReactNode;\n\trenderValue?: (option: TOption) => ReactNode;\n\tclassName?: string;\n\tbuttonClassName?: string;\n\toptionsClassName?: string;\n\toptionsMaxWidth?: CSSProperties[\"maxWidth\"];\n\toptionsContentClassName?: string;\n\tsearchable?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\tisLoading?: boolean;\n\trenderPopupHeader?: ReactNode;\n\temptyState?: ReactNode;\n\terrorState?: ReactNode;\n\tplacement?: Placement;\n};\n\ntype SelectChangeValue<TOption extends InputType, TClearable extends boolean | undefined> = true extends TClearable\n\t? TOption | undefined\n\t: TOption;\n\nexport type SelectProps<TOption extends InputType, TClearable extends boolean | undefined = false> = SelectSharedProps<TOption> & {\n\tclearable?: TClearable;\n\tonChange: ChangeHandler<SelectChangeValue<TOption, TClearable>>;\n};\n\n/**\n * Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.\n */\nexport function Select<TOption extends InputType, TClearable extends boolean | undefined = false>(props: SelectProps<TOption, TClearable>) {\n\tconst {\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tplaceholder,\n\t\tsize,\n\t\toptions,\n\t\tvalue,\n\t\tonChange,\n\t\tgetOptionKey,\n\t\tgetOptionLabel,\n\t\tgetOptionCode,\n\t\tgetOptionSearchText: getExplicitOptionSearchText,\n\t\tgetOptionDisabled,\n\t\tgetOptionAriaLabel,\n\t\tgetOptionGroup,\n\t\tgetOptionClassName,\n\t\trenderOption,\n\t\trenderValue,\n\t\tclassName,\n\t\tbuttonClassName,\n\t\toptionsClassName,\n\t\toptionsMaxWidth,\n\t\toptionsContentClassName,\n\t\tsearchable = false,\n\t\tdefaultFilter = true,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\trenderPopupHeader,\n\t\temptyState,\n\t\tisLoading,\n\t\terrorState,\n\t\tplacement = \"bottom-start\",\n\t\tclearable = false\n\t} = props;\n\tconst emitChange = onChange as ChangeHandler<TOption | undefined>;\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = searchable ? \"search-single\" : \"display\";\n\tconst selectedKey = value === undefined ? undefined : getOptionKey(value);\n\tconst selectedOption =\n\t\tselectedKey === undefined ? undefined : (options.find((option) => getOptionKey(option) === selectedKey) ?? value);\n\tconst {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tresetQueryOnClose\n\t} = usePickerQuery({\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\ttriggerMode\n\t});\n\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\tif (open && !nextOpen && resetQueryOnClose) {\n\t\t\tsetQuery(\"\");\n\t\t}\n\n\t\tsetOpen(nextOpen);\n\t};\n\tconst getSearchText = useCallback(\n\t\t(option: TOption) =>\n\t\t\tgetExplicitOptionSearchText?.(option) ??\n\t\t\tgetOptionSearchText({\n\t\t\t\toption,\n\t\t\t\tgetOptionLabel,\n\t\t\t\tgetOptionCode,\n\t\t\t\tgetOptionGroup\n\t\t\t}),\n\t\t[getExplicitOptionSearchText, getOptionCode, getOptionGroup, getOptionLabel]\n\t);\n\tconst visibleOptions = usePickerDefaultFilter({\n\t\toptions,\n\t\tquery: currentQuery,\n\t\tenabled: searchable && defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst optionSections = useMemo(\n\t\t() => (getOptionGroup ? createSelectOptionSections(visibleOptions, getOptionGroup) : undefined),\n\t\t[getOptionGroup, visibleOptions]\n\t);\n\tconst selectedIndex = selectedKey === undefined ? -1 : visibleOptions.findIndex((option) => getOptionKey(option) === selectedKey);\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: visibleOptions,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: handleOpenChange,\n\t\tgetOptionDisabled,\n\t\tonSelect: emitChange,\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode\n\t});\n\n\tconst hasOptions = visibleOptions.length > 0;\n\tconst labelContent = selectedOption !== undefined ? getOptionLabel(selectedOption) : undefined;\n\tconst displayContent = selectedOption !== undefined ? (renderValue ? renderValue(selectedOption) : labelContent) : undefined;\n\tconst labelText = extractPickerTextContent(labelContent);\n\tconst codeText = selectedOption !== undefined ? extractPickerTextContent(getOptionCode?.(selectedOption)) : undefined;\n\tconst displayText =\n\t\textractPickerTextContent(displayContent) ?? labelText ?? codeText ?? (selectedKey !== undefined ? String(selectedKey) : \"\");\n\tconst showSearchValue = searchable && (open || currentQuery.length > 0);\n\tconst inputValue = showSearchValue ? currentQuery : selectedOption !== undefined ? displayText : \"\";\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: triggerMode,\n\t\topen,\n\t\tcurrentQuery,\n\t\thasDisplayValue: selectedOption !== undefined,\n\t\tinputRef,\n\t\tsetQuery,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\tconst handleClear = () => {\n\t\tif (clearable) {\n\t\t\temitChange(undefined);\n\t\t}\n\n\t\tsetQuery(\"\");\n\t\tclose();\n\t};\n\tconst renderOptionNode = (listId: string, option: TOption, index: number) => {\n\t\tconst optionKey = getOptionKey(option);\n\t\tconst selected = selectedKey !== undefined && optionKey === selectedKey;\n\t\tconst active = index === activeIndex;\n\t\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\t\tconst optionState = { active, selected, disabled: optionDisabled };\n\n\t\treturn (\n\t\t\t<Option\n\t\t\t\tkey={optionKey}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\taria-label={getOptionAriaLabel?.(option)}\n\t\t\t\tactive={active}\n\t\t\t\tselected={selected}\n\t\t\t\tdisabled={optionDisabled}\n\t\t\t\tclassName={getOptionClassName?.(option, optionState)}>\n\t\t\t\t{renderOption ? (\n\t\t\t\t\t<CustomOptionButton\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\tonClick={() => selectOption(option)}>\n\t\t\t\t\t\t{renderOption(option, optionState)}\n\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t) : (\n\t\t\t\t\t<OptionButton\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\ticon={selected ? <CheckIcon /> : <span />}\n\t\t\t\t\t\ttext={getOptionLabel(option)}\n\t\t\t\t\t\tcode={getOptionCode?.(option)}\n\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\tonClick={() => selectOption(option)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Option>\n\t\t);\n\t};\n\n\treturn (\n\t\t<PickerField label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\treadOnly={!searchable}\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\toptionCount={options.length}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\tselectedValue={displayContent ?? displayText}\n\t\t\t\t\t\t\thasSelection={selectedOption !== undefined}\n\t\t\t\t\t\t\tshowSelectedValue={selectedOption !== undefined && !showSearchValue}\n\t\t\t\t\t\t\tclearable={Boolean(clearable)}\n\t\t\t\t\t\t\tonClear={handleClear}\n\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-autocomplete={searchable ? \"list\" : \"none\"}\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tinputClassName={cn(buttonClassName, \"textOverflow\")}\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\tif (!searchable) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\tenableSpaceActivation: !searchable\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={hasOptions ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={optionsClassName}\n\t\t\t\t\t\t\tmaxWidth={optionsMaxWidth}\n\t\t\t\t\t\t\ttoolbar={renderPopupHeader}>\n\t\t\t\t\t\t\t<div className={cn(optionsContentClassName, \"h100 scrollable\")}>\n\t\t\t\t\t\t\t\t{hasOptions ? (\n\t\t\t\t\t\t\t\t\toptionSections ? (\n\t\t\t\t\t\t\t\t\t\toptionSections.map((section, sectionIndex) => {\n\t\t\t\t\t\t\t\t\t\t\tconst groupLabelId = section.group ? `${listId}-group-${sectionIndex}` : undefined;\n\t\t\t\t\t\t\t\t\t\t\tconst optionNodes = section.items.map(({ option, index }) =>\n\t\t\t\t\t\t\t\t\t\t\t\trenderOptionNode(listId, option, index)\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\treturn section.group ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`group-${String(section.group.key)}-${sectionIndex}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"group\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-labelledby={groupLabelId}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div id={groupLabelId} className={uiStyles.uiPopupGroupLabel}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{section.group.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{optionNodes}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Fragment key={`options-${sectionIndex}`}>{optionNodes}</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tvisibleOptions.map((option, index) => renderOptionNode(listId, option, index))\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\t\t<PickerStatus emptyState={emptyState} errorState={errorState} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { OptionCode, OptionText } from \"../option\";\nimport { HighlightText } from \"../text\";\n\ninterface OptionContentProps {\n\tlabel: string;\n\tcode?: string;\n\thighlight?: string;\n\t/** Приватный визуальный modifier label для специализированного владельца option. */\n\tlabelClassName?: string;\n\t/** Отдельный modifier code, потому что code задаёт собственный variable-font weight. */\n\tcodeClassName?: string;\n}\n\n/**\n * Универсальный рендерер опции. Используется и в single-select, и в multi-select.\n */\nexport function SelectOptionContent({ label, code, highlight, labelClassName, codeClassName }: OptionContentProps) {\n\treturn (\n\t\t<>\n\t\t\t<OptionText className={cn(\"flexEllipsis\", labelClassName)}>\n\t\t\t\t<HighlightText text={label} highlight={highlight} />\n\t\t\t</OptionText>\n\t\t\t{code && (\n\t\t\t\t<OptionCode className={codeClassName}>\n\t\t\t\t\t<HighlightText text={code} highlight={highlight} />\n\t\t\t\t</OptionCode>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import React from \"react\";\n\nimport { ODataSingleSelectProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { InputUILoading } from \"../input\";\nimport { UiBaseProps } from \"../types\";\n\nimport { useODataSelect } from \"./model/useODataSelect\";\nimport { Select } from \"./Select\";\nimport { SelectOptionContent } from \"./SelectOptionContent\";\n\ntype ODataSelectProps = Omit<ODataSingleSelectProps, \"value\"> & UiBaseProps<string | undefined> & { clearable?: boolean };\n\nfunction getODataOptionTextKey(item: CollectionItem | undefined, textKey: string, codeKey: string) {\n\tif (!item) {\n\t\treturn textKey || codeKey;\n\t}\n\n\treturn textKey || Object.keys(item).find((key) => key !== codeKey) || codeKey;\n}\n\nexport const ODataSelect: React.FC<ODataSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tsize,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tclearable\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\tif (odataModel.isLoading) {\n\t\treturn <InputUILoading size={size} label={label} description={description} />;\n\t}\n\n\tconst hideCode = segment.hideCode ?? odata.hideCode;\n\tconst resolvedTextKey = getODataOptionTextKey(odataModel.selectedItem ?? odataModel.options[0], odataModel.textKey, odataModel.codeKey);\n\n\treturn (\n\t\t<Select\n\t\t\tsize={size}\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\toptions={odataModel.options}\n\t\t\tvalue={odataModel.selectedItem}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tgetOptionKey={(item) => item[odataModel.codeKey]}\n\t\t\tgetOptionLabel={(item) => item[resolvedTextKey]}\n\t\t\tgetOptionCode={hideCode ? undefined : (item) => item[odataModel.codeKey]}\n\t\t\tgetOptionAriaLabel={(item) =>\n\t\t\t\thideCode || item[resolvedTextKey] === item[odataModel.codeKey]\n\t\t\t\t\t? String(item[resolvedTextKey])\n\t\t\t\t\t: `${item[resolvedTextKey]} ${item[odataModel.codeKey]}`\n\t\t\t}\n\t\t\trenderValue={(item) => (\n\t\t\t\t<SelectOptionContent label={item[resolvedTextKey]} code={hideCode ? undefined : item[odataModel.codeKey]} />\n\t\t\t)}\n\t\t\trenderOption={(item) => (\n\t\t\t\t<SelectOptionContent\n\t\t\t\t\tlabel={item[resolvedTextKey]}\n\t\t\t\t\tcode={hideCode ? undefined : item[odataModel.codeKey]}\n\t\t\t\t\thighlight={odataModel.debouncedQuery}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tsearchable\n\t\t\tquery={odataModel.query}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tdefaultFilter={false}\n\t\t\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\tisLoading={odataModel.isLoading}\n\t\t\terrorState={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t\temptyState={!odataModel.isLoading && !odataModel.isError ? \"Нет данных\" : undefined}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n};\n","import { useCallback } from \"react\";\n\nimport { useODataDependentSelection } from \"../odata-dependent\";\n\nimport { ODataSelect } from \"./ODataSelect\";\n\nimport type { ODataDependentSegmentControlProps } from \"../odata-dependent\";\n\nexport type ODataDependentSegmentSelectProps = ODataDependentSegmentControlProps & {\n\t/** Показывает действие очистки выбранного значения. */\n\tclearable?: boolean;\n};\n\n/**\n * Адаптирует один развёрнутый зависимый OData-сегмент к single-select UI.\n * Общий снимок остаётся массивным, поэтому совместим с `dependencies` и\n * может совместно использоваться с segment-level MultiSelect-контролами.\n */\nexport function ODataDependentSegmentSelect(props: ODataDependentSegmentSelectProps) {\n\tconst { item, disabled, label, description, size, width = 15, clearable } = props;\n\tconst selection = useODataDependentSelection(props);\n\tconst { updateSegment } = selection;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(value: string | undefined) => {\n\t\t\tupdateSegment(item.id, value === undefined ? [] : [value]);\n\t\t},\n\t\t[item.id, updateSegment]\n\t);\n\n\treturn (\n\t\t<div style={{ maxWidth: widthStyle, minWidth: widthStyle }}>\n\t\t\t<ODataSelect\n\t\t\t\todata={item.odata}\n\t\t\t\tsegment={item.segment}\n\t\t\t\tmodel={item.model}\n\t\t\t\tdependencies={selection.values}\n\t\t\t\tvalue={selection.values[item.id]?.[0]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t\tdisabled={disabled || selection.isSegmentDisabled(item.id)}\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tsize={size}\n\t\t\t\tclearable={clearable}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { Select } from \"./Select\";\n\nimport type { UiBaseProps } from \"../types\";\nimport type { SelectOptionKey } from \"./Select\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], SelectOptionKey> extends never ? never : K;\n}[keyof TOption];\n\ntype SerializableOptionValue<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>> = Extract<\n\tTOption[TOptionKey],\n\tSelectOptionKey\n>;\n\nexport interface SerializableSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends Omit<UiBaseProps<SerializableOptionValue<TOption, TOptionKey> | undefined>, \"onChange\"> {\n\toptions: readonly TOption[];\n\tonChange: (value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void;\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n\tclassName?: string;\n\tclearable?: boolean;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], SelectOptionKey> {\n\treturn String(option[optionKey]) as Extract<TOption[TOptionKey], SelectOptionKey>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\" || typeof label === \"number\") {\n\t\treturn String(label);\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn String(key);\n}\n\nexport function SerializableSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode,\n\tclassName,\n\tclearable\n}: SerializableSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\tconst selectedOption =\n\t\tvalue === undefined ? undefined : options.find((option) => getSerializableOptionKey(option, optionKey) === value);\n\n\treturn (\n\t\t<Select\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\toptions={options}\n\t\t\tvalue={selectedOption}\n\t\t\tonChange={(option: TOption | undefined) => onChange(option ? getSerializableOptionKey(option, optionKey) : undefined)}\n\t\t\tgetOptionKey={(option: TOption) => getSerializableOptionKey(option, optionKey)}\n\t\t\tgetOptionLabel={(option: TOption) => getSerializableOptionLabel(option, optionLabel, optionKey)}\n\t\t\tgetOptionCode={renderCode ? (option: TOption) => getSerializableOptionKey(option, optionKey) : undefined}\n\t\t\tclassName={className}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as e, c as t, d as n, i as r, n as i, o as a, p as ee, r as te, s as ne, t as re } from "./base-table-DNSYOO9t.js";
1
+ import { a as e, c as t, d as n, i as r, n as i, o as a, p as ee, r as te, s as ne, t as re } from "./base-table-CsnUiMTe.js";
2
2
  import { useEffect as ie, useEffectEvent as ae, useMemo as o, useRef as s } from "react";
3
3
  import { jsx as c } from "react/jsx-runtime";
4
4
  import { formatPipelineDisplayValue as l } from "@ryuzaki13/react-foundation-lib/formatters";
@@ -138,4 +138,4 @@ function m({ title: m, isLoading: h, isFetching: se, data: g, columns: _, select
138
138
  //#endregion
139
139
  export { m as t };
140
140
 
141
- //# sourceMappingURL=table-RO4dfMAj.js.map
141
+ //# sourceMappingURL=table-z9kyd9U3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-RO4dfMAj.js","names":[],"sources":["../../src/table/Table.module.scss","../../src/table/Table.tsx"],"sourcesContent":[".selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--content-accent);\n}\n\n.sentinel {\n\theight: 1px;\n}\n","import { useEffect, useEffectEvent, useMemo, useRef } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\nimport {\n\ttype FoundationTableRow,\n\tfoundationTableFeatures,\n\ttype TableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\ttype TableColumnVisibilityState,\n\ttype TableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { useTable } from \"@tanstack/react-table\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./Table.module.scss\";\n\n/**\n * Возвращает индекс как строковый id, если внешний id не передан.\n */\nfunction defaultGetRowId<TData>(_row: TData, index: number): string {\n\treturn String(index);\n}\n\n/**\n * Пропсы компонента Table.\n *\n * Компонент предназначен для плоских данных и по API осознанно сближен с TreeTable.\n */\nexport interface TableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок таблицы.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Внешний список выбранных строк.\n\t *\n\t * Если передан, таблица синхронизирует визуальное выделение с этим набором id.\n\t */\n\tselectedRowIds?: readonly string[];\n\t/**\n\t * Стабильный идентификатор строки.\n\t *\n\t * Если не задан, используется индекс строки.\n\t */\n\tgetRowId?: (row: TData, index: number) => string;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\tminHeight?: `${number}em` | `${number}%`;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: TableColumnVisibilityState;\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 * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние start-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние start-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: TableColumnVisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения start-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Используется для общих runtime-действий\n\t * вроде server sorting без встраивания доменной логики в shared-таблицу.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TData>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\t *\n\t * В отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n\t * `defaultContent` уже содержит отформатированное значение, если оно применимо.\n\t */\n\trenderCellContent?: BaseTableProps<TData>[\"renderCellContent\"];\n}\n\n/**\n * Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.\n */\nexport function Table<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\tselectionMode = \"none\",\n\tselectedRowIds,\n\tgetRowId,\n\tclassName,\n\tminHeight,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TableProps<TData>) {\n\tconst tableData = useMemo(() => data ?? [], [data]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst resolveRowId = getRowId ?? defaultGetRowId<TData>;\n\tconst rowById = useMemo(() => new Map(tableData.map((row, index) => [resolveRowId(row, index), row])), [resolveRowId, tableData]);\n\tconst availableRowIds = useMemo(() => Array.from(rowById.keys()), [rowById]);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds,\n\t\trowById,\n\t\tselectionMode,\n\t\tselectedRowIds,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, tableData.length]);\n\n\tconst table = useTable({\n\t\tfeatures: foundationTableFeatures,\n\t\tdata: tableData as TData[],\n\t\tcolumns: columns as TableColumnDef<TData>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\trowSelection\n\t\t},\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tgetRowId: (row, index) => resolveRowId(row, index),\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(row.original) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns]\n\t);\n\tconst leadingColumnId = visibleLeafColumns[0]?.id;\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: FoundationTableRow<TData>) => {\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(row.original);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\tminHeight={minHeight}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => getRowClassName?.(row.original)}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcell.column.id === leadingColumnId && row.getIsSelected() ? styles.selectedIndicatorCell : undefined\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: args.row.original as TableFormulaRowData,\n\t\t\t\t\trowKind: \"plain\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = !shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t) : (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t);\n\n\t\t\t\tif (renderCellContent) {\n\t\t\t\t\treturn renderCellContent({\n\t\t\t\t\t\t...args,\n\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn defaultContent;\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"table-z9kyd9U3.js","names":[],"sources":["../../src/table/Table.module.scss","../../src/table/Table.tsx"],"sourcesContent":[".selectedIndicatorCell {\n\tbox-shadow: inset 0.1875rem 0 0 var(--content-accent);\n}\n\n.sentinel {\n\theight: 1px;\n}\n","import { useEffect, useEffectEvent, useMemo, useRef } from \"react\";\n\nimport { formatPipelineDisplayValue } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { TableFormulaRowData } from \"@ryuzaki13/react-foundation-lib/formulas\";\nimport {\n\ttype FoundationTableRow,\n\tfoundationTableFeatures,\n\ttype TableColumnDef,\n\ttype TableColumnOrderState,\n\ttype TableColumnSizingState,\n\ttype TableColumnVisibilityState,\n\ttype TableSelectionMode,\n\tuseTableRowSelection\n} from \"@ryuzaki13/react-foundation-lib/table\";\nimport { useTable } from \"@tanstack/react-table\";\n\nimport {\n\tBaseTable,\n\tbuildBaseTableMergedCellsLayout,\n\tbuildTableFormattingSnapshot,\n\tFormattedTableCell,\n\tgetOrderedVisibleLeafColumns,\n\tshouldUseTableFormatting,\n\tuseTableColumnOrder,\n\tuseTableColumnPinning,\n\tuseTableColumnSizing,\n\tuseTableColumnVisibility,\n\ttype BaseTableColumnState,\n\ttype BaseTableProps,\n\ttype TableColumnPinningState\n} from \"../base-table\";\n\nimport styles from \"./Table.module.scss\";\n\n/**\n * Возвращает индекс как строковый id, если внешний id не передан.\n */\nfunction defaultGetRowId<TData>(_row: TData, index: number): string {\n\treturn String(index);\n}\n\n/**\n * Пропсы компонента Table.\n *\n * Компонент предназначен для плоских данных и по API осознанно сближен с TreeTable.\n */\nexport interface TableProps<TData extends object> {\n\t/**\n\t * Необязательный заголовок над таблицей.\n\t */\n\ttitle?: string;\n\t/**\n\t * Признак первичной загрузки.\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Признак фоновой догрузки или обновления данных.\n\t */\n\tisFetching?: boolean;\n\t/**\n\t * Плоский источник строк.\n\t */\n\tdata: readonly TData[] | undefined | null;\n\t/**\n\t * Описание колонок таблицы.\n\t */\n\tcolumns: readonly TableColumnDef<TData>[];\n\t/**\n\t * Режим выбора строк.\n\t */\n\tselectionMode?: TableSelectionMode;\n\t/**\n\t * Внешний список выбранных строк.\n\t *\n\t * Если передан, таблица синхронизирует визуальное выделение с этим набором id.\n\t */\n\tselectedRowIds?: readonly string[];\n\t/**\n\t * Стабильный идентификатор строки.\n\t *\n\t * Если не задан, используется индекс строки.\n\t */\n\tgetRowId?: (row: TData, index: number) => string;\n\t/**\n\t * Дополнительный CSS-класс корневого контейнера.\n\t */\n\tclassName?: string;\n\tminHeight?: `${number}em` | `${number}%`;\n\t/**\n\t * Дополнительный CSS-класс тега `table`.\n\t */\n\ttableClassName?: string;\n\t/**\n\t * Внешнее controlled-состояние видимости колонок.\n\t */\n\tcolumnVisibility?: TableColumnVisibilityState;\n\t/**\n\t * Стартовое uncontrolled-состояние видимости колонок.\n\t */\n\tdefaultColumnVisibility?: TableColumnVisibilityState;\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 * Внешнее controlled-состояние ширин колонок в px.\n\t */\n\tcolumnSizing?: TableColumnSizingState;\n\t/**\n\t * Стартовое uncontrolled-состояние ширин колонок в px.\n\t */\n\tdefaultColumnSizing?: TableColumnSizingState;\n\t/**\n\t * Внешнее controlled-состояние start-pinning для колонок.\n\t */\n\tcolumnPinning?: TableColumnPinningState;\n\t/**\n\t * Стартовое uncontrolled-состояние start-pinning для колонок.\n\t */\n\tdefaultColumnPinning?: TableColumnPinningState;\n\t/**\n\t * Включает изменение ширины колонок через header-handle.\n\t */\n\tenableColumnResizing?: boolean;\n\t/**\n\t * Включает изменение порядка колонок через drag&drop заголовков.\n\t */\n\tenableColumnReordering?: boolean;\n\t/**\n\t * Минимальная ширина колонки при resize в px.\n\t */\n\tcolumnResizeMinWidth?: number;\n\t/**\n\t * Вызывается после изменения видимости колонок.\n\t */\n\tonColumnVisibilityChange?: (state: TableColumnVisibilityState) => void;\n\t/**\n\t * Вызывается после изменения порядка колонок.\n\t */\n\tonColumnOrderChange?: (state: TableColumnOrderState) => void;\n\t/**\n\t * Вызывается после изменения ширины колонок.\n\t */\n\tonColumnSizingChange?: (state: TableColumnSizingState) => void;\n\t/**\n\t * Вызывается после изменения start-pinning state.\n\t */\n\tonColumnPinningChange?: (state: TableColumnPinningState) => void;\n\t/**\n\t * Вызывается при активации строки кликом или клавиатурой.\n\t */\n\tonRowClick?: (row: TData) => void;\n\t/**\n\t * Вызывается после изменения выбранных строк.\n\t */\n\tonRowSelectionChange?: (rows: TData[]) => void;\n\t/**\n\t * Вызывается при достижении конца таблицы внутри scroll-контейнера.\n\t */\n\tonReachEnd?: () => void;\n\t/**\n\t * Позволяет запретить выбор отдельных строк.\n\t */\n\tgetRowCanSelect?: (row: TData) => boolean;\n\t/**\n\t * Позволяет добавить CSS-класс для конкретной строки.\n\t */\n\tgetRowClassName?: (row: TData) => string | undefined;\n\t/**\n\t * Контекстное меню заголовка колонки. Используется для общих runtime-действий\n\t * вроде server sorting без встраивания доменной логики в shared-таблицу.\n\t */\n\trenderHeaderContextMenu?: BaseTableProps<TData>[\"renderHeaderContextMenu\"];\n\t/**\n\t * Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\t *\n\t * В отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n\t * `defaultContent` уже содержит отформатированное значение, если оно применимо.\n\t */\n\trenderCellContent?: BaseTableProps<TData>[\"renderCellContent\"];\n}\n\n/**\n * Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.\n */\nexport function Table<TData extends object>({\n\ttitle,\n\tisLoading,\n\tisFetching,\n\tdata,\n\tcolumns,\n\tselectionMode = \"none\",\n\tselectedRowIds,\n\tgetRowId,\n\tclassName,\n\tminHeight,\n\ttableClassName,\n\tcolumnVisibility,\n\tdefaultColumnVisibility,\n\tcolumnOrder,\n\tdefaultColumnOrder,\n\tcolumnSizing,\n\tdefaultColumnSizing,\n\tcolumnPinning,\n\tdefaultColumnPinning,\n\tenableColumnResizing = false,\n\tenableColumnReordering = false,\n\tcolumnResizeMinWidth,\n\tonColumnVisibilityChange,\n\tonColumnOrderChange,\n\tonColumnSizingChange,\n\tonColumnPinningChange,\n\tonRowClick,\n\tonRowSelectionChange,\n\tonReachEnd,\n\tgetRowCanSelect,\n\tgetRowClassName,\n\trenderHeaderContextMenu,\n\trenderCellContent\n}: TableProps<TData>) {\n\tconst tableData = useMemo(() => data ?? [], [data]);\n\tconst formattingSnapshot = useMemo(() => buildTableFormattingSnapshot(columns), [columns]);\n\tconst resolveRowId = getRowId ?? defaultGetRowId<TData>;\n\tconst rowById = useMemo(() => new Map(tableData.map((row, index) => [resolveRowId(row, index), row])), [resolveRowId, tableData]);\n\tconst availableRowIds = useMemo(() => Array.from(rowById.keys()), [rowById]);\n\tconst scrollableRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tconst { rowSelection, activateRowSelection } = useTableRowSelection({\n\t\tavailableRowIds,\n\t\trowById,\n\t\tselectionMode,\n\t\tselectedRowIds,\n\t\tonRowSelectionChange\n\t});\n\tconst { columnVisibility: resolvedColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange } = useTableColumnVisibility(\n\t\t{\n\t\t\tcolumnVisibility,\n\t\t\tdefaultColumnVisibility,\n\t\t\tonColumnVisibilityChange\n\t\t}\n\t);\n\tconst { columnOrder: resolvedColumnOrder, onColumnOrderChange: handleColumnOrderChange } = useTableColumnOrder({\n\t\tcolumnOrder,\n\t\tdefaultColumnOrder,\n\t\tonColumnOrderChange\n\t});\n\tconst { columnSizing: resolvedColumnSizing, onColumnSizingChange: handleColumnSizingChange } = useTableColumnSizing({\n\t\tcolumnSizing,\n\t\tdefaultColumnSizing,\n\t\tcolumnResizeMinWidth,\n\t\tonColumnSizingChange\n\t});\n\tconst { columnPinning: resolvedColumnPinning, onColumnPinningChange: handleColumnPinningChange } = useTableColumnPinning({\n\t\tcolumnPinning,\n\t\tdefaultColumnPinning,\n\t\tonColumnPinningChange\n\t});\n\tconst baseTableColumnState = useMemo<BaseTableColumnState>(\n\t\t() => ({\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility\n\t\t}),\n\t\t[resolvedColumnOrder, resolvedColumnPinning, resolvedColumnSizing, resolvedColumnVisibility]\n\t);\n\n\tconst emitReachEnd = useEffectEvent(() => {\n\t\tonReachEnd?.();\n\t});\n\n\tuseEffect(() => {\n\t\tif (!onReachEnd || !scrollableRef.current || !sentinelRef.current || isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst entry = entries[0];\n\n\t\t\t\tif (entry?.isIntersecting) {\n\t\t\t\t\temitReachEnd();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: scrollableRef.current,\n\t\t\t\tthreshold: 0.1\n\t\t\t}\n\t\t);\n\n\t\tobserver.observe(sentinelRef.current);\n\n\t\treturn () => observer.disconnect();\n\t}, [isLoading, onReachEnd, tableData.length]);\n\n\tconst table = useTable({\n\t\tfeatures: foundationTableFeatures,\n\t\tdata: tableData as TData[],\n\t\tcolumns: columns as TableColumnDef<TData>[],\n\t\tstate: {\n\t\t\tcolumnOrder: resolvedColumnOrder,\n\t\t\tcolumnPinning: resolvedColumnPinning,\n\t\t\tcolumnSizing: resolvedColumnSizing,\n\t\t\tcolumnVisibility: resolvedColumnVisibility,\n\t\t\trowSelection\n\t\t},\n\t\tonColumnOrderChange: handleColumnOrderChange,\n\t\tonColumnPinningChange: handleColumnPinningChange,\n\t\tonColumnSizingChange: handleColumnSizingChange,\n\t\tonColumnVisibilityChange: handleColumnVisibilityChange,\n\t\tgetRowId: (row, index) => resolveRowId(row, index),\n\t\tenableMultiRowSelection: selectionMode === \"multi\",\n\t\tenableRowSelection: (row) => {\n\t\t\tif (selectionMode === \"none\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn getRowCanSelect ? getRowCanSelect(row.original) : true;\n\t\t}\n\t});\n\n\tconst visibleLeafColumns = getOrderedVisibleLeafColumns(table, baseTableColumnState);\n\tconst rowModelRows = table.getRowModel().rows;\n\tconst mergedCellLayout = useMemo(\n\t\t() =>\n\t\t\tbuildBaseTableMergedCellsLayout({\n\t\t\t\trows: rowModelRows,\n\t\t\t\tcolumns: visibleLeafColumns\n\t\t\t}),\n\t\t[rowModelRows, visibleLeafColumns]\n\t);\n\tconst leadingColumnId = visibleLeafColumns[0]?.id;\n\n\t/**\n\t * Активирует строку: обновляет выбор в соответствии с режимом и вызывает внешний callback.\n\t */\n\tconst activateRow = (row: FoundationTableRow<TData>) => {\n\t\tactivateRowSelection(row.id, row.getCanSelect());\n\t\tonRowClick?.(row.original);\n\t};\n\n\treturn (\n\t\t<BaseTable\n\t\t\ttable={table}\n\t\t\tcolumnState={baseTableColumnState}\n\t\t\ttitle={title}\n\t\t\tisLoading={isLoading}\n\t\t\tisFetching={isFetching}\n\t\t\tclassName={className}\n\t\t\tminHeight={minHeight}\n\t\t\ttableClassName={tableClassName}\n\t\t\tselectionMode={selectionMode}\n\t\t\tscrollableRef={scrollableRef}\n\t\t\tonActivateRow={selectionMode !== \"none\" || onRowClick ? activateRow : undefined}\n\t\t\tisRowInteractive={(row) => Boolean(onRowClick || (selectionMode !== \"none\" && row.getCanSelect()))}\n\t\t\tgetRowClassName={(row) => getRowClassName?.(row.original)}\n\t\t\tgetCellClassName={({ row, cell }) =>\n\t\t\t\tcell.column.id === leadingColumnId && row.getIsSelected() ? styles.selectedIndicatorCell : undefined\n\t\t\t}\n\t\t\tgetCellLayout={({ cell }) => mergedCellLayout.get(cell.id)}\n\t\t\trenderHeaderContextMenu={renderHeaderContextMenu}\n\t\t\tenableColumnResizing={enableColumnResizing}\n\t\t\tenableColumnReordering={enableColumnReordering}\n\t\t\tcolumnResizeMinWidth={columnResizeMinWidth}\n\t\t\trenderCellContent={(args) => {\n\t\t\t\tconst displayValue = formatPipelineDisplayValue({\n\t\t\t\t\tfield: formattingSnapshot.runtimeByColumnId[args.cell.column.id],\n\t\t\t\t\trawValue: args.cell.getValue(),\n\t\t\t\t\trowData: args.row.original as TableFormulaRowData,\n\t\t\t\t\trowKind: \"plain\"\n\t\t\t\t});\n\t\t\t\tconst defaultContent = !shouldUseTableFormatting({\n\t\t\t\t\tcolumnId: args.cell.column.id,\n\t\t\t\t\truntimeByColumnId: formattingSnapshot.runtimeByColumnId,\n\t\t\t\t\tcustomCellColumnIds: formattingSnapshot.customCellColumnIds\n\t\t\t\t}) ? (\n\t\t\t\t\targs.defaultContent\n\t\t\t\t) : (\n\t\t\t\t\t<FormattedTableCell displayValue={displayValue} align={args.columnMeta?.align} />\n\t\t\t\t);\n\n\t\t\t\tif (renderCellContent) {\n\t\t\t\t\treturn renderCellContent({\n\t\t\t\t\t\t...args,\n\t\t\t\t\t\tdefaultContent,\n\t\t\t\t\t\tdisplayValue\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn defaultContent;\n\t\t\t}}\n\t\t\tafterTableContent={onReachEnd ? <div ref={sentinelRef} className={styles.sentinel} aria-hidden=\"true\" /> : null}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -32,7 +32,6 @@ var e = {
32
32
  uiSelectionIcon: "hwzILy",
33
33
  uiElement: "PXh4Kd",
34
34
  disabled: "t4Na-6",
35
- uiSelectOption: "NvTcfr",
36
35
  uiPopupOption: "Vq8q-K",
37
36
  uiOptionText: "GPetum",
38
37
  uiOptionCode: "d-9srB",
@@ -41,10 +40,11 @@ var e = {
41
40
  uiPanelToneTertiary: "EltZRn",
42
41
  uiFilledPanel: "a7hN1A",
43
42
  uiPanel: "GAMoiV",
44
- uiPopupOptions: "NUTH28",
45
43
  uiFramedPanel: "snye2X",
46
44
  uiStateFocus: "_6GrpYn",
47
45
  uiOptionBase: "xS7JcQ",
46
+ uiOptionButton: "_748hD6",
47
+ uiOptionLink: "OfS43Y",
48
48
  uiMenuOptionIcon: "_9ExUHY",
49
49
  uiPopupOptionIcon: "pO4Y0g",
50
50
  keyboard: "gbYdNR",
@@ -52,6 +52,7 @@ var e = {
52
52
  uiPopupOptionActive: "zb4xdz",
53
53
  uiPopupOptionSeparator: "-vLdWn",
54
54
  uiPopupGroupLabel: "Z3WweK",
55
+ uiOptionContentEmphasize: "JI6Ty-",
55
56
  uiToggleButtonContainer: "bx4Ra6",
56
57
  uiToggleButton: "MDZNQY",
57
58
  uiToggleIcon: "MVOYew",
@@ -62,4 +63,4 @@ var e = {
62
63
  //#endregion
63
64
  export { e as t };
64
65
 
65
- //# sourceMappingURL=ui.module-DHVTOqZ0.js.map
66
+ //# sourceMappingURL=ui.module-BsDio9A3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.module-BsDio9A3.js","names":[],"sources":["../../src/ui.module.scss"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.uiSizable {\n\t--base-width: 100%;\n\n\twidth: var(--base-width);\n\n\t&.xs {\n\t\t--base-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n\t}\n\n\t&.sm {\n\t\t--base-width: calc(var(--drp-ui-width-sm, var(--ui-width-sm)) - var(--width-add));\n\t}\n\n\t&.md {\n\t\t--base-width: calc(var(--drp-ui-width-md, var(--ui-width-md)) - var(--width-add));\n\t}\n\n\t&.lg {\n\t\t--base-width: calc(var(--drp-ui-width-lg, var(--ui-width-lg)) - var(--width-add));\n\t}\n\n\t&.xl {\n\t\t--base-width: calc(var(--drp-ui-width-xl, var(--ui-width-xl)) - var(--width-add));\n\t}\n}\n\n// TODO: Тестовый класс\n.uiErrorElement {\n\t--grid-size: var(--space-sm);\n\t--grid-line-size: var(--border-width);\n\t--grid-line-color: var(--status-error-soft);\n\n\theight: var(--control-height);\n\twidth: 100%; // calc(10em - var(--width-add));\n\tflex-shrink: 0;\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\tborder: var(--focus-width) solid var(--status-error-border);\n\tborder-radius: var(--radius-sm);\n\toutline: none;\n\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tcolor: var(--status-error-text);\n\tbackground-color: var(--surface-0);\n\tbackground-image:\n\t\trepeating-linear-gradient(\n\t\t\t45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t),\n\t\trepeating-linear-gradient(\n\t\t\t-45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t);\n}\n\n.uiContainer {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.uiInputContainer {\n\t@extend .uiContainer;\n\n\t--padding-right: var(--control-height);\n}\n\n.uiLabelBase {\n\tdisplay: inline-block;\n\tfont-weight: 400;\n\tfont-variation-settings: \"wght\" 400;\n}\n\n.uiLabel {\n\t@extend .uiLabelBase;\n\n\tmargin-block: var(--space-xs);\n}\n\n.uiDescription {\n\t--paragraph-margin: 0;\n\n\tpadding-bottom: var(--space-xs);\n\tcolor: var(--content-1);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiLabel,\n.uiDescription {\n\tmargin-inline: var(--space-xs);\n}\n\n.uiPlaceholder {\n\tcolor: var(--content-2);\n\tfont-weight: 100;\n\tfont-variation-settings: \"wght\" 100;\n\t// font-size: var(--font-size-sm);\n\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.required {\n\t.uiLabelBase::after {\n\t\tcontent: \" *\";\n\t\tcolor: var(--status-error-text);\n\t}\n}\n\n.uiControl {\n\t@include ui-tone(\"neutral\");\n\t@include ui-appearance-outline;\n\t@include ui-control-base;\n\n\t--ui-radius: var(--radius-sm);\n\n\t&.invalid,\n\t&:invalid {\n\t\t@include ui-tone(\"error\");\n\t\t@include ui-appearance-outline;\n\t}\n\n\t&::placeholder {\n\t\t@extend .uiPlaceholder;\n\t}\n}\n\n.uiToneNeutral {\n\t@include ui-tone(\"neutral\");\n}\n\n.uiToneBrand {\n\t@include ui-tone(\"brand\");\n}\n\n.uiToneError {\n\t@include ui-tone(\"error\");\n}\n\n.uiToneWarning {\n\t@include ui-tone(\"warning\");\n}\n\n.uiToneSuccess {\n\t@include ui-tone(\"success\");\n}\n\n.uiToneInfo {\n\t@include ui-tone(\"info\");\n}\n\n.uiAppearanceSolid {\n\t@include ui-appearance-solid;\n}\n\n.uiAppearanceOutline {\n\t@include ui-appearance-outline;\n}\n\n.uiAppearanceGhost {\n\t@include ui-appearance-ghost;\n}\n\n.uiAppearanceTransparent {\n\t@include ui-appearance-transparent;\n}\n\n.uiInputControl {\n\t@extend .uiControl;\n\n\theight: var(--control-height);\n}\n\n.uiInputWithToggle {\n\t@extend .uiInputControl;\n\n\tcolor: var(--content-0);\n\n\tpadding: 0 var(--padding-right) 0 var(--space-sm);\n\twidth: 100%;\n\ttext-align: left;\n\n\t// &[type=\"button\"] {\n\t// \twhite-space: nowrap;\n\t// }\n}\n\n.uiSelectionControl {\n\t@include ui-control-base;\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n\t--ui-background: var(--surface-0);\n\t--ui-background-hover: var(--ui-tone-soft);\n\t--ui-background-active: var(--ui-tone-soft);\n\t--ui-border-color: var(--ui-tone-border);\n\t--ui-border-hover: var(--ui-tone-border-hover);\n\t--ui-border-active: var(--ui-tone-border-active);\n\t--ui-border-focus: var(--ui-tone-border-focus);\n\n\tappearance: none;\n\tmargin: 0;\n\tcursor: pointer;\n\n\t&:checked {\n\t\tborder-color: var(--ui-tone-border-active);\n\n\t\t& + .uiSelectionIcon {\n\t\t\tcolor: var(--ui-tone-fill);\n\t\t}\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\n\t\tborder-color: var(--border-0);\n\n\t\t&:checked {\n\t\t\t& + .uiSelectionIcon {\n\t\t\t\tcolor: var(--border-0);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.uiSelectionIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tpointer-events: none;\n\tcolor: transparent;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\topacity var(--transition-fast) ease;\n}\n\n.uiElement,\n.uiPopupOption {\n\t&.disabled,\n\t&:disabled {\n\t\tcursor: default;\n\t\tpointer-events: none;\n\t\tuser-select: none;\n\n\t\t.uiLabel,\n\t\t.uiDescription {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.uiPlaceholder,\n\t\t.uiOptionText,\n\t\t.uiOptionCode {\n\t\t\topacity: 0.25;\n\t\t}\n\t}\n}\n\n.uiPanelTonePrimary {\n\t--ui-panel-background: var(--surface-0);\n}\n\n.uiPanelToneSecondary {\n\t--ui-panel-background: var(--surface-1);\n}\n\n.uiPanelToneTertiary {\n\t--ui-panel-background: var(--surface-2);\n}\n\n.uiFilledPanel {\n\tbackground-color: var(--ui-panel-background, var(--surface-0));\n}\n\n.uiFramedPanel {\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: var(--space-sm);\n}\n\n.uiPanel {\n\t@extend .uiFramedPanel;\n\t@extend .uiFilledPanel;\n}\n\n.uiStateFocus {\n\t@include focusVisible;\n\n\tbackground-color: var(--surface-1);\n\tborder-color: var(--border-1);\n\tcursor: pointer;\n}\n\n.uiOptionBase {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tgap: var(--space-sm);\n\theight: 100%;\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.uiPopupOption {\n\t@extend .uiOptionBase;\n\n\theight: auto;\n\tmin-height: var(--control-height);\n}\n\n.uiPopupOption {\n\tborder-radius: var(--radius-sm);\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: var(--content-0);\n\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t.uiMenuOptionIcon,\n\t.uiPopupOptionIcon {\n\t\tflex-shrink: 0;\n\t\tfont-size: var(--font-size-sm);\n\t\twidth: var(--icon-size);\n\t\theight: var(--icon-size);\n\t}\n\n\t.uiMenuOptionIcon,\n\t.keyboard {\n\t\tcolor: var(--content-2);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--interactive-selected-content);\n\t\tbackground-color: var(--interactive-selected-surface);\n\t\tcursor: default;\n\t}\n\n\t&.uiPopupOptionActive,\n\t&:active {\n\t\tcolor: var(--interactive-active-content);\n\t\tbackground-color: var(--interactive-active-surface);\n\t}\n\n\t@include hover(true) {\n\t\tcolor: var(--interactive-hover-content);\n\t\tbackground-color: var(--interactive-hover-surface);\n\t\tcursor: pointer;\n\t}\n\n\t&.disabled {\n\t\t// background-color: var(--surface-2);\n\t\tcolor: var(--content-2);\n\t}\n\n\t&:focus-within {\n\t\t// @extend .uiStateFocus;\n\t\t@include focusVisible;\n\t}\n}\n\n.uiOptionButton,\n.uiOptionLink {\n\t@extend .uiOptionBase;\n\n\tflex: 1 1 0;\n\tmin-width: 0;\n\theight: 100%;\n\tpadding: var(--space-xs) var(--space-sm);\n\tborder: none;\n\tborder-radius: inherit;\n\toutline: none;\n\tbackground: transparent;\n\tcolor: inherit;\n\tcursor: inherit;\n\ttext-decoration: none;\n}\n\n.uiPopupOptionSeparator {\n\tborder-top: var(--border);\n\tmargin-block: var(--space-xs);\n}\n\n.uiPopupGroupLabel {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n\tfont-weight: 300;\n\ttext-transform: uppercase;\n\tfont-size: var(--font-size-sm);\n}\n\n.uiMenuOptionIcon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.uiOptionText {\n\t// font-size: var(--font-size-sm);\n\tflex: 1;\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.uiOptionCode {\n\tfont-family: var(--font-family-mono);\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--content-1);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiOptionContentEmphasize {\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n}\n\n.uiToggleButtonContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\theight: 100%;\n\twidth: 100%;\n\n\ttransition-property: width;\n\ttransition-duration: var(--transition-fast);\n\ttransition-timing-function: cubic-bezier(1, 0, 0.5, 0.5);\n\n\t> button {\n\t\tbackground: transparent;\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\theight: var(--control-height);\n\t\twidth: var(--control-height);\n\t\tborder-radius: var(--radius-sm);\n\t\tflex: 0 0 var(--control-height);\n\t}\n\n\t// &[data-disabled] {\n\t// \tcursor: default;\n\t// \tpointer-events: none;\n\t// \topacity: var(--disabled-opacity);\n\t// }\n}\n\n.uiToggleButton {\n\tcolor: var(--content-0);\n\n\t&:hover {\n\t\tcolor: var(--content-accent);\n\t}\n}\n\n.uiToggleIcon {\n\ttransition: transform var(--transition-fast) ease-in-out;\n\n\t&.uiToggleIconOpen {\n\t\ttransform: rotate(180deg);\n\t}\n}\n\n// TODO: пока в свалку стили для дата-подобных компонентов\n\n// Для компонентов, который не являются input, но выставляют себя за него\n.uiInputControlFake {\n\t@extend .uiInputControl;\n\n\twidth: 100%;\n\tpadding: 0 var(--space-sm);\n\tfont-size: var(--font-size-md);\n\n\tdisplay: flex;\n\talign-items: center;\n\n\tcursor: text;\n}\n\n.uiClearButton {\n\tcolor: var(--status-error-text);\n\n\t&:disabled {\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n}\n\n.uiButtonSeparator {\n\tborder-left: var(--border);\n\theight: calc(100% - var(--space-sm));\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./ui.module-DHVTOqZ0.js";
1
+ import { t as e } from "./ui.module-BsDio9A3.js";
2
2
  //#region src/uiClasses.ts
3
3
  var t = {
4
4
  neutral: {
@@ -95,4 +95,4 @@ function c({ variant: e, tone: n, appearance: r, fallbackTone: i = "neutral", fa
95
95
  //#endregion
96
96
  export { c as i, s as n, a as r, o as t };
97
97
 
98
- //# sourceMappingURL=uiClasses-UkaejTdf.js.map
98
+ //# sourceMappingURL=uiClasses-BVwFzzsr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uiClasses-UkaejTdf.js","names":[],"sources":["../../src/uiClasses.ts"],"sourcesContent":["import uiStyles from \"./ui.module.scss\";\n\nimport type { UiAppearance, UiPanelTone, UiTone, UiVariant } from \"./types\";\n\nexport type UiScheme = {\n\ttone: UiTone;\n\tappearance: UiAppearance;\n};\n\nexport type UiSelectionAppearance = Extract<UiAppearance, \"outline\" | \"solid\">;\n\nconst variantSchemeMap: Record<UiVariant, UiScheme> = {\n\tneutral: { tone: \"neutral\", appearance: \"solid\" },\n\tneutralOutline: { tone: \"neutral\", appearance: \"outline\" },\n\tghost: { tone: \"neutral\", appearance: \"ghost\" },\n\tbrand: { tone: \"brand\", appearance: \"solid\" },\n\terror: { tone: \"error\", appearance: \"solid\" },\n\twarning: { tone: \"warning\", appearance: \"solid\" },\n\tsuccess: { tone: \"success\", appearance: \"solid\" },\n\tinfo: { tone: \"info\", appearance: \"solid\" },\n\tbrandOutline: { tone: \"brand\", appearance: \"outline\" },\n\terrorOutline: { tone: \"error\", appearance: \"outline\" },\n\twarningOutline: { tone: \"warning\", appearance: \"outline\" },\n\tsuccessOutline: { tone: \"success\", appearance: \"outline\" },\n\tinfoOutline: { tone: \"info\", appearance: \"outline\" },\n\ttransparent: { tone: \"neutral\", appearance: \"transparent\" }\n};\n\nconst toneClassNameMap: Record<UiTone, string> = {\n\tneutral: uiStyles.uiToneNeutral,\n\tbrand: uiStyles.uiToneBrand,\n\terror: uiStyles.uiToneError,\n\twarning: uiStyles.uiToneWarning,\n\tsuccess: uiStyles.uiToneSuccess,\n\tinfo: uiStyles.uiToneInfo\n};\n\nconst appearanceClassNameMap: Record<UiAppearance, string> = {\n\tsolid: uiStyles.uiAppearanceSolid,\n\toutline: uiStyles.uiAppearanceOutline,\n\tghost: uiStyles.uiAppearanceGhost,\n\ttransparent: uiStyles.uiAppearanceTransparent\n};\n\nconst panelToneClassNameMap: Record<UiPanelTone, string> = {\n\tprimary: uiStyles.uiPanelTonePrimary,\n\tsecondary: uiStyles.uiPanelToneSecondary,\n\ttertiary: uiStyles.uiPanelToneTertiary\n};\n\nexport function getUiToneClassName(tone: UiTone): string {\n\treturn toneClassNameMap[tone];\n}\n\nexport function getUiAppearanceClassName(appearance: UiAppearance): string {\n\treturn appearanceClassNameMap[appearance];\n}\n\nexport function getUiPanelToneClassName(tone: UiPanelTone): string {\n\treturn panelToneClassNameMap[tone];\n}\n\nexport function resolveUiScheme({\n\tvariant,\n\ttone,\n\tappearance,\n\tfallbackTone = \"neutral\",\n\tfallbackAppearance = \"outline\"\n}: {\n\tvariant?: UiVariant;\n\ttone?: UiTone;\n\tappearance?: UiAppearance;\n\tfallbackTone?: UiTone;\n\tfallbackAppearance?: UiAppearance;\n}): UiScheme {\n\tif (tone || appearance) {\n\t\treturn {\n\t\t\ttone: tone ?? fallbackTone,\n\t\t\tappearance: appearance ?? fallbackAppearance\n\t\t};\n\t}\n\n\tif (variant) {\n\t\treturn variantSchemeMap[variant];\n\t}\n\n\treturn {\n\t\ttone: fallbackTone,\n\t\tappearance: fallbackAppearance\n\t};\n}\n"],"mappings":";;AAWA,IAAM,IAAgD;CACrD,SAAS;EAAE,MAAM;EAAW,YAAY;CAAQ;CAChD,gBAAgB;EAAE,MAAM;EAAW,YAAY;CAAU;CACzD,OAAO;EAAE,MAAM;EAAW,YAAY;CAAQ;CAC9C,OAAO;EAAE,MAAM;EAAS,YAAY;CAAQ;CAC5C,OAAO;EAAE,MAAM;EAAS,YAAY;CAAQ;CAC5C,SAAS;EAAE,MAAM;EAAW,YAAY;CAAQ;CAChD,SAAS;EAAE,MAAM;EAAW,YAAY;CAAQ;CAChD,MAAM;EAAE,MAAM;EAAQ,YAAY;CAAQ;CAC1C,cAAc;EAAE,MAAM;EAAS,YAAY;CAAU;CACrD,cAAc;EAAE,MAAM;EAAS,YAAY;CAAU;CACrD,gBAAgB;EAAE,MAAM;EAAW,YAAY;CAAU;CACzD,gBAAgB;EAAE,MAAM;EAAW,YAAY;CAAU;CACzD,aAAa;EAAE,MAAM;EAAQ,YAAY;CAAU;CACnD,aAAa;EAAE,MAAM;EAAW,YAAY;CAAc;AAC3D,GAEM,IAA2C;CAChD,SAAS,EAAS;CAClB,OAAO,EAAS;CAChB,OAAO,EAAS;CAChB,SAAS,EAAS;CAClB,SAAS,EAAS;CAClB,MAAM,EAAS;AAChB,GAEM,IAAuD;CAC5D,OAAO,EAAS;CAChB,SAAS,EAAS;CAClB,OAAO,EAAS;CAChB,aAAa,EAAS;AACvB,GAEM,IAAqD;CAC1D,SAAS,EAAS;CAClB,WAAW,EAAS;CACpB,UAAU,EAAS;AACpB;AAEA,SAAgB,EAAmB,GAAsB;CACxD,OAAO,EAAiB;AACzB;AAEA,SAAgB,EAAyB,GAAkC;CAC1E,OAAO,EAAuB;AAC/B;AAEA,SAAgB,EAAwB,GAA2B;CAClE,OAAO,EAAsB;AAC9B;AAEA,SAAgB,EAAgB,EAC/B,YACA,SACA,eACA,kBAAe,WACf,wBAAqB,aAOT;CAYZ,OAXI,KAAQ,IACJ;EACN,MAAM,KAAQ;EACd,YAAY,KAAc;CAC3B,IAGG,IACI,EAAiB,KAGlB;EACN,MAAM;EACN,YAAY;CACb;AACD"}
1
+ {"version":3,"file":"uiClasses-BVwFzzsr.js","names":[],"sources":["../../src/uiClasses.ts"],"sourcesContent":["import uiStyles from \"./ui.module.scss\";\n\nimport type { UiAppearance, UiPanelTone, UiTone, UiVariant } from \"./types\";\n\nexport type UiScheme = {\n\ttone: UiTone;\n\tappearance: UiAppearance;\n};\n\nexport type UiSelectionAppearance = Extract<UiAppearance, \"outline\" | \"solid\">;\n\nconst variantSchemeMap: Record<UiVariant, UiScheme> = {\n\tneutral: { tone: \"neutral\", appearance: \"solid\" },\n\tneutralOutline: { tone: \"neutral\", appearance: \"outline\" },\n\tghost: { tone: \"neutral\", appearance: \"ghost\" },\n\tbrand: { tone: \"brand\", appearance: \"solid\" },\n\terror: { tone: \"error\", appearance: \"solid\" },\n\twarning: { tone: \"warning\", appearance: \"solid\" },\n\tsuccess: { tone: \"success\", appearance: \"solid\" },\n\tinfo: { tone: \"info\", appearance: \"solid\" },\n\tbrandOutline: { tone: \"brand\", appearance: \"outline\" },\n\terrorOutline: { tone: \"error\", appearance: \"outline\" },\n\twarningOutline: { tone: \"warning\", appearance: \"outline\" },\n\tsuccessOutline: { tone: \"success\", appearance: \"outline\" },\n\tinfoOutline: { tone: \"info\", appearance: \"outline\" },\n\ttransparent: { tone: \"neutral\", appearance: \"transparent\" }\n};\n\nconst toneClassNameMap: Record<UiTone, string> = {\n\tneutral: uiStyles.uiToneNeutral,\n\tbrand: uiStyles.uiToneBrand,\n\terror: uiStyles.uiToneError,\n\twarning: uiStyles.uiToneWarning,\n\tsuccess: uiStyles.uiToneSuccess,\n\tinfo: uiStyles.uiToneInfo\n};\n\nconst appearanceClassNameMap: Record<UiAppearance, string> = {\n\tsolid: uiStyles.uiAppearanceSolid,\n\toutline: uiStyles.uiAppearanceOutline,\n\tghost: uiStyles.uiAppearanceGhost,\n\ttransparent: uiStyles.uiAppearanceTransparent\n};\n\nconst panelToneClassNameMap: Record<UiPanelTone, string> = {\n\tprimary: uiStyles.uiPanelTonePrimary,\n\tsecondary: uiStyles.uiPanelToneSecondary,\n\ttertiary: uiStyles.uiPanelToneTertiary\n};\n\nexport function getUiToneClassName(tone: UiTone): string {\n\treturn toneClassNameMap[tone];\n}\n\nexport function getUiAppearanceClassName(appearance: UiAppearance): string {\n\treturn appearanceClassNameMap[appearance];\n}\n\nexport function getUiPanelToneClassName(tone: UiPanelTone): string {\n\treturn panelToneClassNameMap[tone];\n}\n\nexport function resolveUiScheme({\n\tvariant,\n\ttone,\n\tappearance,\n\tfallbackTone = \"neutral\",\n\tfallbackAppearance = \"outline\"\n}: {\n\tvariant?: UiVariant;\n\ttone?: UiTone;\n\tappearance?: UiAppearance;\n\tfallbackTone?: UiTone;\n\tfallbackAppearance?: UiAppearance;\n}): UiScheme {\n\tif (tone || appearance) {\n\t\treturn {\n\t\t\ttone: tone ?? fallbackTone,\n\t\t\tappearance: appearance ?? fallbackAppearance\n\t\t};\n\t}\n\n\tif (variant) {\n\t\treturn variantSchemeMap[variant];\n\t}\n\n\treturn {\n\t\ttone: fallbackTone,\n\t\tappearance: fallbackAppearance\n\t};\n}\n"],"mappings":";;AAWA,IAAM,IAAgD;CACrD,SAAS;EAAE,MAAM;EAAW,YAAY;CAAQ;CAChD,gBAAgB;EAAE,MAAM;EAAW,YAAY;CAAU;CACzD,OAAO;EAAE,MAAM;EAAW,YAAY;CAAQ;CAC9C,OAAO;EAAE,MAAM;EAAS,YAAY;CAAQ;CAC5C,OAAO;EAAE,MAAM;EAAS,YAAY;CAAQ;CAC5C,SAAS;EAAE,MAAM;EAAW,YAAY;CAAQ;CAChD,SAAS;EAAE,MAAM;EAAW,YAAY;CAAQ;CAChD,MAAM;EAAE,MAAM;EAAQ,YAAY;CAAQ;CAC1C,cAAc;EAAE,MAAM;EAAS,YAAY;CAAU;CACrD,cAAc;EAAE,MAAM;EAAS,YAAY;CAAU;CACrD,gBAAgB;EAAE,MAAM;EAAW,YAAY;CAAU;CACzD,gBAAgB;EAAE,MAAM;EAAW,YAAY;CAAU;CACzD,aAAa;EAAE,MAAM;EAAQ,YAAY;CAAU;CACnD,aAAa;EAAE,MAAM;EAAW,YAAY;CAAc;AAC3D,GAEM,IAA2C;CAChD,SAAS,EAAS;CAClB,OAAO,EAAS;CAChB,OAAO,EAAS;CAChB,SAAS,EAAS;CAClB,SAAS,EAAS;CAClB,MAAM,EAAS;AAChB,GAEM,IAAuD;CAC5D,OAAO,EAAS;CAChB,SAAS,EAAS;CAClB,OAAO,EAAS;CAChB,aAAa,EAAS;AACvB,GAEM,IAAqD;CAC1D,SAAS,EAAS;CAClB,WAAW,EAAS;CACpB,UAAU,EAAS;AACpB;AAEA,SAAgB,EAAmB,GAAsB;CACxD,OAAO,EAAiB;AACzB;AAEA,SAAgB,EAAyB,GAAkC;CAC1E,OAAO,EAAuB;AAC/B;AAEA,SAAgB,EAAwB,GAA2B;CAClE,OAAO,EAAsB;AAC9B;AAEA,SAAgB,EAAgB,EAC/B,YACA,SACA,eACA,kBAAe,WACf,wBAAqB,aAOT;CAYZ,OAXI,KAAQ,IACJ;EACN,MAAM,KAAQ;EACd,YAAY,KAAc;CAC3B,IAGG,IACI,EAAiB,KAGlB;EACN,MAAM;EACN,YAAY;CACb;AACD"}