@ryuzaki13/react-foundation-ui 1.4.5 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/dist/advanced-search/index.js +9 -9
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/CalendarView-Cfih7hjD.js +439 -0
  7. package/dist/chunks/{CalendarView-Z_XWk7aI.js.map → CalendarView-Cfih7hjD.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-CK8j3RA4.js → TextEditorLexicalClient-BSafrkLJ.js} +245 -279
  10. package/dist/chunks/TextEditorLexicalClient-BSafrkLJ.js.map +1 -0
  11. package/dist/chunks/{badge-DwIUjH0a.js → badge-CbclcpUi.js} +2 -2
  12. package/dist/chunks/{badge-DwIUjH0a.js.map → badge-CbclcpUi.js.map} +1 -1
  13. package/dist/chunks/{base-table-BFsVwXg3.js → base-table-X7aSSjXa.js} +3 -3
  14. package/dist/chunks/{base-table-BFsVwXg3.js.map → base-table-X7aSSjXa.js.map} +1 -1
  15. package/dist/chunks/{button-BU2kRzwu.js → button-BOl7hYmT.js} +4 -4
  16. package/dist/chunks/button-BOl7hYmT.js.map +1 -0
  17. package/dist/chunks/{check-box-Dd3YFuxd.js → check-box-6HGX_KOy.js} +5 -5
  18. package/dist/chunks/check-box-6HGX_KOy.js.map +1 -0
  19. package/dist/chunks/{context-menu-C6RO7soI.js → context-menu-tcD3kVAc.js} +59 -63
  20. package/dist/chunks/context-menu-tcD3kVAc.js.map +1 -0
  21. package/dist/chunks/date-input-Bsl9dxxY.js +341 -0
  22. package/dist/chunks/date-input-Bsl9dxxY.js.map +1 -0
  23. package/dist/chunks/{floating-arrow-BE-z4QkE.js → floating-arrow-DPKwJfww.js} +3 -3
  24. package/dist/chunks/{floating-arrow-BE-z4QkE.js.map → floating-arrow-DPKwJfww.js.map} +1 -1
  25. package/dist/chunks/{input-Bp6_Ucgr.js → input-CAw1Loze.js} +61 -52
  26. package/dist/chunks/input-CAw1Loze.js.map +1 -0
  27. package/dist/chunks/{input-files-D1JzSw_Y.js → input-files-CLtQ7p8j.js} +3 -3
  28. package/dist/chunks/{input-files-D1JzSw_Y.js.map → input-files-CLtQ7p8j.js.map} +1 -1
  29. package/dist/chunks/{input-search-Bkhcinru.js → input-search-F6MPrUGF.js} +2 -2
  30. package/dist/chunks/{input-search-Bkhcinru.js.map → input-search-F6MPrUGF.js.map} +1 -1
  31. package/dist/chunks/{misc-BYxxlJz6.js → misc-Cp_r022Z.js} +2 -2
  32. package/dist/chunks/{misc-BYxxlJz6.js.map → misc-Cp_r022Z.js.map} +1 -1
  33. package/dist/chunks/{modal-paexEF0j.js → modal-DPIXoMkB.js} +3 -3
  34. package/dist/chunks/{modal-paexEF0j.js.map → modal-DPIXoMkB.js.map} +1 -1
  35. package/dist/chunks/{multi-select-COEkc8Qc.js → multi-select-Dypew65l.js} +165 -154
  36. package/dist/chunks/multi-select-Dypew65l.js.map +1 -0
  37. package/dist/chunks/{picker-e6IsrMUG.js → picker-TYLwgl1c.js} +83 -93
  38. package/dist/chunks/picker-TYLwgl1c.js.map +1 -0
  39. package/dist/chunks/popover-BTT7zSqx.js +230 -0
  40. package/dist/chunks/{popover-CGU3MlsH.js.map → popover-BTT7zSqx.js.map} +1 -1
  41. package/dist/chunks/{radio-group-CM9Lg_nc.js → radio-group-4j2HbemI.js} +2 -2
  42. package/dist/chunks/{radio-group-CM9Lg_nc.js.map → radio-group-4j2HbemI.js.map} +1 -1
  43. package/dist/chunks/{select-BON0S9Dr.js → select-DCSNVEYW.js} +37 -36
  44. package/dist/chunks/select-DCSNVEYW.js.map +1 -0
  45. package/dist/chunks/{table-Dd5BcC0k.js → table-DihiNNJt.js} +2 -2
  46. package/dist/chunks/{table-Dd5BcC0k.js.map → table-DihiNNJt.js.map} +1 -1
  47. package/dist/chunks/{ui.module-BisoTevy.js → ui.module-BfaIVBba.js} +3 -1
  48. package/dist/chunks/ui.module-BfaIVBba.js.map +1 -0
  49. package/dist/chunks/{uiClasses-BNjBunnY.js → uiClasses-4atXOh0J.js} +2 -2
  50. package/dist/chunks/{uiClasses-BNjBunnY.js.map → uiClasses-4atXOh0J.js.map} +1 -1
  51. package/dist/chunks/{useODataSelectBase-CKe1AVMI.js → useODataSelectBase-DI_wwKgw.js} +2 -2
  52. package/dist/chunks/{useODataSelectBase-CKe1AVMI.js.map → useODataSelectBase-DI_wwKgw.js.map} +1 -1
  53. package/dist/context-menu/components/MenuRoot.d.ts.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-input/lib/dateInputValue.d.ts +2 -6
  57. package/dist/date-input/lib/dateInputValue.d.ts.map +1 -1
  58. package/dist/date-input/lib/types.d.ts +0 -4
  59. package/dist/date-input/lib/types.d.ts.map +1 -1
  60. package/dist/date-input/model/useDateInput.d.ts +2 -2
  61. package/dist/date-input/model/useDateInput.d.ts.map +1 -1
  62. package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
  63. package/dist/date-input/ui/DateInput.d.ts +0 -4
  64. package/dist/date-input/ui/DateInput.d.ts.map +1 -1
  65. package/dist/date-time-input/index.js +250 -254
  66. package/dist/date-time-input/index.js.map +1 -1
  67. package/dist/date-time-input/model/useDateTimeSegments.d.ts.map +1 -1
  68. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
  69. package/dist/disclosure/index.js +4 -3
  70. package/dist/disclosure/index.js.map +1 -1
  71. package/dist/drop-zone/index.js +1 -1
  72. package/dist/expandable-action-panel/index.js +2 -2
  73. package/dist/floating-arrow/index.js +1 -1
  74. package/dist/image/index.js +4 -4
  75. package/dist/input/Input.d.ts +2 -1
  76. package/dist/input/Input.d.ts.map +1 -1
  77. package/dist/input/index.js +1 -1
  78. package/dist/input-date-time/index.js +2 -2
  79. package/dist/input-file/index.js +2 -2
  80. package/dist/input-files/index.js +1 -1
  81. package/dist/input-image/index.js +2 -2
  82. package/dist/input-search/index.js +1 -1
  83. package/dist/layout-picker/index.js +94 -107
  84. package/dist/layout-picker/index.js.map +1 -1
  85. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  86. package/dist/list/List.d.ts.map +1 -1
  87. package/dist/list/index.js +75 -46
  88. package/dist/list/index.js.map +1 -1
  89. package/dist/list/useListVirtualizer.d.ts +13 -0
  90. package/dist/list/useListVirtualizer.d.ts.map +1 -0
  91. package/dist/listbox/Listbox.d.ts +1 -0
  92. package/dist/listbox/Listbox.d.ts.map +1 -1
  93. package/dist/listbox/index.js +39 -34
  94. package/dist/listbox/index.js.map +1 -1
  95. package/dist/misc/index.js +1 -1
  96. package/dist/modal/index.js +1 -1
  97. package/dist/multi-select/index.js +2 -2
  98. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  99. package/dist/multi-select/ui/defaultRenderers.d.ts +2 -1
  100. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  101. package/dist/notifications/index.js +1 -1
  102. package/dist/picker/index.js +1 -1
  103. package/dist/picker/model/usePickerQuery.d.ts +6 -2
  104. package/dist/picker/model/usePickerQuery.d.ts.map +1 -1
  105. package/dist/picker/model/usePickerSelectionLifecycle.d.ts.map +1 -1
  106. package/dist/popover/FloatingPopover.d.ts +5 -0
  107. package/dist/popover/FloatingPopover.d.ts.map +1 -1
  108. package/dist/popover/index.js +1 -1
  109. package/dist/preset-range-date-input/index.js +2 -3
  110. package/dist/preset-range-date-input/index.js.map +1 -1
  111. package/dist/preset-select/index.js +1 -1
  112. package/dist/radio-button/index.js +3 -3
  113. package/dist/radio-button/index.js.map +1 -1
  114. package/dist/radio-group/index.js +1 -1
  115. package/dist/select/Select.d.ts.map +1 -1
  116. package/dist/select/index.js +1 -1
  117. package/dist/simple-table/index.js +1 -1
  118. package/dist/slider/Slider.d.ts.map +1 -1
  119. package/dist/slider/SliderInput.d.ts.map +1 -1
  120. package/dist/slider/index.js +400 -343
  121. package/dist/slider/index.js.map +1 -1
  122. package/dist/state-select/index.js +1 -1
  123. package/dist/styles.css +1 -1
  124. package/dist/switch/index.js +1 -1
  125. package/dist/table/index.js +1 -1
  126. package/dist/table-sorting/index.js +1 -1
  127. package/dist/tabs/index.js +2 -2
  128. package/dist/tabs/index.js.map +1 -1
  129. package/dist/tag-input/TagInput.d.ts.map +1 -1
  130. package/dist/tag-input/index.js +2 -2
  131. package/dist/tag-input/index.js.map +1 -1
  132. package/dist/text/index.js +1 -1
  133. package/dist/text-editor/EmailDialog.d.ts +1 -2
  134. package/dist/text-editor/EmailDialog.d.ts.map +1 -1
  135. package/dist/text-editor/LinkDialog.d.ts +1 -2
  136. package/dist/text-editor/LinkDialog.d.ts.map +1 -1
  137. package/dist/text-editor/PhoneDialog.d.ts +1 -2
  138. package/dist/text-editor/PhoneDialog.d.ts.map +1 -1
  139. package/dist/text-editor/SemanticDialog.d.ts +1 -2
  140. package/dist/text-editor/SemanticDialog.d.ts.map +1 -1
  141. package/dist/text-editor/TextEditorDialogs.d.ts +2 -1
  142. package/dist/text-editor/TextEditorDialogs.d.ts.map +1 -1
  143. package/dist/text-editor/TimeDialog.d.ts +1 -2
  144. package/dist/text-editor/TimeDialog.d.ts.map +1 -1
  145. package/dist/text-editor/index.js +2 -2
  146. package/dist/textarea/Textarea.d.ts.map +1 -1
  147. package/dist/textarea/index.js +3 -2
  148. package/dist/textarea/index.js.map +1 -1
  149. package/dist/toggle/index.js +1 -1
  150. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  151. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  152. package/dist/tree-select/index.js +206 -211
  153. package/dist/tree-select/index.js.map +1 -1
  154. package/dist/tree-table/index.js +1 -1
  155. package/package.json +8 -2
  156. package/src/styles/_base.scss +3 -3
  157. package/src/styles/config/_index.scss +43 -38
  158. package/src/styles/mixins/_controls.scss +17 -16
  159. package/storybook-static/assets/Badge-CD5894x5.css +1 -0
  160. package/storybook-static/assets/{Badge-Bh73-APE.js → Badge-DUTHAQCE.js} +1 -1
  161. package/storybook-static/assets/{Badge.stories-gNFtCWnR.js → Badge.stories-6iI-UG0f.js} +1 -1
  162. package/storybook-static/assets/{Button-O9QPAftp.js → Button-B0C3LMAw.js} +1 -1
  163. package/storybook-static/assets/{Button-mjF9HSg0.js → Button-CqVTrqw2.js} +1 -1
  164. package/storybook-static/assets/{Button-DtU4kGzD.css → Button-DuVDH6-g.css} +1 -1
  165. package/storybook-static/assets/{Button.stories-wkiE0c_a.js → Button.stories-DjUmGByS.js} +1 -1
  166. package/storybook-static/assets/CalendarView-hiZ9ETaP.js +1 -0
  167. package/storybook-static/assets/{CheckBox-Clpeg9q7.js → CheckBox-DBQ50PCI.js} +2 -2
  168. package/storybook-static/assets/{CheckBox-CB8fTQF0.js → CheckBox-De010n9y.js} +1 -1
  169. package/storybook-static/assets/CheckBox-Dw4nDCv8.css +1 -0
  170. package/storybook-static/assets/{CheckBox.stories-pfWBxvOy.js → CheckBox.stories-BfC6OQx3.js} +1 -1
  171. package/storybook-static/assets/{Color-6AOWCN3U-CVvkiihj.js → Color-6AOWCN3U-C_KzRv-S.js} +1 -1
  172. package/storybook-static/assets/ContextMenu-BwrqtNnY.js +1 -0
  173. package/storybook-static/assets/{ContextMenu-eGnlhRRu.js → ContextMenu-CGLg47OY.js} +1 -1
  174. package/storybook-static/assets/ContextMenu.stories-JnUlLk_E.js +90 -0
  175. package/storybook-static/assets/DateInput-4lH8A4HQ.css +1 -0
  176. package/storybook-static/assets/DateInput-BWbKmFEc.js +1 -0
  177. package/storybook-static/assets/{DateInput-DQDplLib.js → DateInput-CUPdoLCw.js} +1 -1
  178. package/storybook-static/assets/{DateInput.stories-BNpS4CND.js → DateInput.stories-DOOukQsB.js} +1 -1
  179. package/storybook-static/assets/{DateRangePresetSelect-DCBEf98i.js → DateRangePresetSelect-BWm1txZP.js} +1 -1
  180. package/storybook-static/assets/{DateRangePresetSelect-Bfx-d5qg.js → DateRangePresetSelect-CegjuKSa.js} +1 -1
  181. package/storybook-static/assets/{DateRangePresetSelect.stories-PAV2jgQb.js → DateRangePresetSelect.stories-BGCOqCf7.js} +1 -1
  182. package/storybook-static/assets/{Detail-DvmdQCue.js → Detail-DLDL5IhK.js} +1 -1
  183. package/storybook-static/assets/{Detail.stories-CEm00aSN.js → Detail.stories-BcP01iwW.js} +1 -1
  184. package/storybook-static/assets/{Dialog-3I2Y7jD7.js → Dialog-BYLrz-6d.js} +1 -1
  185. package/storybook-static/assets/Dialog-DcQbPiWK.js +1 -0
  186. package/storybook-static/assets/Dialog.stories-C5o4OhEy.js +31 -0
  187. package/storybook-static/assets/{Disclosure-DUIQ37oh.js → Disclosure-ChpGjvgZ.js} +1 -1
  188. package/storybook-static/assets/Disclosure.stories-CTL8h6Q3.js +40 -0
  189. package/storybook-static/assets/DisclosureGroup-CNoH2D1R.css +1 -0
  190. package/storybook-static/assets/DisclosureGroup-CUelavR4.js +2 -0
  191. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DwPk6ai7.js → DocsRenderer-JROSPFPF-BQTqLgKs.js} +1 -1
  192. package/storybook-static/assets/{DropZone-BGuCU5dq.js → DropZone-5Xw6HUNa.js} +1 -1
  193. package/storybook-static/assets/DropZone-ULl7tScR.js +9 -0
  194. package/storybook-static/assets/DropZone.stories-Btud72HY.js +36 -0
  195. package/storybook-static/assets/DropdownMenu-CZDVKXjD.js +1 -0
  196. package/storybook-static/assets/ExpandableActionPanel-CwamleZX.js +2 -0
  197. package/storybook-static/assets/ExpandableActionPanel.stories-BUBvJAPp.js +19 -0
  198. package/storybook-static/assets/{Flex-CBwbh1yu.js → Flex-cO3yZG-t.js} +1 -1
  199. package/storybook-static/assets/{Flex.stories-cdk6vRZq.js → Flex.stories-BAuXOTSJ.js} +1 -1
  200. package/storybook-static/assets/FloatingPopover-C56UHmzH.js +1 -0
  201. package/storybook-static/assets/{FloatingPopover-DC84VrV3.css → FloatingPopover-jwILx9b0.css} +1 -1
  202. package/storybook-static/assets/FormattedTableCell-B4ObrqF1.js +18 -0
  203. package/storybook-static/assets/{Grid-BkKqSMfk.js → Grid-B3-t0FmJ.js} +1 -1
  204. package/storybook-static/assets/{Grid.stories-828arrPi.js → Grid.stories-Cr_GpL6X.js} +1 -1
  205. package/storybook-static/assets/{ImageCropper.stories-CrIWrKKR.js → ImageCropper.stories-BDqwBC8C.js} +1 -1
  206. package/storybook-static/assets/{ImageRenderer-F3AaZx-K.js → ImageRenderer-CigIY2hD.js} +1 -1
  207. package/storybook-static/assets/{ImageRenderer.stories-l3PnRYxy.js → ImageRenderer.stories-CI8r-V1l.js} +1 -1
  208. package/storybook-static/assets/{ImageView.stories-C6uhkvCN.js → ImageView.stories-D_OG6Deg.js} +1 -1
  209. package/storybook-static/assets/{ImageViewer.stories-BSPiv5lU.js → ImageViewer.stories-CQSqogxL.js} +2 -2
  210. package/storybook-static/assets/{ImageViewerRuntime-BOpMGgz6.js → ImageViewerRuntime-DerEzrYU.js} +1 -1
  211. package/storybook-static/assets/{Input-D-ZrbHVw.js → Input-Bm1cMHGo.js} +1 -1
  212. package/storybook-static/assets/Input-Bot494Bx.js +3 -0
  213. package/storybook-static/assets/Input-Db2-9PJZ.css +1 -0
  214. package/storybook-static/assets/{Input.stories-vqPv6pLx.js → Input.stories-BovBOurM.js} +1 -1
  215. package/storybook-static/assets/{InputDateTime-DHBVbRii.js → InputDateTime-BekBAEPs.js} +1 -1
  216. package/storybook-static/assets/{InputDateTime.stories-BAvLMBuk.js → InputDateTime.stories-w3S5IslS.js} +1 -1
  217. package/storybook-static/assets/{InputFile-B9TVOEZV.js → InputFile-CuQb2x1k.js} +1 -1
  218. package/storybook-static/assets/InputFile-GBGGdgQh.js +1 -0
  219. package/storybook-static/assets/InputFile.stories-f_IZth6c.js +36 -0
  220. package/storybook-static/assets/InputFiles-C74DVQhN.js +1 -0
  221. package/storybook-static/assets/{InputFiles-CxZkOZFK.js → InputFiles-CrLCcwgR.js} +1 -1
  222. package/storybook-static/assets/InputFiles.stories-BsuddNi0.js +33 -0
  223. package/storybook-static/assets/{InputFilesList-OEX4zGI3.js → InputFilesList-Djxwuhlq.js} +1 -1
  224. package/storybook-static/assets/InputImage-CwlTJmns.js +7 -0
  225. package/storybook-static/assets/{InputImage-31A6fxSf.js → InputImage-DMaYEhTE.js} +1 -1
  226. package/storybook-static/assets/InputImage.stories-CnN_t-Bq.js +45 -0
  227. package/storybook-static/assets/InteractiveComponents.stories-B87LSnhG.js +303 -0
  228. package/storybook-static/assets/LayoutPicker-CZRoovVS.css +1 -0
  229. package/storybook-static/assets/{LayoutPicker-Dc55ovYM.js → LayoutPicker-DKMVqnzr.js} +1 -1
  230. package/storybook-static/assets/LayoutPicker-I0mjwTRq.js +376 -0
  231. package/storybook-static/assets/LayoutPicker-yb6IMmd2.css +1 -0
  232. package/storybook-static/assets/LayoutPicker.stories-B94m5_5E.js +74 -0
  233. package/storybook-static/assets/Listbox-2CNZxFrM.js +41 -0
  234. package/storybook-static/assets/Listbox-BOCPTICI.js +1 -0
  235. package/storybook-static/assets/Listbox.stories-DkRL364d.js +53 -0
  236. package/storybook-static/assets/{Modal-CXvDgktT.js → Modal-BF5Wtu_Z.js} +1 -1
  237. package/storybook-static/assets/Modal.stories-BuBDjhkS.js +180 -0
  238. package/storybook-static/assets/ModalManagerProvider-DtAfcujR.js +1 -0
  239. package/storybook-static/assets/{MultiSelect-DN4foQlG.js → MultiSelect-B5MJePks.js} +1 -1
  240. package/storybook-static/assets/MultiSelect-B75x42Va.js +2 -0
  241. package/storybook-static/assets/{MultiSelect.stories-CgKNQmma.js → MultiSelect.stories-pCDFxnvP.js} +1 -1
  242. package/storybook-static/assets/{NoData-W7wK8oTW.js → NoData-kWRpCxvl.js} +1 -1
  243. package/storybook-static/assets/{NotificationsHost-D1UoWmF8.js → NotificationsHost-lblab1gc.js} +1 -1
  244. package/storybook-static/assets/{NotificationsHost.stories-BWUuMmPl.js → NotificationsHost.stories-a3NIcVIj.js} +1 -1
  245. package/storybook-static/assets/{ODataMultiSelect-DE1V4el8.js → ODataMultiSelect-BDqBjXSe.js} +1 -1
  246. package/storybook-static/assets/{ODataMultiSelect.stories-Q1DUIL2W.js → ODataMultiSelect.stories-8nYfEOBa.js} +1 -1
  247. package/storybook-static/assets/{ODataSelect-CtoT2Wxx.js → ODataSelect-BmcZs-Q9.js} +1 -1
  248. package/storybook-static/assets/{ODataSelect.stories-DLi7Rwzk.js → ODataSelect.stories-fiEuKGVT.js} +1 -1
  249. package/storybook-static/assets/{ODataTreeMultiSelect-DEZfgyPK.js → ODataTreeMultiSelect-ZAlccR5J.js} +1 -1
  250. package/storybook-static/assets/{ODataTreeMultiSelect.stories-H42q78xI.js → ODataTreeMultiSelect.stories-sP-IANic.js} +1 -1
  251. package/storybook-static/assets/{ODataTreeSelect-BeylEiPN.js → ODataTreeSelect-DSpeH-SQ.js} +1 -1
  252. package/storybook-static/assets/{ODataTreeSelect.stories-MOILmtfY.js → ODataTreeSelect.stories-C_G-ryCy.js} +2 -2
  253. package/storybook-static/assets/{OneStepScroller-BSvYN6QP.js → OneStepScroller-BPYnBbTY.js} +1 -1
  254. package/storybook-static/assets/PeriodSelect-Dj1G9UDW.js +5 -0
  255. package/storybook-static/assets/{PeriodSelect-KQFGCxq6.js → PeriodSelect-v-ybkTTW.js} +1 -1
  256. package/storybook-static/assets/PeriodSelect.stories-DcAJ8fkJ.js +60 -0
  257. package/storybook-static/assets/{PickerSelectionToolbar-Cvv8vTZm.js → PickerSelectionToolbar-7gktfdu3.js} +1 -1
  258. package/storybook-static/assets/{PickerTriggerActions-BBZmXagt.js → PickerTriggerActions-Bd-vIbv8.js} +1 -1
  259. package/storybook-static/assets/{Popover-7YZIq8Fi.js → Popover-5dsoQ1_b.js} +1 -1
  260. package/storybook-static/assets/{Popover-D6gSyjaW.js → Popover-BoMs5h0y.js} +1 -1
  261. package/storybook-static/assets/{Popover.stories-DM69Ztws.js → Popover.stories-CbNVj_hu.js} +1 -1
  262. package/storybook-static/assets/{PresetRangeDateInput-Ch6GapcJ.js → PresetRangeDateInput-BeQMoRpC.js} +1 -1
  263. package/storybook-static/assets/PresetRangeDateInput-DyGnRjp4.js +1 -0
  264. package/storybook-static/assets/PresetRangeDateInput.stories-C7gwDup9.js +15 -0
  265. package/storybook-static/assets/{PresetSelect-C8uIYhPJ.js → PresetSelect-C8e1Xzbh.js} +1 -1
  266. package/storybook-static/assets/RadioButton-blBN8xkq.js +2 -0
  267. package/storybook-static/assets/{RadioButton-BQjiyASl.js → RadioButton-kIVy3cCo.js} +1 -1
  268. package/storybook-static/assets/RadioButton.stories-B8U30Wqk.js +35 -0
  269. package/storybook-static/assets/{RadioGroup-vw4ObVj-.js → RadioGroup-CuWLCtLr.js} +1 -1
  270. package/storybook-static/assets/{RadioGroup-DNqu6WaC.js → RadioGroup-D4fwjGGp.js} +1 -1
  271. package/storybook-static/assets/{RadioGroup.stories-B-WQzZW_.js → RadioGroup.stories-CGo-8-Bv.js} +1 -1
  272. package/storybook-static/assets/{Scrollable-DrxMuH2M.js → Scrollable-CeGzYD_u.js} +1 -1
  273. package/storybook-static/assets/{Select-BxigZNtu.js → Select-rdcqkPnE.js} +1 -1
  274. package/storybook-static/assets/Select-txovgbTh.js +12 -0
  275. package/storybook-static/assets/{Select.stories-BpTrYJSr.js → Select.stories-DPM22VkR.js} +1 -1
  276. package/storybook-static/assets/{SelectOptionContent-RAmgWCOm.js → SelectOptionContent-HqUICxHy.js} +1 -1
  277. package/storybook-static/assets/{SerializableSelect-CA9wjk2m.js → SerializableSelect-btIwjUkv.js} +1 -1
  278. package/storybook-static/assets/{SerializableSelect.stories-DXd4E-3U.js → SerializableSelect.stories-EodX_I8R.js} +1 -1
  279. package/storybook-static/assets/{SingleDateTimeInput-BeFLYUBF.js → SingleDateTimeInput-CMKsQ13r.js} +1 -1
  280. package/storybook-static/assets/SingleDateTimeInput-coulKUC8.js +1 -0
  281. package/storybook-static/assets/SingleDateTimeInput-dwDPQ0HY.css +1 -0
  282. package/storybook-static/assets/SingleDateTimeInput.stories-BkSaW82_.js +78 -0
  283. package/storybook-static/assets/Slider-BDjIIhGp.js +1 -0
  284. package/storybook-static/assets/Slider-BWuie2gr.css +1 -0
  285. package/storybook-static/assets/{Slider-BdWBkKp4.js → Slider-DhBLW1at.js} +1 -1
  286. package/storybook-static/assets/{Slider.stories-CgmOhVBs.js → Slider.stories-DpTr65-r.js} +1 -1
  287. package/storybook-static/assets/SliderInput-BEV5I_1l.js +2 -0
  288. package/storybook-static/assets/{SliderInput-QmF2VQWA.js → SliderInput-CiuILy6K.js} +1 -1
  289. package/storybook-static/assets/SliderInput.stories-CL7SlLhr.js +67 -0
  290. package/storybook-static/assets/{Sortable-D5OTpesH.js → Sortable-CtNygGoQ.js} +1 -1
  291. package/storybook-static/assets/{Sortable.stories-yz3c5EhY.js → Sortable.stories-BbNoyvN9.js} +1 -1
  292. package/storybook-static/assets/{Splitter-DVq6XBul.js → Splitter-BYaydk0U.js} +1 -1
  293. package/storybook-static/assets/{Splitter.stories-CopPw1_p.js → Splitter.stories-Bo2rHdcD.js} +1 -1
  294. package/storybook-static/assets/{StateSelect-ojwXeKmx.js → StateSelect-D2MILxIu.js} +1 -1
  295. package/storybook-static/assets/StateSelect-DNKjfPR-.js +4 -0
  296. package/storybook-static/assets/StateSelect.stories-D_NhQBcN.js +44 -0
  297. package/storybook-static/assets/{StringToggle.stories-ByYMmlXl.js → StringToggle.stories-CS507_cT.js} +1 -1
  298. package/storybook-static/assets/Switch-9gK7d4Is.js +1 -0
  299. package/storybook-static/assets/{Switch-Dy4Pahkn.js → Switch-i3aW21Wi.js} +1 -1
  300. package/storybook-static/assets/Switch.stories-BRIuS4_o.js +26 -0
  301. package/storybook-static/assets/{Table-BO6Oa4JV.js → Table-CytIsA37.js} +1 -1
  302. package/storybook-static/assets/{Table.stories--TpBKwmP.js → Table.stories-DYPLk3TC.js} +1 -1
  303. package/storybook-static/assets/{Tabs-7c93qVyH.js → Tabs-BMee-SUy.js} +1 -1
  304. package/storybook-static/assets/Tabs.stories-KqQTRqYo.js +57 -0
  305. package/storybook-static/assets/TabsBox-B5ugO318.css +1 -0
  306. package/storybook-static/assets/TabsBox-BM1mIOmT.js +2 -0
  307. package/storybook-static/assets/TagInput-ChmW4s9O.css +1 -0
  308. package/storybook-static/assets/TagInput-yEIGCMwZ.js +7 -0
  309. package/storybook-static/assets/TagInput.stories-DmuVnRfR.js +12 -0
  310. package/storybook-static/assets/{Text-BPlJUr3R.js → Text-DUN8T0sU.js} +1 -1
  311. package/storybook-static/assets/{Textarea-D3S4MkiX.js → Textarea-BeKW8LG0.js} +1 -1
  312. package/storybook-static/assets/Textarea-W648f4l-.js +1 -0
  313. package/storybook-static/assets/Textarea.stories-BbZ-hCVF.js +27 -0
  314. package/storybook-static/assets/{TimePanel-C2iZ9Qr6.js → TimePanel-D-RygTSo.js} +1 -1
  315. package/storybook-static/assets/{TimePanel.stories-JTjIv6z1.js → TimePanel.stories-CzVur3oq.js} +1 -1
  316. package/storybook-static/assets/{Toggle-OlKw8qaK.js → Toggle-CCZ3ekPb.js} +1 -1
  317. package/storybook-static/assets/{Toggle-CHmajZE5.js → Toggle-Dc5aTAHb.js} +1 -1
  318. package/storybook-static/assets/{Toggle.stories-k4Z8qQVs.js → Toggle.stories-R3abtezP.js} +1 -1
  319. package/storybook-static/assets/TreeMultiSelect-Bi-LirPw.js +1 -0
  320. package/storybook-static/assets/{TreeMultiSelect-dOg0l7rk.js → TreeMultiSelect-CzKVkvZd.js} +1 -1
  321. package/storybook-static/assets/{TreeMultiSelect.stories-CAzZRxn5.js → TreeMultiSelect.stories-Co_PUawN.js} +1 -1
  322. package/storybook-static/assets/TreePickerBase-BIbhsg5t.js +22 -0
  323. package/storybook-static/assets/{TreePickerBase-DMs9EpFv.css → TreePickerBase-BxLupQDs.css} +1 -1
  324. package/storybook-static/assets/{TreeSelect-CDecTnag.js → TreeSelect-B4G9gk8x.js} +1 -1
  325. package/storybook-static/assets/{TreeSelect-BrNyI_Qx.js → TreeSelect-Dm3zEY1S.js} +1 -1
  326. package/storybook-static/assets/{TreeSelect.stories-BUOw2Rwn.js → TreeSelect.stories-sRek_0PI.js} +1 -1
  327. package/storybook-static/assets/{TreeTable-BXw7lFBk.js → TreeTable-ybfR3-5k.js} +1 -1
  328. package/storybook-static/assets/{TreeTable.stories-z40pruPV.js → TreeTable.stories-BoZjeFKM.js} +1 -1
  329. package/storybook-static/assets/{async-BLDV04P4.js → async-Df2RUQlC.js} +1 -1
  330. package/storybook-static/assets/{blocks-BiaKjftm.js → blocks-BcJ54T3V.js} +3 -3
  331. package/storybook-static/assets/{browserAndReact-DX4H5rjQ.js → browserAndReact-Bfk1cWqT.js} +1 -1
  332. package/storybook-static/assets/{check-fB4gCKB_.js → check-Dl-iF50o.js} +1 -1
  333. package/storybook-static/assets/{chevron-down-B9GH0QvB.js → chevron-down-DOIDj8WF.js} +1 -1
  334. package/storybook-static/assets/{chevron-left-DjbyJeHO.js → chevron-left-DHEBK_X7.js} +1 -1
  335. package/storybook-static/assets/{chevron-right-D29uf09I.js → chevron-right-Cf6T-grH.js} +1 -1
  336. package/storybook-static/assets/{chunk-W22LQPXL-CGkHFiZ0.js → chunk-W22LQPXL-DLMJSt_s.js} +1 -1
  337. package/storybook-static/assets/{circle-alert-Dmd7-WNp.js → circle-alert-DmNt0Uwi.js} +1 -1
  338. package/storybook-static/assets/{circle-check-VtVMsaJJ.js → circle-check-DN8HwnBX.js} +1 -1
  339. package/storybook-static/assets/{components-CsfQDbHv.js → components-DI9O99vY.js} +3 -3
  340. package/storybook-static/assets/{contextMenu-CzdfaUsd.js → contextMenu-DWXX4ZHr.js} +1 -1
  341. package/storybook-static/assets/defaultRenderers-DwI2nLiY.js +1 -0
  342. package/storybook-static/assets/defaultRenderers-tFmVIvt_.css +1 -0
  343. package/storybook-static/assets/{download-CyVhTbv6.js → download-oMaZX_8z.js} +1 -1
  344. package/storybook-static/assets/{filesAndExcel-DlUnL-Uu.js → filesAndExcel-ur50Ve27.js} +1 -1
  345. package/storybook-static/assets/{floating-ui.react-DZ8IyUV4.js → floating-ui.react-zHdvT_EM.js} +1 -1
  346. package/storybook-static/assets/formatters-CVj-3Vn0-BFaHJqZL.js +1 -0
  347. package/storybook-static/assets/{formatters-BTz64vfu.js → formatters-CnFJmQFO.js} +16 -1
  348. package/storybook-static/assets/{formatters-runtime-DVi3RdYb.js → formatters-runtime-LyrD5drJ.js} +1 -1
  349. package/storybook-static/assets/{foundationLib-CFj4J-Pc.js → foundationLib-D-8O61ay.js} +1 -1
  350. package/storybook-static/assets/{hooks-Ch5aYb7R.js → hooks-DbzqJvP-.js} +2 -2
  351. package/storybook-static/assets/iframe-D7iJQEr5.css +1 -0
  352. package/storybook-static/assets/iframe-hjgtoR20.js +1 -0
  353. package/storybook-static/assets/{iframe-DaN-XFub.js → iframe-jqJCNVG-.js} +4 -4
  354. package/storybook-static/assets/{info-Cirk1RKZ.js → info-DTU0XXKY.js} +1 -1
  355. package/storybook-static/assets/{odata-BtfB5Aje.js → odata-BBbQt4pn.js} +1 -1
  356. package/storybook-static/assets/odata-service-B5w4YBao-BW9QLSrS.js +3 -0
  357. package/storybook-static/assets/{odataAndTables-TEZyQ-TZ.js → odataAndTables-VK5X4V6B.js} +1 -1
  358. package/storybook-static/assets/{odataFetchFn-DEKVPDzV.js → odataFetchFn-T6FIbpPz.js} +1 -1
  359. package/storybook-static/assets/{odataStoryFixtures-CDDaJZKW.js → odataStoryFixtures-pMgI1q6n.js} +1 -1
  360. package/storybook-static/assets/{persisted-BzLLmgUK.js → persisted-EtS4vVCD.js} +1 -1
  361. package/storybook-static/assets/{pureUtilities-Dw249t3R.js → pureUtilities-BIjOnY3J.js} +1 -1
  362. package/storybook-static/assets/react-BG6GAoHo.js +9 -0
  363. package/storybook-static/assets/{refresh-cw-BN3JCsXv.js → refresh-cw-1qKqpsOV.js} +1 -1
  364. package/storybook-static/assets/{runtimeAndState-CCVgv3ck.js → runtimeAndState-BorNVnh8.js} +1 -1
  365. package/storybook-static/assets/{settings-2-jtcbbWm5.js → settings-2-CPrjOIso.js} +1 -1
  366. package/storybook-static/assets/{sortable-dNWaObUX.js → sortable-D6C8wTse.js} +1 -1
  367. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-hYwVxXYm.js → syntaxhighlighter-T5IQBZDB-ifBULuBx.js} +1 -1
  368. package/storybook-static/assets/{trash-2-DrVfT0z5.js → trash-2-CIrQtNzc.js} +1 -1
  369. package/storybook-static/assets/{triangle-alert-B1Q28Bq9.js → triangle-alert-D3piZGn9.js} +1 -1
  370. package/storybook-static/assets/ui-CD51AD-_.css +1 -0
  371. package/storybook-static/assets/ui.module-kfCm3RIG.js +1 -0
  372. package/storybook-static/assets/{uiClasses-CO3Cdv1E.js → uiClasses-BS9RPcty.js} +1 -1
  373. package/storybook-static/assets/{useODataSelectBase-DlbeGYUP.js → useODataSelectBase-CwDThJRi.js} +1 -1
  374. package/storybook-static/assets/{useODataTreeData-CvsoLfiG.js → useODataTreeData-C4v28uFV.js} +1 -1
  375. package/storybook-static/assets/{usePickerDefaultFilter-DdxyE_i8.js → usePickerDefaultFilter-Be420WNF.js} +1 -1
  376. package/storybook-static/assets/usePickerQuery-BodFjGup.js +1 -0
  377. package/storybook-static/assets/{usePickerTriggerController-BHBjSLtn.js → usePickerTriggerController-BjnU7tfr.js} +1 -1
  378. package/storybook-static/assets/{usePickerTriggerController-DzBkX15M.css → usePickerTriggerController-Q-ULIoGr.css} +1 -1
  379. package/storybook-static/assets/{x-Dh43gJN9.js → x-CaGImgpS.js} +1 -1
  380. package/storybook-static/iframe.html +3 -3
  381. package/storybook-static/index.json +1 -1
  382. package/storybook-static/project.json +1 -1
  383. package/dist/chunks/CalendarView-Z_XWk7aI.js +0 -439
  384. package/dist/chunks/TextEditorLexicalClient-CK8j3RA4.js.map +0 -1
  385. package/dist/chunks/button-BU2kRzwu.js.map +0 -1
  386. package/dist/chunks/check-box-Dd3YFuxd.js.map +0 -1
  387. package/dist/chunks/context-menu-C6RO7soI.js.map +0 -1
  388. package/dist/chunks/date-input-BzExUQnc.js +0 -340
  389. package/dist/chunks/date-input-BzExUQnc.js.map +0 -1
  390. package/dist/chunks/input-Bp6_Ucgr.js.map +0 -1
  391. package/dist/chunks/multi-select-COEkc8Qc.js.map +0 -1
  392. package/dist/chunks/picker-e6IsrMUG.js.map +0 -1
  393. package/dist/chunks/popover-CGU3MlsH.js +0 -222
  394. package/dist/chunks/select-BON0S9Dr.js.map +0 -1
  395. package/dist/chunks/ui.module-BisoTevy.js.map +0 -1
  396. package/storybook-static/assets/Badge-Cr7bAbxa.css +0 -1
  397. package/storybook-static/assets/CalendarView-CqKlnF8k.js +0 -1
  398. package/storybook-static/assets/CheckBox-CT1_Mjc0.css +0 -1
  399. package/storybook-static/assets/ContextMenu-Sv4wfyS3.js +0 -1
  400. package/storybook-static/assets/ContextMenu.stories-CVw3hOvY.js +0 -90
  401. package/storybook-static/assets/DateInput-D8_Oleoy.js +0 -1
  402. package/storybook-static/assets/DateInput-pmGiwdvw.css +0 -1
  403. package/storybook-static/assets/Dialog.stories-lcadmonM.js +0 -31
  404. package/storybook-static/assets/Disclosure-DzVnkjef.css +0 -1
  405. package/storybook-static/assets/Disclosure.stories-BeizaZWP.js +0 -41
  406. package/storybook-static/assets/DropZone.stories-B4J6OZ3T.js +0 -44
  407. package/storybook-static/assets/ExpandableActionPanel.stories-gCrqbhG6.js +0 -20
  408. package/storybook-static/assets/FloatingPopover-D4h-c24R.js +0 -1
  409. package/storybook-static/assets/FormattedTableCell-Dh-kHTOC.js +0 -18
  410. package/storybook-static/assets/Input-BioMOZju.css +0 -1
  411. package/storybook-static/assets/Input-Co--DMHY.js +0 -3
  412. package/storybook-static/assets/InputFile.stories-CypBLWFh.js +0 -36
  413. package/storybook-static/assets/InputFiles.stories-BGwCp7OC.js +0 -33
  414. package/storybook-static/assets/InputImage.stories-CdpOudXI.js +0 -51
  415. package/storybook-static/assets/LayoutPicker-9tLTatHF.css +0 -1
  416. package/storybook-static/assets/LayoutPicker.stories-DXcn-WXQ.js +0 -449
  417. package/storybook-static/assets/Listbox-DF8E6oMR.js +0 -38
  418. package/storybook-static/assets/Listbox.stories-C98_9wX3.js +0 -47
  419. package/storybook-static/assets/Modal.stories-DAC_QwN7.js +0 -180
  420. package/storybook-static/assets/MultiSelect-B-wX6JPo.js +0 -2
  421. package/storybook-static/assets/MultiSelectToken-DDu5n78h.css +0 -1
  422. package/storybook-static/assets/MultiSelectToken-fjW8p4YG.js +0 -1
  423. package/storybook-static/assets/PeriodSelect.stories-BIYx4_Yy.js +0 -64
  424. package/storybook-static/assets/PresetRangeDateInput.stories-Cqd4eb0N.js +0 -15
  425. package/storybook-static/assets/RadioButton.stories-Cbho4i83.js +0 -36
  426. package/storybook-static/assets/Select-X_O4M8Hi.js +0 -12
  427. package/storybook-static/assets/SingleDateTimeInput-mOllNfg2.css +0 -1
  428. package/storybook-static/assets/SingleDateTimeInput.stories-B1aZ754N.js +0 -78
  429. package/storybook-static/assets/Slider-BYrHesOR.js +0 -1
  430. package/storybook-static/assets/Slider-DMDFRH6B.css +0 -1
  431. package/storybook-static/assets/SliderInput.stories-MjSmhiOM.js +0 -68
  432. package/storybook-static/assets/StateSelect.stories-D46m5HNn.js +0 -47
  433. package/storybook-static/assets/Switch.stories-EiAb5Z-D.js +0 -26
  434. package/storybook-static/assets/Tabs-BLkTB6pp.css +0 -1
  435. package/storybook-static/assets/Tabs.stories-DXZ0r2ix.js +0 -58
  436. package/storybook-static/assets/TagInput-LeQAhDgs.css +0 -1
  437. package/storybook-static/assets/TagInput.stories-CoM8rXwa.js +0 -18
  438. package/storybook-static/assets/Textarea.stories-47k8uHdB.js +0 -27
  439. package/storybook-static/assets/TreeMultiSelect-BC_n1Wb-.js +0 -1
  440. package/storybook-static/assets/TreePickerBase-ycYQYQgi.js +0 -22
  441. package/storybook-static/assets/formatters--mhLir82-v41eaI4a.js +0 -1
  442. package/storybook-static/assets/iframe-CJQlmNUm.css +0 -1
  443. package/storybook-static/assets/iframe-Cr7AcW_R.js +0 -1
  444. package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +0 -3
  445. package/storybook-static/assets/react-KzpmXJc9.js +0 -9
  446. package/storybook-static/assets/ui-CSPaMpbi.css +0 -1
  447. package/storybook-static/assets/ui.module-DoMIk8Oc.js +0 -1
  448. package/storybook-static/assets/usePickerQuery-6rDaPaB0.js +0 -1
  449. /package/storybook-static/assets/{CheckBox.module-BBzuj5He.js → CheckBox.module-CM_GPl_E.js} +0 -0
  450. /package/storybook-static/assets/{Modal-BL_cTIW7.css → ModalManagerProvider-BL_cTIW7.css} +0 -0
  451. /package/storybook-static/assets/{array-BBSjoTRy-CIRmlF93.js → array-D-_yMMUK-CIRmlF93.js} +0 -0
@@ -1,32 +1,64 @@
1
1
  import { t as e } from "../chunks/grid-dI94AAbi.js";
2
- import { c as t, h as n } from "../chunks/misc-BYxxlJz6.js";
3
- import r, { Children as i, useMemo as a, useRef as o } from "react";
4
- import { cn as s } from "@ryuzaki13/react-foundation-lib/utils";
5
- import { jsx as c } from "react/jsx-runtime";
6
- import { useFetchNextPageEffect as l } from "@ryuzaki13/react-foundation-lib/virtualizer";
7
- import { useVirtualizer as u } from "@tanstack/react-virtual";
2
+ import { c as t, h as n } from "../chunks/misc-Cp_r022Z.js";
3
+ import r, { Children as i, useLayoutEffect as a, useReducer as o, useRef as s, useState as c } from "react";
4
+ import { cn as l } from "@ryuzaki13/react-foundation-lib/utils";
5
+ import { jsx as u } from "react/jsx-runtime";
6
+ import { flushSync as d } from "react-dom";
7
+ import { useFetchNextPageEffect as f } from "@ryuzaki13/react-foundation-lib/virtualizer";
8
+ import { Virtualizer as p, elementScroll as m, observeElementOffset as h, observeElementRect as g } from "@tanstack/react-virtual";
9
+ //#region src/list/useListVirtualizer.ts
10
+ function _(e) {
11
+ "use no memo";
12
+ let t = o((e) => e + 1, 0)[1], [n] = c(() => new p({
13
+ ...e,
14
+ observeElementRect: g,
15
+ observeElementOffset: h,
16
+ scrollToFn: m,
17
+ onChange: (e, n) => {
18
+ if (n) {
19
+ d(t);
20
+ return;
21
+ }
22
+ t();
23
+ }
24
+ }));
25
+ return n.setOptions({
26
+ ...e,
27
+ observeElementRect: g,
28
+ observeElementOffset: h,
29
+ scrollToFn: m,
30
+ onChange: (e, n) => {
31
+ if (n) {
32
+ d(t);
33
+ return;
34
+ }
35
+ t();
36
+ }
37
+ }), a(() => n._didMount(), [n]), a(() => n._willUpdate()), n;
38
+ }
39
+ //#endregion
8
40
  //#region src/list/List.tsx
9
- var d = ({ children: t, className: n }) => i.count(t) === 0 ? /* @__PURE__ */ c("div", {}) : /* @__PURE__ */ c(e.Container, {
41
+ var v = ({ children: t, className: n }) => i.count(t) === 0 ? /* @__PURE__ */ u("div", {}) : /* @__PURE__ */ u(e.Container, {
10
42
  gap: "sm",
11
- className: s("paddingSm borderBottom", n),
43
+ className: l("paddingSm borderBottom", n),
12
44
  children: t
13
- }), f = ({ children: t, className: n }) => i.count(t) === 0 ? /* @__PURE__ */ c("div", {}) : /* @__PURE__ */ c(e.Container, {
45
+ }), y = ({ children: t, className: n }) => i.count(t) === 0 ? /* @__PURE__ */ u("div", {}) : /* @__PURE__ */ u(e.Container, {
14
46
  gap: "sm",
15
- className: s("paddingSm borderTop", n),
47
+ className: l("paddingSm borderTop", n),
16
48
  children: t
17
49
  });
18
- function p({ item: e, render: t, separated: n }) {
19
- return /* @__PURE__ */ c(r.Fragment, { children: /* @__PURE__ */ c("li", {
20
- className: s(n && "borderBottom"),
50
+ function b({ item: e, render: t, separated: n }) {
51
+ return /* @__PURE__ */ u(r.Fragment, { children: /* @__PURE__ */ u("li", {
52
+ className: l(n && "borderBottom"),
21
53
  children: t(e)
22
54
  }) });
23
55
  }
24
- function m({ items: e, getKey: n, render: r, separated: i, className: a }) {
25
- return /* @__PURE__ */ c(t, {
56
+ function x({ items: e, getKey: n, render: r, separated: i, className: a }) {
57
+ return /* @__PURE__ */ u(t, {
26
58
  className: a,
27
- children: /* @__PURE__ */ c("ul", {
59
+ children: /* @__PURE__ */ u("ul", {
28
60
  className: "",
29
- children: e.map((e, t) => /* @__PURE__ */ c(p, {
61
+ children: e.map((e, t) => /* @__PURE__ */ u(b, {
30
62
  item: e,
31
63
  render: r,
32
64
  separated: i
@@ -34,33 +66,30 @@ function m({ items: e, getKey: n, render: r, separated: i, className: a }) {
34
66
  })
35
67
  });
36
68
  }
37
- function h({ items: e, getKey: i, render: d, separated: f, className: p, isLoading: m, hasNextPage: h, fetchNextPage: g }) {
38
- let _ = o(null), v = ((e, t, n) => a(() => ({
39
- count: t ? e + 1 : e,
40
- getScrollElement: () => n.current,
69
+ function S({ items: e, getKey: i, render: a, separated: o, className: c, isLoading: d, hasNextPage: p, fetchNextPage: m }) {
70
+ "use no memo";
71
+ let h = s(null), g = _({
72
+ count: p ? e.length + 1 : e.length,
73
+ getScrollElement: () => h.current,
41
74
  measureElement: (e) => Math.ceil(e.getBoundingClientRect().height),
42
75
  estimateSize: () => 120,
43
76
  overscan: 5
44
- }), [
45
- e,
46
- t,
47
- n
48
- ]))(e.length, h, _), y = u(v), b = y.getVirtualItems();
49
- return l({
50
- virtualItems: b,
77
+ }), v = g.getVirtualItems();
78
+ return f({
79
+ virtualItems: v,
51
80
  currentItemsCount: e.length,
52
- hasNextPage: h,
53
- fetchNextPage: g
54
- }), /* @__PURE__ */ c(t, {
55
- ref: _,
56
- className: p,
57
- children: m ? /* @__PURE__ */ c(n, {}) : /* @__PURE__ */ c("ul", {
58
- style: { height: y.getTotalSize() },
81
+ hasNextPage: p,
82
+ fetchNextPage: m
83
+ }), /* @__PURE__ */ u(t, {
84
+ ref: h,
85
+ className: c,
86
+ children: d ? /* @__PURE__ */ u(n, {}) : /* @__PURE__ */ u("ul", {
87
+ style: { height: g.getTotalSize() },
59
88
  className: "relative w100",
60
- children: b.map((t) => {
61
- let a = t.index > e.length - 1, o = e[t.index];
62
- return /* @__PURE__ */ c(r.Fragment, { children: /* @__PURE__ */ c("li", {
63
- ref: y.measureElement,
89
+ children: v.map((t) => {
90
+ let s = t.index > e.length - 1, c = e[t.index];
91
+ return /* @__PURE__ */ u(r.Fragment, { children: /* @__PURE__ */ u("li", {
92
+ ref: g.measureElement,
64
93
  style: {
65
94
  position: "absolute",
66
95
  top: 0,
@@ -69,20 +98,20 @@ function h({ items: e, getKey: i, render: d, separated: f, className: p, isLoadi
69
98
  transform: `translateY(${Math.round(t.start)}px)`
70
99
  },
71
100
  "data-index": t.index,
72
- className: s(f && "borderBottom"),
73
- children: a ? /* @__PURE__ */ c(n, {}) : d(o)
74
- }) }, a ? "loader" : i(o, t.index));
101
+ className: l(o && "borderBottom"),
102
+ children: s ? /* @__PURE__ */ u(n, {}) : a(c)
103
+ }) }, s ? "loader" : i(c, t.index));
75
104
  })
76
105
  })
77
106
  });
78
107
  }
79
- var g = ({ className: t, children: n }) => /* @__PURE__ */ c(e.Container, {
108
+ var C = ({ className: t, children: n }) => /* @__PURE__ */ u(e.Container, {
80
109
  templateRows: "auto 1fr auto",
81
- className: s("h100", t),
110
+ className: l("h100", t),
82
111
  children: n
83
112
  });
84
- g.Toolbar = d, g.Content = m, g.Footer = f, g.VirtualizedContent = h;
113
+ C.Toolbar = v, C.Content = x, C.Footer = y, C.VirtualizedContent = S;
85
114
  //#endregion
86
- export { g as List };
115
+ export { C as List };
87
116
 
88
117
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/list/List.tsx"],"sourcesContent":["import React, { Children, PropsWithChildren, useMemo, useRef } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { useFetchNextPageEffect } from \"@ryuzaki13/react-foundation-lib/virtualizer\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\n\nimport { Grid } from \"../grid\";\nimport { LoadingMessage, Scrollable } from \"../misc\";\n\ninterface ListToolbarProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nconst ListToolbar: React.FC<ListToolbarProps> = ({ children, className }) => {\n\tif (Children.count(children) === 0) {\n\t\t// Пустой блок для корректной работы родительского шаблона auto 1fr auto\n\t\treturn <div></div>;\n\t}\n\n\treturn (\n\t\t<Grid.Container gap=\"sm\" className={cn(\"paddingSm borderBottom\", className)}>\n\t\t\t{children}\n\t\t</Grid.Container>\n\t);\n};\n\ninterface ListFooterProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nconst ListFooter: React.FC<ListFooterProps> = ({ children, className }) => {\n\tif (Children.count(children) === 0) {\n\t\t// Пустой блок для корректной работы родительского шаблона auto 1fr auto\n\t\treturn <div></div>;\n\t}\n\n\treturn (\n\t\t<Grid.Container gap=\"sm\" className={cn(\"paddingSm borderTop\", className)}>\n\t\t\t{children}\n\t\t</Grid.Container>\n\t);\n};\n\ninterface ListItemProps<T> {\n\titem: T;\n\trender: (item: T) => React.ReactNode;\n\tseparated?: boolean;\n}\n\nfunction ListItem<T>({ item, render, separated }: ListItemProps<T>) {\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<li className={cn(separated && \"borderBottom\")}>{render(item)}</li>\n\t\t\t{/* {separated && <Separator as=\"li\" />} */}\n\t\t</React.Fragment>\n\t);\n}\n\ninterface ListContentProps<T> {\n\titems: T[];\n\tgetKey: (item: T, index: number) => string;\n\trender: (item: T) => React.ReactNode;\n\tseparated?: boolean;\n\tclassName?: string;\n}\n\nfunction ListContent<T>({ items, getKey, render, separated, className }: ListContentProps<T>) {\n\treturn (\n\t\t<Scrollable className={className}>\n\t\t\t<ul className=\"\">\n\t\t\t\t{items.map((item, index) => (\n\t\t\t\t\t<ListItem<T> key={getKey(item, index)} item={item} render={render} separated={separated} />\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</Scrollable>\n\t);\n}\n\ninterface ListVirtualizedContentProps<T> {\n\titems: T[];\n\tgetKey: (item: T, index: number) => string;\n\trender: (item: T) => React.ReactNode;\n\tisLoading?: boolean;\n\tseparated?: boolean;\n\tclassName?: string;\n\t/** Параметры для бесконечной подгрузки */\n\thasNextPage: boolean;\n\tfetchNextPage: () => Promise<unknown>;\n}\n\nfunction ListVirtualizedContent<T>({\n\titems,\n\tgetKey,\n\trender,\n\tseparated,\n\tclassName,\n\tisLoading,\n\thasNextPage,\n\tfetchNextPage\n}: ListVirtualizedContentProps<T>) {\n\tconst parentRef = useRef<HTMLDivElement | null>(null);\n\n\tconst useVirtualizerConfig = (itemsCount: number, hasNextPage: boolean | undefined, parentRef: React.RefObject<HTMLElement | null>) => {\n\t\treturn useMemo(\n\t\t\t() => ({\n\t\t\t\tcount: hasNextPage ? itemsCount + 1 : itemsCount,\n\t\t\t\tgetScrollElement: () => parentRef.current,\n\t\t\t\tmeasureElement: (el: Element) => Math.ceil(el.getBoundingClientRect().height),\n\t\t\t\testimateSize: () => 120,\n\t\t\t\toverscan: 5\n\t\t\t}),\n\t\t\t[itemsCount, hasNextPage, parentRef]\n\t\t);\n\t};\n\n\tconst config = useVirtualizerConfig(items.length, hasNextPage, parentRef);\n\tconst rowVirtualizer = useVirtualizer(config);\n\n\tconst virtualItems = rowVirtualizer.getVirtualItems();\n\n\tuseFetchNextPageEffect({ virtualItems, currentItemsCount: items.length, hasNextPage, fetchNextPage });\n\n\treturn (\n\t\t<Scrollable ref={parentRef} className={className}>\n\t\t\t{isLoading ? (\n\t\t\t\t<LoadingMessage />\n\t\t\t) : (\n\t\t\t\t<ul style={{ height: rowVirtualizer.getTotalSize() }} className=\"relative w100\">\n\t\t\t\t\t{virtualItems.map((virtualRow) => {\n\t\t\t\t\t\tconst isLoaderRow = virtualRow.index > items.length - 1;\n\t\t\t\t\t\tconst item = items[virtualRow.index];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={isLoaderRow ? \"loader\" : getKey(item, virtualRow.index)}>\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tref={rowVirtualizer.measureElement}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\t\ttransform: `translateY(${Math.round(virtualRow.start)}px)`\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tdata-index={virtualRow.index}\n\t\t\t\t\t\t\t\t\tclassName={cn(separated && \"borderBottom\")}>\n\t\t\t\t\t\t\t\t\t{isLoaderRow ? <LoadingMessage /> : render(item)}\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</Scrollable>\n\t);\n}\n\ninterface ListComposition {\n\tToolbar: typeof ListToolbar;\n\tContent: typeof ListContent;\n\tFooter: typeof ListFooter;\n\tVirtualizedContent: typeof ListVirtualizedContent;\n}\n\ninterface ListProps extends PropsWithChildren {\n\tclassName?: string;\n}\n\nexport const List: React.FC<ListProps> & ListComposition = ({ className, children }) => {\n\treturn (\n\t\t<Grid.Container templateRows=\"auto 1fr auto\" className={cn(\"h100\", className)}>\n\t\t\t{children}\n\t\t</Grid.Container>\n\t);\n};\n\n// Компоновка\nList.Toolbar = ListToolbar;\nList.Content = ListContent;\nList.Footer = ListFooter;\nList.VirtualizedContent = ListVirtualizedContent;\n"],"mappings":";;;;;;;;AAcA,IAAM,KAA2C,EAAE,aAAU,mBACxD,EAAS,MAAM,CAAQ,MAAM,IAEzB,kBAAC,OAAD,CAAU,CAAA,IAIjB,kBAAC,EAAK,WAAN;CAAgB,KAAI;CAAK,WAAW,EAAG,0BAA0B,CAAS;CACxE;AACc,CAAA,GASZ,KAAyC,EAAE,aAAU,mBACtD,EAAS,MAAM,CAAQ,MAAM,IAEzB,kBAAC,OAAD,CAAU,CAAA,IAIjB,kBAAC,EAAK,WAAN;CAAgB,KAAI;CAAK,WAAW,EAAG,uBAAuB,CAAS;CACrE;AACc,CAAA;AAUlB,SAAS,EAAY,EAAE,SAAM,WAAQ,gBAA+B;CACnE,OACC,kBAAC,EAAM,UAAP,EAAA,UACC,kBAAC,MAAD;EAAI,WAAW,EAAG,KAAa,cAAc;EAAI,UAAA,EAAO,CAAI;CAAM,CAAA,EAEnD,CAAA;AAElB;AAUA,SAAS,EAAe,EAAE,UAAO,WAAQ,WAAQ,cAAW,gBAAkC;CAC7F,OACC,kBAAC,GAAD;EAAuB;EACtB,UAAA,kBAAC,MAAD;GAAI,WAAU;GACZ,UAAA,EAAM,KAAK,GAAM,MACjB,kBAAC,GAAD;IAA6C;IAAc;IAAmB;GAAY,GAAxE,EAAO,GAAM,CAAK,CAAsD,CAC1F;EACE,CAAA;CACO,CAAA;AAEd;AAcA,SAAS,EAA0B,EAClC,UACA,WACA,WACA,cACA,cACA,cACA,gBACA,oBACkC;CAClC,IAAM,IAAY,EAA8B,IAAI,GAe9C,MAbwB,GAAoB,GAAkC,MAC5E,SACC;EACN,OAAO,IAAc,IAAa,IAAI;EACtC,wBAAwB,EAAU;EAClC,iBAAiB,MAAgB,KAAK,KAAK,EAAG,sBAAsB,CAAC,CAAC,MAAM;EAC5E,oBAAoB;EACpB,UAAU;CACX,IACA;EAAC;EAAY;EAAa;CAAS,CACpC,EAGc,CAAqB,EAAM,QAAQ,GAAa,CAAS,GAClE,IAAiB,EAAe,CAAM,GAEtC,IAAe,EAAe,gBAAgB;CAIpD,OAFA,EAAuB;EAAE;EAAc,mBAAmB,EAAM;EAAQ;EAAa;CAAc,CAAC,GAGnG,kBAAC,GAAD;EAAY,KAAK;EAAsB;EACrC,UAAA,IACA,kBAAC,GAAD,CAAiB,CAAA,IAEjB,kBAAC,MAAD;GAAI,OAAO,EAAE,QAAQ,EAAe,aAAa,EAAE;GAAG,WAAU;GAC9D,UAAA,EAAa,KAAK,MAAe;IACjC,IAAM,IAAc,EAAW,QAAQ,EAAM,SAAS,GAChD,IAAO,EAAM,EAAW;IAE9B,OACC,kBAAC,EAAM,UAAP,EAAA,UACC,kBAAC,MAAD;KACC,KAAK,EAAe;KACpB,OAAO;MACN,UAAU;MACV,KAAK;MACL,MAAM;MACN,OAAO;MACP,WAAW,cAAc,KAAK,MAAM,EAAW,KAAK,EAAE;KACvD;KACA,cAAY,EAAW;KACvB,WAAW,EAAG,KAAa,cAAc;KACxC,UAAA,IAAc,kBAAC,GAAD,CAAiB,CAAA,IAAI,EAAO,CAAI;IAC5C,CAAA,EACW,GAdK,IAAc,WAAW,EAAO,GAAM,EAAW,KAAK,CAc3D;GAElB,CAAC;EACE,CAAA;CAEM,CAAA;AAEd;AAaA,IAAa,KAA+C,EAAE,cAAW,kBAEvE,kBAAC,EAAK,WAAN;CAAgB,cAAa;CAAgB,WAAW,EAAG,QAAQ,CAAS;CAC1E;AACc,CAAA;AAKlB,EAAK,UAAU,GACf,EAAK,UAAU,GACf,EAAK,SAAS,GACd,EAAK,qBAAqB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/list/useListVirtualizer.ts","../../src/list/List.tsx"],"sourcesContent":["import { useLayoutEffect, useReducer, useState } from \"react\";\n\nimport { elementScroll, observeElementOffset, observeElementRect, Virtualizer, type VirtualizerOptions } from \"@tanstack/react-virtual\";\nimport { flushSync } from \"react-dom\";\n\ntype ListVirtualizerOptions = Pick<\n\tVirtualizerOptions<HTMLDivElement, HTMLElement>,\n\t\"count\" | \"estimateSize\" | \"getScrollElement\" | \"measureElement\" | \"overscan\"\n>;\n\n/**\n * Приватный React-adapter для списка поверх публичного TanStack Virtual core.\n *\n * `@tanstack/react-virtual#useVirtualizer` возвращает изменяемый объект с методами,\n * который React Compiler намеренно считает несовместимым с memoization. Этот hook\n * сохраняет тот же lifecycle, но изолирует imperative instance и отдаёт компоненту\n * только актуальный снимок после уведомлений virtualizer-а.\n */\nexport function useListVirtualizer(options: ListVirtualizerOptions) {\n\t\"use no memo\";\n\n\tconst rerender = useReducer((revision: number) => revision + 1, 0)[1];\n\tconst [instance] = useState(\n\t\t() =>\n\t\t\tnew Virtualizer<HTMLDivElement, HTMLElement>({\n\t\t\t\t...options,\n\t\t\t\tobserveElementRect,\n\t\t\t\tobserveElementOffset,\n\t\t\t\tscrollToFn: elementScroll,\n\t\t\t\tonChange: (_instance, sync) => {\n\t\t\t\t\tif (sync) {\n\t\t\t\t\t\tflushSync(rerender);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\trerender();\n\t\t\t\t}\n\t\t\t})\n\t);\n\n\tinstance.setOptions({\n\t\t...options,\n\t\tobserveElementRect,\n\t\tobserveElementOffset,\n\t\tscrollToFn: elementScroll,\n\t\tonChange: (_instance, sync) => {\n\t\t\tif (sync) {\n\t\t\t\tflushSync(rerender);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trerender();\n\t\t}\n\t});\n\n\t/** Подключает и симметрично освобождает browser observers экземпляра. */\n\tuseLayoutEffect(() => instance._didMount(), [instance]);\n\n\t/** После каждого commit синхронизирует scroll element и актуальные options. */\n\tuseLayoutEffect(() => instance._willUpdate());\n\n\treturn instance;\n}\n","import React, { Children, PropsWithChildren, useRef } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { useFetchNextPageEffect } from \"@ryuzaki13/react-foundation-lib/virtualizer\";\n\nimport { Grid } from \"../grid\";\nimport { LoadingMessage, Scrollable } from \"../misc\";\n\nimport { useListVirtualizer } from \"./useListVirtualizer\";\n\ninterface ListToolbarProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nconst ListToolbar: React.FC<ListToolbarProps> = ({ children, className }) => {\n\tif (Children.count(children) === 0) {\n\t\t// Пустой блок для корректной работы родительского шаблона auto 1fr auto\n\t\treturn <div></div>;\n\t}\n\n\treturn (\n\t\t<Grid.Container gap=\"sm\" className={cn(\"paddingSm borderBottom\", className)}>\n\t\t\t{children}\n\t\t</Grid.Container>\n\t);\n};\n\ninterface ListFooterProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nconst ListFooter: React.FC<ListFooterProps> = ({ children, className }) => {\n\tif (Children.count(children) === 0) {\n\t\t// Пустой блок для корректной работы родительского шаблона auto 1fr auto\n\t\treturn <div></div>;\n\t}\n\n\treturn (\n\t\t<Grid.Container gap=\"sm\" className={cn(\"paddingSm borderTop\", className)}>\n\t\t\t{children}\n\t\t</Grid.Container>\n\t);\n};\n\ninterface ListItemProps<T> {\n\titem: T;\n\trender: (item: T) => React.ReactNode;\n\tseparated?: boolean;\n}\n\nfunction ListItem<T>({ item, render, separated }: ListItemProps<T>) {\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<li className={cn(separated && \"borderBottom\")}>{render(item)}</li>\n\t\t\t{/* {separated && <Separator as=\"li\" />} */}\n\t\t</React.Fragment>\n\t);\n}\n\ninterface ListContentProps<T> {\n\titems: T[];\n\tgetKey: (item: T, index: number) => string;\n\trender: (item: T) => React.ReactNode;\n\tseparated?: boolean;\n\tclassName?: string;\n}\n\nfunction ListContent<T>({ items, getKey, render, separated, className }: ListContentProps<T>) {\n\treturn (\n\t\t<Scrollable className={className}>\n\t\t\t<ul className=\"\">\n\t\t\t\t{items.map((item, index) => (\n\t\t\t\t\t<ListItem<T> key={getKey(item, index)} item={item} render={render} separated={separated} />\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</Scrollable>\n\t);\n}\n\ninterface ListVirtualizedContentProps<T> {\n\titems: T[];\n\tgetKey: (item: T, index: number) => string;\n\trender: (item: T) => React.ReactNode;\n\tisLoading?: boolean;\n\tseparated?: boolean;\n\tclassName?: string;\n\t/** Параметры для бесконечной подгрузки */\n\thasNextPage: boolean;\n\tfetchNextPage: () => Promise<unknown>;\n}\n\nfunction ListVirtualizedContent<T>({\n\titems,\n\tgetKey,\n\trender,\n\tseparated,\n\tclassName,\n\tisLoading,\n\thasNextPage,\n\tfetchNextPage\n}: ListVirtualizedContentProps<T>) {\n\t\"use no memo\";\n\n\tconst parentRef = useRef<HTMLDivElement | null>(null);\n\tconst rowVirtualizer = useListVirtualizer({\n\t\tcount: hasNextPage ? items.length + 1 : items.length,\n\t\tgetScrollElement: () => parentRef.current,\n\t\tmeasureElement: (element) => Math.ceil(element.getBoundingClientRect().height),\n\t\testimateSize: () => 120,\n\t\toverscan: 5\n\t});\n\n\tconst virtualItems = rowVirtualizer.getVirtualItems();\n\n\tuseFetchNextPageEffect({ virtualItems, currentItemsCount: items.length, hasNextPage, fetchNextPage });\n\n\treturn (\n\t\t<Scrollable ref={parentRef} className={className}>\n\t\t\t{isLoading ? (\n\t\t\t\t<LoadingMessage />\n\t\t\t) : (\n\t\t\t\t<ul style={{ height: rowVirtualizer.getTotalSize() }} className=\"relative w100\">\n\t\t\t\t\t{virtualItems.map((virtualRow) => {\n\t\t\t\t\t\tconst isLoaderRow = virtualRow.index > items.length - 1;\n\t\t\t\t\t\tconst item = items[virtualRow.index];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={isLoaderRow ? \"loader\" : getKey(item, virtualRow.index)}>\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tref={rowVirtualizer.measureElement}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\t\t\t\t\ttransform: `translateY(${Math.round(virtualRow.start)}px)`\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tdata-index={virtualRow.index}\n\t\t\t\t\t\t\t\t\tclassName={cn(separated && \"borderBottom\")}>\n\t\t\t\t\t\t\t\t\t{isLoaderRow ? <LoadingMessage /> : render(item)}\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</Scrollable>\n\t);\n}\n\ninterface ListComposition {\n\tToolbar: typeof ListToolbar;\n\tContent: typeof ListContent;\n\tFooter: typeof ListFooter;\n\tVirtualizedContent: typeof ListVirtualizedContent;\n}\n\ninterface ListProps extends PropsWithChildren {\n\tclassName?: string;\n}\n\nexport const List: React.FC<ListProps> & ListComposition = ({ className, children }) => {\n\treturn (\n\t\t<Grid.Container templateRows=\"auto 1fr auto\" className={cn(\"h100\", className)}>\n\t\t\t{children}\n\t\t</Grid.Container>\n\t);\n};\n\n// Компоновка\nList.Toolbar = ListToolbar;\nList.Content = ListContent;\nList.Footer = ListFooter;\nList.VirtualizedContent = ListVirtualizedContent;\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Virtualizer, type VirtualizerOptions } from "@tanstack/react-virtual";
2
+ type ListVirtualizerOptions = Pick<VirtualizerOptions<HTMLDivElement, HTMLElement>, "count" | "estimateSize" | "getScrollElement" | "measureElement" | "overscan">;
3
+ /**
4
+ * Приватный React-adapter для списка поверх публичного TanStack Virtual core.
5
+ *
6
+ * `@tanstack/react-virtual#useVirtualizer` возвращает изменяемый объект с методами,
7
+ * который React Compiler намеренно считает несовместимым с memoization. Этот hook
8
+ * сохраняет тот же lifecycle, но изолирует imperative instance и отдаёт компоненту
9
+ * только актуальный снимок после уведомлений virtualizer-а.
10
+ */
11
+ export declare function useListVirtualizer(options: ListVirtualizerOptions): Virtualizer<HTMLDivElement, HTMLElement>;
12
+ export {};
13
+ //# sourceMappingURL=useListVirtualizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useListVirtualizer.d.ts","sourceRoot":"","sources":["../../src/list/useListVirtualizer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2D,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGxI,KAAK,sBAAsB,GAAG,IAAI,CACjC,kBAAkB,CAAC,cAAc,EAAE,WAAW,CAAC,EAC/C,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,UAAU,CAC7E,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,4CA4CjE"}
@@ -6,6 +6,7 @@ type ListboxOption<T> = {
6
6
  };
7
7
  interface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLUListElement>, "onChange" | "defaultValue" | "value"> {
8
8
  options: ListboxOption<T>[];
9
+ disabled?: boolean;
9
10
  focusOnMount?: boolean;
10
11
  renderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;
11
12
  getKey?: (option: ListboxOption<T>, index: number) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"Listbox.d.ts","sourceRoot":"","sources":["../../src/listbox/Listbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAiB,SAAS,EAAgE,MAAM,OAAO,CAAC;AAapI,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,UAAU,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAClH,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC;IACzF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7D;AAGD,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACxD;AAGD,UAAU,iBAAiB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC1D;AA4BD;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AACtE,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"Listbox.d.ts","sourceRoot":"","sources":["../../src/listbox/Listbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAiB,SAAS,EAAgE,MAAM,OAAO,CAAC;AAapI,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,UAAU,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAClH,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC;IACzF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7D;AAGD,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACxD;AAGD,UAAU,iBAAiB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC1D;AA4BD;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AACtE,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "../chunks/ui.module-BisoTevy.js";
1
+ import { t as e } from "../chunks/ui.module-BfaIVBba.js";
2
2
  import { useEffect as t, useId as n, useLayoutEffect as r, useMemo as i, useRef as a, useState as o } from "react";
3
3
  import { cn as s, findFirstEnabledIndex as c, findLastEnabledIndex as l, findNextEnabledIndex as u, handleKeyboardActivation as d } from "@ryuzaki13/react-foundation-lib/utils";
4
4
  import { CheckIcon as f } from "lucide-react";
@@ -20,58 +20,63 @@ function g(e, t, n) {
20
20
  return c(e, h);
21
21
  }
22
22
  function _(_) {
23
- let { value: v, defaultValue: y, multiple: b, focusOnMount: x, renderItem: S, getKey: C, options: w, onChange: T, id: E, ...D } = _, O = v !== void 0, k = n(), A = E ?? `${k}-listbox`, [j, M] = o(y), N = a(null), [P, F] = o(() => g(w, v ?? y, b)), I = i(() => (O ? v : j) ?? (b ? [] : null), [
24
- j,
25
- O,
23
+ let { value: v, defaultValue: y, multiple: b, disabled: x, focusOnMount: S, renderItem: C, getKey: w, options: T, onChange: E, id: D, ...O } = _, k = v !== void 0, A = n(), j = D ?? `${A}-listbox`, [M, N] = o(y), P = a(null), [F, I] = o(() => g(T, v ?? y, b)), L = a(!1), R = i(() => (k ? v : M) ?? (b ? [] : null), [
24
+ M,
25
+ k,
26
26
  b,
27
27
  v
28
- ]), L = P, R = (e) => {
29
- if (e.disabled) return;
28
+ ]), z = F, B = (e) => {
29
+ if (x || e.disabled) return;
30
30
  let t;
31
31
  if (_.multiple) {
32
- let n = Array.isArray(I) ? I : [];
32
+ let n = Array.isArray(R) ? R : [];
33
33
  t = n.includes(e.value) ? n.filter((t) => t !== e.value) : [...n, e.value], _.onChange?.(t, e);
34
34
  } else t = e.value, _.onChange?.(t, e);
35
- O || M(t);
35
+ k || N(t);
36
36
  };
37
37
  return t(() => {
38
- let e = N.current?.querySelectorAll("[role=\"option\"]")[L];
38
+ if (!L.current) return;
39
+ L.current = !1;
40
+ let e = P.current?.querySelectorAll("[role=\"option\"]")[z];
39
41
  e && e.scrollIntoView({ block: "nearest" });
40
- }, [L]), r(() => {
41
- x && N.current?.focus();
42
- }, [x]), /* @__PURE__ */ p("ul", {
43
- ref: N,
44
- id: A,
42
+ }, [z]), r(() => {
43
+ S && P.current?.focus();
44
+ }, [S]), /* @__PURE__ */ p("ul", {
45
+ ref: P,
46
+ id: j,
45
47
  role: "listbox",
46
48
  "aria-multiselectable": b || void 0,
47
- "aria-activedescendant": L >= 0 ? `${A}-option-${L}` : void 0,
48
- tabIndex: 0,
49
+ "aria-activedescendant": z >= 0 ? `${j}-option-${z}` : void 0,
49
50
  onKeyDown: (e) => {
50
- if (e.key === "ArrowDown") e.preventDefault(), F((e) => u(w, e, 1, h));
51
- else if (e.key === "ArrowUp") e.preventDefault(), F((e) => u(w, e, -1, h));
52
- else if (e.key === "Home") e.preventDefault(), F(c(w, h));
53
- else if (e.key === "End") e.preventDefault(), F(l(w, h));
54
- else if (d(e, () => {
55
- let e = w[L];
56
- e && R(e);
57
- })) return;
51
+ if (!x) {
52
+ if (e.key === "ArrowDown") e.preventDefault(), L.current = !0, I((e) => u(T, e, 1, h));
53
+ else if (e.key === "ArrowUp") e.preventDefault(), L.current = !0, I((e) => u(T, e, -1, h));
54
+ else if (e.key === "Home") e.preventDefault(), L.current = !0, I(c(T, h));
55
+ else if (e.key === "End") e.preventDefault(), L.current = !0, I(l(T, h));
56
+ else if (d(e, () => {
57
+ let e = T[z];
58
+ e && B(e);
59
+ })) return;
60
+ }
58
61
  },
59
- ...D,
60
- className: s(e.uiPanel, "scrollable"),
61
- children: w.map((t, n) => {
62
- let r = b ? Array.isArray(I) && I.includes(t.value) : I === t.value, i = n === L;
62
+ ...O,
63
+ "aria-disabled": x || void 0,
64
+ tabIndex: x ? -1 : 0,
65
+ className: s(e.uiPanel, "scrollable surface1", x && e.disabled),
66
+ children: T.map((t, n) => {
67
+ let r = b ? Array.isArray(R) && R.includes(t.value) : R === t.value, i = n === z;
63
68
  return /* @__PURE__ */ m("li", {
64
- id: `${A}-option-${n}`,
69
+ id: `${j}-option-${n}`,
65
70
  role: "option",
66
71
  "aria-selected": r,
67
- "aria-disabled": t.disabled || void 0,
72
+ "aria-disabled": x || t.disabled || void 0,
68
73
  onMouseDown: (e) => {
69
- e.preventDefault(), !t.disabled && (F(n), R(t));
74
+ e.preventDefault(), !(x || t.disabled) && (I(n), B(t));
70
75
  },
71
76
  tabIndex: -1,
72
- className: s(e.uiPopupOption, t.disabled && e.disabled, i && e.uiPopupOptionActive, r && e.selected),
73
- children: [p(r ? f : "span", { className: e.uiPopupOptionIcon }), /* @__PURE__ */ p("div", { children: S ? S(t, r, i) : t.label ?? String(t.value) })]
74
- }, C ? C(t, n) : n);
77
+ className: s(e.uiPopupOption, (x || t.disabled) && e.disabled, i && e.uiPopupOptionActive, r && e.selected),
78
+ children: [p(r ? f : "span", { className: e.uiPopupOptionIcon }), /* @__PURE__ */ p("div", { children: C ? C(t, r, i) : t.label ?? String(t.value) })]
79
+ }, w ? w(t, n) : n);
75
80
  })
76
81
  });
77
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/listbox/Listbox.tsx"],"sourcesContent":["import { HTMLAttributes, JSX, KeyboardEvent, ReactNode, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n\tcn,\n\tfindFirstEnabledIndex,\n\tfindLastEnabledIndex,\n\tfindNextEnabledIndex,\n\thandleKeyboardActivation\n} from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ntype ListboxOption<T> = {\n\tvalue: T;\n\tlabel?: string;\n\tdisabled?: boolean;\n};\n\ninterface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLUListElement>, \"onChange\" | \"defaultValue\" | \"value\"> {\n\toptions: ListboxOption<T>[];\n\tfocusOnMount?: boolean;\n\trenderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;\n\tgetKey?: (option: ListboxOption<T>, index: number) => string;\n}\n\n// Вариант для single-select\ninterface ListboxSingleProps<T> extends ListboxBaseProps<T> {\n\tmultiple?: false;\n\tvalue?: T;\n\tdefaultValue?: T;\n\tonChange?: (value: T, option: ListboxOption<T>) => void;\n}\n\n// Вариант для multi-select\ninterface ListboxMultiProps<T> extends ListboxBaseProps<T> {\n\tmultiple: true;\n\tvalue?: T[];\n\tdefaultValue?: T[];\n\tonChange?: (value: T[], option: ListboxOption<T>) => void;\n}\n\ntype ListboxProps<T> = ListboxSingleProps<T> | ListboxMultiProps<T>;\n\nconst isOptionDisabled = <T,>(option: ListboxOption<T>) => option.disabled === true;\n\nfunction getInitialFocusIndex<T>(options: ListboxOption<T>[], value: T | T[] | undefined, multiple: boolean | undefined) {\n\tif (multiple) {\n\t\tif (Array.isArray(value) && value.length > 0) {\n\t\t\tconst selectedIndex = options.findIndex((option) => value.includes(option.value) && !option.disabled);\n\t\t\tif (selectedIndex >= 0) {\n\t\t\t\treturn selectedIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn findFirstEnabledIndex(options, isOptionDisabled);\n\t}\n\n\tif (value !== undefined) {\n\t\tconst selectedIndex = options.findIndex((option) => option.value === value && !option.disabled);\n\t\tif (selectedIndex >= 0) {\n\t\t\treturn selectedIndex;\n\t\t}\n\t}\n\n\treturn findFirstEnabledIndex(options, isOptionDisabled);\n}\n\n/**\n * Компонент выбора одного или нескольких элементов из списка. Поддерживает controlled API, поиск по данным и рендер кастомных опций.\n */\nexport function Listbox<T>(props: ListboxSingleProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxMultiProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxProps<T>): JSX.Element {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { value, defaultValue, multiple, focusOnMount, renderItem, getKey, options, onChange, id: externalId, ...rest } = props;\n\n\tconst isControlled = value !== undefined;\n\tconst autoId = useId();\n\tconst listId = externalId ?? `${autoId}-listbox`;\n\tconst [internalValue, setInternalValue] = useState<T | T[] | undefined>(defaultValue);\n\tconst listRef = useRef<HTMLUListElement>(null);\n\tconst [focusedIndex, setFocusedIndex] = useState(() => getInitialFocusIndex(options, value ?? defaultValue, multiple));\n\t// const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n\n\tconst selectedValues = useMemo(\n\t\t() => (isControlled ? value : internalValue) ?? (multiple ? [] : null),\n\t\t[internalValue, isControlled, multiple, value]\n\t);\n\tconst activeIndex = /*hoveredIndex ??*/ focusedIndex;\n\n\tconst handleSelect = (option: ListboxOption<T>) => {\n\t\tif (option.disabled) return;\n\n\t\tlet newValue: T | T[];\n\t\tif (props.multiple) {\n\t\t\tconst arr = Array.isArray(selectedValues) ? selectedValues : [];\n\t\t\tnewValue = arr.includes(option.value) ? arr.filter((v) => v !== option.value) : [...arr, option.value];\n\n\t\t\tprops.onChange?.(newValue, option);\n\t\t} else {\n\t\t\tnewValue = option.value;\n\n\t\t\tprops.onChange?.(newValue, option);\n\t\t}\n\n\t\tif (!isControlled) setInternalValue(newValue);\n\t};\n\n\tconst handleKeyDown = (e: KeyboardEvent<HTMLUListElement>) => {\n\t\tif (e.key === \"ArrowDown\") {\n\t\t\te.preventDefault();\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, 1, isOptionDisabled));\n\t\t} else if (e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, -1, isOptionDisabled));\n\t\t} else if (e.key === \"Home\") {\n\t\t\te.preventDefault();\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findFirstEnabledIndex(options, isOptionDisabled));\n\t\t} else if (e.key === \"End\") {\n\t\t\te.preventDefault();\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findLastEnabledIndex(options, isOptionDisabled));\n\t\t} else if (\n\t\t\thandleKeyboardActivation(e, () => {\n\t\t\t\tconst activeOption = options[activeIndex];\n\t\t\t\tif (activeOption) {\n\t\t\t\t\thandleSelect(activeOption);\n\t\t\t\t}\n\t\t\t})\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tconst el = listRef.current?.querySelectorAll<HTMLElement>('[role=\"option\"]')[activeIndex];\n\t\tif (el) el.scrollIntoView({ block: \"nearest\" });\n\t}, [activeIndex]);\n\n\tuseLayoutEffect(() => {\n\t\tif (focusOnMount) {\n\t\t\tlistRef.current?.focus();\n\t\t}\n\t}, [focusOnMount]);\n\n\treturn (\n\t\t<ul\n\t\t\tref={listRef}\n\t\t\tid={listId}\n\t\t\trole=\"listbox\"\n\t\t\taria-multiselectable={multiple || undefined}\n\t\t\taria-activedescendant={activeIndex >= 0 ? `${listId}-option-${activeIndex}` : undefined}\n\t\t\ttabIndex={0}\n\t\t\t// onMouseLeave={() => setHoveredIndex(null)}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\t{...rest}\n\t\t\tclassName={cn(uiStyles.uiPanel, \"scrollable\")}>\n\t\t\t{options.map((option, index) => {\n\t\t\t\tconst selected = multiple\n\t\t\t\t\t? Array.isArray(selectedValues) && selectedValues.includes(option.value)\n\t\t\t\t\t: selectedValues === option.value;\n\t\t\t\tconst active = index === activeIndex;\n\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={getKey ? getKey(option, index) : index}\n\t\t\t\t\t\tid={`${listId}-option-${index}`}\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\taria-disabled={option.disabled || undefined}\n\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\te.preventDefault(); // чтобы не сбрасывался фокус listbox\n\t\t\t\t\t\t\tif (option.disabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetFocusedIndex(index);\n\t\t\t\t\t\t\t// setHoveredIndex(index);\n\t\t\t\t\t\t\thandleSelect(option);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t// onMouseEnter={() => setHoveredIndex(index)}\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\t\t\t\toption.disabled && uiStyles.disabled,\n\t\t\t\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\t\t\t\tselected && uiStyles.selected\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t{selected ? (\n\t\t\t\t\t\t\t<CheckIcon className={uiStyles.uiPopupOptionIcon} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className={uiStyles.uiPopupOptionIcon}></span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div /*className={uiStyles.uiOptionText}*/>\n\t\t\t\t\t\t\t{renderItem ? renderItem(option, selected, active) : (option.label ?? String(option.value))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ul>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/listbox/Listbox.tsx"],"sourcesContent":["import { HTMLAttributes, JSX, KeyboardEvent, ReactNode, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n\tcn,\n\tfindFirstEnabledIndex,\n\tfindLastEnabledIndex,\n\tfindNextEnabledIndex,\n\thandleKeyboardActivation\n} from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ntype ListboxOption<T> = {\n\tvalue: T;\n\tlabel?: string;\n\tdisabled?: boolean;\n};\n\ninterface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLUListElement>, \"onChange\" | \"defaultValue\" | \"value\"> {\n\toptions: ListboxOption<T>[];\n\tdisabled?: boolean;\n\tfocusOnMount?: boolean;\n\trenderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;\n\tgetKey?: (option: ListboxOption<T>, index: number) => string;\n}\n\n// Вариант для single-select\ninterface ListboxSingleProps<T> extends ListboxBaseProps<T> {\n\tmultiple?: false;\n\tvalue?: T;\n\tdefaultValue?: T;\n\tonChange?: (value: T, option: ListboxOption<T>) => void;\n}\n\n// Вариант для multi-select\ninterface ListboxMultiProps<T> extends ListboxBaseProps<T> {\n\tmultiple: true;\n\tvalue?: T[];\n\tdefaultValue?: T[];\n\tonChange?: (value: T[], option: ListboxOption<T>) => void;\n}\n\ntype ListboxProps<T> = ListboxSingleProps<T> | ListboxMultiProps<T>;\n\nconst isOptionDisabled = <T,>(option: ListboxOption<T>) => option.disabled === true;\n\nfunction getInitialFocusIndex<T>(options: ListboxOption<T>[], value: T | T[] | undefined, multiple: boolean | undefined) {\n\tif (multiple) {\n\t\tif (Array.isArray(value) && value.length > 0) {\n\t\t\tconst selectedIndex = options.findIndex((option) => value.includes(option.value) && !option.disabled);\n\t\t\tif (selectedIndex >= 0) {\n\t\t\t\treturn selectedIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn findFirstEnabledIndex(options, isOptionDisabled);\n\t}\n\n\tif (value !== undefined) {\n\t\tconst selectedIndex = options.findIndex((option) => option.value === value && !option.disabled);\n\t\tif (selectedIndex >= 0) {\n\t\t\treturn selectedIndex;\n\t\t}\n\t}\n\n\treturn findFirstEnabledIndex(options, isOptionDisabled);\n}\n\n/**\n * Компонент выбора одного или нескольких элементов из списка. Поддерживает controlled API, поиск по данным и рендер кастомных опций.\n */\nexport function Listbox<T>(props: ListboxSingleProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxMultiProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxProps<T>): JSX.Element {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { value, defaultValue, multiple, disabled, focusOnMount, renderItem, getKey, options, onChange, id: externalId, ...rest } = props;\n\n\tconst isControlled = value !== undefined;\n\tconst autoId = useId();\n\tconst listId = externalId ?? `${autoId}-listbox`;\n\tconst [internalValue, setInternalValue] = useState<T | T[] | undefined>(defaultValue);\n\tconst listRef = useRef<HTMLUListElement>(null);\n\tconst [focusedIndex, setFocusedIndex] = useState(() => getInitialFocusIndex(options, value ?? defaultValue, multiple));\n\t/**\n\t * Прокрутка нужна только после клавиатурной навигации. Это не даёт монтированию и Fast Refresh\n\t * вызывать scrollIntoView, который иначе прокручивает внешнюю страницу до Listbox.\n\t */\n\tconst shouldScrollActiveOptionRef = useRef(false);\n\n\tconst selectedValues = useMemo(\n\t\t() => (isControlled ? value : internalValue) ?? (multiple ? [] : null),\n\t\t[internalValue, isControlled, multiple, value]\n\t);\n\tconst activeIndex = focusedIndex;\n\n\tconst handleSelect = (option: ListboxOption<T>) => {\n\t\tif (disabled || option.disabled) return;\n\n\t\tlet newValue: T | T[];\n\t\tif (props.multiple) {\n\t\t\tconst arr = Array.isArray(selectedValues) ? selectedValues : [];\n\t\t\tnewValue = arr.includes(option.value) ? arr.filter((v) => v !== option.value) : [...arr, option.value];\n\n\t\t\tprops.onChange?.(newValue, option);\n\t\t} else {\n\t\t\tnewValue = option.value;\n\n\t\t\tprops.onChange?.(newValue, option);\n\t\t}\n\n\t\tif (!isControlled) setInternalValue(newValue);\n\t};\n\n\tconst handleKeyDown = (e: KeyboardEvent<HTMLUListElement>) => {\n\t\tif (disabled) return;\n\n\t\tif (e.key === \"ArrowDown\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, 1, isOptionDisabled));\n\t\t} else if (e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, -1, isOptionDisabled));\n\t\t} else if (e.key === \"Home\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findFirstEnabledIndex(options, isOptionDisabled));\n\t\t} else if (e.key === \"End\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findLastEnabledIndex(options, isOptionDisabled));\n\t\t} else if (\n\t\t\thandleKeyboardActivation(e, () => {\n\t\t\t\tconst activeOption = options[activeIndex];\n\t\t\t\tif (activeOption) {\n\t\t\t\t\thandleSelect(activeOption);\n\t\t\t\t}\n\t\t\t})\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (!shouldScrollActiveOptionRef.current) return;\n\n\t\tshouldScrollActiveOptionRef.current = false;\n\t\tconst el = listRef.current?.querySelectorAll<HTMLElement>('[role=\"option\"]')[activeIndex];\n\t\tif (el) el.scrollIntoView({ block: \"nearest\" });\n\t}, [activeIndex]);\n\n\tuseLayoutEffect(() => {\n\t\tif (focusOnMount) {\n\t\t\tlistRef.current?.focus();\n\t\t}\n\t}, [focusOnMount]);\n\n\treturn (\n\t\t<ul\n\t\t\tref={listRef}\n\t\t\tid={listId}\n\t\t\trole=\"listbox\"\n\t\t\taria-multiselectable={multiple || undefined}\n\t\t\taria-activedescendant={activeIndex >= 0 ? `${listId}-option-${activeIndex}` : undefined}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\t{...rest}\n\t\t\taria-disabled={disabled || undefined}\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\tclassName={cn(uiStyles.uiPanel, \"scrollable surface1\", disabled && uiStyles.disabled)}>\n\t\t\t{options.map((option, index) => {\n\t\t\t\tconst selected = multiple\n\t\t\t\t\t? Array.isArray(selectedValues) && selectedValues.includes(option.value)\n\t\t\t\t\t: selectedValues === option.value;\n\t\t\t\tconst active = index === activeIndex;\n\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={getKey ? getKey(option, index) : index}\n\t\t\t\t\t\tid={`${listId}-option-${index}`}\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\taria-disabled={disabled || option.disabled || undefined}\n\t\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\t\te.preventDefault(); // чтобы не сбрасывался фокус listbox\n\t\t\t\t\t\t\tif (disabled || option.disabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetFocusedIndex(index);\n\t\t\t\t\t\t\thandleSelect(option);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\t\t\t\t(disabled || option.disabled) && uiStyles.disabled,\n\t\t\t\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\t\t\t\tselected && uiStyles.selected\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t{selected ? (\n\t\t\t\t\t\t\t<CheckIcon className={uiStyles.uiPopupOptionIcon} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className={uiStyles.uiPopupOptionIcon}></span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div /*className={uiStyles.uiOptionText}*/>\n\t\t\t\t\t\t\t{renderItem ? renderItem(option, selected, active) : (option.label ?? String(option.value))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ul>\n\t);\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, o as f, p, r as m, s as h, t as g, u as _, v, y } from "../chunks/misc-BYxxlJz6.js";
1
+ import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, o as f, p, r as m, s as h, t as g, u as _, v, y } from "../chunks/misc-Cp_r022Z.js";
2
2
  export { n as AnimatedLogo, y as AnimatedLogoSegment, v as CopyTextWrapper, d as ErrorIcon, e as IconWrapper, m as InformationIcon, u as LazyDynamicComponent, a as LazyValue, s as LoadingMessage, o as Message, i as NoData, _ as Notice, l as OneStepScroller, c as RenderStateIcon, r as Scrollable, p as SkeletonLine, t as StateIcon, g as StateWrapper, f as SuccessIcon, h as WarningIcon };
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/modal-paexEF0j.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/modal-DPIXoMkB.js";
2
2
  export { n as Modal, i as ModalContent, t as ModalFooter, r as ModalManagerContext, o as ModalManagerProvider, e as ModalToolbar, a as useModalManager };
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../chunks/multi-select-COEkc8Qc.js";
2
- export { e as MultiSelect, r as MultiSelectToken, n as ODataDependentMultiSelect, i as ODataDependentSegmentMultiSelect, t as ODataMultiSelect, a as SerializableMultiSelect };
1
+ import { a as e, i as t, n, r, s as i, t as a } from "../chunks/multi-select-Dypew65l.js";
2
+ export { e as MultiSelect, i as MultiSelectToken, n as ODataDependentMultiSelect, r as ODataDependentSegmentMultiSelect, t as ODataMultiSelect, a as SerializableMultiSelect };
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/MultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqF,MAAM,OAAO,CAAC;AAmB1G,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAY/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAgB5E,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACxC,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,sBAAsB,EAAE,cAAc,EAAE,CAAC;IACzC,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC/C,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,sBAAsB,EAAE,cAAc,EAAE,CAAC;IACzC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;CACd;AAED,KAAK,2BAA2B,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAErG,UAAU,oBAAoB;IAC7B,WAAW,CAAC,EAAE,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;IACpE,aAAa,CAAC,EAAE,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAC;CACpF;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CACxF,SAAQ,oBAAoB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,KAAK,OAAO,CAAC;IACzF,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAkHD;;;GAGG;AACH,eAAO,MAAM,WAAW,2GA8XvB,CAAC"}
1
+ {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/MultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqF,MAAM,OAAO,CAAC;AAmB1G,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAY/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAgB5E,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACxC,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,sBAAsB,EAAE,cAAc,EAAE,CAAC;IACzC,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC/C,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,sBAAsB,EAAE,cAAc,EAAE,CAAC;IACzC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;CACd;AAED,KAAK,2BAA2B,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAErG,UAAU,oBAAoB;IAC7B,WAAW,CAAC,EAAE,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;IACpE,aAAa,CAAC,EAAE,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAC;CACpF;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CACxF,SAAQ,oBAAoB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,KAAK,OAAO,CAAC;IACzF,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAkHD;;;GAGG;AACH,eAAO,MAAM,WAAW,2GAyYvB,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { CollectionItem } from "@ryuzaki13/react-foundation-lib/odata";
2
- import type { MultiSelectItemState, MultiSelectRenderContext } from "./MultiSelect";
2
+ import { type MultiSelectItemState, type MultiSelectRenderContext } from "./MultiSelect";
3
3
  interface MultiSelectRendererConfig {
4
4
  codeKey: string;
5
5
  textKey?: string;
6
6
  hideCode?: boolean;
7
7
  }
8
+ export declare function formatOptionCount(count: number): string;
8
9
  export declare function resolveMultiSelectTextKey(items: CollectionItem[], codeKey: string, textKey?: string): string;
9
10
  export declare function getDefaultMultiSelectTokenValue(items: CollectionItem[], codeKey: string, textKey?: string): string | undefined;
10
11
  export declare function createDefaultMultiSelectTokenRenderer(config: MultiSelectRendererConfig): (context: MultiSelectRenderContext) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"defaultRenderers.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/defaultRenderers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAOvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEpF,UAAU,yBAAyB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,UAYnG;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,sBAWzG;AAED,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,yBAAyB,IACnD,SAAS,wBAAwB,iCAGpE;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,wBAAwB,+BAEhF;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,yBAAyB,IACnD,MAAM,cAAc,EAAE,OAAO,oBAAoB,iCAWnF"}
1
+ {"version":3,"file":"defaultRenderers.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/defaultRenderers.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAIvE,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAIzF,UAAU,yBAAyB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAQD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,UAE9C;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,UAYnG;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,sBAWzG;AAED,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,yBAAyB,IACnD,SAAS,wBAAwB,iCAGpE;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,wBAAwB,+BAEhF;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,yBAAyB,IACnD,MAAM,cAAc,EAAE,OAAO,oBAAoB,iCAWnF"}
@@ -1,5 +1,5 @@
1
1
  import { o as e } from "../chunks/flex-C7njxZ74.js";
2
- import { n as t } from "../chunks/button-BU2kRzwu.js";
2
+ import { n as t } from "../chunks/button-BOl7hYmT.js";
3
3
  import { createContext as n, useContext as r, useEffect as i, useMemo as a } from "react";
4
4
  import { cn as o } from "@ryuzaki13/react-foundation-lib/utils";
5
5
  import { AlertCircleIcon as s, CheckCircle2Icon as c, InfoIcon as l, TriangleAlertIcon as u, XIcon as d } from "lucide-react";
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "../chunks/picker-e6IsrMUG.js";
1
+ import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "../chunks/picker-TYLwgl1c.js";
2
2
  export { c as PickerField, r as PickerPopup, n as PickerSelectionToolbar, f as PickerStatus, a as PickerTriggerActions, t as PickerTriggerInput, u as createPickerTriggerPolicy, s as extractPickerTextContent, e as usePickerDefaultFilter, i as usePickerFloatingListbox, l as usePickerQuery, o as usePickerSelectionLifecycle, d as usePickerTriggerController };
@@ -1,16 +1,20 @@
1
1
  import { PickerTriggerMode } from "./createPickerTriggerPolicy";
2
2
  interface UsePickerQueryOptions {
3
- open: boolean;
4
3
  query?: string;
5
4
  defaultQuery?: string;
6
5
  onQuery?: (value: string) => void;
7
6
  resetOnClose?: boolean;
8
7
  triggerMode?: PickerTriggerMode;
9
8
  }
10
- export declare function usePickerQuery({ open, query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions): {
9
+ /**
10
+ * Управляет controlled/uncontrolled query и возвращает policy закрытия владельцу open-state.
11
+ * Сброс выполняется самим владельцем в событии close, поэтому hook не зеркалит lifecycle через effect.
12
+ */
13
+ export declare function usePickerQuery({ query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions): {
11
14
  query: string;
12
15
  setQuery: (nextValue: string) => void;
13
16
  clearQuery: () => void;
17
+ resetQueryOnClose: boolean;
14
18
  };
15
19
  export {};
16
20
  //# sourceMappingURL=usePickerQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePickerQuery.d.ts","sourceRoot":"","sources":["../../../src/picker/model/usePickerQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA6B,MAAM,6BAA6B,CAAC;AAE3F,UAAU,qBAAqB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,qBAAqB;;0BAoBzF,MAAM;;EAanC"}
1
+ {"version":3,"file":"usePickerQuery.d.ts","sourceRoot":"","sources":["../../../src/picker/model/usePickerQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA6B,MAAM,6BAA6B,CAAC;AAE3F,UAAU,qBAAqB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,qBAAqB;;0BAMnF,MAAM;;;EAcnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePickerSelectionLifecycle.d.ts","sourceRoot":"","sources":["../../../src/picker/model/usePickerSelectionLifecycle.ts"],"names":[],"mappings":"AAEA,UAAU,kCAAkC,CAAC,MAAM;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,EACnD,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,EAAE,kCAAkC,CAAC,MAAM,CAAC;;;;EAiC5C"}
1
+ {"version":3,"file":"usePickerSelectionLifecycle.d.ts","sourceRoot":"","sources":["../../../src/picker/model/usePickerSelectionLifecycle.ts"],"names":[],"mappings":"AAEA,UAAU,kCAAkC,CAAC,MAAM;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,EACnD,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,EAAE,kCAAkC,CAAC,MAAM,CAAC;;;;EA0B5C"}
@@ -10,6 +10,11 @@ interface FloatingPopoverProps {
10
10
  maxWidth?: number;
11
11
  state?: "information" | "error" | "warning" | "success" | "negative";
12
12
  tooltip?: true;
13
+ /**
14
+ * Изменяется вместе с CSS-координатой trigger, когда её изменение не отслеживается `autoUpdate`.
15
+ * После commit React выполняется повторный расчёт позиции открытой floating-панели.
16
+ */
17
+ positionUpdateKey?: unknown;
13
18
  }
14
19
  export declare const FloatingPopover: React.FC<FloatingPopoverProps>;
15
20
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingPopover.d.ts","sourceRoot":"","sources":["../../src/popover/FloatingPopover.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAKN,SAAS,EAOT,MAAM,oBAAoB,CAAC;AAQ5B,UAAU,oBAAoB;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IACrE,OAAO,CAAC,EAAE,IAAI,CAAC;CACf;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoE1D,CAAC"}
1
+ {"version":3,"file":"FloatingPopover.d.ts","sourceRoot":"","sources":["../../src/popover/FloatingPopover.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAEjE,OAAO,EAKN,SAAS,EAOT,MAAM,oBAAoB,CAAC;AAQ5B,UAAU,oBAAoB;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IACrE,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4E1D,CAAC"}
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../chunks/popover-CGU3MlsH.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../chunks/popover-BTT7zSqx.js";
2
2
  export { n as FloatingPopover, a as FloatingTooltip, i as Popover, e as PopoverContent, t as PopoverTrigger, r as usePopoverContext };
@@ -1,5 +1,5 @@
1
1
  import { o as e } from "../chunks/flex-C7njxZ74.js";
2
- import { t } from "../chunks/date-input-BzExUQnc.js";
2
+ import { t } from "../chunks/date-input-Bsl9dxxY.js";
3
3
  import { c as n, l as r, r as i, s as a, t as o, u as s } from "../chunks/date-range-preset-select-BLnY47cv.js";
4
4
  import { useCallback as c, useMemo as l, useRef as u, useState as d } from "react";
5
5
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
@@ -33,7 +33,7 @@ function g({ value: m, onChange: g, presetId: _, onPresetIdChange: v, referenceD
33
33
  gap: "sm",
34
34
  align: "end",
35
35
  children: [/* @__PURE__ */ f(o, {
36
- size: "md",
36
+ size: E.size,
37
37
  label: S,
38
38
  description: C,
39
39
  placeholder: w,
@@ -44,7 +44,6 @@ function g({ value: m, onChange: g, presetId: _, onPresetIdChange: v, referenceD
44
44
  referenceDate: O
45
45
  }), /* @__PURE__ */ f(t, {
46
46
  ...E,
47
- size: "md",
48
47
  value: A,
49
48
  onChange: I
50
49
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/preset-range-date-input/lib/constants.ts","../../src/preset-range-date-input/ui/PresetRangeDateInput.tsx"],"sourcesContent":["/**\n * Идентификатор составного контрола диапазона дат с пресетами.\n */\nexport const PRESET_RANGE_DATE_INPUT_COMPONENT_ID = \"preset-range-date-input\";\n","import { useCallback, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { NullableDateRange } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nimport { RangeDateInput, type DateRangeInputProps } from \"../../date-input\";\nimport {\n\tDateRangePresetOption,\n\tDateRangePresetSelect,\n\tDEFAULT_DATE_RANGE_PRESET_IDS,\n\tnormalizeDateRangePresetIds,\n\tresolveDateRangePresetIdByRange,\n\tresolveDateRangePresetOptionsByIds,\n\tresolveDateRangePresetPayload\n} from \"../../date-range-preset-select\";\nimport { FlexContainer } from \"../../flex\";\n\nexport interface PresetRangeDateInputProps extends Omit<DateRangeInputProps, \"selectsRange\"> {\n\tpresetId?: DateRangePresetOption[\"id\"] | null;\n\tonPresetIdChange?: (presetId: DateRangePresetOption[\"id\"] | null) => void;\n\treferenceDate?: Date;\n\tpresetIds?: readonly DateRangePresetOption[\"id\"][];\n\tpresetOptions?: readonly DateRangePresetOption[];\n\tpresetLabel?: ReactNode;\n\tpresetDescription?: string;\n\tpresetPlaceholder?: string;\n\tpresetDisabled?: boolean;\n}\n\n/**\n * Строит сигнатуру пресета для защиты от повторной синхронизации.\n */\nfunction getPresetSignature(presetId: DateRangePresetOption[\"id\"] | null): string {\n\treturn presetId ?? \"__empty__\";\n}\n\n/**\n * Составной компонент выбора диапазона дат через пресет или ручной ввод.\n */\nexport function PresetRangeDateInput({\n\tvalue,\n\tonChange,\n\tpresetId,\n\tonPresetIdChange,\n\treferenceDate,\n\tpresetIds,\n\tpresetOptions,\n\tpresetLabel,\n\tpresetDescription,\n\tpresetPlaceholder = \"Выберите пресет диапазона\",\n\tpresetDisabled,\n\t...rangeDateInputProps\n}: PresetRangeDateInputProps) {\n\tconst [defaultReferenceDate] = useState(() => new Date());\n\tconst resolvedReferenceDate = referenceDate ?? defaultReferenceDate;\n\tconst resolvedPresetOptions = useMemo(\n\t\t() => presetOptions ?? resolveDateRangePresetOptionsByIds(normalizeDateRangePresetIds(presetIds, DEFAULT_DATE_RANGE_PRESET_IDS)),\n\t\t[presetIds, presetOptions]\n\t);\n\tconst controlledValue = value ?? null;\n\tconst matchedPresetId = useMemo(\n\t\t() => resolveDateRangePresetIdByRange(controlledValue, resolvedReferenceDate, resolvedPresetOptions),\n\t\t[controlledValue, resolvedPresetOptions, resolvedReferenceDate]\n\t);\n\tconst selectedPresetId = presetId ?? matchedPresetId ?? undefined;\n\tconst lastPresetSignatureRef = useRef<string>(\"\");\n\n\t/**\n\t * Сообщает наружу только реальное изменение `presetId`.\n\t */\n\tconst emitPresetIdChange = useCallback(\n\t\t(nextPresetId: DateRangePresetOption[\"id\"] | null) => {\n\t\t\tif (!onPresetIdChange) return;\n\n\t\t\tconst nextSignature = getPresetSignature(nextPresetId);\n\t\t\tif (nextSignature === lastPresetSignatureRef.current) return;\n\n\t\t\tlastPresetSignatureRef.current = nextSignature;\n\t\t\tonPresetIdChange(nextPresetId);\n\t\t},\n\t\t[onPresetIdChange]\n\t);\n\n\t/**\n\t * Обрабатывает выбор пресета и переводит его в диапазон дат.\n\t */\n\tconst handlePresetChange = (nextPresetId: DateRangePresetOption[\"id\"] | undefined) => {\n\t\tconst nextPayload = resolveDateRangePresetPayload(nextPresetId, resolvedReferenceDate, resolvedPresetOptions);\n\t\tif (!nextPayload) {\n\t\t\temitPresetIdChange(null);\n\t\t\treturn;\n\t\t}\n\n\t\temitPresetIdChange(nextPayload.id);\n\t\tonChange(nextPayload.range);\n\t};\n\n\t/**\n\t * Обрабатывает ручное изменение диапазона и подбирает подходящий пресет.\n\t */\n\tconst handleRangeChange = (nextRange: NullableDateRange | null) => {\n\t\tonChange(nextRange);\n\t\temitPresetIdChange(resolveDateRangePresetIdByRange(nextRange, resolvedReferenceDate, resolvedPresetOptions));\n\t};\n\n\treturn (\n\t\t<FlexContainer gap=\"sm\" align=\"end\">\n\t\t\t<DateRangePresetSelect\n\t\t\t\tsize=\"md\"\n\t\t\t\tlabel={presetLabel}\n\t\t\t\tdescription={presetDescription}\n\t\t\t\tplaceholder={presetPlaceholder}\n\t\t\t\tdisabled={presetDisabled ?? rangeDateInputProps.disabled}\n\t\t\t\tvalue={selectedPresetId}\n\t\t\t\tonChange={handlePresetChange}\n\t\t\t\toptions={resolvedPresetOptions}\n\t\t\t\treferenceDate={resolvedReferenceDate}\n\t\t\t/>\n\n\t\t\t<RangeDateInput {...rangeDateInputProps} size=\"md\" value={controlledValue} onChange={handleRangeChange} />\n\t\t</FlexContainer>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAa,IAAuC;;;AC4BpD,SAAS,EAAmB,GAAsD;CACjF,OAAO,KAAY;AACpB;AAKA,SAAgB,EAAqB,EACpC,UACA,aACA,aACA,qBACA,kBACA,cACA,kBACA,gBACA,sBACA,uBAAoB,6BACpB,mBACA,GAAG,KAC0B;CAC7B,IAAM,CAAC,KAAwB,wBAAe,IAAI,KAAK,CAAC,GAClD,IAAwB,KAAiB,GACzC,IAAwB,QACvB,KAAiB,EAAmC,EAA4B,GAAW,CAA6B,CAAC,GAC/H,CAAC,GAAW,CAAa,CAC1B,GACM,IAAkB,KAAS,MAC3B,IAAkB,QACjB,EAAgC,GAAiB,GAAuB,CAAqB,GACnG;EAAC;EAAiB;EAAuB;CAAqB,CAC/D,GACM,IAAmB,KAAY,KAAmB,KAAA,GAClD,IAAyB,EAAe,EAAE,GAK1C,IAAqB,GACzB,MAAqD;EACrD,IAAI,CAAC,GAAkB;EAEvB,IAAM,IAAgB,EAAmB,CAAY;EACjD,MAAkB,EAAuB,YAE7C,EAAuB,UAAU,GACjC,EAAiB,CAAY;CAC9B,GACA,CAAC,CAAgB,CAClB,GAKM,KAAsB,MAA0D;EACrF,IAAM,IAAc,EAA8B,GAAc,GAAuB,CAAqB;EAC5G,IAAI,CAAC,GAAa;GACjB,EAAmB,IAAI;GACvB;EACD;EAGA,AADA,EAAmB,EAAY,EAAE,GACjC,EAAS,EAAY,KAAK;CAC3B,GAKM,KAAqB,MAAwC;EAElE,AADA,EAAS,CAAS,GAClB,EAAmB,EAAgC,GAAW,GAAuB,CAAqB,CAAC;CAC5G;CAEA,OACC,kBAAC,GAAD;EAAe,KAAI;EAAK,OAAM;EAA9B,UAAA,CACC,kBAAC,GAAD;GACC,MAAK;GACL,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU,KAAkB,EAAoB;GAChD,OAAO;GACP,UAAU;GACV,SAAS;GACT,eAAe;EACf,CAAA,GAED,kBAAC,GAAD;GAAgB,GAAI;GAAqB,MAAK;GAAK,OAAO;GAAiB,UAAU;EAAoB,CAAA,CAC3F;;AAEjB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/preset-range-date-input/lib/constants.ts","../../src/preset-range-date-input/ui/PresetRangeDateInput.tsx"],"sourcesContent":["/**\n * Идентификатор составного контрола диапазона дат с пресетами.\n */\nexport const PRESET_RANGE_DATE_INPUT_COMPONENT_ID = \"preset-range-date-input\";\n","import { useCallback, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { NullableDateRange } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nimport { RangeDateInput, type DateRangeInputProps } from \"../../date-input\";\nimport {\n\tDateRangePresetOption,\n\tDateRangePresetSelect,\n\tDEFAULT_DATE_RANGE_PRESET_IDS,\n\tnormalizeDateRangePresetIds,\n\tresolveDateRangePresetIdByRange,\n\tresolveDateRangePresetOptionsByIds,\n\tresolveDateRangePresetPayload\n} from \"../../date-range-preset-select\";\nimport { FlexContainer } from \"../../flex\";\n\nexport interface PresetRangeDateInputProps extends Omit<DateRangeInputProps, \"selectsRange\"> {\n\tpresetId?: DateRangePresetOption[\"id\"] | null;\n\tonPresetIdChange?: (presetId: DateRangePresetOption[\"id\"] | null) => void;\n\treferenceDate?: Date;\n\tpresetIds?: readonly DateRangePresetOption[\"id\"][];\n\tpresetOptions?: readonly DateRangePresetOption[];\n\tpresetLabel?: ReactNode;\n\tpresetDescription?: string;\n\tpresetPlaceholder?: string;\n\tpresetDisabled?: boolean;\n}\n\n/**\n * Строит сигнатуру пресета для защиты от повторной синхронизации.\n */\nfunction getPresetSignature(presetId: DateRangePresetOption[\"id\"] | null): string {\n\treturn presetId ?? \"__empty__\";\n}\n\n/**\n * Составной компонент выбора диапазона дат через пресет или ручной ввод.\n */\nexport function PresetRangeDateInput({\n\tvalue,\n\tonChange,\n\tpresetId,\n\tonPresetIdChange,\n\treferenceDate,\n\tpresetIds,\n\tpresetOptions,\n\tpresetLabel,\n\tpresetDescription,\n\tpresetPlaceholder = \"Выберите пресет диапазона\",\n\tpresetDisabled,\n\t...rangeDateInputProps\n}: PresetRangeDateInputProps) {\n\tconst [defaultReferenceDate] = useState(() => new Date());\n\tconst resolvedReferenceDate = referenceDate ?? defaultReferenceDate;\n\tconst resolvedPresetOptions = useMemo(\n\t\t() => presetOptions ?? resolveDateRangePresetOptionsByIds(normalizeDateRangePresetIds(presetIds, DEFAULT_DATE_RANGE_PRESET_IDS)),\n\t\t[presetIds, presetOptions]\n\t);\n\tconst controlledValue = value ?? null;\n\tconst matchedPresetId = useMemo(\n\t\t() => resolveDateRangePresetIdByRange(controlledValue, resolvedReferenceDate, resolvedPresetOptions),\n\t\t[controlledValue, resolvedPresetOptions, resolvedReferenceDate]\n\t);\n\tconst selectedPresetId = presetId ?? matchedPresetId ?? undefined;\n\tconst lastPresetSignatureRef = useRef<string>(\"\");\n\n\t/**\n\t * Сообщает наружу только реальное изменение `presetId`.\n\t */\n\tconst emitPresetIdChange = useCallback(\n\t\t(nextPresetId: DateRangePresetOption[\"id\"] | null) => {\n\t\t\tif (!onPresetIdChange) return;\n\n\t\t\tconst nextSignature = getPresetSignature(nextPresetId);\n\t\t\tif (nextSignature === lastPresetSignatureRef.current) return;\n\n\t\t\tlastPresetSignatureRef.current = nextSignature;\n\t\t\tonPresetIdChange(nextPresetId);\n\t\t},\n\t\t[onPresetIdChange]\n\t);\n\n\t/**\n\t * Обрабатывает выбор пресета и переводит его в диапазон дат.\n\t */\n\tconst handlePresetChange = (nextPresetId: DateRangePresetOption[\"id\"] | undefined) => {\n\t\tconst nextPayload = resolveDateRangePresetPayload(nextPresetId, resolvedReferenceDate, resolvedPresetOptions);\n\t\tif (!nextPayload) {\n\t\t\temitPresetIdChange(null);\n\t\t\treturn;\n\t\t}\n\n\t\temitPresetIdChange(nextPayload.id);\n\t\tonChange(nextPayload.range);\n\t};\n\n\t/**\n\t * Обрабатывает ручное изменение диапазона и подбирает подходящий пресет.\n\t */\n\tconst handleRangeChange = (nextRange: NullableDateRange | null) => {\n\t\tonChange(nextRange);\n\t\temitPresetIdChange(resolveDateRangePresetIdByRange(nextRange, resolvedReferenceDate, resolvedPresetOptions));\n\t};\n\n\treturn (\n\t\t<FlexContainer gap=\"sm\" align=\"end\">\n\t\t\t<DateRangePresetSelect\n\t\t\t\tsize={rangeDateInputProps.size}\n\t\t\t\tlabel={presetLabel}\n\t\t\t\tdescription={presetDescription}\n\t\t\t\tplaceholder={presetPlaceholder}\n\t\t\t\tdisabled={presetDisabled ?? rangeDateInputProps.disabled}\n\t\t\t\tvalue={selectedPresetId}\n\t\t\t\tonChange={handlePresetChange}\n\t\t\t\toptions={resolvedPresetOptions}\n\t\t\t\treferenceDate={resolvedReferenceDate}\n\t\t\t/>\n\n\t\t\t<RangeDateInput {...rangeDateInputProps} value={controlledValue} onChange={handleRangeChange} />\n\t\t</FlexContainer>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAa,IAAuC;;;AC4BpD,SAAS,EAAmB,GAAsD;CACjF,OAAO,KAAY;AACpB;AAKA,SAAgB,EAAqB,EACpC,UACA,aACA,aACA,qBACA,kBACA,cACA,kBACA,gBACA,sBACA,uBAAoB,6BACpB,mBACA,GAAG,KAC0B;CAC7B,IAAM,CAAC,KAAwB,wBAAe,IAAI,KAAK,CAAC,GAClD,IAAwB,KAAiB,GACzC,IAAwB,QACvB,KAAiB,EAAmC,EAA4B,GAAW,CAA6B,CAAC,GAC/H,CAAC,GAAW,CAAa,CAC1B,GACM,IAAkB,KAAS,MAC3B,IAAkB,QACjB,EAAgC,GAAiB,GAAuB,CAAqB,GACnG;EAAC;EAAiB;EAAuB;CAAqB,CAC/D,GACM,IAAmB,KAAY,KAAmB,KAAA,GAClD,IAAyB,EAAe,EAAE,GAK1C,IAAqB,GACzB,MAAqD;EACrD,IAAI,CAAC,GAAkB;EAEvB,IAAM,IAAgB,EAAmB,CAAY;EACjD,MAAkB,EAAuB,YAE7C,EAAuB,UAAU,GACjC,EAAiB,CAAY;CAC9B,GACA,CAAC,CAAgB,CAClB,GAKM,KAAsB,MAA0D;EACrF,IAAM,IAAc,EAA8B,GAAc,GAAuB,CAAqB;EAC5G,IAAI,CAAC,GAAa;GACjB,EAAmB,IAAI;GACvB;EACD;EAGA,AADA,EAAmB,EAAY,EAAE,GACjC,EAAS,EAAY,KAAK;CAC3B,GAKM,KAAqB,MAAwC;EAElE,AADA,EAAS,CAAS,GAClB,EAAmB,EAAgC,GAAW,GAAuB,CAAqB,CAAC;CAC5G;CAEA,OACC,kBAAC,GAAD;EAAe,KAAI;EAAK,OAAM;EAA9B,UAAA,CACC,kBAAC,GAAD;GACC,MAAM,EAAoB;GAC1B,OAAO;GACP,aAAa;GACb,aAAa;GACb,UAAU,KAAkB,EAAoB;GAChD,OAAO;GACP,UAAU;GACV,SAAS;GACT,eAAe;EACf,CAAA,GAED,kBAAC,GAAD;GAAgB,GAAI;GAAqB,OAAO;GAAiB,UAAU;EAAoB,CAAA,CACjF;;AAEjB"}
@@ -1,4 +1,4 @@
1
- import { r as e } from "../chunks/select-BON0S9Dr.js";
1
+ import { r as e } from "../chunks/select-DCSNVEYW.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import { getPresetOption as n } from "@ryuzaki13/react-foundation-lib/presets";
4
4
  //#region src/preset-select/PresetSelect.tsx