@ryuzaki13/react-foundation-ui 1.0.8 → 1.0.11

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 (631) hide show
  1. package/dist/advanced-search/index.js +11 -11
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +2 -23
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DjeTJkTT.js → CalendarView-DCQjO2ho.js} +2 -2
  7. package/dist/chunks/{CalendarView-DjeTJkTT.js.map → CalendarView-DCQjO2ho.js.map} +1 -1
  8. package/dist/chunks/{odata-DSW7z3nh.js → SelectOptionContent-lfEtHXfO.js} +404 -381
  9. package/dist/chunks/SelectOptionContent-lfEtHXfO.js.map +1 -0
  10. package/dist/chunks/{TextEditorLexicalClient-16S18Yir.js → TextEditorLexicalClient-Bca3FOUs.js} +8 -8
  11. package/dist/chunks/{TextEditorLexicalClient-16S18Yir.js.map → TextEditorLexicalClient-Bca3FOUs.js.map} +1 -1
  12. package/dist/chunks/{BadgeList-DYgun2rf.js → badge-BfbLPk0z.js} +2 -2
  13. package/dist/chunks/badge-BfbLPk0z.js.map +1 -0
  14. package/dist/chunks/{base-table-CoQlKABk.js → base-table-CiYSRI_J.js} +4 -4
  15. package/dist/chunks/{base-table-CoQlKABk.js.map → base-table-CiYSRI_J.js.map} +1 -1
  16. package/dist/chunks/button-CC0Jdx1j.js +72 -0
  17. package/dist/chunks/button-CC0Jdx1j.js.map +1 -0
  18. package/dist/chunks/{CheckBox-BowNqqd3.js → check-box-BowNqqd3.js} +1 -1
  19. package/dist/chunks/check-box-BowNqqd3.js.map +1 -0
  20. package/dist/chunks/{DropdownMenu-DQeR3y7M.js → context-menu-DQeR3y7M.js} +1 -1
  21. package/dist/chunks/context-menu-DQeR3y7M.js.map +1 -0
  22. package/dist/chunks/{DateInput-BTJ-QTUx.js → date-input-DjAQ75n9.js} +5 -5
  23. package/dist/chunks/date-input-DjAQ75n9.js.map +1 -0
  24. package/dist/chunks/{DateRangePresetSelect-UgsfaOeM.js → date-range-preset-select-UgsfaOeM.js} +1 -1
  25. package/dist/chunks/date-range-preset-select-UgsfaOeM.js.map +1 -0
  26. package/dist/chunks/{Flex-DUYSL5TE.js → flex-CPO6xlPR.js} +38 -33
  27. package/dist/chunks/{Flex-DUYSL5TE.js.map → flex-CPO6xlPR.js.map} +1 -1
  28. package/dist/chunks/{Grid-ByIIytjh.js → grid-ByIIytjh.js} +1 -1
  29. package/dist/chunks/{Grid-ByIIytjh.js.map → grid-ByIIytjh.js.map} +1 -1
  30. package/dist/chunks/{Input-anSjiM9b.js → input-CZLUUggm.js} +10 -2
  31. package/dist/chunks/input-CZLUUggm.js.map +1 -0
  32. package/dist/chunks/{InputFiles-XBQxkHdB.js → input-files-aB8iaqGk.js} +5 -5
  33. package/dist/chunks/input-files-aB8iaqGk.js.map +1 -0
  34. package/dist/chunks/{input-search-B_njjJuV.js → input-search-eMvnvgV0.js} +2 -2
  35. package/dist/chunks/{input-search-B_njjJuV.js.map → input-search-eMvnvgV0.js.map} +1 -1
  36. package/dist/chunks/{misc-DoqZBMof.js → misc-1PxS8OWD.js} +2 -2
  37. package/dist/chunks/{misc-DoqZBMof.js.map → misc-1PxS8OWD.js.map} +1 -1
  38. package/dist/chunks/{modal-ByNRME3b.js → modal-C0j0hEIt.js} +5 -5
  39. package/dist/chunks/{modal-ByNRME3b.js.map → modal-C0j0hEIt.js.map} +1 -1
  40. package/dist/chunks/multi-select-r0ekR6Bh.js +541 -0
  41. package/dist/chunks/multi-select-r0ekR6Bh.js.map +1 -0
  42. package/dist/chunks/{picker-Du7Y4-el.js → picker-beNX-cW9.js} +11 -11
  43. package/dist/chunks/{picker-Du7Y4-el.js.map → picker-beNX-cW9.js.map} +1 -1
  44. package/dist/chunks/{RadioGroup-B9XjkcOy.js → radio-group-B9XjkcOy.js} +1 -1
  45. package/dist/chunks/radio-group-B9XjkcOy.js.map +1 -0
  46. package/dist/chunks/select-CFbZS7fx.js +284 -0
  47. package/dist/chunks/select-CFbZS7fx.js.map +1 -0
  48. package/dist/chunks/{table-Dc3AqMzP.js → table-BR2VqeEg.js} +2 -2
  49. package/dist/chunks/{table-Dc3AqMzP.js.map → table-BR2VqeEg.js.map} +1 -1
  50. package/dist/chunks/{toolbar-BCZNdRXM.js → toolbar-XCDeS2Li.js} +2 -2
  51. package/dist/chunks/{toolbar-BCZNdRXM.js.map → toolbar-XCDeS2Li.js.map} +1 -1
  52. package/dist/chunks/{useODataSelectBase-BbeKdq6x.js → useODataSelectBase-BxAvhDww.js} +2 -2
  53. package/dist/chunks/{useODataSelectBase-BbeKdq6x.js.map → useODataSelectBase-BxAvhDww.js.map} +1 -1
  54. package/dist/context-menu/index.js +1 -1
  55. package/dist/date-input/index.js +2 -2
  56. package/dist/date-range-preset-select/index.js +1 -1
  57. package/dist/date-time-input/index.js +458 -2
  58. package/dist/date-time-input/index.js.map +1 -0
  59. package/dist/detail/index.js +80 -2
  60. package/dist/detail/index.js.map +1 -0
  61. package/dist/dialog/index.js +50 -2
  62. package/dist/dialog/index.js.map +1 -0
  63. package/dist/disclosure/index.js +49 -2
  64. package/dist/disclosure/index.js.map +1 -0
  65. package/dist/drop-zone/index.js +98 -2
  66. package/dist/drop-zone/index.js.map +1 -0
  67. package/dist/errors/index.js +1 -1
  68. package/dist/expandable-action-panel/index.js +82 -2
  69. package/dist/expandable-action-panel/index.js.map +1 -0
  70. package/dist/flex/index.js +2 -14
  71. package/dist/grid/index.js +1 -1
  72. package/dist/image/index.js +5 -5
  73. package/dist/input/index.js +2 -14
  74. package/dist/input-date-time/index.js +258 -2
  75. package/dist/input-date-time/index.js.map +1 -0
  76. package/dist/input-file/index.js +105 -2
  77. package/dist/input-file/index.js.map +1 -0
  78. package/dist/input-files/index.js +1 -1
  79. package/dist/input-image/index.js +100 -2
  80. package/dist/input-image/index.js.map +1 -0
  81. package/dist/input-search/index.js +1 -1
  82. package/dist/layout-picker/index.js +1171 -2
  83. package/dist/layout-picker/index.js.map +1 -0
  84. package/dist/list/index.js +2 -2
  85. package/dist/listbox/index.js +81 -2
  86. package/dist/listbox/index.js.map +1 -0
  87. package/dist/misc/index.js +1 -1
  88. package/dist/modal/index.js +1 -1
  89. package/dist/multi-select/index.js +2 -3
  90. package/dist/notifications/index.js +151 -3
  91. package/dist/notifications/index.js.map +1 -0
  92. package/dist/picker/index.js +1 -1
  93. package/dist/preset-range-date-input/index.js +52 -3
  94. package/dist/preset-range-date-input/index.js.map +1 -1
  95. package/dist/preset-select/index.js +1 -1
  96. package/dist/radio-button/index.js +48 -2
  97. package/dist/radio-button/index.js.map +1 -0
  98. package/dist/radio-group/index.js +1 -1
  99. package/dist/select/index.js +2 -4
  100. package/dist/simple-table/index.js +1 -1
  101. package/dist/slider/index.js +695 -2
  102. package/dist/slider/index.js.map +1 -0
  103. package/dist/splitter/index.js +168 -2
  104. package/dist/splitter/index.js.map +1 -0
  105. package/dist/state-select/index.js +78 -2
  106. package/dist/state-select/index.js.map +1 -0
  107. package/dist/styles.css +1 -1
  108. package/dist/switch/index.js +81 -2
  109. package/dist/switch/index.js.map +1 -0
  110. package/dist/table/index.js +1 -1
  111. package/dist/table-sorting/index.js +1 -1
  112. package/dist/tabs/index.js +384 -2
  113. package/dist/tabs/index.js.map +1 -0
  114. package/dist/text-editor/index.js +3 -3
  115. package/dist/text-editor/toolbar/index.js +1 -1
  116. package/dist/textarea/index.js +44 -2
  117. package/dist/textarea/index.js.map +1 -0
  118. package/dist/toggle/index.js +73 -2
  119. package/dist/toggle/index.js.map +1 -0
  120. package/dist/toolbar/index.js +2 -3
  121. package/dist/toolbar/index.js.map +1 -1
  122. package/dist/tree-select/index.js +569 -89
  123. package/dist/tree-select/index.js.map +1 -1
  124. package/dist/tree-table/index.js +1 -1
  125. package/package.json +5 -304
  126. package/src/styles/_base.scss +11 -3
  127. package/src/styles/config/_index.scss +21 -37
  128. package/src/styles/themes/dark/_default.scss +0 -17
  129. package/storybook-static/assets/Badge-Cr7bAbxa.css +1 -0
  130. package/storybook-static/assets/Badge-Q8iX86Mn.js +139 -0
  131. package/storybook-static/assets/Badge.stories-BEMBzR2f.js +51 -0
  132. package/storybook-static/assets/Button-BN8Cuwsy.css +1 -0
  133. package/storybook-static/assets/Button-BUkCW8Zg.js +12 -0
  134. package/storybook-static/assets/Button-CfX05aoR.js +124 -0
  135. package/storybook-static/assets/Button.stories-BoNLZb6w.js +75 -0
  136. package/storybook-static/assets/CheckBox-B1xm2kwz.css +1 -0
  137. package/storybook-static/assets/CheckBox-CcXGzkSE.js +42 -0
  138. package/storybook-static/assets/CheckBox-DTSi8Yok.js +2 -0
  139. package/storybook-static/assets/CheckBox.module-Hr3mvdAC.js +1 -0
  140. package/storybook-static/assets/CheckBox.stories-Bo53TxC7.js +60 -0
  141. package/storybook-static/assets/Color-KMSTOMOX-Mbprgrbi.js +1 -0
  142. package/storybook-static/assets/ContextMenu-DYlSojIE.js +40 -0
  143. package/storybook-static/assets/ContextMenu.stories-BJr53bsq.js +90 -0
  144. package/storybook-static/assets/DateInput-Bc-MiPp1.css +1 -0
  145. package/storybook-static/assets/DateInput-BrmilavO.js +40 -0
  146. package/storybook-static/assets/DateInput-C72jV86j.js +1 -0
  147. package/storybook-static/assets/DateInput.stories-0hU_T1iZ.js +115 -0
  148. package/storybook-static/assets/DateRangePresetSelect-BklzgpCR.js +3 -0
  149. package/storybook-static/assets/DateRangePresetSelect-C7gJVkMB.js +30 -0
  150. package/storybook-static/assets/DateRangePresetSelect.stories-DQKDcAdP.js +11 -0
  151. package/storybook-static/assets/Detail-BKSBSfTO.css +1 -0
  152. package/storybook-static/assets/Detail-BMu0MY4h.js +40 -0
  153. package/storybook-static/assets/Detail.stories-CgBJjWQd.js +44 -0
  154. package/storybook-static/assets/Dialog-M7Uy3LiO.js +40 -0
  155. package/storybook-static/assets/Dialog.stories-BZ0opvaJ.js +31 -0
  156. package/storybook-static/assets/Disclosure-BXnfHC6v.js +29 -0
  157. package/storybook-static/assets/Disclosure-zNgXNDkm.css +1 -0
  158. package/storybook-static/assets/Disclosure.stories-C7wh6KJU.js +35 -0
  159. package/storybook-static/assets/DocsRenderer-JROSPFPF-BjXFJaat.js +2 -0
  160. package/storybook-static/assets/DropZone-C7HIN5ml.css +1 -0
  161. package/storybook-static/assets/DropZone-cd1aCNT1.js +36 -0
  162. package/storybook-static/assets/DropZone.stories-CVu731Lk.js +44 -0
  163. package/storybook-static/assets/DropdownMenu-B97Ad5Dg.js +1 -0
  164. package/storybook-static/assets/DropdownMenu-BgzIzwzM.css +1 -0
  165. package/storybook-static/assets/ExpandableActionPanel-D7q9two4.css +1 -0
  166. package/storybook-static/assets/ExpandableActionPanel.stories-k-eTxMyV.js +20 -0
  167. package/storybook-static/assets/Flex-BQkqAqL5.js +61 -0
  168. package/storybook-static/assets/Flex-C_VnI9xY.js +3 -0
  169. package/storybook-static/assets/Flex-IXK2se1Y.css +1 -0
  170. package/storybook-static/assets/Flex.stories-C1VO9Ct3.js +300 -0
  171. package/storybook-static/assets/Grid-Dr3BuEgd.js +61 -0
  172. package/storybook-static/assets/Grid-K9R_IHaw.css +1 -0
  173. package/storybook-static/assets/Grid-y8wKyEwc.js +163 -0
  174. package/storybook-static/assets/Grid.stories-6WUp6Tof.js +495 -0
  175. package/storybook-static/assets/Input-B7DWcGCL.js +3 -0
  176. package/storybook-static/assets/Input-BioMOZju.css +1 -0
  177. package/storybook-static/assets/Input-yly8wxYE.js +39 -0
  178. package/storybook-static/assets/Input.stories-CkVqvY-C.js +38 -0
  179. package/storybook-static/assets/InputDateTime-Cv8gmBe0.css +1 -0
  180. package/storybook-static/assets/InputDateTime-DHirw8rp.js +39 -0
  181. package/storybook-static/assets/InputDateTime.stories-Dci_81MA.js +35 -0
  182. package/storybook-static/assets/InputFile-DBFfWIkJ.js +37 -0
  183. package/storybook-static/assets/InputFile-hNjZ_wlG.css +1 -0
  184. package/storybook-static/assets/InputFile.stories-Bar27dP5.js +36 -0
  185. package/storybook-static/assets/InputFiles-ByK52qUe.css +1 -0
  186. package/storybook-static/assets/InputFiles-DPz7PiOC.js +1 -0
  187. package/storybook-static/assets/InputFiles-tULKp1KR.js +37 -0
  188. package/storybook-static/assets/InputFiles.stories-CkZ8et32.js +33 -0
  189. package/storybook-static/assets/InputImage-C-pnIXhT.css +1 -0
  190. package/storybook-static/assets/InputImage-D8VckxKl.js +37 -0
  191. package/storybook-static/assets/InputImage.stories-Dq8ORce3.js +51 -0
  192. package/storybook-static/assets/LayoutPicker-9tLTatHF.css +1 -0
  193. package/storybook-static/assets/LayoutPicker-l3XFAkqv.js +65 -0
  194. package/storybook-static/assets/LayoutPicker.stories-BjUmm2cg.js +449 -0
  195. package/storybook-static/assets/Listbox-B_6QVPAJ.js +38 -0
  196. package/storybook-static/assets/Listbox.stories-Cf_ApbmT.js +47 -0
  197. package/storybook-static/assets/Modal-BL_cTIW7.css +1 -0
  198. package/storybook-static/assets/Modal-BzienAaa.js +54 -0
  199. package/storybook-static/assets/Modal.stories-cPIHRa9a.js +180 -0
  200. package/storybook-static/assets/MultiSelect-CK2D25RA.js +56 -0
  201. package/storybook-static/assets/MultiSelect-CUQV67Ev.css +1 -0
  202. package/storybook-static/assets/MultiSelect-CjGBd2pC.js +2 -0
  203. package/storybook-static/assets/MultiSelect.stories--f_FoBzR.js +29 -0
  204. package/storybook-static/assets/NotificationsHost-D5Pvn4eu.css +1 -0
  205. package/storybook-static/assets/NotificationsHost-DKmlmqh0.js +44 -0
  206. package/storybook-static/assets/NotificationsHost.stories-1bPUJXfm.js +25 -0
  207. package/storybook-static/assets/ODataMultiSelect-BWUXuzlr.js +53 -0
  208. package/storybook-static/assets/ODataMultiSelect.stories-DA0f6SUG.js +73 -0
  209. package/storybook-static/assets/ODataSelect-D7GAFOcM.js +1 -0
  210. package/storybook-static/assets/ODataSelect-aNdHSjo_.js +52 -0
  211. package/storybook-static/assets/ODataSelect.stories-CjXA9Y9l.js +73 -0
  212. package/storybook-static/assets/ODataTreeMultiSelect-DKodulQ8.js +17 -0
  213. package/storybook-static/assets/ODataTreeMultiSelect.stories-BjRcb4W0.js +24 -0
  214. package/storybook-static/assets/ODataTreeSelect-Ck8HCh74.js +16 -0
  215. package/storybook-static/assets/ODataTreeSelect.stories-BgDj08mH.js +21 -0
  216. package/storybook-static/assets/PeriodSelect-Db7QmUfi.js +35 -0
  217. package/storybook-static/assets/PeriodSelect.stories-BI6yLRCK.js +23 -0
  218. package/storybook-static/assets/Popover-DR-r8iC5.js +45 -0
  219. package/storybook-static/assets/Popover.stories-ReRFMWiO.js +69 -0
  220. package/storybook-static/assets/PresetRangeDateInput-tSpiPAT9.js +31 -0
  221. package/storybook-static/assets/PresetRangeDateInput.stories-LVQa2_DG.js +15 -0
  222. package/storybook-static/assets/RadioButton-C-RjN-wY.css +1 -0
  223. package/storybook-static/assets/RadioButton-sEzdlL1y.js +38 -0
  224. package/storybook-static/assets/RadioButton.stories-CR0km0zF.js +36 -0
  225. package/storybook-static/assets/RadioGroup-BtNCd3Je.js +1 -0
  226. package/storybook-static/assets/RadioGroup-D-J7t20C.css +1 -0
  227. package/storybook-static/assets/RadioGroup-DR0H6Z0w.js +42 -0
  228. package/storybook-static/assets/RadioGroup.stories-FEqmkrs7.js +42 -0
  229. package/storybook-static/assets/Select-CO4ZHP9h.css +1 -0
  230. package/storybook-static/assets/Select-CUAevk01.js +57 -0
  231. package/storybook-static/assets/Select-DYVS7SCZ.js +9 -0
  232. package/storybook-static/assets/Select.stories-Df_c0IfC.js +37 -0
  233. package/storybook-static/assets/SelectOptionContent-B7W0Mned.js +1 -0
  234. package/storybook-static/assets/SerializableSelect-D63xBqOT.js +48 -0
  235. package/storybook-static/assets/SerializableSelect-DwCnuBgv.js +4 -0
  236. package/storybook-static/assets/SerializableSelect.stories-BLPXVOtP.js +43 -0
  237. package/storybook-static/assets/SingleDateTimeInput-mOllNfg2.css +1 -0
  238. package/storybook-static/assets/SingleDateTimeInput-xMkDodYz.js +53 -0
  239. package/storybook-static/assets/SingleDateTimeInput.stories-kcuSwx76.js +78 -0
  240. package/storybook-static/assets/Slider-BHZgpCjC.js +63 -0
  241. package/storybook-static/assets/Slider.stories-Bias_Soq.js +77 -0
  242. package/storybook-static/assets/SliderInput-jzFZcWr7.js +58 -0
  243. package/storybook-static/assets/SliderInput.stories-B7w8bp86.js +67 -0
  244. package/storybook-static/assets/Sortable-DcmDaPBw.js +72 -0
  245. package/storybook-static/assets/Sortable.stories-CwhHGCih.js +141 -0
  246. package/storybook-static/assets/Splitter-Bn7AJiD_.js +83 -0
  247. package/storybook-static/assets/Splitter-D-LmmQad.css +1 -0
  248. package/storybook-static/assets/Splitter.stories-CSvjKF-O.js +22 -0
  249. package/storybook-static/assets/StateSelect-MIGiXD10.js +36 -0
  250. package/storybook-static/assets/StateSelect-pIMkhj9A.css +1 -0
  251. package/storybook-static/assets/StateSelect.stories-BGDCnVqb.js +47 -0
  252. package/storybook-static/assets/Switch-C5zxOq_O.js +36 -0
  253. package/storybook-static/assets/Switch-DGYGWtPw.css +1 -0
  254. package/storybook-static/assets/Switch.stories-BmCl_Ts5.js +26 -0
  255. package/storybook-static/assets/Table-BGvRn9y0.css +1 -0
  256. package/storybook-static/assets/Table-CoySXvs5.js +197 -0
  257. package/storybook-static/assets/Table.stories-CA7ARhwC.js +122 -0
  258. package/storybook-static/assets/Tabs-BLkTB6pp.css +1 -0
  259. package/storybook-static/assets/Tabs-CQdzU18E.js +72 -0
  260. package/storybook-static/assets/Tabs.stories-SBWTpiy2.js +58 -0
  261. package/storybook-static/assets/Textarea-Bo-I0cnE.js +37 -0
  262. package/storybook-static/assets/Textarea-CPNMR88I.css +1 -0
  263. package/storybook-static/assets/Textarea.stories-C1wO9PKR.js +27 -0
  264. package/storybook-static/assets/TimePanel-0-mzaXky.js +1 -0
  265. package/storybook-static/assets/TimePanel-Bh98qsCo.css +1 -0
  266. package/storybook-static/assets/TimePanel.stories-C1VM13qN.js +25 -0
  267. package/storybook-static/assets/Toggle-B9H63WWC.js +37 -0
  268. package/storybook-static/assets/Toggle-DHulCX3T.css +1 -0
  269. package/storybook-static/assets/Toggle.stories-CKlGFcZW.js +30 -0
  270. package/storybook-static/assets/TreeMultiSelect-AXIl2Ge2.js +15 -0
  271. package/storybook-static/assets/TreeMultiSelect-Ci3bUpmv.js +1 -0
  272. package/storybook-static/assets/TreeMultiSelect.stories-CXGt4Q_u.js +14 -0
  273. package/storybook-static/assets/TreePickerBase-Md6Mt9qF.js +19 -0
  274. package/storybook-static/assets/TreePickerBase-qreyVjhY.css +1 -0
  275. package/storybook-static/assets/TreeSelect-BWoURakw.js +15 -0
  276. package/storybook-static/assets/TreeSelect-bOgRYtQQ.js +1 -0
  277. package/storybook-static/assets/TreeSelect.stories-By0h6wRi.js +16 -0
  278. package/storybook-static/assets/TreeTable--ZoksUiw.css +1 -0
  279. package/storybook-static/assets/TreeTable-C52Jh7O_.js +175 -0
  280. package/storybook-static/assets/TreeTable.stories-BH9Q8NPP.js +83 -0
  281. package/storybook-static/assets/WithTooltip-7X4HQR7L-DQXHhZoH.js +9 -0
  282. package/storybook-static/assets/axe-GLfyhAYL.js +20 -0
  283. package/storybook-static/assets/base-table-BNO0lnTL.css +1 -0
  284. package/storybook-static/assets/base-table-BSkQBgdx.js +18 -0
  285. package/storybook-static/assets/blocks-CwEU-ME1.js +285 -0
  286. package/storybook-static/assets/button-Bl3Hu8CS.js +1 -0
  287. package/storybook-static/assets/check-box-BrnNQnSi.js +1 -0
  288. package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +1 -0
  289. package/storybook-static/assets/chunk-3LY4VQVK-BxHCYS2R.js +6 -0
  290. package/storybook-static/assets/chunk-LITCR56V-euffoZAN.js +18 -0
  291. package/storybook-static/assets/contextMenu-Do6qEwKB.js +2 -0
  292. package/storybook-static/assets/date-segments-CzU9k5bl.js +1 -0
  293. package/storybook-static/assets/error-RVOk7zpw.js +1 -0
  294. package/storybook-static/assets/file-hArYcyES.js +1 -0
  295. package/storybook-static/assets/flex-DuYzsEBQ.js +1 -0
  296. package/storybook-static/assets/floating-ui.react-BR04wkLx.js +1 -0
  297. package/storybook-static/assets/formatter-L2YTDE3Q-Cdp-Jp2M.js +1 -0
  298. package/storybook-static/assets/formatters-yIBztcem.js +3 -0
  299. package/storybook-static/assets/grid-D0WOuGlB.js +1 -0
  300. package/storybook-static/assets/hooks-BEB2Gqy0.js +5 -0
  301. package/storybook-static/assets/iframe-SfMJGCsn.js +1117 -0
  302. package/storybook-static/assets/input-Be5K9_B7.js +1 -0
  303. package/storybook-static/assets/jsx-runtime-BBQGix-2.js +1 -0
  304. package/storybook-static/assets/lucide-react-CK2oyDtF.js +1 -0
  305. package/storybook-static/assets/matchers-JIUQ3HVY-BPS-eazD.js +28 -0
  306. package/storybook-static/assets/mdx-react-shim-DnKFgFHy.js +1 -0
  307. package/storybook-static/assets/media-Djn0SUaN.js +1 -0
  308. package/storybook-static/assets/misc-CPvLzCFJ.js +5 -0
  309. package/storybook-static/assets/misc-CerLA5Xh.css +1 -0
  310. package/storybook-static/assets/notifications-Zk996KvR.js +1 -0
  311. package/storybook-static/assets/odata-C2BNbnc9.js +1 -0
  312. package/storybook-static/assets/odata-service-8sDCOQ3I.js +1 -0
  313. package/storybook-static/assets/odataStoryFixtures-BBfdskiC.js +25 -0
  314. package/storybook-static/assets/picker-BmTTr59E.css +1 -0
  315. package/storybook-static/assets/picker-De4ZbESe.js +1 -0
  316. package/storybook-static/assets/popover-BiQHI7Wi.css +1 -0
  317. package/storybook-static/assets/popover-DWA5VOMQ.js +2 -0
  318. package/storybook-static/assets/preload-helper-B45gAKPr.js +1 -0
  319. package/storybook-static/assets/preset-select-DozCGhmu.js +5 -0
  320. package/storybook-static/assets/react-18-CfpYK14y.js +9 -0
  321. package/storybook-static/assets/react-BWN-5oQj.js +9 -0
  322. package/storybook-static/assets/react-dom-CncQzc_h.js +1 -0
  323. package/storybook-static/assets/select-BPvMbVDe.js +1 -0
  324. package/storybook-static/assets/slider-39Mty47U.js +2 -0
  325. package/storybook-static/assets/slider-DMDFRH6B.css +1 -0
  326. package/storybook-static/assets/sortable-CgCCp3dq.js +1 -0
  327. package/storybook-static/assets/sortable-DiBavgm0.css +1 -0
  328. package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-Di6cCrDX.js +6 -0
  329. package/storybook-static/assets/text-BxA8yj6Z.js +4 -0
  330. package/storybook-static/assets/theming-DZauqOKI.js +39 -0
  331. package/storybook-static/assets/treeStoryFixtures-Cd984L7t.js +1 -0
  332. package/storybook-static/assets/ui-CmVy0trY.js +1 -0
  333. package/storybook-static/assets/ui-ZWM9zG1I.css +1 -0
  334. package/storybook-static/assets/ui.module-DS2qtZts.js +1 -0
  335. package/storybook-static/assets/uiClasses-CZ_HVS3Y.js +1 -0
  336. package/storybook-static/assets/useODataSelectBase-D33B4x2W.js +1 -0
  337. package/storybook-static/assets/useODataTreeData-CDdzN-LC.js +1 -0
  338. package/storybook-static/assets/utils-CReRlw17.js +1 -0
  339. package/storybook-static/favicon-wrapper.svg +46 -0
  340. package/storybook-static/favicon.svg +1 -0
  341. package/storybook-static/iframe.html +709 -0
  342. package/storybook-static/index.html +146 -0
  343. package/storybook-static/index.json +1 -0
  344. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  345. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  346. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  347. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  348. package/storybook-static/project.json +1 -0
  349. package/storybook-static/sb-addons/a11y-2/manager-bundle.js +57 -0
  350. package/storybook-static/sb-addons/docs-1/manager-bundle.js +3 -0
  351. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +630 -0
  352. package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
  353. package/storybook-static/sb-common-assets/favicon.svg +1 -0
  354. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  355. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  356. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  357. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  358. package/storybook-static/sb-manager/globals-runtime.js +76714 -0
  359. package/storybook-static/sb-manager/globals.js +24 -0
  360. package/storybook-static/sb-manager/manager-stores.js +23 -0
  361. package/storybook-static/sb-manager/runtime.js +27451 -0
  362. package/storybook-static/vite-inject-mocker-entry.js +2 -0
  363. package/dist/badge/stories/Badge.stories.d.ts +0 -54
  364. package/dist/badge/stories/Badge.stories.d.ts.map +0 -1
  365. package/dist/badge/stories/Badge.stories.js +0 -147
  366. package/dist/badge/stories/Badge.stories.js.map +0 -1
  367. package/dist/button/index.js.map +0 -1
  368. package/dist/button/stories/Button.stories.d.ts +0 -69
  369. package/dist/button/stories/Button.stories.d.ts.map +0 -1
  370. package/dist/button/stories/Button.stories.js +0 -223
  371. package/dist/button/stories/Button.stories.js.map +0 -1
  372. package/dist/check-box/stories/CheckBox.stories.d.ts +0 -58
  373. package/dist/check-box/stories/CheckBox.stories.d.ts.map +0 -1
  374. package/dist/check-box/stories/CheckBox.stories.js +0 -150
  375. package/dist/check-box/stories/CheckBox.stories.js.map +0 -1
  376. package/dist/chunks/BadgeList-DYgun2rf.js.map +0 -1
  377. package/dist/chunks/Button-CCWuggdA.js +0 -55
  378. package/dist/chunks/Button-CCWuggdA.js.map +0 -1
  379. package/dist/chunks/CheckBox-BowNqqd3.js.map +0 -1
  380. package/dist/chunks/DateInput-BTJ-QTUx.js.map +0 -1
  381. package/dist/chunks/DateRangePresetSelect-UgsfaOeM.js.map +0 -1
  382. package/dist/chunks/Detail-DHDMsg8q.js +0 -80
  383. package/dist/chunks/Detail-DHDMsg8q.js.map +0 -1
  384. package/dist/chunks/Dialog-CFIvGxER.js +0 -50
  385. package/dist/chunks/Dialog-CFIvGxER.js.map +0 -1
  386. package/dist/chunks/DisclosureGroup-CfRTkl6Z.js +0 -49
  387. package/dist/chunks/DisclosureGroup-CfRTkl6Z.js.map +0 -1
  388. package/dist/chunks/DropZone-DgDMu4Iw.js +0 -98
  389. package/dist/chunks/DropZone-DgDMu4Iw.js.map +0 -1
  390. package/dist/chunks/DropdownMenu-DQeR3y7M.js.map +0 -1
  391. package/dist/chunks/Input-anSjiM9b.js.map +0 -1
  392. package/dist/chunks/InputDateTime-BGLJ_pbV.js +0 -258
  393. package/dist/chunks/InputDateTime-BGLJ_pbV.js.map +0 -1
  394. package/dist/chunks/InputFile-B5E0prk_.js +0 -105
  395. package/dist/chunks/InputFile-B5E0prk_.js.map +0 -1
  396. package/dist/chunks/InputFiles-XBQxkHdB.js.map +0 -1
  397. package/dist/chunks/InputImage-Bs6cFQIo.js +0 -100
  398. package/dist/chunks/InputImage-Bs6cFQIo.js.map +0 -1
  399. package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js +0 -82
  400. package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js.map +0 -1
  401. package/dist/chunks/Listbox-BZlp5qHz.js +0 -81
  402. package/dist/chunks/Listbox-BZlp5qHz.js.map +0 -1
  403. package/dist/chunks/MultiSelect-DblDAklj.js +0 -422
  404. package/dist/chunks/MultiSelect-DblDAklj.js.map +0 -1
  405. package/dist/chunks/NotificationsHost-_icJx4xR.js +0 -151
  406. package/dist/chunks/NotificationsHost-_icJx4xR.js.map +0 -1
  407. package/dist/chunks/PresetRangeDateInput-Bytk5sAs.js +0 -53
  408. package/dist/chunks/PresetRangeDateInput-Bytk5sAs.js.map +0 -1
  409. package/dist/chunks/RadioButton-D0uA0rX_.js +0 -48
  410. package/dist/chunks/RadioButton-D0uA0rX_.js.map +0 -1
  411. package/dist/chunks/RadioGroup-B9XjkcOy.js.map +0 -1
  412. package/dist/chunks/Select-ClBs-16a.js +0 -182
  413. package/dist/chunks/Select-ClBs-16a.js.map +0 -1
  414. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +0 -27
  415. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +0 -1
  416. package/dist/chunks/SerializableSelect-Ds8wp2_p.js +0 -33
  417. package/dist/chunks/SerializableSelect-Ds8wp2_p.js.map +0 -1
  418. package/dist/chunks/SingleDateTimeInput-kXrkLAAI.js +0 -331
  419. package/dist/chunks/SingleDateTimeInput-kXrkLAAI.js.map +0 -1
  420. package/dist/chunks/Splitter-BFkVGVRb.js +0 -168
  421. package/dist/chunks/Splitter-BFkVGVRb.js.map +0 -1
  422. package/dist/chunks/StateSelect-BzUsurDe.js +0 -78
  423. package/dist/chunks/StateSelect-BzUsurDe.js.map +0 -1
  424. package/dist/chunks/Switch-B57Qmy1z.js +0 -81
  425. package/dist/chunks/Switch-B57Qmy1z.js.map +0 -1
  426. package/dist/chunks/Textarea-CLyGS1h9.js +0 -44
  427. package/dist/chunks/Textarea-CLyGS1h9.js.map +0 -1
  428. package/dist/chunks/TimePanel-b4saqoUY.js +0 -135
  429. package/dist/chunks/TimePanel-b4saqoUY.js.map +0 -1
  430. package/dist/chunks/Toggle-DVqOQXmt.js +0 -73
  431. package/dist/chunks/Toggle-DVqOQXmt.js.map +0 -1
  432. package/dist/chunks/TreeMultiSelect-mIG8VKx8.js +0 -40
  433. package/dist/chunks/TreeMultiSelect-mIG8VKx8.js.map +0 -1
  434. package/dist/chunks/TreePickerBase-C9HEABt5.js +0 -423
  435. package/dist/chunks/TreePickerBase-C9HEABt5.js.map +0 -1
  436. package/dist/chunks/TreeSelect-B9rb_fbI.js +0 -37
  437. package/dist/chunks/TreeSelect-B9rb_fbI.js.map +0 -1
  438. package/dist/chunks/layout-picker-CSLuIUVZ.js +0 -1171
  439. package/dist/chunks/layout-picker-CSLuIUVZ.js.map +0 -1
  440. package/dist/chunks/multi-select-ei7LHBCv.js +0 -126
  441. package/dist/chunks/multi-select-ei7LHBCv.js.map +0 -1
  442. package/dist/chunks/odata-DSW7z3nh.js.map +0 -1
  443. package/dist/chunks/select-Ds7_EAGN.js +0 -81
  444. package/dist/chunks/select-Ds7_EAGN.js.map +0 -1
  445. package/dist/chunks/slider-uU26AeGu.js +0 -695
  446. package/dist/chunks/slider-uU26AeGu.js.map +0 -1
  447. package/dist/chunks/tabs-DlnVVMJl.js +0 -384
  448. package/dist/chunks/tabs-DlnVVMJl.js.map +0 -1
  449. package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js +0 -113
  450. package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js.map +0 -1
  451. package/dist/context-menu/stories/ContextMenu.stories.d.ts +0 -16
  452. package/dist/context-menu/stories/ContextMenu.stories.d.ts.map +0 -1
  453. package/dist/context-menu/stories/ContextMenu.stories.js +0 -136
  454. package/dist/context-menu/stories/ContextMenu.stories.js.map +0 -1
  455. package/dist/date-input/stories/DateInput.stories.d.ts +0 -132
  456. package/dist/date-input/stories/DateInput.stories.d.ts.map +0 -1
  457. package/dist/date-input/stories/DateInput.stories.js +0 -247
  458. package/dist/date-input/stories/DateInput.stories.js.map +0 -1
  459. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts +0 -22
  460. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts.map +0 -1
  461. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +0 -41
  462. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js.map +0 -1
  463. package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts +0 -95
  464. package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts.map +0 -1
  465. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +0 -195
  466. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js.map +0 -1
  467. package/dist/date-time-input/stories/TimePanel.stories.d.ts +0 -26
  468. package/dist/date-time-input/stories/TimePanel.stories.d.ts.map +0 -1
  469. package/dist/date-time-input/stories/TimePanel.stories.js +0 -53
  470. package/dist/date-time-input/stories/TimePanel.stories.js.map +0 -1
  471. package/dist/detail/stories/Detail.stories.d.ts +0 -67
  472. package/dist/detail/stories/Detail.stories.d.ts.map +0 -1
  473. package/dist/detail/stories/Detail.stories.js +0 -170
  474. package/dist/detail/stories/Detail.stories.js.map +0 -1
  475. package/dist/dialog/stories/Dialog.stories.d.ts +0 -50
  476. package/dist/dialog/stories/Dialog.stories.d.ts.map +0 -1
  477. package/dist/dialog/stories/Dialog.stories.js +0 -89
  478. package/dist/dialog/stories/Dialog.stories.js.map +0 -1
  479. package/dist/disclosure/stories/Disclosure.stories.d.ts +0 -35
  480. package/dist/disclosure/stories/Disclosure.stories.d.ts.map +0 -1
  481. package/dist/disclosure/stories/Disclosure.stories.js +0 -70
  482. package/dist/disclosure/stories/Disclosure.stories.js.map +0 -1
  483. package/dist/drop-zone/stories/DropZone.stories.d.ts +0 -63
  484. package/dist/drop-zone/stories/DropZone.stories.d.ts.map +0 -1
  485. package/dist/drop-zone/stories/DropZone.stories.js +0 -97
  486. package/dist/drop-zone/stories/DropZone.stories.js.map +0 -1
  487. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts +0 -44
  488. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts.map +0 -1
  489. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +0 -117
  490. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js.map +0 -1
  491. package/dist/flex/index.js.map +0 -1
  492. package/dist/flex/stories/Flex.stories.d.ts +0 -24
  493. package/dist/flex/stories/Flex.stories.d.ts.map +0 -1
  494. package/dist/flex/stories/Flex.stories.js +0 -607
  495. package/dist/flex/stories/Flex.stories.js.map +0 -1
  496. package/dist/grid/stories/Grid.stories.d.ts +0 -24
  497. package/dist/grid/stories/Grid.stories.d.ts.map +0 -1
  498. package/dist/grid/stories/Grid.stories.js +0 -840
  499. package/dist/grid/stories/Grid.stories.js.map +0 -1
  500. package/dist/input/index.js.map +0 -1
  501. package/dist/input/stories/Input.stories.d.ts +0 -69
  502. package/dist/input/stories/Input.stories.d.ts.map +0 -1
  503. package/dist/input/stories/Input.stories.js +0 -132
  504. package/dist/input/stories/Input.stories.js.map +0 -1
  505. package/dist/input-date-time/stories/InputDateTime.stories.d.ts +0 -69
  506. package/dist/input-date-time/stories/InputDateTime.stories.d.ts.map +0 -1
  507. package/dist/input-date-time/stories/InputDateTime.stories.js +0 -125
  508. package/dist/input-date-time/stories/InputDateTime.stories.js.map +0 -1
  509. package/dist/input-file/stories/InputFile.stories.d.ts +0 -85
  510. package/dist/input-file/stories/InputFile.stories.d.ts.map +0 -1
  511. package/dist/input-file/stories/InputFile.stories.js +0 -158
  512. package/dist/input-file/stories/InputFile.stories.js.map +0 -1
  513. package/dist/input-files/stories/InputFiles.stories.d.ts +0 -86
  514. package/dist/input-files/stories/InputFiles.stories.d.ts.map +0 -1
  515. package/dist/input-files/stories/InputFiles.stories.js +0 -158
  516. package/dist/input-files/stories/InputFiles.stories.js.map +0 -1
  517. package/dist/input-image/stories/InputImage.stories.d.ts +0 -81
  518. package/dist/input-image/stories/InputImage.stories.d.ts.map +0 -1
  519. package/dist/input-image/stories/InputImage.stories.js +0 -174
  520. package/dist/input-image/stories/InputImage.stories.js.map +0 -1
  521. package/dist/layout-picker/stories/LayoutPicker.stories.d.ts +0 -873
  522. package/dist/layout-picker/stories/LayoutPicker.stories.d.ts.map +0 -1
  523. package/dist/layout-picker/stories/LayoutPicker.stories.js +0 -422
  524. package/dist/layout-picker/stories/LayoutPicker.stories.js.map +0 -1
  525. package/dist/listbox/stories/Listbox.stories.d.ts +0 -76
  526. package/dist/listbox/stories/Listbox.stories.d.ts.map +0 -1
  527. package/dist/listbox/stories/Listbox.stories.js +0 -140
  528. package/dist/listbox/stories/Listbox.stories.js.map +0 -1
  529. package/dist/modal/stories/Modal.stories.d.ts +0 -74
  530. package/dist/modal/stories/Modal.stories.d.ts.map +0 -1
  531. package/dist/modal/stories/Modal.stories.js +0 -320
  532. package/dist/modal/stories/Modal.stories.js.map +0 -1
  533. package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts +0 -67
  534. package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts.map +0 -1
  535. package/dist/multi-select/ui/stories/MultiSelect.stories.js +0 -114
  536. package/dist/multi-select/ui/stories/MultiSelect.stories.js.map +0 -1
  537. package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts +0 -44
  538. package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts.map +0 -1
  539. package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts +0 -21
  540. package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts.map +0 -1
  541. package/dist/notifications/ui/stories/NotificationsHost.stories.js +0 -326
  542. package/dist/notifications/ui/stories/NotificationsHost.stories.js.map +0 -1
  543. package/dist/period-select/stories/PeriodSelect.stories.d.ts +0 -96
  544. package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +0 -1
  545. package/dist/period-select/stories/PeriodSelect.stories.js +0 -166
  546. package/dist/period-select/stories/PeriodSelect.stories.js.map +0 -1
  547. package/dist/popover/stories/Popover.stories.d.ts +0 -10
  548. package/dist/popover/stories/Popover.stories.d.ts.map +0 -1
  549. package/dist/popover/stories/Popover.stories.js +0 -75
  550. package/dist/popover/stories/Popover.stories.js.map +0 -1
  551. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts +0 -22
  552. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts.map +0 -1
  553. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +0 -45
  554. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js.map +0 -1
  555. package/dist/radio-button/stories/RadioButton.stories.d.ts +0 -60
  556. package/dist/radio-button/stories/RadioButton.stories.d.ts.map +0 -1
  557. package/dist/radio-button/stories/RadioButton.stories.js +0 -121
  558. package/dist/radio-button/stories/RadioButton.stories.js.map +0 -1
  559. package/dist/radio-group/stories/RadioGroup.stories.d.ts +0 -74
  560. package/dist/radio-group/stories/RadioGroup.stories.d.ts.map +0 -1
  561. package/dist/radio-group/stories/RadioGroup.stories.js +0 -146
  562. package/dist/radio-group/stories/RadioGroup.stories.js.map +0 -1
  563. package/dist/select/stories/ODataSelect.stories.d.ts +0 -46
  564. package/dist/select/stories/ODataSelect.stories.d.ts.map +0 -1
  565. package/dist/select/stories/Select.stories.d.ts +0 -127
  566. package/dist/select/stories/Select.stories.d.ts.map +0 -1
  567. package/dist/select/stories/Select.stories.js +0 -214
  568. package/dist/select/stories/Select.stories.js.map +0 -1
  569. package/dist/select/stories/SerializableSelect.stories.d.ts +0 -91
  570. package/dist/select/stories/SerializableSelect.stories.d.ts.map +0 -1
  571. package/dist/select/stories/SerializableSelect.stories.js +0 -165
  572. package/dist/select/stories/SerializableSelect.stories.js.map +0 -1
  573. package/dist/select/stories/odataStoryCollection.d.ts +0 -2
  574. package/dist/select/stories/odataStoryCollection.d.ts.map +0 -1
  575. package/dist/select/stories/odataStoryFixtures.d.ts +0 -35
  576. package/dist/select/stories/odataStoryFixtures.d.ts.map +0 -1
  577. package/dist/slider/stories/Slider.stories.d.ts +0 -29
  578. package/dist/slider/stories/Slider.stories.d.ts.map +0 -1
  579. package/dist/slider/stories/Slider.stories.js +0 -310
  580. package/dist/slider/stories/Slider.stories.js.map +0 -1
  581. package/dist/slider/stories/SliderInput.stories.d.ts +0 -30
  582. package/dist/slider/stories/SliderInput.stories.d.ts.map +0 -1
  583. package/dist/slider/stories/SliderInput.stories.js +0 -282
  584. package/dist/slider/stories/SliderInput.stories.js.map +0 -1
  585. package/dist/sortable/stories/Sortable.stories.d.ts +0 -58
  586. package/dist/sortable/stories/Sortable.stories.d.ts.map +0 -1
  587. package/dist/sortable/stories/Sortable.stories.js +0 -255
  588. package/dist/sortable/stories/Sortable.stories.js.map +0 -1
  589. package/dist/splitter/stories/Splitter.stories.d.ts +0 -66
  590. package/dist/splitter/stories/Splitter.stories.d.ts.map +0 -1
  591. package/dist/splitter/stories/Splitter.stories.js +0 -223
  592. package/dist/splitter/stories/Splitter.stories.js.map +0 -1
  593. package/dist/state-select/stories/StateSelect.stories.d.ts +0 -70
  594. package/dist/state-select/stories/StateSelect.stories.d.ts.map +0 -1
  595. package/dist/state-select/stories/StateSelect.stories.js +0 -145
  596. package/dist/state-select/stories/StateSelect.stories.js.map +0 -1
  597. package/dist/switch/stories/Switch.stories.d.ts +0 -59
  598. package/dist/switch/stories/Switch.stories.d.ts.map +0 -1
  599. package/dist/switch/stories/Switch.stories.js +0 -90
  600. package/dist/switch/stories/Switch.stories.js.map +0 -1
  601. package/dist/table/stories/Table.stories.d.ts +0 -155
  602. package/dist/table/stories/Table.stories.d.ts.map +0 -1
  603. package/dist/tabs/stories/Tabs.stories.d.ts +0 -94
  604. package/dist/tabs/stories/Tabs.stories.d.ts.map +0 -1
  605. package/dist/tabs/stories/Tabs.stories.js +0 -283
  606. package/dist/tabs/stories/Tabs.stories.js.map +0 -1
  607. package/dist/textarea/stories/Textarea.stories.d.ts +0 -64
  608. package/dist/textarea/stories/Textarea.stories.d.ts.map +0 -1
  609. package/dist/textarea/stories/Textarea.stories.js +0 -98
  610. package/dist/textarea/stories/Textarea.stories.js.map +0 -1
  611. package/dist/toggle/stories/Toggle.stories.d.ts +0 -61
  612. package/dist/toggle/stories/Toggle.stories.d.ts.map +0 -1
  613. package/dist/toggle/stories/Toggle.stories.js +0 -102
  614. package/dist/toggle/stories/Toggle.stories.js.map +0 -1
  615. package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts +0 -55
  616. package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts.map +0 -1
  617. package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts +0 -54
  618. package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts.map +0 -1
  619. package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts +0 -35
  620. package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts.map +0 -1
  621. package/dist/tree-select/stories/TreeMultiSelect.stories.js +0 -64
  622. package/dist/tree-select/stories/TreeMultiSelect.stories.js.map +0 -1
  623. package/dist/tree-select/stories/TreeSelect.stories.d.ts +0 -35
  624. package/dist/tree-select/stories/TreeSelect.stories.d.ts.map +0 -1
  625. package/dist/tree-select/stories/TreeSelect.stories.js +0 -66
  626. package/dist/tree-select/stories/TreeSelect.stories.js.map +0 -1
  627. package/dist/tree-select/stories/treeStoryFixtures.d.ts +0 -3
  628. package/dist/tree-select/stories/treeStoryFixtures.d.ts.map +0 -1
  629. package/dist/tree-table/stories/TreeTable.stories.d.ts +0 -158
  630. package/dist/tree-table/stories/TreeTable.stories.d.ts.map +0 -1
  631. package/src/styles/fonts.scss +0 -47
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./ui.module-BisoTevy.js";
2
- import { c as t, o as n, r } from "./Input-anSjiM9b.js";
2
+ import { i as t, l as n, s as r } from "./input-CZLUUggm.js";
3
3
  import { t as i } from "./separator-B72Aq-6a.js";
4
4
  import { forwardRef as a, useEffect as o, useEffectEvent as s, useMemo as c, useRef as l, useState as u } from "react";
5
5
  import { cn as d } from "@ryuzaki13/react-foundation-lib/utils";
@@ -10,15 +10,15 @@ import { FloatingFocusManager as g, FloatingPortal as _ } from "@floating-ui/rea
10
10
  import { useFloatingListbox as v } from "@ryuzaki13/react-foundation-lib/hooks";
11
11
  import { AnimatePresence as y, motion as b } from "motion/react";
12
12
  //#region src/picker/PickerField.tsx
13
- function x({ id: e, label: r, description: i, disabled: a, size: o, className: s, error: c, children: l }) {
14
- let { controlId: u, labelId: d, descriptionId: f, errorId: p, describedBy: h } = t({
13
+ function x({ id: e, label: t, description: i, disabled: a, size: o, className: s, error: c, children: l }) {
14
+ let { controlId: u, labelId: d, descriptionId: f, errorId: p, describedBy: h } = n({
15
15
  id: e,
16
- hasLabel: r != null,
16
+ hasLabel: t != null,
17
17
  hasDescription: !!i,
18
18
  hasError: !!c
19
19
  });
20
- return /* @__PURE__ */ m(n, {
21
- label: r,
20
+ return /* @__PURE__ */ m(r, {
21
+ label: t,
22
22
  description: i,
23
23
  disabled: a,
24
24
  size: o,
@@ -125,11 +125,11 @@ function E({ open: t, disabled: n, children: r, onToggleMouseDown: i, onToggleCl
125
125
  }
126
126
  //#endregion
127
127
  //#region src/picker/PickerTriggerInput.tsx
128
- var D = a(({ rootRef: t, endAdornment: n, overlay: i, rootClassName: a, inputClassName: o, ...s }, c) => /* @__PURE__ */ h("div", {
129
- ref: t,
128
+ var D = a(({ rootRef: n, endAdornment: r, overlay: i, rootClassName: a, inputClassName: o, ...s }, c) => /* @__PURE__ */ h("div", {
129
+ ref: n,
130
130
  className: d(e.uiInputContainer, S.triggerContainer, a),
131
- children: [/* @__PURE__ */ m(r, {
132
- endAdornment: n,
131
+ children: [/* @__PURE__ */ m(t, {
132
+ endAdornment: r,
133
133
  children: ({ controlClassName: t }) => /* @__PURE__ */ m("input", {
134
134
  ...s,
135
135
  ref: c,
@@ -315,4 +315,4 @@ function I({ mode: e, open: t, currentQuery: n, hasDisplayValue: r, inputRef: i,
315
315
  //#endregion
316
316
  export { j as a, D as c, w as d, x as f, M as i, E as l, P as n, k as o, N as r, O as s, I as t, T as u };
317
317
 
318
- //# sourceMappingURL=picker-Du7Y4-el.js.map
318
+ //# sourceMappingURL=picker-beNX-cW9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-Du7Y4-el.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerPopup.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n",".popupLayout {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tmin-height: 0;\n\tmax-height: 75vh;\n\toverflow: hidden;\n\n\tflex: 1 1 auto;\n}\n\n.popupBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--status-error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tlayoutClassName?: string;\n\theaderClassName?: string;\n\tbodyClassName?: string;\n\theader?: ReactNode;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tdescriptionId,\n\tactiveOptionId,\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tlayoutClassName,\n\theaderClassName,\n\tbodyClassName,\n\theader,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<div className={cn(styles.popupLayout, layoutClassName)}>\n\t\t\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t\t\t<div className={headerClassName}>\n\t\t\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t\t\t\t<Separator className=\"marginBlockSm\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<div />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className={cn(styles.popupBody, bodyClassName)}>{children}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, loadingState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? loadingState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={rootRef} className={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}>\n\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t)}\n\t\t\t\t</InputControl>\n\t\t\t\t{overlay}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node.map(extractPickerTextContent).filter((value): value is string => Boolean(value));\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\treturn undefined;\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useFloatingListbox } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\topen: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\nexport function usePickerQuery({ open, query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst previousOpenRef = useRef(false);\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst syncResetInternalQuery = useEffectEvent(() => setInternalQuery(\"\"));\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open && resolvedResetOnClose) {\n\t\t\tif (!isControlled) {\n\t\t\t\tsyncResetInternalQuery();\n\t\t\t}\n\n\t\t\tonQuery?.(\"\");\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [isControlled, onQuery, open, resolvedResetOnClose]);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\")\n\t};\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\tconst syncDraftValue = useEffectEvent((value: TValue) => setDraftValue(value));\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\tsyncDraftValue(value);\n\t\t}\n\t}, [open, value]);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"picker-beNX-cW9.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerPopup.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n",".popupLayout {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tmin-height: 0;\n\tmax-height: 75vh;\n\toverflow: hidden;\n\n\tflex: 1 1 auto;\n}\n\n.popupBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--status-error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tlayoutClassName?: string;\n\theaderClassName?: string;\n\tbodyClassName?: string;\n\theader?: ReactNode;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tdescriptionId,\n\tactiveOptionId,\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tlayoutClassName,\n\theaderClassName,\n\tbodyClassName,\n\theader,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<div className={cn(styles.popupLayout, layoutClassName)}>\n\t\t\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t\t\t<div className={headerClassName}>\n\t\t\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t\t\t\t<Separator className=\"marginBlockSm\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<div />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className={cn(styles.popupBody, bodyClassName)}>{children}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, loadingState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? loadingState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={rootRef} className={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}>\n\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t)}\n\t\t\t\t</InputControl>\n\t\t\t\t{overlay}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node.map(extractPickerTextContent).filter((value): value is string => Boolean(value));\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\treturn undefined;\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useFloatingListbox } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\topen: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\nexport function usePickerQuery({ open, query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst previousOpenRef = useRef(false);\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst syncResetInternalQuery = useEffectEvent(() => setInternalQuery(\"\"));\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open && resolvedResetOnClose) {\n\t\t\tif (!isControlled) {\n\t\t\t\tsyncResetInternalQuery();\n\t\t\t}\n\n\t\t\tonQuery?.(\"\");\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [isControlled, onQuery, open, resolvedResetOnClose]);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\")\n\t};\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\tconst syncDraftValue = useEffectEvent((value: TValue) => setDraftValue(value));\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\tsyncDraftValue(value);\n\t\t}\n\t}, [open, value]);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
@@ -118,4 +118,4 @@ h.Option = g;
118
118
  //#endregion
119
119
  export { h as n, g as t };
120
120
 
121
- //# sourceMappingURL=RadioGroup-B9XjkcOy.js.map
121
+ //# sourceMappingURL=radio-group-B9XjkcOy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group-B9XjkcOy.js","names":[],"sources":["../../src/radio-group/RadioGroup.module.scss","../../src/radio-group/RadioGroup.tsx"],"sourcesContent":[".radioGroup {\n\tdisplay: flex;\n\talign-content: flex-start;\n\tflex-wrap: wrap;\n\t// min-height: var(--control-height);\n\theight: auto;\n\n\t&.noWrap {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t&.horizontal {\n\t\tflex-direction: row;\n\t}\n\n\t&.vertical {\n\t\tflex-direction: column;\n\t\talign-content: stretch;\n\t}\n}\n\n.radioItem {\n\tdisplay: block;\n\tflex: 1 0 0;\n\tcolor: var(--content-2);\n\tborder-radius: var(--radius-xs);\n\tpadding: 0 var(--space-md);\n\tmargin: var(--border-width);\n\t// baseInputControl = --control-height, + borderTop/Bottom + transparentLineTop/Bottom\n\tmin-height: calc(var(--control-height) - calc(var(--border-width) * 4));\n\n\tcursor: pointer;\n\n\t&:hover {\n\t\tcolor: var(--content-accent);\n\t\t// background-color: var(--surface-1);\n\t}\n\n\t&.checked {\n\t\tcolor: var(--status-neutral-on-fill);\n\t\tbackground-color: var(--status-neutral-fill);\n\t\t// border-color: var(--border-0);\n\t}\n\n\t&:disabled {\n\t\topacity: var(--disabled-opacity);\n\t}\n}\n","import React, { createContext, KeyboardEvent, ReactNode, useCallback, useContext, useId, useLayoutEffect, useMemo, useState } from \"react\";\n\nimport { cn, getRovingFocusTargetIndex, handleKeyboardActivation } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./RadioGroup.module.scss\";\n\ninterface RadioGroupContextValue {\n\tvalue?: unknown;\n\tonChange?: (value: unknown) => void;\n\tdisabled?: boolean;\n\torientation: \"vertical\" | \"horizontal\";\n\tgroupId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\tfirstOptionId?: string;\n\tregisterOption: (optionId: string) => () => void;\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\ninterface RadioGroupProps<T> {\n\tvalue?: T;\n\tonChange?: (value: T) => void;\n\tlabel?: string;\n\tdescription?: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tnoWrap?: true;\n\torientation?: \"vertical\" | \"horizontal\";\n\t\"aria-label\"?: string;\n\tchildren: React.ReactNode;\n}\n\n/**\n * Группа радиокнопок с общим состоянием выбранного значения. Обеспечивает единый API выбора и контекст для дочерних опций.\n */\nexport function RadioGroup<T>({\n\tvalue,\n\tonChange,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\tnoWrap,\n\torientation = \"horizontal\",\n\t\"aria-label\": ariaLabel,\n\tchildren\n}: RadioGroupProps<T>) {\n\tconst groupId = useId();\n\tconst labelId = label ? `${groupId}-label` : undefined;\n\tconst descriptionId = description ? `${groupId}-description` : undefined;\n\tconst [registeredOptionIds, setRegisteredOptionIds] = useState<string[]>([]);\n\tconst handleChange = useCallback((nextValue: unknown) => onChange?.(nextValue as T), [onChange]);\n\n\t/**\n\t * Хранит порядок опций внутри группы, чтобы при отсутствии выбранного значения\n\t * оставлять ровно один tab stop на первой доступной радиокнопке.\n\t */\n\tconst registerOption = useCallback((optionId: string) => {\n\t\tsetRegisteredOptionIds((currentIds) => (currentIds.includes(optionId) ? currentIds : [...currentIds, optionId]));\n\n\t\treturn () => {\n\t\t\tsetRegisteredOptionIds((currentIds) => currentIds.filter((currentId) => currentId !== optionId));\n\t\t};\n\t}, []);\n\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tvalue,\n\t\t\tonChange: handleChange,\n\t\t\tdisabled,\n\t\t\torientation,\n\t\t\tgroupId,\n\t\t\tlabelId,\n\t\t\tdescriptionId,\n\t\t\tfirstOptionId: registeredOptionIds[0],\n\t\t\tregisterOption\n\t\t}),\n\t\t[descriptionId, disabled, groupId, handleChange, labelId, orientation, registerOption, registeredOptionIds, value]\n\t);\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiElement, disabled && uiStyles.disabled, className)}>\n\t\t\t{label && (\n\t\t\t\t<div id={labelId} className={uiStyles.uiLabel}>\n\t\t\t\t\t{label}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{description && (\n\t\t\t\t<div id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<RadioGroupContext.Provider value={contextValue}>\n\t\t\t\t<div\n\t\t\t\t\trole=\"radiogroup\"\n\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\taria-label={labelId ? undefined : ariaLabel}\n\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\tdata-disabled={disabled || undefined}\n\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.radioGroup, noWrap && styles.noWrap, styles[orientation])}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</RadioGroupContext.Provider>\n\t\t</div>\n\t);\n}\n\ninterface OptionProps<T> {\n\tvalue: T;\n\tlabel: ReactNode;\n\tdescription?: ReactNode;\n\tclassName?: string;\n}\n\n/**\n * Опция внутри `RadioGroup`, представляющая одно выбираемое значение. Отрисовывает подпись, описание и состояние выбора.\n */\nexport function Option<T>({ value, label, description, className }: OptionProps<T>) {\n\tconst context = useContext(RadioGroupContext);\n\tconst optionId = useId();\n\tconst registerOption = context?.registerOption;\n\n\tuseLayoutEffect(() => {\n\t\tif (!registerOption) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn registerOption(optionId);\n\t}, [registerOption, optionId]);\n\n\tif (!context) {\n\t\treturn (\n\t\t\t<div className={cn(styles.radioItem, className)}>\n\t\t\t\t<p className=\"textNoWrap\">{label}</p>\n\t\t\t\t{description && <div className=\"fontSizeSm content2\">{description}</div>}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isChecked = Object.is(context.value, value);\n\tconst isDisabled = context.disabled === true;\n\tconst isFallbackTabStop = context.value === undefined && context.firstOptionId === optionId;\n\n\tconst handleChange = () => {\n\t\tif (isDisabled || isChecked) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontext.onChange?.(value);\n\t};\n\n\t// TODO: логика переиспользуемая, надо вынести в хук\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n\t\tif (isDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (handleKeyboardActivation(event, handleChange)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentTarget = event.currentTarget;\n\t\tconst groupElement = currentTarget.closest<HTMLElement>('[role=\"radiogroup\"]');\n\t\tconst radioItems = Array.from(groupElement?.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not([disabled])') ?? []);\n\n\t\tif (!radioItems.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentIndex = radioItems.indexOf(currentTarget);\n\t\tif (currentIndex === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextIndex = getRovingFocusTargetIndex({\n\t\t\tcurrentIndex,\n\t\t\titemCount: radioItems.length,\n\t\t\tkey: event.key,\n\t\t\torientation: context.orientation\n\t\t});\n\n\t\tif (nextIndex === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tradioItems[nextIndex]?.focus();\n\t\tradioItems[nextIndex]?.click();\n\t};\n\n\treturn (\n\t\t<button\n\t\t\tid={`${context.groupId}-option-${optionId}`}\n\t\t\ttype=\"button\"\n\t\t\trole=\"radio\"\n\t\t\taria-checked={isChecked}\n\t\t\tdisabled={isDisabled}\n\t\t\ttabIndex={isChecked || isFallbackTabStop ? 0 : -1}\n\t\t\tclassName={cn(styles.radioItem, isChecked && styles.checked, className)}\n\t\t\tdata-ui=\"radio-option\"\n\t\t\tdata-action=\"select-radio-option\"\n\t\t\tonClick={handleChange}\n\t\t\tonKeyDown={handleKeyDown}>\n\t\t\t<p className=\"textNoWrap\">{label}</p>\n\t\t\t{description && <div className=\"fontSizeSm content2\">{description}</div>}\n\t\t</button>\n\t);\n}\n\nRadioGroup.Option = Option;\n"],"mappings":"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"}
@@ -0,0 +1,284 @@
1
+ import { o as e, t } from "./SelectOptionContent-lfEtHXfO.js";
2
+ import { t as n } from "./ui.module-BisoTevy.js";
3
+ import { c as r } from "./input-CZLUUggm.js";
4
+ import { a as i, c as a, d as o, f as s, i as c, l, o as u, r as d, t as f, u as p } from "./picker-beNX-cW9.js";
5
+ import { n as m } from "./useODataSelectBase-BxAvhDww.js";
6
+ import { useMemo as h, useRef as g, useState as ee } from "react";
7
+ import { cn as _ } from "@ryuzaki13/react-foundation-lib/utils";
8
+ import { CheckIcon as te, XIcon as ne } from "lucide-react";
9
+ import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
10
+ //#region src/select/lib/getOptionSearchText.ts
11
+ function re({ option: e, getOptionLabel: t, getOptionCode: n }) {
12
+ return [u(t(e)), u(n?.(e))].filter((e) => !!e).join(" ").toLowerCase();
13
+ }
14
+ function x(e, t, n) {
15
+ return e.find((e) => e.value === t) ?? n;
16
+ }
17
+ //#endregion
18
+ //#region src/select/model/useODataSelect.ts
19
+ function S({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
20
+ let o = m({
21
+ odata: e,
22
+ segment: t,
23
+ model: n,
24
+ value: r ? [r] : [],
25
+ dependencies: i
26
+ }), s = o.selectedItems[0], c = h(() => s ? [s, ...o.filteredItems] : o.filteredItems, [o.filteredItems, s]), l = (e) => {
27
+ a(e?.[o.selectionKey]);
28
+ };
29
+ return {
30
+ ...o,
31
+ selectedItem: s,
32
+ options: c,
33
+ handleChange: l
34
+ };
35
+ }
36
+ var C = {
37
+ inputWithOverlay: "aEEqH1",
38
+ valueOverlay: "_4HQKa7"
39
+ };
40
+ //#endregion
41
+ //#region src/select/Select.tsx
42
+ function w(e) {
43
+ let { label: t, description: r, disabled: m, placeholder: h, size: x, options: S, value: w, onChange: T, getOptionKey: E, getOptionLabel: D, getOptionCode: O, getOptionDisabled: k, getOptionAriaLabel: A, getOptionClassName: j, renderOption: M, renderValue: N, className: ie, buttonClassName: ae, optionsClassName: oe, optionsContentClassName: se, searchable: P = !1, defaultFilter: ce = !0, query: le, defaultQuery: ue, onQuery: de, renderPopupHeader: fe, emptyState: pe, loadingState: me, errorState: he, placement: ge = "bottom-start", clearable: F = !1 } = e, I = T, L = g(null), [R, _e] = ee(!1), z = P ? "search-single" : "display", B = w === void 0 ? void 0 : E(w), V = B === void 0 ? void 0 : S.find((e) => E(e) === B) ?? w, { query: H, setQuery: U } = d({
44
+ open: R,
45
+ query: le,
46
+ defaultQuery: ue,
47
+ onQuery: de,
48
+ triggerMode: z
49
+ }), W = i({
50
+ options: S,
51
+ query: H,
52
+ enabled: P && ce,
53
+ getSearchText: (e) => re({
54
+ option: e,
55
+ getOptionLabel: D,
56
+ getOptionCode: O
57
+ })
58
+ }), { activeIndex: ve, context: ye, floatingStyles: be, getFloatingProps: xe, setReference: Se, setFloating: Ce, setOptionRef: we, close: G, openList: Te, toggleOpen: Ee, selectOption: De, selectActiveOption: Oe, handleReferenceKeyDown: ke, handleFloatingKeyDown: Ae, getOptionId: je, getActiveOptionId: K } = c({
59
+ options: W,
60
+ selectedIndex: B === void 0 ? -1 : W.findIndex((e) => E(e) === B),
61
+ open: R,
62
+ onOpenChange: _e,
63
+ getOptionDisabled: k,
64
+ onSelect: I,
65
+ disabled: m,
66
+ placement: ge,
67
+ triggerMode: z
68
+ }), q = W.length > 0, J = V === void 0 ? void 0 : D(V), Y = V === void 0 ? void 0 : N ? N(V) : J, Me = u(J), Ne = V === void 0 ? void 0 : u(O?.(V)), X = u(Y) ?? Me ?? Ne ?? (B === void 0 ? "" : String(B)), Z = P && (R || H.length > 0), Pe = Z ? H : V === void 0 ? "" : X, Q = V !== void 0 && Y !== void 0 && u(Y) === void 0 && !Z, $ = f({
69
+ mode: z,
70
+ open: R,
71
+ currentQuery: H,
72
+ hasDisplayValue: V !== void 0,
73
+ inputRef: L,
74
+ setQuery: U,
75
+ openList: Te,
76
+ close: G,
77
+ toggleOpen: Ee
78
+ }), Fe = (e) => {
79
+ L.current = e;
80
+ }, Ie = () => {
81
+ F && I(void 0), U(""), G();
82
+ };
83
+ return /* @__PURE__ */ y(s, {
84
+ label: t,
85
+ description: r,
86
+ disabled: m,
87
+ placeholder: h,
88
+ size: x,
89
+ className: ie,
90
+ children: ({ controlId: e, labelId: t, describedBy: r }) => {
91
+ let i = `${e}-listbox`;
92
+ return /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(a, {
93
+ ref: Fe,
94
+ rootRef: Se,
95
+ id: e,
96
+ type: "text",
97
+ disabled: m,
98
+ readOnly: !P,
99
+ autoComplete: "off",
100
+ role: "combobox",
101
+ value: Pe,
102
+ placeholder: V === void 0 || Z ? h : void 0,
103
+ "aria-labelledby": t,
104
+ "aria-describedby": r,
105
+ "aria-haspopup": "listbox",
106
+ "aria-expanded": R,
107
+ "aria-controls": R ? i : void 0,
108
+ "aria-autocomplete": P ? "list" : "none",
109
+ "aria-activedescendant": R ? K(i) : void 0,
110
+ inputClassName: _(Q && C.inputWithOverlay, ae, "textOverflow"),
111
+ overlay: Q ? /* @__PURE__ */ y("div", {
112
+ className: C.valueOverlay,
113
+ children: Y
114
+ }) : void 0,
115
+ endAdornment: /* @__PURE__ */ y(l, {
116
+ open: R,
117
+ disabled: m,
118
+ onToggleMouseDown: $.handleToggleMouseDown,
119
+ onToggleClick: $.handleToggleClick,
120
+ children: F && V !== void 0 && !m ? /* @__PURE__ */ y("button", {
121
+ type: "button",
122
+ className: n.uiClearButton,
123
+ "data-ui": "select-clear-button",
124
+ "data-action": "clear-select",
125
+ onMouseDown: (e) => {
126
+ e.preventDefault(), e.stopPropagation();
127
+ },
128
+ onClick: (e) => {
129
+ e.preventDefault(), e.stopPropagation(), Ie();
130
+ },
131
+ "aria-label": "Очистить выбор",
132
+ children: /* @__PURE__ */ y(ne, {})
133
+ }) : null
134
+ }),
135
+ onChange: (e) => {
136
+ P && $.handleTriggerInputChange(e.target.value);
137
+ },
138
+ onClick: $.handleTriggerClick,
139
+ onFocus: (e) => {
140
+ $.handleTriggerFocus(e.currentTarget);
141
+ },
142
+ onKeyDown: (e) => {
143
+ ke(e), !e.defaultPrevented && $.handleTriggerKeyDown({
144
+ event: e,
145
+ onActivateWhenOpen: Oe,
146
+ enableSpaceActivation: !P
147
+ });
148
+ }
149
+ }), /* @__PURE__ */ y(o, {
150
+ open: R,
151
+ context: ye,
152
+ floatingStyles: be,
153
+ listId: i,
154
+ labelId: t,
155
+ descriptionId: r,
156
+ activeOptionId: q ? K(i) : void 0,
157
+ setFloating: Ce,
158
+ getFloatingProps: xe,
159
+ onKeyDown: Ae,
160
+ className: _(n.uiPopupOptions, oe),
161
+ header: fe,
162
+ children: /* @__PURE__ */ y("div", {
163
+ className: _(se, "h100 scrollable"),
164
+ children: q ? W.map((e, t) => {
165
+ let r = E(e), a = B !== void 0 && r === B, o = t === ve, s = k?.(e) ?? !1, c = {
166
+ active: o,
167
+ selected: a,
168
+ disabled: s
169
+ };
170
+ return /* @__PURE__ */ y("div", {
171
+ id: je(i, t),
172
+ ref: (e) => we(t, e),
173
+ role: "option",
174
+ "aria-selected": a,
175
+ "aria-disabled": s || void 0,
176
+ "aria-label": A?.(e),
177
+ className: _(n.uiPopupOption, s && n.disabled, o && n.uiPopupOptionActive, a && n.selected, j?.(e, c)),
178
+ onClick: () => De(e),
179
+ children: M ? M(e, c) : /* @__PURE__ */ b(v, { children: [
180
+ y(a ? te : "span", { className: n.uiPopupOptionIcon }),
181
+ /* @__PURE__ */ y("div", {
182
+ className: n.uiOptionText,
183
+ children: D(e)
184
+ }),
185
+ O && /* @__PURE__ */ y("div", {
186
+ className: n.uiOptionCode,
187
+ children: O(e)
188
+ })
189
+ ] })
190
+ }, r);
191
+ }) : /* @__PURE__ */ y(p, {
192
+ emptyState: pe,
193
+ loadingState: me,
194
+ errorState: he
195
+ })
196
+ })
197
+ })] });
198
+ }
199
+ });
200
+ }
201
+ //#endregion
202
+ //#region src/select/ODataSelect.tsx
203
+ function T(e, t, n) {
204
+ return e ? t || Object.keys(e).find((e) => e !== n) || n : t || n;
205
+ }
206
+ var E = ({ odata: n, segment: i, model: a, size: o, label: s, description: c, disabled: l, value: u, dependencies: d, onChange: f, clearable: p }) => {
207
+ let m = S({
208
+ odata: n,
209
+ segment: i,
210
+ model: e(a),
211
+ value: u,
212
+ dependencies: d,
213
+ onChange: f
214
+ });
215
+ if (m.isLoading) return /* @__PURE__ */ y(r, {
216
+ size: o,
217
+ label: s,
218
+ description: c
219
+ });
220
+ let h = i.hideCode ?? n.hideCode, g = T(m.selectedItem ?? m.options[0], m.textKey, m.codeKey);
221
+ return /* @__PURE__ */ y(w, {
222
+ size: o,
223
+ label: s,
224
+ description: c,
225
+ options: m.options,
226
+ value: m.selectedItem,
227
+ onChange: m.handleChange,
228
+ getOptionKey: (e) => e[m.codeKey],
229
+ getOptionLabel: (e) => e[g],
230
+ getOptionCode: h ? void 0 : (e) => e[m.codeKey],
231
+ getOptionAriaLabel: (e) => h || e[g] === e[m.codeKey] ? String(e[g]) : `${e[g]} ${e[m.codeKey]}`,
232
+ renderValue: (e) => /* @__PURE__ */ y(t, {
233
+ label: e[g],
234
+ code: h ? void 0 : e[m.codeKey]
235
+ }),
236
+ renderOption: (e) => /* @__PURE__ */ y(t, {
237
+ label: e[g],
238
+ code: h ? void 0 : e[m.codeKey],
239
+ highlight: m.debouncedQuery
240
+ }),
241
+ searchable: !0,
242
+ query: m.query,
243
+ onQuery: m.setQuery,
244
+ defaultFilter: !1,
245
+ disabled: l || m.isLoading,
246
+ placeholder: m.placeholder,
247
+ loadingState: "Загрузка...",
248
+ errorState: m.isError ? "Ошибка загрузки" : void 0,
249
+ emptyState: !m.isLoading && !m.isError ? "Нет данных" : void 0,
250
+ clearable: p
251
+ });
252
+ };
253
+ //#endregion
254
+ //#region src/select/SerializableSelect.tsx
255
+ function D(e, t) {
256
+ return e[t];
257
+ }
258
+ function O(e, t, n) {
259
+ let r = e[t];
260
+ if (typeof r == "string" || typeof r == "number") return r;
261
+ let i = D(e, n);
262
+ return typeof i == "string" || typeof i == "number" ? i : String(i);
263
+ }
264
+ function k({ 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 }) {
265
+ return /* @__PURE__ */ y(w, {
266
+ label: e,
267
+ description: t,
268
+ disabled: n,
269
+ placeholder: r,
270
+ size: i,
271
+ options: a,
272
+ value: o === void 0 ? void 0 : a.find((e) => D(e, c) === o),
273
+ onChange: (e) => s(e ? D(e, c) : void 0),
274
+ getOptionKey: (e) => D(e, c),
275
+ getOptionLabel: (e) => O(e, l, c),
276
+ getOptionCode: u ? (e) => D(e, c) : void 0,
277
+ className: d,
278
+ clearable: f
279
+ });
280
+ }
281
+ //#endregion
282
+ export { x as i, E as n, w as r, k as t };
283
+
284
+ //# sourceMappingURL=select-CFbZS7fx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-CFbZS7fx.js","names":[],"sources":["../../src/select/lib/getOptionSearchText.ts","../../src/select/model/useODataSelect.ts","../../src/select/Select.module.scss","../../src/select/Select.tsx","../../src/select/ODataSelect.tsx","../../src/select/SerializableSelect.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { extractPickerTextContent } from \"../../picker\";\n\nexport function getOptionSearchText<T extends InputType>({\n\toption,\n\tgetOptionLabel,\n\tgetOptionCode\n}: {\n\toption: T;\n\tgetOptionLabel: (option: T) => ReactNode;\n\tgetOptionCode?: (option: T) => ReactNode;\n}) {\n\treturn [extractPickerTextContent(getOptionLabel(option)), extractPickerTextContent(getOptionCode?.(option))]\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",".inputWithOverlay {\n\tcolor: transparent;\n\tcaret-color: transparent;\n}\n\n.valueOverlay {\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) + var(--space-xs)) 0 var(--space-md);\n\tdisplay: flex;\n\talign-items: center;\n\tpointer-events: none;\n\toverflow: hidden;\n}\n","import { ReactNode, 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, XIcon } from \"lucide-react\";\n\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\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 styles from \"./Select.module.scss\";\n\nexport type SelectOptionKey = string | number;\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) => ReactNode;\n\tgetOptionCode?: (option: TOption) => ReactNode;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionAriaLabel?: (option: TOption) => string;\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\toptionsContentClassName?: string;\n\tsearchable?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\trenderPopupHeader?: ReactNode;\n\temptyState?: ReactNode;\n\tloadingState?: 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\tgetOptionDisabled,\n\t\tgetOptionAriaLabel,\n\t\tgetOptionClassName,\n\t\trenderOption,\n\t\trenderValue,\n\t\tclassName,\n\t\tbuttonClassName,\n\t\toptionsClassName,\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\tloadingState,\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 { query: currentQuery, setQuery } = usePickerQuery({\n\t\topen,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\ttriggerMode\n\t});\n\tconst visibleOptions = usePickerDefaultFilter({\n\t\toptions,\n\t\tquery: currentQuery,\n\t\tenabled: searchable && defaultFilter,\n\t\tgetSearchText: (option) =>\n\t\t\tgetOptionSearchText({\n\t\t\t\toption,\n\t\t\t\tgetOptionLabel,\n\t\t\t\tgetOptionCode\n\t\t\t})\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: setOpen,\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 showDisplayOverlay =\n\t\tselectedOption !== undefined &&\n\t\tdisplayContent !== undefined &&\n\t\textractPickerTextContent(displayContent) === undefined &&\n\t\t!showSearchValue;\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\n\treturn (\n\t\t<PickerField\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\tclassName={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<PickerTriggerInput\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\tvalue={inputValue}\n\t\t\t\t\t\t\tplaceholder={selectedOption === undefined || showSearchValue ? placeholder : undefined}\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(showDisplayOverlay && styles.inputWithOverlay, buttonClassName, \"textOverflow\")}\n\t\t\t\t\t\t\toverlay={showDisplayOverlay ? <div className={styles.valueOverlay}>{displayContent}</div> : undefined}\n\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t{clearable && selectedOption !== undefined && !disabled ? (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-select\"\n\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\thandleClear();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Очистить выбор\">\n\t\t\t\t\t\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t}\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={cn(uiStyles.uiPopupOptions, optionsClassName)}\n\t\t\t\t\t\t\theader={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\tvisibleOptions.map((option, index) => {\n\t\t\t\t\t\t\t\t\t\tconst optionKey = getOptionKey(option);\n\t\t\t\t\t\t\t\t\t\tconst selected = selectedKey !== undefined && optionKey === selectedKey;\n\t\t\t\t\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\t\t\t\t\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\t\t\t\t\t\t\t\t\t\tconst optionState = { active, selected, disabled: optionDisabled };\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={optionKey}\n\t\t\t\t\t\t\t\t\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\t\t\t\t\t\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={getOptionAriaLabel?.(option)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\t\t\t\t\t\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOptionClassName?.(option, optionState)\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectOption(option)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderOption ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderOption(option, optionState)\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{selected ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CheckIcon className={uiStyles.uiPopupOptionIcon} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={uiStyles.uiPopupOptionIcon} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className={uiStyles.uiOptionText}>{getOptionLabel(option)}</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getOptionCode && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className={uiStyles.uiOptionCode}>{getOptionCode(option)}</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\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) : (\n\t\t\t\t\t\t\t\t\t<PickerStatus emptyState={emptyState} loadingState={loadingState} 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 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\tloadingState=\"Загрузка...\"\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 { 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 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 | number {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\" || typeof label === \"number\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" || typeof key === \"number\" ? key : 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":";;;;;;;;;;AAMA,SAAgB,GAAyC,EACxD,WACA,mBACA,oBAKE;CACF,OAAO,CAAC,EAAyB,EAAe,CAAM,CAAC,GAAG,EAAyB,IAAgB,CAAM,CAAC,CAAC,CAAC,CAC1G,QAAQ,MAAyB,EAAQ,CAAK,CAAC,CAC/C,KAAK,GAAG,CAAC,CACT,YAAY;AACf;AAGA,SAAgB,EACf,GACA,GACA,GACU;CACV,OAAO,EAAQ,MAAM,MAAW,EAAO,UAAU,CAAK,KAAK;AAC5D;;;AChBA,SAAgB,EAAe,EAAE,UAAO,YAAS,UAAO,UAAO,iBAAc,eAAmC;CAC/G,IAAM,IAAa,EAAmB;EACrC;EACA;EACA;EACA,OAAO,IAAQ,CAAC,CAAK,IAAI,CAAC;EAC1B;CACD,CAAC,GAEK,IAAe,EAAW,cAAc,IACxC,IAAU,QACV,IAIE,CAAC,GAAc,GAAG,EAAW,aAAa,IAHzC,EAAW,eAIjB,CAAC,EAAW,eAAe,CAAY,CAAC,GAErC,KAAgB,MAAqC;EAC1D,EAAS,IAAO,EAAW,aAAa;CACzC;CAEA,OAAO;EACN,GAAG;EACH;EACA;EACA;CACD;AACD;;;;;;;AE+BA,SAAgB,EAAkF,GAAyC;CAC1I,IAAM,EACL,UACA,gBACA,aACA,gBACA,SACA,YACA,UACA,aACA,iBACA,mBACA,kBACA,sBACA,uBACA,uBACA,iBACA,gBACA,eACA,qBACA,sBACA,6BACA,gBAAa,IACb,oBAAgB,IAChB,WACA,kBACA,aACA,uBACA,gBACA,kBACA,gBACA,gBAAY,gBACZ,eAAY,OACT,GACE,IAAa,GAEb,IAAW,EAAgC,IAAI,GAC/C,CAAC,GAAM,MAAW,GAAS,EAAK,GAChC,IAAc,IAAa,kBAAkB,WAC7C,IAAc,MAAU,KAAA,IAAY,KAAA,IAAY,EAAa,CAAK,GAClE,IACL,MAAgB,KAAA,IAAY,KAAA,IAAa,EAAQ,MAAM,MAAW,EAAa,CAAM,MAAM,CAAW,KAAK,GACtG,EAAE,OAAO,GAAc,gBAAa,EAAe;EACxD;EACA;EACA;EACA;EACA;CACD,CAAC,GACK,IAAiB,EAAuB;EAC7C;EACA,OAAO;EACP,SAAS,KAAc;EACvB,gBAAgB,MACf,GAAoB;GACnB;GACA;GACA;EACD,CAAC;CACH,CAAC,GAEK,EACL,iBACA,aACA,oBACA,sBACA,kBACA,iBACA,kBACA,UACA,cACA,gBACA,kBACA,wBACA,4BACA,2BACA,iBACA,yBACG,EAAyB;EAC5B,SAAS;EACT,eApBqB,MAAgB,KAAA,IAAY,KAAK,EAAe,WAAW,MAAW,EAAa,CAAM,MAAM,CAAW;EAqB/H;EACA,cAAc;EACd;EACA,UAAU;EACV;EACA;EACA;CACD,CAAC,GAEK,IAAa,EAAe,SAAS,GACrC,IAAe,MAAmB,KAAA,IAA6C,KAAA,IAAjC,EAAe,CAAc,GAC3E,IAAiB,MAAmB,KAAA,IAAyE,KAAA,IAA5D,IAAc,EAAY,CAAc,IAAI,GAC7F,KAAY,EAAyB,CAAY,GACjD,KAAW,MAAmB,KAAA,IAAwE,KAAA,IAA5D,EAAyB,IAAgB,CAAc,CAAC,GAClG,IACL,EAAyB,CAAc,KAAK,MAAa,OAAa,MAAgB,KAAA,IAAkC,KAAtB,OAAO,CAAW,IAC/G,IAAkB,MAAe,KAAQ,EAAa,SAAS,IAC/D,KAAa,IAAkB,IAAe,MAAmB,KAAA,IAA0B,KAAd,GAC7E,IACL,MAAmB,KAAA,KACnB,MAAmB,KAAA,KACnB,EAAyB,CAAc,MAAM,KAAA,KAC7C,CAAC,GACI,IAAoB,EAA2B;EACpD,MAAM;EACN;EACA;EACA,iBAAiB,MAAmB,KAAA;EACpC;EACA;EACA;EACA;EACA;CACD,CAAC,GACK,MAAgB,MAAkC;EACvD,EAAS,UAAU;CACpB,GACM,WAAoB;EAMzB,AALI,KACH,EAAW,KAAA,CAAS,GAGrB,EAAS,EAAE,GACX,EAAM;CACP;CAEA,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACK;aACT,EAAE,cAAW,YAAS,qBAAkB;GACzC,IAAM,IAAS,GAAG,EAAU;GAE5B,OACC,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,GAAD;IACC,KAAK;IACL,SAAS;IACT,IAAI;IACJ,MAAK;IACK;IACV,UAAU,CAAC;IACX,cAAa;IACb,MAAK;IACL,OAAO;IACP,aAAa,MAAmB,KAAA,KAAa,IAAkB,IAAc,KAAA;IAC7E,mBAAiB;IACjB,oBAAkB;IAClB,iBAAc;IACd,iBAAe;IACf,iBAAe,IAAO,IAAS,KAAA;IAC/B,qBAAmB,IAAa,SAAS;IACzC,yBAAuB,IAAO,EAAkB,CAAM,IAAI,KAAA;IAC1D,gBAAgB,EAAG,KAAsB,EAAO,kBAAkB,IAAiB,cAAc;IACjG,SAAS,IAAqB,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAe;IAAoB,CAAA,IAAI,KAAA;IAC5F,cACC,kBAAC,GAAD;KACO;KACI;KACV,mBAAmB,EAAkB;KACrC,eAAe,EAAkB;eAChC,KAAa,MAAmB,KAAA,KAAa,CAAC,IAC9C,kBAAC,UAAD;MACC,MAAK;MACL,WAAW,EAAS;MACpB,WAAQ;MACR,eAAY;MACZ,cAAc,MAAU;OAEvB,AADA,EAAM,eAAe,GACrB,EAAM,gBAAgB;MACvB;MACA,UAAU,MAAU;OAGnB,AAFA,EAAM,eAAe,GACrB,EAAM,gBAAgB,GACtB,GAAY;MACb;MACA,cAAW;gBACX,kBAAC,IAAD,CAAQ,CAAA;KACD,CAAA,IACL;IACiB,CAAA;IAEvB,WAAW,MAAU;KACf,KAIL,EAAkB,yBAAyB,EAAM,OAAO,KAAK;IAC9D;IACA,SAAS,EAAkB;IAC3B,UAAU,MAAU;KACnB,EAAkB,mBAAmB,EAAM,aAAa;IACzD;IACA,YAAY,MAAU;KACrB,GAAuB,CAAK,GAExB,GAAM,oBAIV,EAAkB,qBAAqB;MACtC;MACA,oBAAoB;MACpB,uBAAuB,CAAC;KACzB,CAAC;IACF;GACA,CAAA,GAED,kBAAC,GAAD;IACO;IACG;IACO;IACR;IACC;IACT,eAAe;IACf,gBAAgB,IAAa,EAAkB,CAAM,IAAI,KAAA;IAC5C;IACK;IAClB,WAAW;IACX,WAAW,EAAG,EAAS,gBAAgB,EAAgB;IACvD,QAAQ;cACR,kBAAC,OAAD;KAAK,WAAW,EAAG,IAAyB,iBAAiB;eAC3D,IACA,EAAe,KAAK,GAAQ,MAAU;MACrC,IAAM,IAAY,EAAa,CAAM,GAC/B,IAAW,MAAgB,KAAA,KAAa,MAAc,GACtD,IAAS,MAAU,IACnB,IAAiB,IAAoB,CAAM,KAAK,IAChD,IAAc;OAAE;OAAQ;OAAU,UAAU;MAAe;MAEjE,OACC,kBAAC,OAAD;OAEC,IAAI,GAAY,GAAQ,CAAK;OAC7B,MAAM,MAAS,GAAa,GAAO,CAAI;OACvC,MAAK;OACL,iBAAe;OACf,iBAAe,KAAkB,KAAA;OACjC,cAAY,IAAqB,CAAM;OACvC,WAAW,EACV,EAAS,eACT,KAAkB,EAAS,UAC3B,KAAU,EAAS,qBACnB,KAAY,EAAS,UACrB,IAAqB,GAAQ,CAAW,CACzC;OACA,eAAe,GAAa,CAAM;iBACjC,IACA,EAAa,GAAQ,CAAW,IAEhC,kBAAA,GAAA,EAAA,UAAA;QAEE,EADA,IACC,KAEA,QAFD,EAAW,WAAW,EAAS,kBAAoB,CAEL;QAE/C,kBAAC,OAAD;SAAK,WAAW,EAAS;mBAAe,EAAe,CAAM;QAAO,CAAA;QACnE,KACA,kBAAC,OAAD;SAAK,WAAW,EAAS;mBAAe,EAAc,CAAM;QAAO,CAAA;OAEnE,EAAA,CAAA;MAEC,GA9BC,CA8BD;KAEP,CAAC,IAED,kBAAC,GAAD;MAA0B;MAA0B;MAA0B;KAAa,CAAA;IAExF,CAAA;GACO,CAAA,CACZ,EAAA,CAAA;EAEJ;CACY,CAAA;AAEf;;;ACjVA,SAAS,EAAsB,GAAkC,GAAiB,GAAiB;CAKlG,OAJK,IAIE,KAAW,OAAO,KAAK,CAAI,CAAC,CAAC,MAAM,MAAQ,MAAQ,CAAO,KAAK,IAH9D,KAAW;AAIpB;AAEA,IAAa,KAA2C,EACvD,UACA,YACA,OAAO,GACP,SACA,UACA,gBACA,aACA,UACA,iBACA,aACA,mBACK;CAEL,IAAM,IAAa,EAAe;EACjC;EACA;EACA,OAJa,EAAwB,CAIrC;EACA;EACA;EACA;CACD,CAAC;CAED,IAAI,EAAW,WACd,OAAO,kBAAC,GAAD;EAAsB;EAAa;EAAoB;CAAc,CAAA;CAG7E,IAAM,IAAW,EAAQ,YAAY,EAAM,UACrC,IAAkB,EAAsB,EAAW,gBAAgB,EAAW,QAAQ,IAAI,EAAW,SAAS,EAAW,OAAO;CAEtI,OACC,kBAAC,GAAD;EACO;EACC;EACM;EACb,SAAS,EAAW;EACpB,OAAO,EAAW;EAClB,UAAU,EAAW;EACrB,eAAe,MAAS,EAAK,EAAW;EACxC,iBAAiB,MAAS,EAAK;EAC/B,eAAe,IAAW,KAAA,KAAa,MAAS,EAAK,EAAW;EAChE,qBAAqB,MACpB,KAAY,EAAK,OAAqB,EAAK,EAAW,WACnD,OAAO,EAAK,EAAgB,IAC5B,GAAG,EAAK,GAAiB,GAAG,EAAK,EAAW;EAEhD,cAAc,MACb,kBAAC,GAAD;GAAqB,OAAO,EAAK;GAAkB,MAAM,IAAW,KAAA,IAAY,EAAK,EAAW;EAAW,CAAA;EAE5G,eAAe,MACd,kBAAC,GAAD;GACC,OAAO,EAAK;GACZ,MAAM,IAAW,KAAA,IAAY,EAAK,EAAW;GAC7C,WAAW,EAAW;EACtB,CAAA;EAEF,YAAA;EACA,OAAO,EAAW;EAClB,SAAS,EAAW;EACpB,eAAe;EACf,UAAU,KAAY,EAAW;EACjC,aAAa,EAAW;EACxB,cAAa;EACb,YAAY,EAAW,UAAU,oBAAoB,KAAA;EACrD,YAAY,CAAC,EAAW,aAAa,CAAC,EAAW,UAAU,eAAe,KAAA;EAC/D;CACX,CAAA;AAEH;;;AC5DA,SAAS,EACR,GACA,GACgD;CAChD,OAAO,EAAO;AACf;AAEA,SAAS,EAIP,GAAiB,GAA2B,GAAwC;CACrF,IAAM,IAAQ,EAAO;CAErB,IAAI,OAAO,KAAU,YAAY,OAAO,KAAU,UACjD,OAAO;CAGR,IAAM,IAAM,EAAyB,GAAQ,CAAS;CACtD,OAAO,OAAO,KAAQ,YAAY,OAAO,KAAQ,WAAW,IAAM,OAAO,CAAG;AAC7E;AAEA,SAAgB,EAId,EACD,UACA,gBACA,aACA,gBACA,SACA,YACA,UACA,aACA,cACA,gBACA,eACA,cACA,gBAC8D;CAI9D,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACG;EACT,OAVD,MAAU,KAAA,IAAY,KAAA,IAAY,EAAQ,MAAM,MAAW,EAAyB,GAAQ,CAAS,MAAM,CAAK;EAW/G,WAAW,MAAgC,EAAS,IAAS,EAAyB,GAAQ,CAAS,IAAI,KAAA,CAAS;EACpH,eAAe,MAAoB,EAAyB,GAAQ,CAAS;EAC7E,iBAAiB,MAAoB,EAA2B,GAAQ,GAAa,CAAS;EAC9F,eAAe,KAAc,MAAoB,EAAyB,GAAQ,CAAS,IAAI,KAAA;EACpF;EACA;CACX,CAAA;AAEH"}
@@ -1,4 +1,4 @@
1
- import { a as e, c as t, d as n, i as r, m as i, n as a, o as ee, r as te, s as ne, t as re } from "./base-table-CoQlKABk.js";
1
+ import { a as e, c as t, d as n, i as r, m as i, n as a, o as ee, r as te, s as ne, t as re } from "./base-table-CiYSRI_J.js";
2
2
  import { useEffect as ie, useEffectEvent as ae, useMemo as o, useRef as s } from "react";
3
3
  import { formatPipelineDisplayValue as c } from "@ryuzaki13/react-foundation-lib/formatters";
4
4
  import { useTableRowSelection as l } from "@ryuzaki13/react-foundation-lib/table";
@@ -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-Dc3AqMzP.js.map
141
+ //# sourceMappingURL=table-BR2VqeEg.js.map