@ryuzaki13/react-foundation-ui 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/dist/badge/index.js +1 -1
  2. package/dist/barcode-scanner/index.js +2 -2
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/Button.d.ts +4 -2
  5. package/dist/button/Button.d.ts.map +1 -1
  6. package/dist/button/index.js +1 -1
  7. package/dist/chunks/{CalendarView-CwbPJG2Y.js → CalendarView-BCXVjLFz.js} +23 -13
  8. package/dist/chunks/CalendarView-BCXVjLFz.js.map +1 -0
  9. package/dist/chunks/OptionContentContainer-CWHlfm5Z.js +14 -0
  10. package/dist/chunks/OptionContentContainer-CWHlfm5Z.js.map +1 -0
  11. package/dist/chunks/{TextEditorLexicalClient-BRp8jHId.js → TextEditorLexicalClient-DrSVnvOe.js} +4 -4
  12. package/dist/chunks/{TextEditorLexicalClient-BRp8jHId.js.map → TextEditorLexicalClient-DrSVnvOe.js.map} +1 -1
  13. package/dist/chunks/{base-table-BHmboNzl.js → base-table-BBp5WMDM.js} +5 -5
  14. package/dist/chunks/{base-table-BHmboNzl.js.map → base-table-BBp5WMDM.js.map} +1 -1
  15. package/dist/chunks/button-DudCl375.js +75 -0
  16. package/dist/chunks/button-DudCl375.js.map +1 -0
  17. package/dist/chunks/context-menu-CrSXJxQL.js +621 -0
  18. package/dist/chunks/context-menu-CrSXJxQL.js.map +1 -0
  19. package/dist/chunks/{date-input-Crijdmmq.js → date-input-CzCDou4s.js} +10 -7
  20. package/dist/chunks/{date-input-Crijdmmq.js.map → date-input-CzCDou4s.js.map} +1 -1
  21. package/dist/chunks/flex-D86M_h-0.js +222 -0
  22. package/dist/chunks/flex-D86M_h-0.js.map +1 -0
  23. package/dist/chunks/{floating-arrow-DKUKx2ZQ.js → floating-arrow-B_iSbzUZ.js} +19 -18
  24. package/dist/chunks/{floating-arrow-DKUKx2ZQ.js.map → floating-arrow-B_iSbzUZ.js.map} +1 -1
  25. package/dist/chunks/{grid-dI94AAbi.js → grid-CFuzBigM.js} +77 -68
  26. package/dist/chunks/grid-CFuzBigM.js.map +1 -0
  27. package/dist/chunks/{misc-CGQOXXCy.js → misc-Cm_LDrUD.js} +120 -97
  28. package/dist/chunks/misc-Cm_LDrUD.js.map +1 -0
  29. package/dist/chunks/{modal-febBsMyR.js → modal-Dz5TzkTB.js} +36 -27
  30. package/dist/chunks/modal-Dz5TzkTB.js.map +1 -0
  31. package/dist/chunks/{picker-BA6okKnz.js → picker-SJXnHwsj.js} +144 -121
  32. package/dist/chunks/picker-SJXnHwsj.js.map +1 -0
  33. package/dist/chunks/popover-BJH-yHvb.js +263 -0
  34. package/dist/chunks/popover-BJH-yHvb.js.map +1 -0
  35. package/dist/chunks/{select-DblNSc5H.js → select--oIrv7SC.js} +98 -104
  36. package/dist/chunks/select--oIrv7SC.js.map +1 -0
  37. package/dist/chunks/separator-CHpBud1e.js +18 -0
  38. package/dist/chunks/separator-CHpBud1e.js.map +1 -0
  39. package/dist/chunks/{sortable-CQmMHAF8.js → sortable-BujAJgFa.js} +5 -3
  40. package/dist/chunks/{sortable-CQmMHAF8.js.map → sortable-BujAJgFa.js.map} +1 -1
  41. package/dist/chunks/{table-BnvjPaE1.js → table-BDY9Zw--.js} +2 -2
  42. package/dist/chunks/{table-BnvjPaE1.js.map → table-BDY9Zw--.js.map} +1 -1
  43. package/dist/chunks/ui.module-oRwY3Zli.js.map +1 -1
  44. package/dist/context-menu/components/ContextMenu.d.ts +16 -9
  45. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  46. package/dist/context-menu/components/ContextMenuTrigger.d.ts +6 -4
  47. package/dist/context-menu/components/ContextMenuTrigger.d.ts.map +1 -1
  48. package/dist/context-menu/components/DropdownMenu.d.ts +12 -7
  49. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  50. package/dist/context-menu/components/DropdownMenuTrigger.d.ts +6 -4
  51. package/dist/context-menu/components/DropdownMenuTrigger.d.ts.map +1 -1
  52. package/dist/context-menu/components/MenuContent.d.ts +6 -4
  53. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  54. package/dist/context-menu/components/MenuContext.d.ts +12 -7
  55. package/dist/context-menu/components/MenuContext.d.ts.map +1 -1
  56. package/dist/context-menu/components/MenuGroupLabel.d.ts +1 -1
  57. package/dist/context-menu/components/MenuGroupLabel.d.ts.map +1 -1
  58. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  59. package/dist/context-menu/components/MenuRoot.d.ts +5 -5
  60. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  61. package/dist/context-menu/components/MenuSeparator.d.ts +1 -2
  62. package/dist/context-menu/components/MenuSeparator.d.ts.map +1 -1
  63. package/dist/context-menu/components/RadialMenuContent.d.ts +6 -4
  64. package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -1
  65. package/dist/context-menu/components/RadialMenuItem.d.ts +1 -1
  66. package/dist/context-menu/components/RadialMenuItem.d.ts.map +1 -1
  67. package/dist/context-menu/index.js +1 -1
  68. package/dist/date-input/index.js +2 -2
  69. package/dist/date-input/ui/CalendarDayView.d.ts +1 -1
  70. package/dist/date-input/ui/CalendarDayView.d.ts.map +1 -1
  71. package/dist/date-input/ui/CalendarMonthView.d.ts +1 -1
  72. package/dist/date-input/ui/CalendarMonthView.d.ts.map +1 -1
  73. package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
  74. package/dist/date-input/ui/CalendarYearView.d.ts +1 -1
  75. package/dist/date-input/ui/CalendarYearView.d.ts.map +1 -1
  76. package/dist/date-input/ui/DateInput.d.ts.map +1 -1
  77. package/dist/date-time-input/index.js +10 -7
  78. package/dist/date-time-input/index.js.map +1 -1
  79. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
  80. package/dist/detail/Detail.d.ts +6 -1
  81. package/dist/detail/Detail.d.ts.map +1 -1
  82. package/dist/detail/index.js +2 -2
  83. package/dist/detail/index.js.map +1 -1
  84. package/dist/disclosure/index.js +1 -1
  85. package/dist/errors/BadRequestPage.d.ts +1 -1
  86. package/dist/errors/BadRequestPage.d.ts.map +1 -1
  87. package/dist/errors/ErrorDisplay.d.ts +2 -2
  88. package/dist/errors/ErrorDisplay.d.ts.map +1 -1
  89. package/dist/errors/ErrorExplosion.d.ts +1 -2
  90. package/dist/errors/ErrorExplosion.d.ts.map +1 -1
  91. package/dist/errors/ForbiddenPage.d.ts +1 -1
  92. package/dist/errors/ForbiddenPage.d.ts.map +1 -1
  93. package/dist/errors/NotFoundPage.d.ts +1 -1
  94. package/dist/errors/NotFoundPage.d.ts.map +1 -1
  95. package/dist/errors/PageError.d.ts +1 -2
  96. package/dist/errors/PageError.d.ts.map +1 -1
  97. package/dist/errors/UnauthorizedPage.d.ts +1 -1
  98. package/dist/errors/UnauthorizedPage.d.ts.map +1 -1
  99. package/dist/errors/ViewNotChanged.d.ts +1 -2
  100. package/dist/errors/ViewNotChanged.d.ts.map +1 -1
  101. package/dist/errors/index.js +74 -44
  102. package/dist/errors/index.js.map +1 -1
  103. package/dist/expandable-action-panel/index.js +2 -2
  104. package/dist/flex/Flex.d.ts +6 -3
  105. package/dist/flex/Flex.d.ts.map +1 -1
  106. package/dist/flex/FlexCenter.d.ts +1 -1
  107. package/dist/flex/FlexCenter.d.ts.map +1 -1
  108. package/dist/flex/FlexContainer.d.ts +7 -1
  109. package/dist/flex/FlexContainer.d.ts.map +1 -1
  110. package/dist/flex/FlexItem.d.ts +7 -1
  111. package/dist/flex/FlexItem.d.ts.map +1 -1
  112. package/dist/flex/FlexSpacer.d.ts +7 -1
  113. package/dist/flex/FlexSpacer.d.ts.map +1 -1
  114. package/dist/flex/PredefinedFlex.d.ts +7 -1
  115. package/dist/flex/PredefinedFlex.d.ts.map +1 -1
  116. package/dist/flex/index.js +1 -1
  117. package/dist/floating-arrow/FloatingArrow.d.ts +4 -1
  118. package/dist/floating-arrow/FloatingArrow.d.ts.map +1 -1
  119. package/dist/floating-arrow/index.js +1 -1
  120. package/dist/grid/Grid.d.ts +4 -2
  121. package/dist/grid/Grid.d.ts.map +1 -1
  122. package/dist/grid/GridContainer.d.ts +7 -1
  123. package/dist/grid/GridContainer.d.ts.map +1 -1
  124. package/dist/grid/GridItem.d.ts +7 -1
  125. package/dist/grid/GridItem.d.ts.map +1 -1
  126. package/dist/grid/index.js +1 -1
  127. package/dist/image/index.js +3 -3
  128. package/dist/layout-picker/index.js +11 -13
  129. package/dist/layout-picker/index.js.map +1 -1
  130. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  131. package/dist/list/List.d.ts +9 -9
  132. package/dist/list/List.d.ts.map +1 -1
  133. package/dist/list/index.js +23 -16
  134. package/dist/list/index.js.map +1 -1
  135. package/dist/listbox/Listbox.d.ts.map +1 -1
  136. package/dist/listbox/index.js +10 -16
  137. package/dist/listbox/index.js.map +1 -1
  138. package/dist/misc/CopyTextWrapper.d.ts +1 -1
  139. package/dist/misc/CopyTextWrapper.d.ts.map +1 -1
  140. package/dist/misc/OneStepScroller.d.ts +1 -1
  141. package/dist/misc/OneStepScroller.d.ts.map +1 -1
  142. package/dist/misc/Scrollable.d.ts +9 -7
  143. package/dist/misc/Scrollable.d.ts.map +1 -1
  144. package/dist/misc/SkeletonLine.d.ts +1 -1
  145. package/dist/misc/SkeletonLine.d.ts.map +1 -1
  146. package/dist/misc/StateIcon.d.ts +6 -7
  147. package/dist/misc/StateIcon.d.ts.map +1 -1
  148. package/dist/misc/index.d.ts +1 -0
  149. package/dist/misc/index.d.ts.map +1 -1
  150. package/dist/misc/index.js +1 -1
  151. package/dist/modal/Modal.d.ts +14 -5
  152. package/dist/modal/Modal.d.ts.map +1 -1
  153. package/dist/modal/index.js +1 -1
  154. package/dist/multi-select/index.js +247 -232
  155. package/dist/multi-select/index.js.map +1 -1
  156. package/dist/multi-select/ui/MultiSelect.d.ts +7 -2
  157. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  158. package/dist/multi-select/ui/ODataMultiSelect.d.ts +1 -2
  159. package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
  160. package/dist/notifications/index.js +5 -7
  161. package/dist/notifications/index.js.map +1 -1
  162. package/dist/option/Option.d.ts +3 -3
  163. package/dist/option/OptionContentContainer.d.ts +7 -0
  164. package/dist/option/OptionContentContainer.d.ts.map +1 -0
  165. package/dist/option/index.js.map +1 -1
  166. package/dist/picker/PickerOptions.d.ts +3 -1
  167. package/dist/picker/PickerOptions.d.ts.map +1 -1
  168. package/dist/picker/PickerPopup.d.ts +1 -1
  169. package/dist/picker/PickerPopup.d.ts.map +1 -1
  170. package/dist/picker/PickerTriggerActions.d.ts +7 -2
  171. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  172. package/dist/picker/PickerTriggerInput.d.ts +7 -2
  173. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  174. package/dist/picker/index.js +1 -1
  175. package/dist/polymorphic/PolymorphicComponent.d.ts +1 -1
  176. package/dist/polymorphic/PolymorphicComponent.d.ts.map +1 -1
  177. package/dist/polymorphic/index.js +3 -1
  178. package/dist/polymorphic/index.js.map +1 -1
  179. package/dist/popover/FloatingPopover.d.ts +1 -1
  180. package/dist/popover/FloatingPopover.d.ts.map +1 -1
  181. package/dist/popover/FloatingTooltip.d.ts +2 -2
  182. package/dist/popover/FloatingTooltip.d.ts.map +1 -1
  183. package/dist/popover/components/Popover.d.ts +11 -10
  184. package/dist/popover/components/Popover.d.ts.map +1 -1
  185. package/dist/popover/components/PopoverContent.d.ts +6 -4
  186. package/dist/popover/components/PopoverContent.d.ts.map +1 -1
  187. package/dist/popover/components/PopoverContext.d.ts +2 -1
  188. package/dist/popover/components/PopoverContext.d.ts.map +1 -1
  189. package/dist/popover/components/PopoverTrigger.d.ts +1 -1
  190. package/dist/popover/components/PopoverTrigger.d.ts.map +1 -1
  191. package/dist/popover/index.js +1 -1
  192. package/dist/preset-range-date-input/index.js +2 -2
  193. package/dist/preset-select/index.js +1 -1
  194. package/dist/radio-button/RadioButton.d.ts +1 -1
  195. package/dist/radio-button/RadioButton.d.ts.map +1 -1
  196. package/dist/radio-button/index.js +5 -2
  197. package/dist/radio-button/index.js.map +1 -1
  198. package/dist/select/ODataSelect.d.ts +1 -2
  199. package/dist/select/ODataSelect.d.ts.map +1 -1
  200. package/dist/select/Select.d.ts.map +1 -1
  201. package/dist/select/index.js +1 -1
  202. package/dist/separator/Separator.d.ts +1 -1
  203. package/dist/separator/Separator.d.ts.map +1 -1
  204. package/dist/separator/index.js +1 -1
  205. package/dist/simple-table/index.js +1 -1
  206. package/dist/slider/Slider.d.ts.map +1 -1
  207. package/dist/slider/SliderInput.d.ts.map +1 -1
  208. package/dist/slider/SliderPopoverToggle.d.ts +11 -0
  209. package/dist/slider/SliderPopoverToggle.d.ts.map +1 -0
  210. package/dist/slider/index.js +299 -278
  211. package/dist/slider/index.js.map +1 -1
  212. package/dist/sortable/Sortable.d.ts.map +1 -1
  213. package/dist/sortable/SortableDragHandle.d.ts +1 -1
  214. package/dist/sortable/SortableDragHandle.d.ts.map +1 -1
  215. package/dist/sortable/index.js +1 -1
  216. package/dist/state-select/index.js +1 -1
  217. package/dist/styles.css +1 -1
  218. package/dist/table/index.js +1 -1
  219. package/dist/table-editor/index.js +1 -1
  220. package/dist/table-sorting/index.js +1 -1
  221. package/dist/tabs/index.js +27 -28
  222. package/dist/tabs/index.js.map +1 -1
  223. package/dist/tabs/ui/TabsBox.d.ts +1 -1
  224. package/dist/tabs/ui/TabsBox.d.ts.map +1 -1
  225. package/dist/tabs/ui/TabsLayout.d.ts +11 -7
  226. package/dist/tabs/ui/TabsLayout.d.ts.map +1 -1
  227. package/dist/tabs/ui/TabsPanel.d.ts +3 -3
  228. package/dist/tabs/ui/TabsPanel.d.ts.map +1 -1
  229. package/dist/tabs/ui/TabsTabList.d.ts +2 -2
  230. package/dist/tabs/ui/TabsTabList.d.ts.map +1 -1
  231. package/dist/text/HighlightText.d.ts +2 -2
  232. package/dist/text/HighlightText.d.ts.map +1 -1
  233. package/dist/text/index.js +7 -2
  234. package/dist/text/index.js.map +1 -1
  235. package/dist/text-editor/index.js +2 -2
  236. package/dist/toolbar/Toolbar.d.ts +8 -2
  237. package/dist/toolbar/Toolbar.d.ts.map +1 -1
  238. package/dist/toolbar/index.js +8 -4
  239. package/dist/toolbar/index.js.map +1 -1
  240. package/dist/tree-select/TreeNodeContent.d.ts +3 -1
  241. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  242. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  243. package/dist/tree-select/index.js +409 -332
  244. package/dist/tree-select/index.js.map +1 -1
  245. package/dist/tree-table/index.js +1 -1
  246. package/package.json +1 -1
  247. package/storybook-static/assets/{Badge-BKRvorSi.js → Badge-r7lsdHne.js} +1 -1
  248. package/storybook-static/assets/{Badge.stories-19yFfupy.js → Badge.stories-P4qdQ7cm.js} +1 -1
  249. package/storybook-static/assets/{BadgeList-DMkfxply.js → BadgeList-8NyPAV2Q.js} +1 -1
  250. package/storybook-static/assets/{BarcodeScannerDialog.stories-DdnHxu5x.js → BarcodeScannerDialog.stories--TadwGdZ.js} +1 -1
  251. package/storybook-static/assets/{Button-Di-0Ionw.js → Button-BP0DDcNq.js} +1 -1
  252. package/storybook-static/assets/{Button-CoOZeR_z.js → Button-X3OT5zE7.js} +2 -2
  253. package/storybook-static/assets/{Button.stories-Bd1To5BN.js → Button.stories-CFiUr_xE.js} +1 -1
  254. package/storybook-static/assets/CalendarView-nWuZBE9T.js +1 -0
  255. package/storybook-static/assets/{CheckBox-DSmGYEML.js → CheckBox-BId2Zf_m.js} +1 -1
  256. package/storybook-static/assets/{CheckBox-DfRTTXg1.js → CheckBox-Bde9tud-.js} +1 -1
  257. package/storybook-static/assets/{CheckBox.stories-DaldWgEI.js → CheckBox.stories-BVU9Rkai.js} +1 -1
  258. package/storybook-static/assets/{Color-6AOWCN3U-DIhia6KS.js → Color-6AOWCN3U-BeUy9gum.js} +1 -1
  259. package/storybook-static/assets/{ContextMenu-BGMQHT9V.js → ContextMenu-BS2UVgbu.js} +6 -2
  260. package/storybook-static/assets/ContextMenu-Byksyz_8.js +33 -0
  261. package/storybook-static/assets/ContextMenu.stories-DmJPp2YR.js +37 -0
  262. package/storybook-static/assets/{DateInput-DUl5Bb0j.js → DateInput-CQe_1Dk-.js} +8 -1
  263. package/storybook-static/assets/{DateInput-MgdMtvtr.js → DateInput-CgETMk9B.js} +1 -1
  264. package/storybook-static/assets/{DateInput.stories-B6Ol0Ak3.js → DateInput.stories-BOst6EKv.js} +1 -1
  265. package/storybook-static/assets/{DateRangePresetSelect-CPj0pSGc.js → DateRangePresetSelect-CxrNYBTe.js} +1 -1
  266. package/storybook-static/assets/{DateRangePresetSelect-C4MVqjXa.js → DateRangePresetSelect-DHJ31vIB.js} +1 -1
  267. package/storybook-static/assets/{DateRangePresetSelect.stories-tPaMURtH.js → DateRangePresetSelect.stories-CiyN1joN.js} +1 -1
  268. package/storybook-static/assets/{Detail-DnHTVRb5.js → Detail-V_NYrUJR.js} +1 -1
  269. package/storybook-static/assets/Detail.stories-B4tf6inN.js +56 -0
  270. package/storybook-static/assets/{Dialog-COpvqcXi.js → Dialog-B6miFej7.js} +1 -1
  271. package/storybook-static/assets/{Dialog-LMnrvBpx.js → Dialog-DNTx5Unm.js} +1 -1
  272. package/storybook-static/assets/{Dialog.stories-BE2I5ny2.js → Dialog.stories-BS1dDTLW.js} +1 -1
  273. package/storybook-static/assets/{Disclosure-BZ3jd5nu.js → Disclosure-4sf5BIn1.js} +1 -1
  274. package/storybook-static/assets/{Disclosure.stories-cMcF8a8I.js → Disclosure.stories-DhUQNdEC.js} +1 -1
  275. package/storybook-static/assets/DisclosureGroup-Codiur77.js +2 -0
  276. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CurHdzu8.js → DocsRenderer-JROSPFPF-yT2aWNaF.js} +1 -1
  277. package/storybook-static/assets/{DropZone-VEmgdfs6.js → DropZone-D4rl2WEV.js} +1 -1
  278. package/storybook-static/assets/{DropZone-DGMAbY1z.js → DropZone-Du0BQAyO.js} +1 -1
  279. package/storybook-static/assets/{DropZone.stories-B8N17-bV.js → DropZone.stories-B8iPjYH_.js} +1 -1
  280. package/storybook-static/assets/DropdownMenu-BcdS3oNz.js +21 -0
  281. package/storybook-static/assets/{ExpandableActionPanel-C7CFQZLD.js → ExpandableActionPanel-6u6YJanI.js} +1 -1
  282. package/storybook-static/assets/{ExpandableActionPanel.stories-CnBr0s9R.js → ExpandableActionPanel.stories-D-CZHUv0.js} +1 -1
  283. package/storybook-static/assets/{Flex-RpqsC-gQ.js → Flex-DWi0hQ-f.js} +1 -1
  284. package/storybook-static/assets/Flex.stories-CKKi33JK.js +300 -0
  285. package/storybook-static/assets/FlexContainer-BMK_YH72.js +1 -0
  286. package/storybook-static/assets/{FlexItem-pu3E11Sf.js → FlexItem-DpSHNBxJ.js} +2 -2
  287. package/storybook-static/assets/FloatingPopover-D9nTd47B.js +1 -0
  288. package/storybook-static/assets/FormattedTableCell-DyBhk9rG.js +15 -0
  289. package/storybook-static/assets/{Grid-CzO0Ae1r.js → Grid-BZgzDCLK.js} +2 -2
  290. package/storybook-static/assets/{Grid-BRnqEtg1.js → Grid-DbvUGBEN.js} +1 -1
  291. package/storybook-static/assets/{Grid.stories-DXY7Cvfu.js → Grid.stories-BeEAzTxD.js} +4 -4
  292. package/storybook-static/assets/{GridContainer-fKYgDsLl.js → GridContainer-B82Onj6x.js} +2 -2
  293. package/storybook-static/assets/{ImageCropper.stories-ZnvbFN71.js → ImageCropper.stories-SDIt19aO.js} +1 -1
  294. package/storybook-static/assets/{ImageRenderer-DUOhCfac.js → ImageRenderer-Bzg27pq7.js} +1 -1
  295. package/storybook-static/assets/{ImageRenderer.stories-Dj6NQm2k.js → ImageRenderer.stories-C-IE84zV.js} +1 -1
  296. package/storybook-static/assets/{ImageView.stories-QTzOsByD.js → ImageView.stories-DIcx2Krs.js} +1 -1
  297. package/storybook-static/assets/{ImageViewer.stories-CpnUEgZW.js → ImageViewer.stories-CQTy0uPX.js} +2 -2
  298. package/storybook-static/assets/{ImageViewerRuntime-B1PicLUw.js → ImageViewerRuntime-CA5BYQsX.js} +1 -1
  299. package/storybook-static/assets/{Input-B8eGQXlp.js → Input-D8uMye_9.js} +1 -1
  300. package/storybook-static/assets/{Input-DnFc_Pwx.js → Input-DmsN6uC_.js} +1 -1
  301. package/storybook-static/assets/{Input.stories-C6CbYvZP.js → Input.stories-D8QWPnMD.js} +1 -1
  302. package/storybook-static/assets/{InputDateTime-DoMduRde.js → InputDateTime-Cczll-bH.js} +1 -1
  303. package/storybook-static/assets/{InputDateTime.stories--LHpvJjY.js → InputDateTime.stories-DeZ6XHwa.js} +1 -1
  304. package/storybook-static/assets/{InputFile-CunQ8F4s.js → InputFile-BbPjLN4E.js} +1 -1
  305. package/storybook-static/assets/{InputFile-DFv3WAWa.js → InputFile-C0_L0zTd.js} +1 -1
  306. package/storybook-static/assets/{InputFile.stories-B0WZhic1.js → InputFile.stories-Di_6BkX1.js} +1 -1
  307. package/storybook-static/assets/{InputFiles-DyiPQ_tH.js → InputFiles-B3uOwqKF.js} +1 -1
  308. package/storybook-static/assets/{InputFiles-CKDPmjWY.js → InputFiles-CF60S_qG.js} +1 -1
  309. package/storybook-static/assets/{InputFiles.stories-BbP_bEnL.js → InputFiles.stories-BkTiEPX6.js} +1 -1
  310. package/storybook-static/assets/{InputFilesList-BAIGwV7V.js → InputFilesList-C9cudcHe.js} +1 -1
  311. package/storybook-static/assets/{InputImage-2G1pRNbw.js → InputImage-Aq_ZXmtw.js} +1 -1
  312. package/storybook-static/assets/{InputImage-ZvEB_TIT.js → InputImage-Dx0DIf4l.js} +1 -1
  313. package/storybook-static/assets/{InputImage.stories-BiShLRcw.js → InputImage.stories-D7LfEcn4.js} +1 -1
  314. package/storybook-static/assets/{InteractiveComponents-CT99QfHX.js → InteractiveComponents-DP5FyU4S.js} +1 -1
  315. package/storybook-static/assets/{InteractiveComponents.stories-BPTICQZz.js → InteractiveComponents.stories-CE5L5PAB.js} +1 -1
  316. package/storybook-static/assets/{LayoutPicker-BDpc8LBa.js → LayoutPicker-BehxFQsU.js} +2 -2
  317. package/storybook-static/assets/{LayoutPicker-Cg_AM-pj.js → LayoutPicker-CW1W-CAf.js} +2 -1
  318. package/storybook-static/assets/{LayoutPicker.stories-Ca9WZdPW.js → LayoutPicker.stories-DtvfpOUS.js} +1 -1
  319. package/storybook-static/assets/Listbox-Bn_6WyQc.js +1 -0
  320. package/storybook-static/assets/{Listbox-LbbFtte9.js → Listbox-VcD28kxl.js} +2 -1
  321. package/storybook-static/assets/{Listbox.stories-xDpbFNZk.js → Listbox.stories-CL6fJlUm.js} +1 -1
  322. package/storybook-static/assets/{Modal-CXd2j0up.js → Modal-D0D5WZ_O.js} +1 -1
  323. package/storybook-static/assets/Modal-DrSX0i3a.js +1 -0
  324. package/storybook-static/assets/{Modal.stories-cNLvFjmT.js → Modal.stories-Ch3P8_kY.js} +1 -1
  325. package/storybook-static/assets/{ModalManagerProvider-ClXvSB9a.js → ModalManagerProvider-B0Lf7xX0.js} +1 -1
  326. package/storybook-static/assets/MultiSelect-Bw3qf8eW.js +2 -0
  327. package/storybook-static/assets/{MultiSelect-Na2VdNy3.js → MultiSelect-Cmxa5Vho.js} +4 -1
  328. package/storybook-static/assets/MultiSelect-SJBp1Ymv.css +1 -0
  329. package/storybook-static/assets/{MultiSelect.stories-4nFshdtz.js → MultiSelect.stories-DKHPBUWD.js} +1 -1
  330. package/storybook-static/assets/NoData-seFnJNiE.js +1 -0
  331. package/storybook-static/assets/{NotificationsHost-CrLL4WK9.js → NotificationsHost-d770FjSM.js} +11 -8
  332. package/storybook-static/assets/{NotificationsHost.stories-Ci2q0W9-.js → NotificationsHost.stories-BYmVl44l.js} +1 -1
  333. package/storybook-static/assets/{ODataMultiSelect-Cc09uTB8.js → ODataMultiSelect-BN0pcCmQ.js} +1 -1
  334. package/storybook-static/assets/{ODataMultiSelect.stories-CzGzREa9.js → ODataMultiSelect.stories-D5zrkaFW.js} +2 -2
  335. package/storybook-static/assets/{ODataSelect-DqoRg5pz.js → ODataSelect-C5DXRRVH.js} +1 -1
  336. package/storybook-static/assets/{ODataSelect.stories-BCcxERn3.js → ODataSelect.stories-ClYp08JR.js} +2 -2
  337. package/storybook-static/assets/{ODataTreeMultiSelect-qZEcSE5O.js → ODataTreeMultiSelect-CsvSq1G1.js} +1 -1
  338. package/storybook-static/assets/{ODataTreeMultiSelect.stories-Bfees7Qr.js → ODataTreeMultiSelect.stories-DFXLQjms.js} +1 -1
  339. package/storybook-static/assets/{ODataTreeSelect-IOVS6uQc.js → ODataTreeSelect-CdN-NwV7.js} +1 -1
  340. package/storybook-static/assets/{ODataTreeSelect.stories-CO7DClzd.js → ODataTreeSelect.stories-CDffbvxi.js} +1 -1
  341. package/storybook-static/assets/OneStepScroller-qXHo2r0J.js +5 -0
  342. package/storybook-static/assets/Option-tEWfKgN_.js +10 -0
  343. package/storybook-static/assets/OptionButton-DOj_dfd1.js +1 -0
  344. package/storybook-static/assets/OptionContent-6iwuLpQP.js +1 -0
  345. package/storybook-static/assets/OptionContentContainer-DbdHO42m.js +2 -0
  346. package/storybook-static/assets/{PeriodSelect-D-jXJf5C.js → PeriodSelect-Bo_B6jdw.js} +1 -1
  347. package/storybook-static/assets/{PeriodSelect-BAVDztkI.js → PeriodSelect-DffBuv6v.js} +1 -1
  348. package/storybook-static/assets/{PeriodSelect.stories-CscsENT9.js → PeriodSelect.stories-Boq-fBL8.js} +1 -1
  349. package/storybook-static/assets/{PickerField-CRtltoce.js → PickerField-fMVQUcBX.js} +1 -1
  350. package/storybook-static/assets/PickerTriggerActions-zS0JUD-3.js +2 -0
  351. package/storybook-static/assets/PolymorphicComponent-NBvIz9JD.js +1 -0
  352. package/storybook-static/assets/Popover-5c_n39x0.js +55 -0
  353. package/storybook-static/assets/Popover-u02JbpuP.js +46 -0
  354. package/storybook-static/assets/Popover.stories-BUVgJJQI.js +63 -0
  355. package/storybook-static/assets/{PresetRangeDateInput-VZnM8RNV.js → PresetRangeDateInput-EiaEd6Qp.js} +1 -1
  356. package/storybook-static/assets/{PresetRangeDateInput-CVPMYlEV.js → PresetRangeDateInput-TyV-u0Db.js} +1 -1
  357. package/storybook-static/assets/{PresetRangeDateInput.stories-DdBWlSV-.js → PresetRangeDateInput.stories-jJq5Gkdb.js} +1 -1
  358. package/storybook-static/assets/{PresetSelect-C7YYBjlL.js → PresetSelect-Cnl_fXjS.js} +1 -1
  359. package/storybook-static/assets/{README-6XPUoxFl.js → README-10_nKrEg.js} +1 -1
  360. package/storybook-static/assets/{README-DIWsYBR7.js → README-6n5fAnyG.js} +1 -1
  361. package/storybook-static/assets/{README-oKLTQYfV.js → README-7mbN7jNm.js} +1 -1
  362. package/storybook-static/assets/{README-D2AT2-yD.js → README-8qj7XGDa.js} +1 -1
  363. package/storybook-static/assets/{README-DADnaXLy.js → README-8vaqVs2t.js} +1 -1
  364. package/storybook-static/assets/{README-ZxRwqfIH.js → README-AbbeH5rC.js} +1 -1
  365. package/storybook-static/assets/{README-Bk1oSDWQ.js → README-B-K2UPpo.js} +1 -1
  366. package/storybook-static/assets/{README-DoxVtmRh.js → README-B-z6znlC.js} +1 -1
  367. package/storybook-static/assets/{README-BL8ZNGNi.js → README-B6uVB1ib.js} +1 -1
  368. package/storybook-static/assets/{README-B0FbTpix.js → README-B7f6XRLa.js} +1 -1
  369. package/storybook-static/assets/{README-BGBxEe4u.js → README-BGEviJbA.js} +1 -1
  370. package/storybook-static/assets/{README-C-IUw1gX.js → README-BPWr_0XE.js} +1 -1
  371. package/storybook-static/assets/{README-_KzyG4dS.js → README-BWiCGCpy.js} +1 -1
  372. package/storybook-static/assets/{README-DrTR5pSr.js → README-BfF9g6q6.js} +1 -1
  373. package/storybook-static/assets/{README-2NTkucdH.js → README-BgbmWbpJ.js} +1 -1
  374. package/storybook-static/assets/{README-DC0vNdOD.js → README-Bn7SBLqL.js} +1 -1
  375. package/storybook-static/assets/{README-w9FMhq0X.js → README-BoXMNqUS.js} +1 -1
  376. package/storybook-static/assets/{README-DyWhmOFY.js → README-BoZbB8t8.js} +1 -1
  377. package/storybook-static/assets/{README-b3wA6wFr.js → README-BsHrwATK.js} +1 -1
  378. package/storybook-static/assets/{README-CB5BpIBF.js → README-By7MmJad.js} +1 -1
  379. package/storybook-static/assets/{README-DWzfTSuq.js → README-BylyIJ4z.js} +1 -1
  380. package/storybook-static/assets/{README-CeNQeTK-.js → README-ByxHEXaq.js} +1 -1
  381. package/storybook-static/assets/{README-UcyyK9jn.js → README-CO0Anr1W.js} +1 -1
  382. package/storybook-static/assets/{README-BdsFByUw.js → README-CXhBUq08.js} +1 -1
  383. package/storybook-static/assets/{README-Bvo0Qxde.js → README-CXlUZ-Tw.js} +1 -1
  384. package/storybook-static/assets/{README-CTF9mVZL.js → README-CZBT22Qx.js} +1 -1
  385. package/storybook-static/assets/{README-B0Nb0jf2.js → README-CZaKBu1r.js} +1 -1
  386. package/storybook-static/assets/{README-C_lKreF9.js → README-Cc5RUdsX.js} +1 -1
  387. package/storybook-static/assets/{README-BZlnzGAh.js → README-CmCyESsg.js} +1 -1
  388. package/storybook-static/assets/{README-jvtwVY_n.js → README-CoofcGyA.js} +1 -1
  389. package/storybook-static/assets/{README-Wli4AXG5.js → README-CqCDXjY-.js} +1 -1
  390. package/storybook-static/assets/{README-DOi6rx7n.js → README-CqMgUXym.js} +1 -1
  391. package/storybook-static/assets/{README-na5mQX4V.js → README-DB3HzmYa.js} +1 -1
  392. package/storybook-static/assets/{README-DMwF_O1R.js → README-DBqb3xHL.js} +1 -1
  393. package/storybook-static/assets/{README-CvaizZr1.js → README-DKMzvCHg.js} +1 -1
  394. package/storybook-static/assets/{README-CqiNQGIJ.js → README-DLGk_zi3.js} +1 -1
  395. package/storybook-static/assets/{README-Dm7CwuVP.js → README-DT4BWDzj.js} +1 -1
  396. package/storybook-static/assets/{README-Brn9Tjjc.js → README-DXzLMFnF.js} +1 -1
  397. package/storybook-static/assets/{README-8L1vpZcz.js → README-DZKQ2NbJ.js} +1 -1
  398. package/storybook-static/assets/{README-C7N5_6-c.js → README-DnIK-CvZ.js} +1 -1
  399. package/storybook-static/assets/{README-GChrAHFQ.js → README-DsEaeYrz.js} +1 -1
  400. package/storybook-static/assets/{README-DkBG5Azm.js → README-DsqwQGJx.js} +1 -1
  401. package/storybook-static/assets/{README-Dr8TxFTe.js → README-DyhDd6j2.js} +1 -1
  402. package/storybook-static/assets/{README-HWuoKwKL.js → README-E09CwLzJ.js} +1 -1
  403. package/storybook-static/assets/{README-DlfWWC7n.js → README-W30_dPSQ.js} +1 -1
  404. package/storybook-static/assets/{README-DOBIWrus.js → README-WtLMdn_H.js} +1 -1
  405. package/storybook-static/assets/{README-g1VWHzAJ.js → README-_UuZJvdY.js} +1 -1
  406. package/storybook-static/assets/{README-BD-WSEvQ.js → README-bJALHbSR.js} +1 -1
  407. package/storybook-static/assets/{README-Dmu5lsNT.js → README-e3Zi9n04.js} +1 -1
  408. package/storybook-static/assets/{README-DgXAMdBY.js → README-g4l3WFXZ.js} +1 -1
  409. package/storybook-static/assets/{README-jQcGKqqm.js → README-jb10Ekr5.js} +1 -1
  410. package/storybook-static/assets/{README-CTwfFqJG.js → README-q6R_bF6h.js} +1 -1
  411. package/storybook-static/assets/{README-BGmO6U9j.js → README-tDgobAYS.js} +1 -1
  412. package/storybook-static/assets/{RadioButton-Dgkz1EWU.js → RadioButton-DGjO61a9.js} +1 -1
  413. package/storybook-static/assets/RadioButton-j3O4woG8.js +1 -0
  414. package/storybook-static/assets/{RadioButton.stories-DO14jTfm.js → RadioButton.stories-COGMYQcq.js} +1 -1
  415. package/storybook-static/assets/{RadioGroup-Db0AhiKo.js → RadioGroup-Cuj2D_RZ.js} +1 -1
  416. package/storybook-static/assets/{RadioGroup-BSiqjVai.js → RadioGroup-D9samx7D.js} +1 -1
  417. package/storybook-static/assets/{RadioGroup.stories-C0D6n83q.js → RadioGroup.stories-KSDvpgqY.js} +1 -1
  418. package/storybook-static/assets/Scrollable-DsOw--4y.js +1 -0
  419. package/storybook-static/assets/Scrollable-tPrIOchd.js +18 -0
  420. package/storybook-static/assets/Scrollable.stories-B7d_6eGB.js +1 -0
  421. package/storybook-static/assets/Select-D0CHiGkz.js +12 -0
  422. package/storybook-static/assets/{Select-D8X-SkP2.js → Select-h0tWQbii.js} +3 -1
  423. package/storybook-static/assets/{Select.stories-8_zvonmc.js → Select.stories-GmGbpUoi.js} +1 -1
  424. package/storybook-static/assets/Separator-C8aQcNns.js +1 -0
  425. package/storybook-static/assets/Separator-Dh8kzf-5.js +14 -0
  426. package/storybook-static/assets/Separator.stories-nQ9bDdo1.js +14 -0
  427. package/storybook-static/assets/{SerializableSelect-ii6T140l.js → SerializableSelect-BJAxQ8an.js} +1 -1
  428. package/storybook-static/assets/{SerializableSelect.stories-Ba3ABMGt.js → SerializableSelect.stories-CzVCg1_7.js} +1 -1
  429. package/storybook-static/assets/{ShimmerText-C6vkZwUV.js → ShimmerText-DnEOvvJA.js} +1 -1
  430. package/storybook-static/assets/{ShimmerText.stories-CVpSxXHJ.js → ShimmerText.stories-D2XRPcMC.js} +1 -1
  431. package/storybook-static/assets/{SingleDateTimeInput-96-mrjq8.js → SingleDateTimeInput-Bwn8kqI3.js} +8 -1
  432. package/storybook-static/assets/{SingleDateTimeInput-DpETPR89.js → SingleDateTimeInput-DwY38Bzb.js} +1 -1
  433. package/storybook-static/assets/{SingleDateTimeInput.stories-JhviurJO.js → SingleDateTimeInput.stories-DKq1_AqA.js} +1 -1
  434. package/storybook-static/assets/{Slider-B27TdvRV.js → Slider-CT0jMXMY.js} +8 -1
  435. package/storybook-static/assets/Slider-KiXLZUpw.js +1 -0
  436. package/storybook-static/assets/{Slider.stories-d1YeKe5r.js → Slider.stories-Cmcm8HlR.js} +1 -1
  437. package/storybook-static/assets/SliderInput-Dd_yvyMG.js +3 -0
  438. package/storybook-static/assets/{SliderInput-D2d23mEI.js → SliderInput-Unp3YEcU.js} +8 -1
  439. package/storybook-static/assets/{SliderInput.stories-CwqT79oE.js → SliderInput.stories-C0MwvTOV.js} +1 -1
  440. package/storybook-static/assets/{Sortable-DiJuiI6V.js → Sortable-CnCowZw-.js} +4 -2
  441. package/storybook-static/assets/Sortable.stories-DCrIurAg.js +44 -0
  442. package/storybook-static/assets/{Splitter-QwdfWNbm.js → Splitter-BErks2lB.js} +1 -1
  443. package/storybook-static/assets/{Splitter.stories-C2iDPz8c.js → Splitter.stories-DyRlCVUo.js} +1 -1
  444. package/storybook-static/assets/{StateSelect-D1ZDM6bC.js → StateSelect-DXfsbduM.js} +1 -1
  445. package/storybook-static/assets/{StateSelect-Bw9H1Cus.js → StateSelect-DuVzqi0t.js} +1 -1
  446. package/storybook-static/assets/{StateSelect.stories-DEFvQ15O.js → StateSelect.stories-CnIXqGFB.js} +1 -1
  447. package/storybook-static/assets/{StatusIndicator-D6Pbdz37.js → StatusIndicator-Bz3JF899.js} +1 -1
  448. package/storybook-static/assets/{StatusIndicator.stories-COgpy5cK.js → StatusIndicator.stories-B5RMchH3.js} +1 -1
  449. package/storybook-static/assets/{StringToggle.stories-BFwMh0Yd.js → StringToggle.stories-CcR8KHGF.js} +1 -1
  450. package/storybook-static/assets/{Switch-Bmj2AItH.js → Switch-Bo-dd4nL.js} +1 -1
  451. package/storybook-static/assets/{Switch-DyDk152g.js → Switch-a7GMbDn9.js} +1 -1
  452. package/storybook-static/assets/{Switch.stories-C10NxPL4.js → Switch.stories-B9c9CAmZ.js} +1 -1
  453. package/storybook-static/assets/{Table-YcEwF4aO.js → Table-BgmEmcbL.js} +1 -1
  454. package/storybook-static/assets/{Table.stories-DgxFS9Sa.js → Table.stories-BByDPmdZ.js} +1 -1
  455. package/storybook-static/assets/{TableEditor.stories-CSMoxO4O.js → TableEditor.stories-DJi7VPcY.js} +1 -1
  456. package/storybook-static/assets/{Tabs-DOsPN2X1.js → Tabs-CV1ykDlt.js} +2 -3
  457. package/storybook-static/assets/Tabs.stories-DOyJdrcR.js +57 -0
  458. package/storybook-static/assets/{TabsBox-B3REnb6D.css → TabsBox-DuBKU62M.css} +1 -1
  459. package/storybook-static/assets/{TabsBox-Ovukgo9G.js → TabsBox-n38x7_yO.js} +1 -1
  460. package/storybook-static/assets/{TagInput-BQBOGr9G.js → TagInput-j4mVWIf0.js} +1 -1
  461. package/storybook-static/assets/{TagInput.stories-DAAyJlgm.js → TagInput.stories-DSU97IRU.js} +1 -1
  462. package/storybook-static/assets/{Text-fdwuak_J.js → Text-COGTV38X.js} +1 -1
  463. package/storybook-static/assets/{Textarea-A22Efyk-.js → Textarea-BcgmS9aD.js} +1 -1
  464. package/storybook-static/assets/{Textarea-D80ZPpEy.js → Textarea-Byqjr2Ve.js} +1 -1
  465. package/storybook-static/assets/{Textarea.stories-DfaOYMoN.js → Textarea.stories-D1gXsWxK.js} +1 -1
  466. package/storybook-static/assets/{TimePanel-Bd5T_SfL.js → TimePanel-DzFFLXJP.js} +1 -1
  467. package/storybook-static/assets/{TimePanel.stories-D6TIpKp4.js → TimePanel.stories-287q5ipF.js} +1 -1
  468. package/storybook-static/assets/{Toggle-BvHMq6f_.js → Toggle-CCkzi_xC.js} +1 -1
  469. package/storybook-static/assets/{Toggle-DUyCRH0o.js → Toggle-KtpVC-vX.js} +1 -1
  470. package/storybook-static/assets/{Toggle.stories-ZPgC-EWw.js → Toggle.stories-BLKa6Zst.js} +1 -1
  471. package/storybook-static/assets/{TreeMultiSelect-DTMybWfP.js → TreeMultiSelect-CbnCiXFa.js} +1 -1
  472. package/storybook-static/assets/{TreeMultiSelect-DTmB9s8s.js → TreeMultiSelect-sYAglJIC.js} +2 -1
  473. package/storybook-static/assets/{TreeMultiSelect.stories-1_HB74Gf.js → TreeMultiSelect.stories-DGw_tJQ5.js} +1 -1
  474. package/storybook-static/assets/TreePickerBase-ClWTQVKW.css +1 -0
  475. package/storybook-static/assets/TreePickerBase-wz0-Y-eg.js +76 -0
  476. package/storybook-static/assets/{TreeSelect-CTN6cRRr.js → TreeSelect-BCOJNrl1.js} +1 -1
  477. package/storybook-static/assets/{TreeSelect-UsZGYhUO.js → TreeSelect-BJ6C_2pM.js} +2 -1
  478. package/storybook-static/assets/{TreeSelect.stories-B01pZcR9.js → TreeSelect.stories-DKdmUNAI.js} +1 -1
  479. package/storybook-static/assets/{TreeTable-dr3jK3Ih.js → TreeTable-DIRsmeC8.js} +1 -1
  480. package/storybook-static/assets/{TreeTable.stories-B1DPasDc.js → TreeTable.stories-BfqeLJU6.js} +1 -1
  481. package/storybook-static/assets/{blocks-Cw5Dm88b.js → blocks-r6nP1Mk3.js} +3 -3
  482. package/storybook-static/assets/{check-028VTQ8f.js → check-CX66-EtS.js} +1 -1
  483. package/storybook-static/assets/{chevron-down-CjXVIhzi.js → chevron-down-BpTVPmXw.js} +1 -1
  484. package/storybook-static/assets/{chevron-left-CktI1oFP.js → chevron-left-BDyvowID.js} +1 -1
  485. package/storybook-static/assets/{chevron-right-CF10QSRI.js → chevron-right-PitONC71.js} +1 -1
  486. package/storybook-static/assets/{chunk-W22LQPXL-C0ehDnCq.js → chunk-W22LQPXL-Bd54JRSO.js} +1 -1
  487. package/storybook-static/assets/{circle-alert-s0HpHvQO.js → circle-alert-BxfK632o.js} +1 -1
  488. package/storybook-static/assets/{circle-check-C7Lv1fv9.js → circle-check-CQ0mrCVh.js} +1 -1
  489. package/storybook-static/assets/{components-ClxgOUq5.js → components-CJIwocXl.js} +3 -3
  490. package/storybook-static/assets/contextMenu-BodN1HdA.js +2 -0
  491. package/storybook-static/assets/{download-B1U5w3LU.js → download-C_lZf2f4.js} +1 -1
  492. package/storybook-static/assets/{floating-ui.react-CyNWkXBV.js → floating-ui.react-BzwQR5CG.js} +1 -1
  493. package/storybook-static/assets/{foundationApi-CY0sxk8w.js → foundationApi-BgE0geET.js} +1 -1
  494. package/storybook-static/assets/{foundationLib-BCpSUA25.js → foundationLib-6nKeXUFS.js} +1 -1
  495. package/storybook-static/assets/{hooks-DjR-EyBl.js → hooks-DDySZJGR.js} +1 -1
  496. package/storybook-static/assets/{iframe-woVbsQH3.js → iframe-B9PXVErw.js} +4 -4
  497. package/storybook-static/assets/iframe-f5g4GUQw.js +1 -0
  498. package/storybook-static/assets/{info-DKbXBIbQ.js → info-rdW9neC9.js} +1 -1
  499. package/storybook-static/assets/{odata-CMCuN2Rx.js → odata-D6cOAxLt.js} +1 -1
  500. package/storybook-static/assets/{odataStoryFixtures-a4Q2PLas.js → odataStoryFixtures-CGQ31IO_.js} +1 -1
  501. package/storybook-static/assets/{react-D3CyilRt.js → react-BMktiE65.js} +1 -1
  502. package/storybook-static/assets/{refresh-cw-DXEJelAO.js → refresh-cw-CfKvrc1N.js} +1 -1
  503. package/storybook-static/assets/{settings-2-CKbiQBX8.js → settings-2-Drz-L5J9.js} +1 -1
  504. package/storybook-static/assets/sortable-BMuu2DRC.js +1 -0
  505. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-CLptde2b.js → syntaxhighlighter-QEQV7K2Y-eBmofw1l.js} +1 -1
  506. package/storybook-static/assets/{trash-2-CPWRIQlJ.js → trash-2-DEbF1hh6.js} +1 -1
  507. package/storybook-static/assets/{triangle-alert-XjzWCHp5.js → triangle-alert--nwD_1ZX.js} +1 -1
  508. package/storybook-static/assets/{ui-FA-1R8mO.css → ui-Bpz_yxm8.css} +1 -1
  509. package/storybook-static/assets/{uiClasses-DNnVkKPr.js → uiClasses-Bar5W7-L.js} +1 -1
  510. package/storybook-static/assets/{useODataSelectBase-ZGFa3pdT.js → useODataSelectBase-DSOGiMIw.js} +1 -1
  511. package/storybook-static/assets/{useODataTreeData-DAdLowou.js → useODataTreeData-Cn_XaKz_.js} +1 -1
  512. package/storybook-static/assets/usePickerQuery-B5ZZQg8g.js +1 -0
  513. package/storybook-static/assets/usePickerTriggerController-Cqy5IfOJ.js +6 -0
  514. package/storybook-static/assets/{x-D2Q9PGsq.js → x-DSHJbBBz.js} +1 -1
  515. package/storybook-static/iframe.html +2 -2
  516. package/storybook-static/index.json +1 -1
  517. package/storybook-static/project.json +1 -1
  518. package/dist/chunks/CalendarView-CwbPJG2Y.js.map +0 -1
  519. package/dist/chunks/button-D7GAU2Wa.js +0 -72
  520. package/dist/chunks/button-D7GAU2Wa.js.map +0 -1
  521. package/dist/chunks/context-menu-BQePxRpu.js +0 -532
  522. package/dist/chunks/context-menu-BQePxRpu.js.map +0 -1
  523. package/dist/chunks/flex-DtXK7OM4.js +0 -207
  524. package/dist/chunks/flex-DtXK7OM4.js.map +0 -1
  525. package/dist/chunks/grid-dI94AAbi.js.map +0 -1
  526. package/dist/chunks/misc-CGQOXXCy.js.map +0 -1
  527. package/dist/chunks/modal-febBsMyR.js.map +0 -1
  528. package/dist/chunks/picker-BA6okKnz.js.map +0 -1
  529. package/dist/chunks/popover-yl5DVe06.js +0 -245
  530. package/dist/chunks/popover-yl5DVe06.js.map +0 -1
  531. package/dist/chunks/select-DblNSc5H.js.map +0 -1
  532. package/dist/chunks/separator-CIqnk2z9.js +0 -15
  533. package/dist/chunks/separator-CIqnk2z9.js.map +0 -1
  534. package/storybook-static/assets/CalendarView-Dz8cY1fo.js +0 -1
  535. package/storybook-static/assets/ContextMenu-XS7B8QUC.js +0 -1
  536. package/storybook-static/assets/ContextMenu.stories-Dp2t2BZa.js +0 -37
  537. package/storybook-static/assets/CustomOptionButton-DNd0GDWp.js +0 -1
  538. package/storybook-static/assets/Detail.stories-CXg_w4qM.js +0 -56
  539. package/storybook-static/assets/DisclosureGroup-JNnTj18G.js +0 -2
  540. package/storybook-static/assets/DropdownMenu-xjOtBneA.js +0 -1
  541. package/storybook-static/assets/Flex.stories-CCVNsX23.js +0 -300
  542. package/storybook-static/assets/FlexContainer-BWyPlTMB.js +0 -1
  543. package/storybook-static/assets/FloatingPopover-D6tO24aO.js +0 -1
  544. package/storybook-static/assets/FormattedTableCell-CDaDfaXy.js +0 -15
  545. package/storybook-static/assets/Listbox-3Npc4PI_.js +0 -1
  546. package/storybook-static/assets/Modal-Ddmc8-2-.js +0 -1
  547. package/storybook-static/assets/MultiSelect-BkLCM22R.js +0 -2
  548. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +0 -1
  549. package/storybook-static/assets/NoData-bUonNuRR.js +0 -1
  550. package/storybook-static/assets/OneStepScroller-B_IRz2Rw.js +0 -5
  551. package/storybook-static/assets/Option-fRoOLqLF.js +0 -10
  552. package/storybook-static/assets/OptionButton--hnpJ-88.js +0 -1
  553. package/storybook-static/assets/PickerTriggerActions-BDGEQPvP.js +0 -1
  554. package/storybook-static/assets/Popover-BYO0DlBg.js +0 -45
  555. package/storybook-static/assets/Popover-Byy9_Twt.js +0 -2
  556. package/storybook-static/assets/Popover.stories-8RhemIQg.js +0 -47
  557. package/storybook-static/assets/RadioButton-DMn-soQD.js +0 -1
  558. package/storybook-static/assets/Scrollable-BI3OE8gc.js +0 -1
  559. package/storybook-static/assets/Select-1MNiFkxm.js +0 -12
  560. package/storybook-static/assets/Slider-DbiDvmoV.js +0 -1
  561. package/storybook-static/assets/SliderInput-CzYn9gor.js +0 -2
  562. package/storybook-static/assets/Sortable.stories-DFCzTok0.js +0 -44
  563. package/storybook-static/assets/Tabs.stories-BdZilcp2.js +0 -57
  564. package/storybook-static/assets/TreePickerBase-CmFF9pWE.css +0 -1
  565. package/storybook-static/assets/TreePickerBase-Cu2mneBS.js +0 -76
  566. package/storybook-static/assets/contextMenu-CWGju9qn.js +0 -2
  567. package/storybook-static/assets/iframe-Dyd6jnSv.js +0 -1
  568. package/storybook-static/assets/sortable-CXLU2ip-.js +0 -1
  569. package/storybook-static/assets/usePickerQuery-CaO8hXyH.js +0 -1
  570. package/storybook-static/assets/usePickerTriggerController-DWjrt_q_.js +0 -6
  571. /package/storybook-static/assets/{ui.module-CyEEibCu.js → ui.module-0uniSGT-.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelect.tsx","../../src/multi-select/model/useODataMultiSelect.ts","../../src/multi-select/ui/ODataMultiSelect.tsx","../../src/multi-select/ui/ODataDependentSegmentMultiSelect.tsx","../../src/multi-select/ui/ODataDependentMultiSelect.tsx","../../src/multi-select/ui/SerializableMultiSelect.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.multiSelect {\n\t// Общий контейнер\n\tpadding: 0;\n}\n\n.optionCheckBox {\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\n\t--check-box-control-size: auto;\n\tpadding-left: var(--space-sm);\n}\n","import { Text } from \"../../text\";\nimport uiStyles from \"../../ui.module.scss\";\n\ninterface MultiSelectOptionSkeletonProps {\n\ttext: string;\n\tisError?: boolean;\n}\n\n/**\n * Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.\n */\nexport function MultiSelectOptionSkeleton({ text, isError }: MultiSelectOptionSkeletonProps) {\n\treturn (\n\t\t<div className={uiStyles.uiPopupOption}>\n\t\t\t<span className={uiStyles.uiPopupOptionIcon}></span>\n\t\t\t<Text color={isError ? \"error\" : \"primary\"}>{text}</Text>\n\t\t</div>\n\t);\n}\n","import React, { forwardRef, type PropsWithChildren, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { CheckBox } from \"../../check-box\";\nimport { Option, OptionButton } from \"../../option\";\nimport {\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTrigger,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { type UiBaseProps } from \"../../types\";\n\nimport { createDefaultMultiSelectItemRenderer, createDefaultMultiSelectTokenRenderer, resolveMultiSelectTextKey } from \"./defaultRenderers\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\ninterface MultiSelectOptionsProps extends PropsWithChildren {\n\tisNoData?: boolean;\n\t// isLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\t// if (isLoading) return <PickerStatus loadingState={<MultiSelectOptionSkeleton text=\"Загрузка...\" />} />;\n\tif (error) return <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\n\treturn <>{children}</>;\n}\n\nexport interface MultiSelectItemState {\n\tselected: boolean;\n\tactive: boolean;\n\tdisabled: boolean;\n\tquery: string;\n\thighlightQuery: string;\n}\n\n/**\n * Структурированное содержимое опции множественного выбора. `MultiSelect` владеет\n * интерактивной оболочкой и checkbox-слотом, а renderer отвечает только за данные\n * текстовой части, поэтому единая композиция `OptionButton` сохраняется и для\n * произвольного ReactNode.\n */\nexport interface MultiSelectOptionContent {\n\ttext: string;\n\tcode: string | undefined;\n}\n\nexport interface MultiSelectRenderContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tavailableItems: CollectionItem[];\n\tquery: string;\n\topen: boolean;\n\tclearSelection: () => void;\n\tselectAll: () => void;\n\tdeselectAll: () => void;\n}\n\nexport interface MultiSelectOptionDisableContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tselectedKeys: ReadonlySet<string>;\n\topen: boolean;\n}\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => React.ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent;\n}\n\nexport interface MultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\thighlightQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\titems: TOption[];\n\tgetOptionDisabled?: (item: TOption, context: MultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\nconst fallback: CollectionItem[] = [];\n\nfunction getItemKey(item: CollectionItem, codeKey: string) {\n\treturn item[codeKey];\n}\n\nfunction getItemSearchParts(item: CollectionItem, codeKey: string, textKey: string) {\n\treturn Array.from(new Set([item[textKey], item[codeKey], ...Object.values(item)]));\n}\n\nfunction areSelectionsEqual(left: CollectionItem[], right: CollectionItem[], codeKey: string) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map((item) => getItemKey(item, codeKey)));\n\n\treturn left.every((item) => rightKeys.has(getItemKey(item, codeKey)));\n}\n\ninterface MultiSelectOptionEntry {\n\titem: CollectionItem;\n\tindex: number;\n}\n\ninterface MultiSelectOptionGroupProps {\n\tentries: MultiSelectOptionEntry[];\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: Set<string>;\n\tcodeKey: string;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionDisabled?: (item: CollectionItem) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (item: CollectionItem) => void;\n\tselectOnlyOption: (item: CollectionItem) => void;\n\trenderItem: (item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent;\n}\n\nfunction MultiSelectOptionGroup({\n\tentries,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tcodeKey,\n\tquery,\n\thighlightQuery,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderItem\n}: MultiSelectOptionGroupProps) {\n\treturn entries.map(({ item, index }) => {\n\t\tconst active = index === activeIndex;\n\t\tconst itemKey = getItemKey(item, codeKey);\n\t\tconst selected = selectedKeys.has(itemKey);\n\t\tconst optionDisabled = getOptionDisabled?.(item) ?? false;\n\t\tconst content = renderItem(item, { selected, active, disabled: optionDisabled, query, highlightQuery });\n\n\t\treturn (\n\t\t\t<Option\n\t\t\t\tkey={`${itemKey}-${index}`}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\tselected={selected}\n\t\t\t\tactive={active}\n\t\t\t\tdisabled={optionDisabled}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={styles.optionCheckBox}\n\t\t\t\t\tonMouseDown={(event) => event.stopPropagation()}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}>\n\t\t\t\t\t<CheckBox\n\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\taria-label={`Выбрать ${highlightQuery ?? itemKey}`}\n\t\t\t\t\t\tonChange={() => toggleOption(item)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<OptionButton\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\ttext={content.text}\n\t\t\t\t\tcode={content.code}\n\t\t\t\t\tsearchText={highlightQuery}\n\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\tonClick={() => selectOnlyOption(item)}\n\t\t\t\t/>\n\t\t\t</Option>\n\t\t);\n\t});\n}\n\n/**\n * Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.\n * Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.\n */\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(\n\t(\n\t\t{\n\t\t\tcodeKey,\n\t\t\ttextKey,\n\t\t\thideCode,\n\t\t\titems,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tplaceholder,\n\t\t\tsize,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\thighlightQuery,\n\t\t\tonQuery,\n\t\t\tdefaultFilter = true,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tgetOptionDisabled,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tisLoading,\n\t\t\trenderToken,\n\t\t\trenderToolbar,\n\t\t\trenderItem\n\t\t},\n\t\tref\n\t) => {\n\t\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\t\tconst [open, setOpen] = useState(false);\n\t\tconst triggerMode = \"search-multi\";\n\t\tconst committedSelectedItems = value ?? fallback;\n\t\tconst committedSelectedKeys = useMemo(\n\t\t\t() => new Set(committedSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedItems]\n\t\t);\n\t\tconst availableItems = useMemo(\n\t\t\t() => items.filter((item) => !committedSelectedKeys.has(getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedKeys, items]\n\t\t);\n\t\tconst resolvedTextKey = useMemo(\n\t\t\t() => resolveMultiSelectTextKey([...committedSelectedItems, ...items], codeKey, textKey),\n\t\t\t[codeKey, committedSelectedItems, items, textKey]\n\t\t);\n\t\tconst {\n\t\t\tquery: currentQuery,\n\t\t\tsetQuery,\n\t\t\tresetQueryOnClose\n\t\t} = usePickerQuery({\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\tonQuery,\n\t\t\ttriggerMode\n\t\t});\n\t\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\t\tif (open && !nextOpen && resetQueryOnClose) {\n\t\t\t\tsetQuery(\"\");\n\t\t\t}\n\n\t\t\tsetOpen(nextOpen);\n\t\t};\n\t\tconst filteredCommittedSelectedItems = usePickerDefaultFilter({\n\t\t\toptions: committedSelectedItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst filteredAvailableItems = usePickerDefaultFilter({\n\t\t\toptions: availableItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst visibleOptions = useMemo(\n\t\t\t() => [...filteredCommittedSelectedItems, ...filteredAvailableItems],\n\t\t\t[filteredAvailableItems, filteredCommittedSelectedItems]\n\t\t);\n\t\tconst selectedIndex = filteredCommittedSelectedItems.length > 0 ? 0 : -1;\n\t\tconst {\n\t\t\tdraftValue: draftSelectedItems,\n\t\t\tsetDraftValue: setDraftSelectedItems,\n\t\t\tprepareOpen\n\t\t} = usePickerSelectionLifecycle({\n\t\t\tvalue: committedSelectedItems,\n\t\t\topen,\n\t\t\tonCommit: onChange,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tisEqual: (left, right) => areSelectionsEqual(left, right, codeKey)\n\t\t});\n\t\tconst selectedKeys = useMemo(\n\t\t\t() => new Set(draftSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, draftSelectedItems]\n\t\t);\n\t\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext>(\n\t\t\t() => ({\n\t\t\t\tselectedItems: draftSelectedItems,\n\t\t\t\tcommittedSelectedItems,\n\t\t\t\tselectedKeys,\n\t\t\t\topen\n\t\t\t}),\n\t\t\t[committedSelectedItems, draftSelectedItems, open, selectedKeys]\n\t\t);\n\t\tconst isOptionDisabled = useCallback(\n\t\t\t(item: CollectionItem) => getOptionDisabled?.(item, optionDisableContext) ?? false,\n\t\t\t[getOptionDisabled, optionDisableContext]\n\t\t);\n\t\tconst {\n\t\t\tactiveIndex,\n\t\t\tcontext,\n\t\t\tfloatingStyles,\n\t\t\tgetFloatingProps,\n\t\t\tsetReference,\n\t\t\tsetFloating,\n\t\t\tsetOptionRef,\n\t\t\tclose,\n\t\t\topenList,\n\t\t\ttoggleOpen,\n\t\t\tselectActiveOption,\n\t\t\thandleReferenceKeyDown,\n\t\t\thandleFloatingKeyDown,\n\t\t\tgetOptionId,\n\t\t\tgetActiveOptionId\n\t\t} = usePickerFloatingListbox({\n\t\t\toptions: visibleOptions,\n\t\t\tselectedIndex,\n\t\t\topen,\n\t\t\tonOpenChange: handleOpenChange,\n\t\t\tonSelect: undefined,\n\t\t\tdisabled,\n\t\t\tgetOptionDisabled: isOptionDisabled,\n\t\t\tcloseOnSelect: false,\n\t\t\tallowOpenWithoutOptions: true,\n\t\t\ttriggerMode\n\t\t});\n\n\t\tconst currentHighlightQuery = highlightQuery ?? currentQuery;\n\t\tconst toggleDraftSelection = (item: CollectionItem) => {\n\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst isSelected = currentItems.some((selectedItem) => getItemKey(selectedItem, codeKey) === itemKey);\n\n\t\t\t\tif (isSelected) {\n\t\t\t\t\treturn currentItems.filter((selectedItem) => getItemKey(selectedItem, codeKey) !== itemKey);\n\t\t\t\t}\n\n\t\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\t\treturn currentItems;\n\t\t\t\t}\n\n\t\t\t\treturn [...currentItems, item];\n\t\t\t});\n\t\t};\n\n\t\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\t\tinputRef.current = node;\n\n\t\t\tif (typeof ref === \"function\") {\n\t\t\t\tref(node);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ref) {\n\t\t\t\tref.current = node;\n\t\t\t}\n\t\t};\n\n\t\tconst clearSelection = () => {\n\t\t\tsetDraftSelectedItems([]);\n\n\t\t\tif (!open) {\n\t\t\t\tonChange([]);\n\t\t\t}\n\t\t};\n\n\t\tconst selectAll = () => {\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst nextItems = [...currentItems];\n\t\t\t\tconst selectedKeys = new Set(currentItems.map((item) => getItemKey(item, codeKey)));\n\n\t\t\t\tfor (const item of visibleOptions) {\n\t\t\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\t\t\tif (!selectedKeys.has(itemKey) && !isOptionDisabled(item)) {\n\t\t\t\t\t\tselectedKeys.add(itemKey);\n\t\t\t\t\t\tnextItems.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn nextItems;\n\t\t\t});\n\t\t};\n\n\t\tconst deselectAll = () => {\n\t\t\tsetDraftSelectedItems([]);\n\t\t};\n\n\t\tconst selectOnlyOption = (item: CollectionItem) => {\n\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetDraftSelectedItems([item]);\n\t\t\tclose();\n\t\t};\n\n\t\tconst currentSelectedItems = open ? draftSelectedItems : committedSelectedItems;\n\t\tconst hasSelectedItems = currentSelectedItems.length > 0;\n\t\tconst renderContext: MultiSelectRenderContext = {\n\t\t\tselectedItems: currentSelectedItems,\n\t\t\tcommittedSelectedItems,\n\t\t\tavailableItems: filteredAvailableItems,\n\t\t\tquery: currentQuery,\n\t\t\topen,\n\t\t\tclearSelection,\n\t\t\tselectAll,\n\t\t\tdeselectAll\n\t\t};\n\t\tconst tokenRenderer =\n\t\t\trenderToken === undefined ? createDefaultMultiSelectTokenRenderer({ codeKey, textKey: resolvedTextKey }) : renderToken;\n\t\tconst itemRenderer =\n\t\t\trenderItem ??\n\t\t\tcreateDefaultMultiSelectItemRenderer({\n\t\t\t\tcodeKey,\n\t\t\t\ttextKey: resolvedTextKey,\n\t\t\t\thideCode\n\t\t\t});\n\t\tconst tokenNode = typeof tokenRenderer === \"function\" ? tokenRenderer(renderContext) : null;\n\t\tconst toolbarNode = typeof renderToolbar === \"function\" ? renderToolbar(renderContext) : renderToolbar;\n\t\tconst selectedEntries = filteredCommittedSelectedItems.map((item, index) => ({ item, index }));\n\t\tconst itemEntries = filteredAvailableItems.map((item, index) => ({ item, index: index + selectedEntries.length }));\n\t\tconst isNoData = !isLoading && !error && visibleOptions.length === 0;\n\t\tconst triggerController = usePickerTriggerController({\n\t\t\tmode: triggerMode,\n\t\t\topen,\n\t\t\tcurrentQuery,\n\t\t\thasDisplayValue: false,\n\t\t\tinputRef,\n\t\t\tsetQuery,\n\t\t\topenList,\n\t\t\tclose,\n\t\t\ttoggleOpen,\n\t\t\tonBeforeOpen: () => {\n\t\t\t\tif (!open) {\n\t\t\t\t\tprepareOpen();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<PickerField label={label} description={description} disabled={disabled} size={size} className={styles.multiSelect}>\n\t\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\toptionCount={items.length}\n\t\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\tplaceholderFallback=\"Выберите значения\"\n\t\t\t\t\t\t\t\tvalue={currentQuery}\n\t\t\t\t\t\t\t\tselectedValue={tokenNode}\n\t\t\t\t\t\t\t\thasSelection={hasSelectedItems}\n\t\t\t\t\t\t\t\tshowSelectedValue={hasSelectedItems && currentQuery.length === 0}\n\t\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\t\tonClear={clearSelection}\n\t\t\t\t\t\t\t\tclearAriaLabel=\"Очистить все\"\n\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\trootClassName=\"flex alignItemsCenter\"\n\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\t\tonActivateWhenOpen: () => {\n\t\t\t\t\t\t\t\t\t\t\tif (activeIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst activeItem = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeItem);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tselectActiveOption();\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tenableClosedArrowDownOpen: true,\n\t\t\t\t\t\t\t\t\t\tsuppressClosedArrowUp: true\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\t\tactiveOptionId={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\t\tinitialFocus={-1}\n\t\t\t\t\t\t\t\treturnFocus={false}\n\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\ttoolbar={toolbarNode}\n\t\t\t\t\t\t\t\tselectionActions={\n\t\t\t\t\t\t\t\t\trenderToolbar === undefined ? { onSelectAll: selectAll, onDeselectAll: deselectAll } : undefined\n\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t<MultiSelectOptionsWrapper isNoData={isNoData} error={error}>\n\t\t\t\t\t\t\t\t\t<div className=\"scrollable overscroll h100\">\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableItems.length > 0 && <Separator className=\"marginBlockSm\" />}\n\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={itemEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</MultiSelectOptionsWrapper>\n\t\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t</PickerField>\n\t\t);\n\t}\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n","import { ODataCollectionModel, ODataSelectBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { mapSelectedItemsToValues, useODataSelectBase } from \"../../select/model/useODataSelectBase\";\n\ninterface UseODataMultiSelectOptions extends Omit<ODataSelectBaseProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (keys: string[]) => void;\n}\n\nexport function useODataMultiSelect({ odata, segment, model, value, dependencies, onChange }: UseODataMultiSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies\n\t});\n\n\tconst handleChange = (items: CollectionItem[]) => {\n\t\tonChange(mapSelectedItemsToValues(items, odataModel.selectionKey));\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\thandleChange\n\t};\n}\n","import React from \"react\";\n\nimport { ODataSelectBaseProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { UiBaseProps } from \"../../types\";\nimport { useODataMultiSelect } from \"../model/useODataMultiSelect\";\n\nimport { MultiSelect } from \"./MultiSelect\";\n\ntype ODataMultiSelectProps = ODataSelectBaseProps & Omit<UiBaseProps<string[]>, \"placeholder\"> & {};\n\nexport const ODataMultiSelect: React.FC<ODataMultiSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tsize\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataMultiSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tsize={size}\n\t\t\tcodeKey={odataModel.codeKey}\n\t\t\ttextKey={odataModel.textKey}\n\t\t\thideCode={segment.hideCode ?? odata.hideCode}\n\t\t\titems={odataModel.filteredItems}\n\t\t\tvalue={odataModel.selectedItems}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tquery={odataModel.query}\n\t\t\tdefaultFilter={false}\n\t\t\thighlightQuery={odataModel.debouncedQuery}\n\t\t\tisLoading={odataModel.isLoading}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n};\n","import { useCallback } from \"react\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentControlProps } from \"../../odata-dependent\";\n\nexport type ODataDependentSegmentMultiSelectProps = ODataDependentSegmentControlProps;\n\nexport function ODataDependentSegmentMultiSelect(props: ODataDependentSegmentMultiSelectProps) {\n\tconst { item, disabled, label, description, size, width = 15 } = props;\n\tconst selection = useODataDependentSelection(props);\n\tconst { updateSegment } = selection;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tupdateSegment(item.id, keys);\n\t\t},\n\t\t[item.id, updateSegment]\n\t);\n\n\treturn (\n\t\t<div style={{ maxWidth: widthStyle, minWidth: widthStyle }}>\n\t\t\t<ODataMultiSelect\n\t\t\t\todata={item.odata}\n\t\t\t\tsegment={item.segment}\n\t\t\t\tmodel={item.model}\n\t\t\t\tdependencies={selection.values}\n\t\t\t\tvalue={selection.values[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t\tdisabled={disabled || selection.isSegmentDisabled(item.id)}\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { flattenODataDependentServices, type ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\nimport type { UseODataDependentSelectionOptions } from \"../../odata-dependent\";\n\nexport type ODataDependentMultiSelectProps = Omit<ODataDependentBaseProps, \"dependencies\" | \"value\"> &\n\tUseODataDependentSelectionOptions & {\n\t\t/**\n\t\t * Ширина одного элемента в `em` единицах.\n\t\t *\n\t\t * @default 15\n\t\t */\n\t\twidth?: number;\n\t};\n\nexport function ODataDependentMultiSelect(props: ODataDependentMultiSelectProps) {\n\tconst { width = 15, odata, segments, model, values, defaultValues, onChange, selectionMode, segmentOrder } = props;\n\tconst selection = useODataDependentSelection({ values, defaultValues, onChange });\n\tconst segmentSelectionProps =\n\t\tselectionMode === \"sequential\" ? { selectionMode: \"sequential\" as const, segmentOrder } : { selectionMode, segmentOrder };\n\tconst items = flattenODataDependentServices([\n\t\t{\n\t\t\todata,\n\t\t\tsegments,\n\t\t\tmodel\n\t\t}\n\t]);\n\n\treturn items.map((item) => (\n\t\t<ODataDependentSegmentMultiSelect\n\t\t\tkey={item.id}\n\t\t\titem={item}\n\t\t\tvalues={selection.values}\n\t\t\tonChange={selection.updateValues}\n\t\t\t{...segmentSelectionProps}\n\t\t\twidth={width}\n\t\t/>\n\t));\n}\n","import { MultiSelect } from \"./MultiSelect\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\nimport type { UiBaseProps } from \"../../types\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], string> extends never ? never : K;\n}[keyof TOption];\n\nexport interface SerializableMultiSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends UiBaseProps<Extract<TOption[TOptionKey], string>[]> {\n\toptions: readonly TOption[];\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], string> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], string>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" ? key : String(key);\n}\n\nexport function SerializableMultiSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode\n}: SerializableMultiSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\t// Как будто можно не мемоизировать, нет смысла\n\tconst items = options.map<CollectionItem>((option) => ({\n\t\tkey: String(getSerializableOptionKey(option, optionKey)),\n\t\ttext: getSerializableOptionLabel(option, optionLabel, optionKey)\n\t}));\n\tconst selectedKeys = new Set((value ?? []).map((item) => String(item)));\n\tconst selectedItems = items.filter((item) => selectedKeys.has(item.key));\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\titems={items}\n\t\t\tcodeKey=\"key\"\n\t\t\ttextKey=\"text\"\n\t\t\thideCode={renderCode ? undefined : true}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={(nextItems) => onChange(nextItems.map((item) => item.key) as Extract<TOption[TOptionKey], string>[])}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelect.tsx","../../src/multi-select/model/useODataMultiSelect.ts","../../src/multi-select/ui/ODataMultiSelect.tsx","../../src/multi-select/ui/ODataDependentSegmentMultiSelect.tsx","../../src/multi-select/ui/ODataDependentMultiSelect.tsx","../../src/multi-select/ui/SerializableMultiSelect.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.multiSelect {\n\t// Общий контейнер\n\tpadding: 0;\n}\n\n.optionCheckBox {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tflex-shrink: 0;\n\n\t--check-box-control-size: auto;\n\tpadding-left: var(--space-sm);\n}\n\n.optionActionCell {\n\tdisplay: flex;\n\talign-self: stretch;\n\tflex: 1 1 0;\n\tmin-width: 0;\n}\n","import { Text } from \"../../text\";\nimport uiStyles from \"../../ui.module.scss\";\n\ninterface MultiSelectOptionSkeletonProps {\n\ttext: string;\n\tisError?: boolean;\n}\n\n/**\n * Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.\n */\nexport function MultiSelectOptionSkeleton({ text, isError }: MultiSelectOptionSkeletonProps) {\n\treturn (\n\t\t<div className={uiStyles.uiPopupOption}>\n\t\t\t<span className={uiStyles.uiPopupOptionIcon}></span>\n\t\t\t<Text color={isError ? \"error\" : \"primary\"}>{text}</Text>\n\t\t</div>\n\t);\n}\n","import React, { type PropsWithChildren, type Ref, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { CheckBox } from \"../../check-box\";\nimport { Option, OptionButton } from \"../../option\";\nimport {\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTrigger,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { type UiBaseProps } from \"../../types\";\n\nimport { createDefaultMultiSelectItemRenderer, createDefaultMultiSelectTokenRenderer, resolveMultiSelectTextKey } from \"./defaultRenderers\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\ninterface MultiSelectOptionsProps extends PropsWithChildren {\n\tisNoData?: boolean;\n\t// isLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\t// if (isLoading) return <PickerStatus loadingState={<MultiSelectOptionSkeleton text=\"Загрузка...\" />} />;\n\tif (error) return <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\n\treturn <>{children}</>;\n}\n\nexport interface MultiSelectItemState {\n\tselected: boolean;\n\tactive: boolean;\n\tdisabled: boolean;\n\tquery: string;\n\thighlightQuery: string;\n}\n\n/**\n * Структурированное содержимое опции множественного выбора. `MultiSelect` владеет\n * интерактивной оболочкой и checkbox-слотом, а renderer отвечает только за данные\n * текстовой части, поэтому единая композиция `OptionButton` сохраняется и для\n * произвольного ReactNode.\n */\nexport interface MultiSelectOptionContent {\n\ttext: string;\n\tcode: string | undefined;\n}\n\nexport interface MultiSelectRenderContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tavailableItems: CollectionItem[];\n\tquery: string;\n\topen: boolean;\n\tclearSelection: () => void;\n\tselectAll: () => void;\n\tdeselectAll: () => void;\n}\n\nexport interface MultiSelectOptionDisableContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tselectedKeys: ReadonlySet<string>;\n\topen: boolean;\n}\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => React.ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent;\n}\n\nexport interface MultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\thighlightQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\titems: TOption[];\n\tgetOptionDisabled?: (item: TOption, context: MultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\nconst fallback: CollectionItem[] = [];\n\nfunction getItemKey(item: CollectionItem, codeKey: string) {\n\treturn item[codeKey];\n}\n\nfunction getItemSearchParts(item: CollectionItem, codeKey: string, textKey: string) {\n\treturn Array.from(new Set([item[textKey], item[codeKey], ...Object.values(item)]));\n}\n\nfunction areSelectionsEqual(left: CollectionItem[], right: CollectionItem[], codeKey: string) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map((item) => getItemKey(item, codeKey)));\n\n\treturn left.every((item) => rightKeys.has(getItemKey(item, codeKey)));\n}\n\ninterface MultiSelectOptionEntry {\n\titem: CollectionItem;\n\tindex: number;\n}\n\ninterface MultiSelectOptionGroupProps {\n\tentries: MultiSelectOptionEntry[];\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: Set<string>;\n\tcodeKey: string;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionDisabled?: (item: CollectionItem) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (item: CollectionItem) => void;\n\tselectOnlyOption: (item: CollectionItem) => void;\n\trenderItem: (item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent;\n}\n\nfunction MultiSelectOptionGroup({\n\tentries,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tcodeKey,\n\tquery,\n\thighlightQuery,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderItem\n}: MultiSelectOptionGroupProps) {\n\treturn entries.map(({ item, index }) => {\n\t\tconst active = index === activeIndex;\n\t\tconst itemKey = getItemKey(item, codeKey);\n\t\tconst selected = selectedKeys.has(itemKey);\n\t\tconst optionDisabled = getOptionDisabled?.(item) ?? false;\n\t\tconst content = renderItem(item, { selected, active, disabled: optionDisabled, query, highlightQuery });\n\n\t\treturn (\n\t\t\t<Option\n\t\t\t\tkey={`${itemKey}-${index}`}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"row\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\tselected={selected}\n\t\t\t\tactive={active}\n\t\t\t\tdisabled={optionDisabled}>\n\t\t\t\t<div\n\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\tclassName={styles.optionCheckBox}\n\t\t\t\t\tonMouseDown={(event) => event.stopPropagation()}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}>\n\t\t\t\t\t<CheckBox\n\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\taria-label={`${selected ? \"Убрать\" : \"Добавить\"} «${content.text}» ${selected ? \"из выбора\" : \"в выбор\"}`}\n\t\t\t\t\t\tonChange={() => toggleOption(item)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div role=\"gridcell\" className={styles.optionActionCell}>\n\t\t\t\t\t<OptionButton\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\taria-label={`Выбрать только «${content.text}»`}\n\t\t\t\t\t\ttext={content.text}\n\t\t\t\t\t\tcode={content.code}\n\t\t\t\t\t\tsearchText={highlightQuery}\n\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\tonClick={() => selectOnlyOption(item)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</Option>\n\t\t);\n\t});\n}\n\n/**\n * Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.\n * Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.\n */\nexport function MultiSelect({\n\tref,\n\tcodeKey,\n\ttextKey,\n\thideCode,\n\titems,\n\tvalue,\n\tonChange,\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tsize,\n\tquery,\n\tdefaultQuery,\n\thighlightQuery,\n\tonQuery,\n\tdefaultFilter = true,\n\tonOpen,\n\tonClose,\n\tgetOptionDisabled,\n\tdisabled,\n\terror,\n\tisLoading,\n\trenderToken,\n\trenderToolbar,\n\trenderItem\n}: MultiSelectProps & { ref?: Ref<HTMLInputElement> }) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = \"search-multi\";\n\tconst committedSelectedItems = value ?? fallback;\n\tconst committedSelectedKeys = useMemo(\n\t\t() => new Set(committedSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t[codeKey, committedSelectedItems]\n\t);\n\tconst availableItems = useMemo(\n\t\t() => items.filter((item) => !committedSelectedKeys.has(getItemKey(item, codeKey))),\n\t\t[codeKey, committedSelectedKeys, items]\n\t);\n\tconst resolvedTextKey = useMemo(\n\t\t() => resolveMultiSelectTextKey([...committedSelectedItems, ...items], codeKey, textKey),\n\t\t[codeKey, committedSelectedItems, items, textKey]\n\t);\n\tconst {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tresetQueryOnClose\n\t} = usePickerQuery({\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\ttriggerMode\n\t});\n\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\tif (open && !nextOpen && resetQueryOnClose) {\n\t\t\tsetQuery(\"\");\n\t\t}\n\n\t\tsetOpen(nextOpen);\n\t};\n\tconst filteredCommittedSelectedItems = usePickerDefaultFilter({\n\t\toptions: committedSelectedItems,\n\t\tquery: currentQuery,\n\t\tenabled: defaultFilter,\n\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t});\n\tconst filteredAvailableItems = usePickerDefaultFilter({\n\t\toptions: availableItems,\n\t\tquery: currentQuery,\n\t\tenabled: defaultFilter,\n\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t});\n\tconst visibleOptions = useMemo(\n\t\t() => [...filteredCommittedSelectedItems, ...filteredAvailableItems],\n\t\t[filteredAvailableItems, filteredCommittedSelectedItems]\n\t);\n\tconst selectedIndex = filteredCommittedSelectedItems.length > 0 ? 0 : -1;\n\tconst {\n\t\tdraftValue: draftSelectedItems,\n\t\tsetDraftValue: setDraftSelectedItems,\n\t\tprepareOpen\n\t} = usePickerSelectionLifecycle({\n\t\tvalue: committedSelectedItems,\n\t\topen,\n\t\tonCommit: onChange,\n\t\tonOpen,\n\t\tonClose,\n\t\tisEqual: (left, right) => areSelectionsEqual(left, right, codeKey)\n\t});\n\tconst selectedKeys = useMemo(() => new Set(draftSelectedItems.map((item) => getItemKey(item, codeKey))), [codeKey, draftSelectedItems]);\n\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext>(\n\t\t() => ({\n\t\t\tselectedItems: draftSelectedItems,\n\t\t\tcommittedSelectedItems,\n\t\t\tselectedKeys,\n\t\t\topen\n\t\t}),\n\t\t[committedSelectedItems, draftSelectedItems, open, selectedKeys]\n\t);\n\tconst isOptionDisabled = useCallback(\n\t\t(item: CollectionItem) => getOptionDisabled?.(item, optionDisableContext) ?? false,\n\t\t[getOptionDisabled, optionDisableContext]\n\t);\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: visibleOptions,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: handleOpenChange,\n\t\tonSelect: undefined,\n\t\tdisabled,\n\t\tgetOptionDisabled: isOptionDisabled,\n\t\tcloseOnSelect: false,\n\t\tallowOpenWithoutOptions: true,\n\t\ttriggerMode\n\t});\n\n\tconst currentHighlightQuery = highlightQuery ?? currentQuery;\n\tconst toggleDraftSelection = (item: CollectionItem) => {\n\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\tconst isSelected = currentItems.some((selectedItem) => getItemKey(selectedItem, codeKey) === itemKey);\n\n\t\t\tif (isSelected) {\n\t\t\t\treturn currentItems.filter((selectedItem) => getItemKey(selectedItem, codeKey) !== itemKey);\n\t\t\t}\n\n\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\treturn currentItems;\n\t\t\t}\n\n\t\t\treturn [...currentItems, item];\n\t\t});\n\t};\n\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\n\t\tif (typeof ref === \"function\") {\n\t\t\tref(node);\n\t\t\treturn;\n\t\t}\n\n\t\tif (ref) {\n\t\t\tref.current = node;\n\t\t}\n\t};\n\n\tconst clearSelection = () => {\n\t\tsetDraftSelectedItems([]);\n\n\t\tif (!open) {\n\t\t\tonChange([]);\n\t\t}\n\t};\n\n\tconst selectAll = () => {\n\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\tconst nextItems = [...currentItems];\n\t\t\tconst selectedKeys = new Set(currentItems.map((item) => getItemKey(item, codeKey)));\n\n\t\t\tfor (const item of visibleOptions) {\n\t\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\t\tif (!selectedKeys.has(itemKey) && !isOptionDisabled(item)) {\n\t\t\t\t\tselectedKeys.add(itemKey);\n\t\t\t\t\tnextItems.push(item);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nextItems;\n\t\t});\n\t};\n\n\tconst deselectAll = () => {\n\t\tsetDraftSelectedItems([]);\n\t};\n\n\tconst selectOnlyOption = (item: CollectionItem) => {\n\t\tif (isOptionDisabled(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetDraftSelectedItems([item]);\n\t\tclose();\n\t};\n\n\tconst currentSelectedItems = open ? draftSelectedItems : committedSelectedItems;\n\tconst hasSelectedItems = currentSelectedItems.length > 0;\n\tconst renderContext: MultiSelectRenderContext = {\n\t\tselectedItems: currentSelectedItems,\n\t\tcommittedSelectedItems,\n\t\tavailableItems: filteredAvailableItems,\n\t\tquery: currentQuery,\n\t\topen,\n\t\tclearSelection,\n\t\tselectAll,\n\t\tdeselectAll\n\t};\n\tconst tokenRenderer =\n\t\trenderToken === undefined ? createDefaultMultiSelectTokenRenderer({ codeKey, textKey: resolvedTextKey }) : renderToken;\n\tconst itemRenderer =\n\t\trenderItem ??\n\t\tcreateDefaultMultiSelectItemRenderer({\n\t\t\tcodeKey,\n\t\t\ttextKey: resolvedTextKey,\n\t\t\thideCode\n\t\t});\n\tconst tokenNode = typeof tokenRenderer === \"function\" ? tokenRenderer(renderContext) : null;\n\tconst toolbarNode = typeof renderToolbar === \"function\" ? renderToolbar(renderContext) : renderToolbar;\n\tconst selectedEntries = filteredCommittedSelectedItems.map((item, index) => ({ item, index }));\n\tconst itemEntries = filteredAvailableItems.map((item, index) => ({ item, index: index + selectedEntries.length }));\n\tconst isNoData = !isLoading && !error && visibleOptions.length === 0;\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: triggerMode,\n\t\topen,\n\t\tcurrentQuery,\n\t\thasDisplayValue: false,\n\t\tinputRef,\n\t\tsetQuery,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen,\n\t\tonBeforeOpen: () => {\n\t\t\tif (!open) {\n\t\t\t\tprepareOpen();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn (\n\t\t<PickerField label={label} description={description} disabled={disabled} size={size} className={styles.multiSelect}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-grid`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\toptionCount={items.length}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\tplaceholderFallback=\"Выберите значения\"\n\t\t\t\t\t\t\tvalue={currentQuery}\n\t\t\t\t\t\t\tselectedValue={tokenNode}\n\t\t\t\t\t\t\thasSelection={hasSelectedItems}\n\t\t\t\t\t\t\tshowSelectedValue={hasSelectedItems && currentQuery.length === 0}\n\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\tonClear={clearSelection}\n\t\t\t\t\t\t\tclearAriaLabel=\"Очистить все\"\n\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-haspopup=\"grid\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\trootClassName=\"flex alignItemsCenter\"\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (open && event.ctrlKey && event.key === \" \") {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tconst activeItem = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeItem);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: () => {\n\t\t\t\t\t\t\t\t\t\tconst activeItem = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption(activeItem);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tenableClosedArrowDownOpen: true,\n\t\t\t\t\t\t\t\t\tsuppressClosedArrowUp: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tariaMultiselectable\n\t\t\t\t\t\t\tpopupRole=\"grid\"\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tinitialFocus={-1}\n\t\t\t\t\t\t\treturnFocus={false}\n\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\ttoolbar={toolbarNode}\n\t\t\t\t\t\t\tselectionActions={\n\t\t\t\t\t\t\t\trenderToolbar === undefined ? { onSelectAll: selectAll, onDeselectAll: deselectAll } : undefined\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t<MultiSelectOptionsWrapper isNoData={isNoData} error={error}>\n\t\t\t\t\t\t\t\t<div role=\"presentation\" className=\"scrollable overscroll h100\">\n\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableItems.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<Separator aria-hidden=\"true\" className=\"marginBlockSm\" />\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\tentries={itemEntries}\n\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</MultiSelectOptionsWrapper>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n\nMultiSelect.displayName = \"MultiSelect\";\n","import { ODataCollectionModel, ODataSelectBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { mapSelectedItemsToValues, useODataSelectBase } from \"../../select/model/useODataSelectBase\";\n\ninterface UseODataMultiSelectOptions extends Omit<ODataSelectBaseProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (keys: string[]) => void;\n}\n\nexport function useODataMultiSelect({ odata, segment, model, value, dependencies, onChange }: UseODataMultiSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies\n\t});\n\n\tconst handleChange = (items: CollectionItem[]) => {\n\t\tonChange(mapSelectedItemsToValues(items, odataModel.selectionKey));\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\thandleChange\n\t};\n}\n","import { ODataSelectBaseProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { UiBaseProps } from \"../../types\";\nimport { useODataMultiSelect } from \"../model/useODataMultiSelect\";\n\nimport { MultiSelect } from \"./MultiSelect\";\n\ntype ODataMultiSelectProps = ODataSelectBaseProps & Omit<UiBaseProps<string[]>, \"placeholder\"> & {};\n\nexport function ODataMultiSelect({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tsize\n}: ODataMultiSelectProps) {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataMultiSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tsize={size}\n\t\t\tcodeKey={odataModel.codeKey}\n\t\t\ttextKey={odataModel.textKey}\n\t\t\thideCode={segment.hideCode ?? odata.hideCode}\n\t\t\titems={odataModel.filteredItems}\n\t\t\tvalue={odataModel.selectedItems}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tquery={odataModel.query}\n\t\t\tdefaultFilter={false}\n\t\t\thighlightQuery={odataModel.debouncedQuery}\n\t\t\tisLoading={odataModel.isLoading}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n}\n","import { useCallback } from \"react\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentControlProps } from \"../../odata-dependent\";\n\nexport type ODataDependentSegmentMultiSelectProps = ODataDependentSegmentControlProps;\n\nexport function ODataDependentSegmentMultiSelect(props: ODataDependentSegmentMultiSelectProps) {\n\tconst { item, disabled, label, description, size, width = 15 } = props;\n\tconst selection = useODataDependentSelection(props);\n\tconst { updateSegment } = selection;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tupdateSegment(item.id, keys);\n\t\t},\n\t\t[item.id, updateSegment]\n\t);\n\n\treturn (\n\t\t<div style={{ maxWidth: widthStyle, minWidth: widthStyle }}>\n\t\t\t<ODataMultiSelect\n\t\t\t\todata={item.odata}\n\t\t\t\tsegment={item.segment}\n\t\t\t\tmodel={item.model}\n\t\t\t\tdependencies={selection.values}\n\t\t\t\tvalue={selection.values[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t\tdisabled={disabled || selection.isSegmentDisabled(item.id)}\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { flattenODataDependentServices, type ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\nimport type { UseODataDependentSelectionOptions } from \"../../odata-dependent\";\n\nexport type ODataDependentMultiSelectProps = Omit<ODataDependentBaseProps, \"dependencies\" | \"value\"> &\n\tUseODataDependentSelectionOptions & {\n\t\t/**\n\t\t * Ширина одного элемента в `em` единицах.\n\t\t *\n\t\t * @default 15\n\t\t */\n\t\twidth?: number;\n\t};\n\nexport function ODataDependentMultiSelect(props: ODataDependentMultiSelectProps) {\n\tconst { width = 15, odata, segments, model, values, defaultValues, onChange, selectionMode, segmentOrder } = props;\n\tconst selection = useODataDependentSelection({ values, defaultValues, onChange });\n\tconst segmentSelectionProps =\n\t\tselectionMode === \"sequential\" ? { selectionMode: \"sequential\" as const, segmentOrder } : { selectionMode, segmentOrder };\n\tconst items = flattenODataDependentServices([\n\t\t{\n\t\t\todata,\n\t\t\tsegments,\n\t\t\tmodel\n\t\t}\n\t]);\n\n\treturn items.map((item) => (\n\t\t<ODataDependentSegmentMultiSelect\n\t\t\tkey={item.id}\n\t\t\titem={item}\n\t\t\tvalues={selection.values}\n\t\t\tonChange={selection.updateValues}\n\t\t\t{...segmentSelectionProps}\n\t\t\twidth={width}\n\t\t/>\n\t));\n}\n","import { MultiSelect } from \"./MultiSelect\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\nimport type { UiBaseProps } from \"../../types\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], string> extends never ? never : K;\n}[keyof TOption];\n\nexport interface SerializableMultiSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends UiBaseProps<Extract<TOption[TOptionKey], string>[]> {\n\toptions: readonly TOption[];\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], string> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], string>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" ? key : String(key);\n}\n\nexport function SerializableMultiSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode\n}: SerializableMultiSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\t// Как будто можно не мемоизировать, нет смысла\n\tconst items = options.map<CollectionItem>((option) => ({\n\t\tkey: String(getSerializableOptionKey(option, optionKey)),\n\t\ttext: getSerializableOptionLabel(option, optionLabel, optionKey)\n\t}));\n\tconst selectedKeys = new Set((value ?? []).map((item) => String(item)));\n\tconst selectedItems = items.filter((item) => selectedKeys.has(item.key));\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\titems={items}\n\t\t\tcodeKey=\"key\"\n\t\t\ttextKey=\"text\"\n\t\t\thideCode={renderCode ? undefined : true}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={(nextItems) => onChange(nextItems.map((item) => item.key) as Extract<TOption[TOptionKey], string>[])}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, { type Ref } from "react";
2
2
  import { type UiBaseProps } from "../../types";
3
3
  import type { CollectionItem } from "@ryuzaki13/react-foundation-lib/odata-service";
4
4
  export interface MultiSelectItemState {
@@ -60,6 +60,11 @@ export interface MultiSelectProps<TOption extends Record<string, string> = Colle
60
60
  * Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
61
61
  * Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.
62
62
  */
63
- export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps<CollectionItem> & React.RefAttributes<HTMLInputElement>>;
63
+ export declare function MultiSelect({ ref, codeKey, textKey, hideCode, items, value, onChange, label, description, placeholder, size, query, defaultQuery, highlightQuery, onQuery, defaultFilter, onOpen, onClose, getOptionDisabled, disabled, error, isLoading, renderToken, renderToolbar, renderItem }: MultiSelectProps & {
64
+ ref?: Ref<HTMLInputElement>;
65
+ }): React.JSX.Element;
66
+ export declare namespace MultiSelect {
67
+ var displayName: string;
68
+ }
64
69
  export {};
65
70
  //# sourceMappingURL=MultiSelect.d.ts.map
@@ -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;AAgB1G,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAgBpF,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;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;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,wBAAwB,CAAC;CAC7F;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;AAqGD;;;GAGG;AACH,eAAO,MAAM,WAAW,2GAiYvB,CAAC"}
1
+ {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/MultiSelect.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import React from "react";
2
1
  import { ODataSelectBaseProps } from "@ryuzaki13/react-foundation-api/odata";
3
2
  import { UiBaseProps } from "../../types";
4
3
  type ODataMultiSelectProps = ODataSelectBaseProps & Omit<UiBaseProps<string[]>, "placeholder"> & {};
5
- export declare const ODataMultiSelect: React.FC<ODataMultiSelectProps>;
4
+ export declare function ODataMultiSelect({ odata, segment, model: initialModel, label, description, disabled, value, dependencies, onChange, size }: ODataMultiSelectProps): import("react").JSX.Element;
6
5
  export {};
7
6
  //# sourceMappingURL=ODataMultiSelect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ODataMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/ODataMultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,uCAAuC,CAAC;AAEtG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,KAAK,qBAAqB,GAAG,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;AAEpG,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2C5D,CAAC"}
1
+ {"version":3,"file":"ODataMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/ODataMultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA2B,MAAM,uCAAuC,CAAC;AAEtG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,KAAK,qBAAqB,GAAG,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;AAEpG,wBAAgB,gBAAgB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,KAAK,EAAE,YAAY,EACnB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,EAAE,qBAAqB,+BAgCvB"}
@@ -1,5 +1,5 @@
1
- import { o as e } from "../chunks/flex-DtXK7OM4.js";
2
- import { n as t } from "../chunks/button-D7GAU2Wa.js";
1
+ import { o as e } from "../chunks/flex-D86M_h-0.js";
2
+ import { n as t } from "../chunks/button-DudCl375.js";
3
3
  import { cn as n } from "@ryuzaki13/react-foundation-lib/utils";
4
4
  import { AlertCircleIcon as r, CheckCircle2Icon as i, InfoIcon as a, TriangleAlertIcon as o, XIcon as s } from "lucide-react";
5
5
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -81,14 +81,12 @@ var T = {
81
81
  };
82
82
  function D() {
83
83
  let r = S(), { dismiss: i } = C();
84
- return /* @__PURE__ */ c("div", {
84
+ return /* @__PURE__ */ c("section", {
85
85
  className: T.container,
86
86
  "aria-label": "Область уведомлений",
87
- "aria-live": "polite",
88
- "aria-relevant": "additions text",
89
87
  children: r.map((r) => {
90
88
  let a = E[r.type], o = r.title ?? a.title, u = a.Icon;
91
- return /* @__PURE__ */ c("article", {
89
+ return /* @__PURE__ */ c("div", {
92
90
  role: r.type === "error" ? "alert" : "status",
93
91
  "aria-atomic": "true",
94
92
  className: n(T.card, T[r.type]),
@@ -138,7 +136,7 @@ function D() {
138
136
  appearance: "ghost",
139
137
  tone: r.type,
140
138
  onClick: () => i(r.id),
141
- "aria-label": "Закрыть уведомление",
139
+ "aria-label": `Закрыть уведомление «${o}»`,
142
140
  "data-ui": "notification-dismiss-button",
143
141
  "data-action": "dismiss-notification"
144
142
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/notifications/model/NotificationsProvider.tsx","../../src/notifications/ui/Notification.module.scss","../../src/notifications/ui/NotificationsHost.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { createContext, PropsWithChildren, useContext, useEffect, useMemo } from \"react\";\n\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\nimport {\n\tbindNotifications,\n\tcreateNotificationsStore,\n\tNotificationId,\n\tNotificationPushInput,\n\tNotificationsStoreApi,\n\tNotificationType\n} from \"@ryuzaki13/react-foundation-lib/notifications\";\nimport { useStore } from \"zustand\";\n\nconst NotificationsContext = createContext<NotificationsStoreApi | null>(null);\n\n/**\n * Провайдер уведомлений приложения. Хранит состояние списка уведомлений и предоставляет хуки доступа к нему.\n */\nexport function NotificationsProvider({ children }: PropsWithChildren) {\n\tconst store = useMemo(() => createNotificationsStore(), []);\n\n\tuseEffect(() => {\n\t\treturn bindNotifications(store);\n\t}, [store]);\n\n\treturn <NotificationsContext.Provider value={store}>{children}</NotificationsContext.Provider>;\n}\n\nfunction useNotificationApi() {\n\tconst ctx = useContext(NotificationsContext);\n\tif (!ctx) {\n\t\tthrow createMissingContextError({\n\t\t\thookName: \"useNotificationApi\",\n\t\t\tproviderName: \"NotificationsProvider\"\n\t\t});\n\t}\n\treturn ctx;\n}\n\nexport function useNotifications() {\n\tconst api = useNotificationApi();\n\treturn useStore(api, (s) => s.items);\n}\n\nexport function useNotify() {\n\tconst api = useNotificationApi();\n\tconst actions = useStore(api, (s) => s.actions);\n\n\tconst mk = (type: NotificationType) => (message: string, opts?: Omit<NotificationPushInput, \"type\" | \"message\">) =>\n\t\tactions.push({ type, message, ...opts });\n\n\treturn {\n\t\t...actions,\n\t\tsuccess: mk(\"success\"),\n\t\tinfo: mk(\"info\"),\n\t\twarning: mk(\"warning\"),\n\t\terror: mk(\"error\")\n\t};\n}\n\nexport function useNotificationById(id: NotificationId) {\n\tconst api = useNotificationApi();\n\treturn useStore(api, (s) => s.items.find((n) => n.id === id));\n}\n","@use \"@/styles/mixins\" as *;\n@use \"@/styles/tone-derived\" as toneDerived;\n\n.container {\n\tposition: fixed;\n\tz-index: var(--z-notify);\n\tbottom: 0;\n\tleft: 0;\n\tdisplay: grid;\n\tgap: var(--space-sm);\n\tpadding: var(--space-lg);\n\twidth: min(28em, calc(100dvw - var(--space-lg) * 2));\n\tpointer-events: none;\n}\n\n.card {\n\t--notify-accent: var(--border-1);\n\t--notify-accent-surface: var(--surface-1);\n\t--notify-accent-text: var(--accent-text);\n\n\tposition: relative;\n\toverflow: hidden;\n\tpointer-events: auto;\n\twidth: 100%;\n\tpadding: var(--space-md);\n\t// border: var(--border);\n\tborder-left: 0.3125em solid var(--notify-accent);\n\tborder-radius: var(--radius-md);\n\tbackground: linear-gradient(37deg, var(--notify-accent-surface), var(--surface-0));\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-md);\n}\n\n.info {\n\t--notify-accent: var(--info-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"info\");\n\t--notify-accent-text: var(--info-text);\n}\n\n.success {\n\t--notify-accent: var(--success-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"success\");\n\t--notify-accent-text: var(--success-text);\n}\n\n.warning {\n\t--notify-accent: var(--warning-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"warning\");\n\t--notify-accent-text: var(--warning-text);\n}\n\n.error {\n\t--notify-accent: var(--error-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"error\");\n\t--notify-accent-text: var(--error-text);\n}\n\n.header,\n.content,\n.copy {\n\tmin-width: 0;\n}\n\n.content {\n\tmin-width: 0;\n\tflex: 1;\n}\n\n.icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-shrink: 0;\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tborder-radius: 50%;\n\tbackground-color: var(--notify-accent-surface);\n\tcolor: var(--notify-accent-text);\n\tborder: var(--border-width) solid color-mix(in srgb, var(--notify-accent) 22%, transparent);\n\n\tsvg {\n\t\twidth: 1.125em;\n\t\theight: 1.125em;\n\t}\n}\n\n.kicker {\n\tmargin-bottom: var(--space-xs);\n\tcolor: var(--notify-accent-text);\n\tfont-size: var(--font-size-xs);\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n\tletter-spacing: 0.04em;\n\ttext-transform: uppercase;\n}\n\n.title {\n\tcolor: var(--notify-accent-text);\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n}\n\n.message {\n\tmargin-top: var(--space-xs);\n\tcolor: var(--content-0);\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n}\n\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-xs);\n\tmargin-top: var(--space-sm);\n}\n\n@include mobile {\n\t.container {\n\t\tpadding: var(--space-md);\n\t\t// Контейнер занимает viewport целиком, а padding задаёт карточкам симметричные отступы от его краёв.\n\t\twidth: 100dvw;\n\t}\n}\n","import { NotificationType } from \"@ryuzaki13/react-foundation-lib/notifications\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AlertCircleIcon, CheckCircle2Icon, InfoIcon, TriangleAlertIcon, XIcon } from \"lucide-react\";\n\nimport { Button } from \"../../button\";\nimport { FlexContainer } from \"../../flex\";\nimport { useNotifications, useNotify } from \"../model/NotificationsProvider\";\n\nimport styles from \"./Notification.module.scss\";\n\nconst notificationConfig: Record<\n\tNotificationType,\n\t{\n\t\ttitle: string;\n\t\tIcon: typeof InfoIcon;\n\t}\n> = {\n\tinfo: {\n\t\ttitle: \"Информация\",\n\t\tIcon: InfoIcon\n\t},\n\tsuccess: {\n\t\ttitle: \"Успешно\",\n\t\tIcon: CheckCircle2Icon\n\t},\n\twarning: {\n\t\ttitle: \"Предупреждение\",\n\t\tIcon: TriangleAlertIcon\n\t},\n\terror: {\n\t\ttitle: \"Ошибка\",\n\t\tIcon: AlertCircleIcon\n\t}\n};\n\n/**\n * Хост для визуального отображения очереди уведомлений.\n * Обычно монтируется один раз на уровне приложения рядом с провайдером уведомлений.\n */\nexport function NotificationsHost() {\n\tconst items = useNotifications();\n\tconst { dismiss } = useNotify();\n\n\treturn (\n\t\t<div className={styles.container} aria-label=\"Область уведомлений\" aria-live=\"polite\" aria-relevant=\"additions text\">\n\t\t\t{items.map((notification) => {\n\t\t\t\tconst config = notificationConfig[notification.type];\n\t\t\t\tconst title = notification.title ?? config.title;\n\t\t\t\tconst Icon = config.Icon;\n\n\t\t\t\treturn (\n\t\t\t\t\t<article\n\t\t\t\t\t\tkey={notification.id}\n\t\t\t\t\t\trole={notification.type === \"error\" ? \"alert\" : \"status\"}\n\t\t\t\t\t\taria-atomic=\"true\"\n\t\t\t\t\t\tclassName={cn(styles.card, styles[notification.type])}>\n\t\t\t\t\t\t<FlexContainer align=\"start\" justify=\"between\" gap=\"sm\" className={styles.header}>\n\t\t\t\t\t\t\t<FlexContainer align=\"start\" gap=\"sm\" className={styles.content}>\n\t\t\t\t\t\t\t\t<span className={styles.icon} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<Icon />\n\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t<div className={styles.copy}>\n\t\t\t\t\t\t\t\t\t<div className={styles.kicker}>{config.title}</div>\n\t\t\t\t\t\t\t\t\t{notification.title ? <div className={styles.title}>{title}</div> : null}\n\t\t\t\t\t\t\t\t\t<div className={styles.message}>{notification.message}</div>\n\n\t\t\t\t\t\t\t\t\t{notification.actions?.length ? (\n\t\t\t\t\t\t\t\t\t\t<div className={styles.actions}>\n\t\t\t\t\t\t\t\t\t\t\t{notification.actions.map((action) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={action.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttone={action.tone ?? notification.type}\n\t\t\t\t\t\t\t\t\t\t\t\t\tappearance=\"outline\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"notification-action-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata-action=\"notification-action\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => void action.onClick()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</FlexContainer>\n\n\t\t\t\t\t\t\t{notification.dismissible !== false ? (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={<XIcon />}\n\t\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\t\ttone={notification.type}\n\t\t\t\t\t\t\t\t\tonClick={() => dismiss(notification.id)}\n\t\t\t\t\t\t\t\t\taria-label=\"Закрыть уведомление\"\n\t\t\t\t\t\t\t\t\tdata-ui=\"notification-dismiss-button\"\n\t\t\t\t\t\t\t\t\tdata-action=\"dismiss-notification\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</FlexContainer>\n\t\t\t\t\t</article>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/notifications/model/NotificationsProvider.tsx","../../src/notifications/ui/Notification.module.scss","../../src/notifications/ui/NotificationsHost.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { createContext, PropsWithChildren, useContext, useEffect, useMemo } from \"react\";\n\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\nimport {\n\tbindNotifications,\n\tcreateNotificationsStore,\n\tNotificationId,\n\tNotificationPushInput,\n\tNotificationsStoreApi,\n\tNotificationType\n} from \"@ryuzaki13/react-foundation-lib/notifications\";\nimport { useStore } from \"zustand\";\n\nconst NotificationsContext = createContext<NotificationsStoreApi | null>(null);\n\n/**\n * Провайдер уведомлений приложения. Хранит состояние списка уведомлений и предоставляет хуки доступа к нему.\n */\nexport function NotificationsProvider({ children }: PropsWithChildren) {\n\tconst store = useMemo(() => createNotificationsStore(), []);\n\n\tuseEffect(() => {\n\t\treturn bindNotifications(store);\n\t}, [store]);\n\n\treturn <NotificationsContext.Provider value={store}>{children}</NotificationsContext.Provider>;\n}\n\nfunction useNotificationApi() {\n\tconst ctx = useContext(NotificationsContext);\n\tif (!ctx) {\n\t\tthrow createMissingContextError({\n\t\t\thookName: \"useNotificationApi\",\n\t\t\tproviderName: \"NotificationsProvider\"\n\t\t});\n\t}\n\treturn ctx;\n}\n\nexport function useNotifications() {\n\tconst api = useNotificationApi();\n\treturn useStore(api, (s) => s.items);\n}\n\nexport function useNotify() {\n\tconst api = useNotificationApi();\n\tconst actions = useStore(api, (s) => s.actions);\n\n\tconst mk = (type: NotificationType) => (message: string, opts?: Omit<NotificationPushInput, \"type\" | \"message\">) =>\n\t\tactions.push({ type, message, ...opts });\n\n\treturn {\n\t\t...actions,\n\t\tsuccess: mk(\"success\"),\n\t\tinfo: mk(\"info\"),\n\t\twarning: mk(\"warning\"),\n\t\terror: mk(\"error\")\n\t};\n}\n\nexport function useNotificationById(id: NotificationId) {\n\tconst api = useNotificationApi();\n\treturn useStore(api, (s) => s.items.find((n) => n.id === id));\n}\n","@use \"@/styles/mixins\" as *;\n@use \"@/styles/tone-derived\" as toneDerived;\n\n.container {\n\tposition: fixed;\n\tz-index: var(--z-notify);\n\tbottom: 0;\n\tleft: 0;\n\tdisplay: grid;\n\tgap: var(--space-sm);\n\tpadding: var(--space-lg);\n\twidth: min(28em, calc(100dvw - var(--space-lg) * 2));\n\tpointer-events: none;\n}\n\n.card {\n\t--notify-accent: var(--border-1);\n\t--notify-accent-surface: var(--surface-1);\n\t--notify-accent-text: var(--accent-text);\n\n\tposition: relative;\n\toverflow: hidden;\n\tpointer-events: auto;\n\twidth: 100%;\n\tpadding: var(--space-md);\n\t// border: var(--border);\n\tborder-left: 0.3125em solid var(--notify-accent);\n\tborder-radius: var(--radius-md);\n\tbackground: linear-gradient(37deg, var(--notify-accent-surface), var(--surface-0));\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-md);\n}\n\n.info {\n\t--notify-accent: var(--info-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"info\");\n\t--notify-accent-text: var(--info-text);\n}\n\n.success {\n\t--notify-accent: var(--success-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"success\");\n\t--notify-accent-text: var(--success-text);\n}\n\n.warning {\n\t--notify-accent: var(--warning-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"warning\");\n\t--notify-accent-text: var(--warning-text);\n}\n\n.error {\n\t--notify-accent: var(--error-border);\n\t@include toneDerived.tone-soft-declaration(\"--notify-accent-surface\", \"error\");\n\t--notify-accent-text: var(--error-text);\n}\n\n.header,\n.content,\n.copy {\n\tmin-width: 0;\n}\n\n.content {\n\tmin-width: 0;\n\tflex: 1;\n}\n\n.icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-shrink: 0;\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tborder-radius: 50%;\n\tbackground-color: var(--notify-accent-surface);\n\tcolor: var(--notify-accent-text);\n\tborder: var(--border-width) solid color-mix(in srgb, var(--notify-accent) 22%, transparent);\n\n\tsvg {\n\t\twidth: 1.125em;\n\t\theight: 1.125em;\n\t}\n}\n\n.kicker {\n\tmargin-bottom: var(--space-xs);\n\tcolor: var(--notify-accent-text);\n\tfont-size: var(--font-size-xs);\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n\tletter-spacing: 0.04em;\n\ttext-transform: uppercase;\n}\n\n.title {\n\tcolor: var(--notify-accent-text);\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n}\n\n.message {\n\tmargin-top: var(--space-xs);\n\tcolor: var(--content-0);\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n}\n\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-xs);\n\tmargin-top: var(--space-sm);\n}\n\n@include mobile {\n\t.container {\n\t\tpadding: var(--space-md);\n\t\t// Контейнер занимает viewport целиком, а padding задаёт карточкам симметричные отступы от его краёв.\n\t\twidth: 100dvw;\n\t}\n}\n","import { type NotificationType } from \"@ryuzaki13/react-foundation-lib/notifications\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AlertCircleIcon, CheckCircle2Icon, InfoIcon, TriangleAlertIcon, XIcon } from \"lucide-react\";\n\nimport { Button } from \"../../button\";\nimport { FlexContainer } from \"../../flex\";\nimport { useNotifications, useNotify } from \"../model/NotificationsProvider\";\n\nimport styles from \"./Notification.module.scss\";\n\nconst notificationConfig: Record<\n\tNotificationType,\n\t{\n\t\ttitle: string;\n\t\tIcon: typeof InfoIcon;\n\t}\n> = {\n\tinfo: {\n\t\ttitle: \"Информация\",\n\t\tIcon: InfoIcon\n\t},\n\tsuccess: {\n\t\ttitle: \"Успешно\",\n\t\tIcon: CheckCircle2Icon\n\t},\n\twarning: {\n\t\ttitle: \"Предупреждение\",\n\t\tIcon: TriangleAlertIcon\n\t},\n\terror: {\n\t\ttitle: \"Ошибка\",\n\t\tIcon: AlertCircleIcon\n\t}\n};\n\n/**\n * Хост для визуального отображения очереди уведомлений.\n * Обычно монтируется один раз на уровне приложения рядом с провайдером уведомлений.\n */\nexport function NotificationsHost() {\n\tconst items = useNotifications();\n\tconst { dismiss } = useNotify();\n\n\treturn (\n\t\t<section className={styles.container} aria-label=\"Область уведомлений\">\n\t\t\t{items.map((notification) => {\n\t\t\t\tconst config = notificationConfig[notification.type];\n\t\t\t\tconst title = notification.title ?? config.title;\n\t\t\t\tconst Icon = config.Icon;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={notification.id}\n\t\t\t\t\t\trole={notification.type === \"error\" ? \"alert\" : \"status\"}\n\t\t\t\t\t\taria-atomic=\"true\"\n\t\t\t\t\t\tclassName={cn(styles.card, styles[notification.type])}>\n\t\t\t\t\t\t<FlexContainer align=\"start\" justify=\"between\" gap=\"sm\" className={styles.header}>\n\t\t\t\t\t\t\t<FlexContainer align=\"start\" gap=\"sm\" className={styles.content}>\n\t\t\t\t\t\t\t\t<span className={styles.icon} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<Icon />\n\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t<div className={styles.copy}>\n\t\t\t\t\t\t\t\t\t<div className={styles.kicker}>{config.title}</div>\n\t\t\t\t\t\t\t\t\t{notification.title ? <div className={styles.title}>{title}</div> : null}\n\t\t\t\t\t\t\t\t\t<div className={styles.message}>{notification.message}</div>\n\n\t\t\t\t\t\t\t\t\t{notification.actions?.length ? (\n\t\t\t\t\t\t\t\t\t\t<div className={styles.actions}>\n\t\t\t\t\t\t\t\t\t\t\t{notification.actions.map((action) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={action.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttone={action.tone ?? notification.type}\n\t\t\t\t\t\t\t\t\t\t\t\t\tappearance=\"outline\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"notification-action-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata-action=\"notification-action\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => void action.onClick()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</FlexContainer>\n\n\t\t\t\t\t\t\t{notification.dismissible !== false ? (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={<XIcon />}\n\t\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\t\ttone={notification.type}\n\t\t\t\t\t\t\t\t\tonClick={() => dismiss(notification.id)}\n\t\t\t\t\t\t\t\t\taria-label={`Закрыть уведомление «${title}»`}\n\t\t\t\t\t\t\t\t\tdata-ui=\"notification-dismiss-button\"\n\t\t\t\t\t\t\t\t\tdata-action=\"dismiss-notification\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</FlexContainer>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</section>\n\t);\n}\n"],"mappings":"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"}
@@ -6,9 +6,9 @@ export interface OptionProps extends HTMLAttributes<HTMLDivElement> {
6
6
  disabled?: boolean;
7
7
  }
8
8
  /**
9
- * Общая внешняя оболочка опции. Она владеет фоном, отступами и состояниями строки,
10
- * а вложенные OptionButton, OptionLink, checkbox и expander остаются независимыми
11
- * интерактивными элементами.
9
+ * Общая внешняя оболочка опции. Она владеет фоном и состояниями строки. Если
10
+ * Option участвует в composite-виджете, интерактивное действие принадлежит самой
11
+ * строке, а внутри остаётся только неинтерактивное содержимое.
12
12
  */
13
13
  export declare function Option({ ref, active, selected, disabled, className, ...props }: OptionProps): import("react").JSX.Element;
14
14
  //# sourceMappingURL=Option.d.ts.map
@@ -0,0 +1,7 @@
1
+ import { type HTMLAttributes } from "react";
2
+ /**
3
+ * Неинтерактивная оболочка содержимого option/treeitem. Она сохраняет геометрию
4
+ * OptionButton, когда клавиатурная модель принадлежит родительскому composite.
5
+ */
6
+ export declare function OptionContentContainer({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
7
+ //# sourceMappingURL=OptionContentContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionContentContainer.d.ts","sourceRoot":"","sources":["../../src/option/OptionContentContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAM5C;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAE7F"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/option/CustomOptionButton.tsx","../../src/option/Option.tsx","../../src/option/OptionCode.tsx","../../src/option/OptionHotkey.tsx","../../src/option/OptionIcon.tsx","../../src/option/OptionText.tsx","../../src/option/OptionContent.tsx","../../src/option/OptionButton.tsx","../../src/option/OptionLink.tsx"],"sourcesContent":["import { type ButtonHTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport type CustomOptionButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> & { ref?: Ref<HTMLButtonElement> };\n\nexport function CustomOptionButton({ ref, ...props }: CustomOptionButtonProps) {\n\treturn <button {...props} ref={ref} type=\"button\" className={cn(uiStyles.uiOptionButton, props.className)} />;\n}\n","import { type HTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionProps extends HTMLAttributes<HTMLDivElement> {\n\tref?: Ref<HTMLDivElement>;\n\tactive?: boolean;\n\tselected?: boolean;\n\tdisabled?: boolean;\n}\n\n/**\n * Общая внешняя оболочка опции. Она владеет фоном, отступами и состояниями строки,\n * а вложенные OptionButton, OptionLink, checkbox и expander остаются независимыми\n * интерактивными элементами.\n */\nexport function Option({ ref, active, selected, disabled, className, ...props }: OptionProps) {\n\treturn (\n\t\t<div\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t\taria-disabled={props[\"aria-disabled\"] ?? (disabled || undefined)}\n\t\t\tclassName={cn(\n\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\tselected && uiStyles.selected,\n\t\t\t\tdisabled && uiStyles.disabled,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t/>\n\t);\n}\n","import { ReactNode, type HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionCodeProps extends HTMLAttributes<HTMLSpanElement> {\n\tchildren: ReactNode;\n}\n\nexport function OptionCode(props: OptionCodeProps) {\n\treturn <span {...props} className={cn(uiStyles.uiOptionCode, props.className)} />;\n}\n","import { type HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionHotkeyProps extends HTMLAttributes<HTMLElement> {\n\tchildren: string;\n}\n\nexport function OptionHotkey(props: OptionHotkeyProps) {\n\treturn <kbd {...props} className={cn(uiStyles.keyboard, props.className)} />;\n}\n","import { ReactNode, type HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionIconProps extends HTMLAttributes<HTMLSpanElement> {\n\tchildren: ReactNode;\n}\n\nexport function OptionIcon(props: OptionIconProps) {\n\treturn <span {...props} className={cn(uiStyles.uiPopupOptionIcon, props.className)} />;\n}\n","import { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionTextProps extends HTMLAttributes<HTMLSpanElement> {\n\tchildren: ReactNode;\n}\n\nexport function OptionText(props: OptionTextProps) {\n\treturn <span {...props} className={cn(uiStyles.uiOptionText, props.className)}></span>;\n}\n","import { type ReactNode } from \"react\";\n\nimport { HighlightText } from \"../text\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { OptionCode } from \"./OptionCode\";\nimport { OptionHotkey } from \"./OptionHotkey\";\nimport { OptionIcon } from \"./OptionIcon\";\nimport { OptionText } from \"./OptionText\";\n\ntype OptionBaseContentProps = {\n\ticon?: ReactNode;\n\ttext: string;\n\tsearchText?: string;\n\temphasizeContent?: boolean;\n};\n\ntype OptionTrailingContent = { code?: string; hotkey?: never } | { code?: never; hotkey?: string };\n\nexport type OptionContentProps = OptionBaseContentProps & OptionTrailingContent;\n\n/** Общая фиксированная композиция содержимого button/link опции. */\nexport function OptionContent({ icon, text, searchText, emphasizeContent, code, hotkey }: OptionContentProps) {\n\treturn (\n\t\t<>\n\t\t\t{icon !== undefined && icon !== null ? <OptionIcon>{icon}</OptionIcon> : null}\n\t\t\t<OptionText className={emphasizeContent ? uiStyles.uiOptionContentEmphasize : undefined}>\n\t\t\t\t<HighlightText text={text} highlight={searchText} />\n\t\t\t</OptionText>\n\t\t\t{code !== undefined && code !== null ? (\n\t\t\t\t<OptionCode className={emphasizeContent ? uiStyles.uiOptionContentEmphasize : undefined}>\n\t\t\t\t\t<HighlightText text={code} highlight={searchText} />\n\t\t\t\t</OptionCode>\n\t\t\t) : hotkey ? (\n\t\t\t\t<OptionHotkey>{hotkey}</OptionHotkey>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n","import { type ButtonHTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport { OptionContent, type OptionContentProps } from \"./OptionContent\";\n\nexport type OptionButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\" | \"children\"> &\n\tOptionContentProps & { ref?: Ref<HTMLButtonElement> };\n\n/** Основное button-действие внутри внешней оболочки Option. */\nexport function OptionButton({ ref, icon, text, searchText, code, hotkey, emphasizeContent, ...props }: OptionButtonProps) {\n\treturn (\n\t\t<button {...props} ref={ref} type=\"button\" className={cn(uiStyles.uiOptionButton, props.className)}>\n\t\t\t<OptionContent\n\t\t\t\ticon={icon}\n\t\t\t\ttext={text}\n\t\t\t\tsearchText={searchText}\n\t\t\t\temphasizeContent={emphasizeContent}\n\t\t\t\t{...(code !== undefined ? { code } : { hotkey })}\n\t\t\t/>\n\t\t</button>\n\t);\n}\n","import { type AnchorHTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport { OptionContent, type OptionContentProps } from \"./OptionContent\";\n\nexport type OptionLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"children\"> &\n\tOptionContentProps & { ref?: Ref<HTMLAnchorElement> };\n\n/** Основное link-действие внутри внешней оболочки Option. */\nexport function OptionLink({ ref, icon, text, searchText, code, hotkey, ...props }: OptionLinkProps) {\n\treturn (\n\t\t<a {...props} ref={ref} className={cn(uiStyles.uiOptionLink, props.className)}>\n\t\t\t<OptionContent icon={icon} text={text} searchText={searchText} {...(code !== undefined ? { code } : { hotkey })} />\n\t\t</a>\n\t);\n}\n"],"mappings":";;;;;AAQA,SAAgB,EAAmB,EAAE,QAAK,GAAG,KAAkC;CAC9E,OAAO,kBAAC,UAAD;EAAQ,GAAI;EAAY;EAAK,MAAK;EAAS,WAAW,EAAG,EAAS,gBAAgB,EAAM,SAAS;CAAI,CAAA;AAC7G;;;ACQA,SAAgB,EAAO,EAAE,QAAK,WAAQ,aAAU,aAAU,cAAW,GAAG,KAAsB;CAC7F,OACC,kBAAC,OAAD;EACC,GAAI;EACC;EACL,iBAAe,EAAM,qBAAqB,KAAY,KAAA;EACtD,WAAW,EACV,EAAS,eACT,KAAU,EAAS,qBACnB,KAAY,EAAS,UACrB,KAAY,EAAS,UACrB,CACD;CACA,CAAA;AAEH;;;ACvBA,SAAgB,EAAW,GAAwB;CAClD,OAAO,kBAAC,QAAD;EAAM,GAAI;EAAO,WAAW,EAAG,EAAS,cAAc,EAAM,SAAS;CAAI,CAAA;AACjF;;;ACFA,SAAgB,EAAa,GAA0B;CACtD,OAAO,kBAAC,OAAD;EAAK,GAAI;EAAO,WAAW,EAAG,EAAS,UAAU,EAAM,SAAS;CAAI,CAAA;AAC5E;;;ACFA,SAAgB,EAAW,GAAwB;CAClD,OAAO,kBAAC,QAAD;EAAM,GAAI;EAAO,WAAW,EAAG,EAAS,mBAAmB,EAAM,SAAS;CAAI,CAAA;AACtF;;;ACFA,SAAgB,EAAW,GAAwB;CAClD,OAAO,kBAAC,QAAD;EAAM,GAAI;EAAO,WAAW,EAAG,EAAS,cAAc,EAAM,SAAS;CAAS,CAAA;AACtF;;;ACUA,SAAgB,EAAc,EAAE,SAAM,SAAM,eAAY,qBAAkB,SAAM,aAA8B;CAC7G,OACC,kBAAA,GAAA,EAAA,UAAA;EACE,KAA+B,OAAyC,OAAlC,kBAAC,GAAD,EAAA,UAAa,EAAiB,CAAA;EACrE,kBAAC,GAAD;GAAY,WAAW,IAAmB,EAAS,2BAA2B,KAAA;GAC7E,UAAA,kBAAC,GAAD;IAAqB;IAAM,WAAW;GAAa,CAAA;EACxC,CAAA;EACX,KAA+B,OAI5B,IACH,kBAAC,GAAD,EAAA,UAAe,EAAqB,CAAA,IACjC,OALH,kBAAC,GAAD;GAAY,WAAW,IAAmB,EAAS,2BAA2B,KAAA;GAC7E,UAAA,kBAAC,GAAD;IAAe,MAAM;IAAM,WAAW;GAAa,CAAA;EACxC,CAAA;CAIZ,EAAA,CAAA;AAEJ;;;AC1BA,SAAgB,EAAa,EAAE,QAAK,SAAM,SAAM,eAAY,SAAM,WAAQ,qBAAkB,GAAG,KAA4B;CAC1H,OACC,kBAAC,UAAD;EAAQ,GAAI;EAAY;EAAK,MAAK;EAAS,WAAW,EAAG,EAAS,gBAAgB,EAAM,SAAS;EAChG,UAAA,kBAAC,GAAD;GACO;GACA;GACM;GACM;GAClB,GAAK,MAAS,KAAA,IAAuB,EAAE,UAAO,IAApB,EAAE,QAAK;EACjC,CAAA;CACM,CAAA;AAEV;;;ACZA,SAAgB,EAAW,EAAE,QAAK,SAAM,SAAM,eAAY,SAAM,WAAQ,GAAG,KAA0B;CACpG,OACC,kBAAC,KAAD;EAAG,GAAI;EAAY;EAAK,WAAW,EAAG,EAAS,cAAc,EAAM,SAAS;EAC3E,UAAA,kBAAC,GAAD;GAAqB;GAAY;GAAkB;GAAY,GAAK,MAAS,KAAA,IAAuB,EAAE,UAAO,IAApB,EAAE,QAAK;EAAkB,CAAA;CAChH,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/option/CustomOptionButton.tsx","../../src/option/Option.tsx","../../src/option/OptionCode.tsx","../../src/option/OptionHotkey.tsx","../../src/option/OptionIcon.tsx","../../src/option/OptionText.tsx","../../src/option/OptionContent.tsx","../../src/option/OptionButton.tsx","../../src/option/OptionLink.tsx"],"sourcesContent":["import { type ButtonHTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport type CustomOptionButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> & { ref?: Ref<HTMLButtonElement> };\n\nexport function CustomOptionButton({ ref, ...props }: CustomOptionButtonProps) {\n\treturn <button {...props} ref={ref} type=\"button\" className={cn(uiStyles.uiOptionButton, props.className)} />;\n}\n","import { type HTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionProps extends HTMLAttributes<HTMLDivElement> {\n\tref?: Ref<HTMLDivElement>;\n\tactive?: boolean;\n\tselected?: boolean;\n\tdisabled?: boolean;\n}\n\n/**\n * Общая внешняя оболочка опции. Она владеет фоном и состояниями строки. Если\n * Option участвует в composite-виджете, интерактивное действие принадлежит самой\n * строке, а внутри остаётся только неинтерактивное содержимое.\n */\nexport function Option({ ref, active, selected, disabled, className, ...props }: OptionProps) {\n\treturn (\n\t\t<div\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t\taria-disabled={props[\"aria-disabled\"] ?? (disabled || undefined)}\n\t\t\tclassName={cn(\n\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\tselected && uiStyles.selected,\n\t\t\t\tdisabled && uiStyles.disabled,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t/>\n\t);\n}\n","import { ReactNode, type HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionCodeProps extends HTMLAttributes<HTMLSpanElement> {\n\tchildren: ReactNode;\n}\n\nexport function OptionCode(props: OptionCodeProps) {\n\treturn <span {...props} className={cn(uiStyles.uiOptionCode, props.className)} />;\n}\n","import { type HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionHotkeyProps extends HTMLAttributes<HTMLElement> {\n\tchildren: string;\n}\n\nexport function OptionHotkey(props: OptionHotkeyProps) {\n\treturn <kbd {...props} className={cn(uiStyles.keyboard, props.className)} />;\n}\n","import { ReactNode, type HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionIconProps extends HTMLAttributes<HTMLSpanElement> {\n\tchildren: ReactNode;\n}\n\nexport function OptionIcon(props: OptionIconProps) {\n\treturn <span {...props} className={cn(uiStyles.uiPopupOptionIcon, props.className)} />;\n}\n","import { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nexport interface OptionTextProps extends HTMLAttributes<HTMLSpanElement> {\n\tchildren: ReactNode;\n}\n\nexport function OptionText(props: OptionTextProps) {\n\treturn <span {...props} className={cn(uiStyles.uiOptionText, props.className)}></span>;\n}\n","import { type ReactNode } from \"react\";\n\nimport { HighlightText } from \"../text\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { OptionCode } from \"./OptionCode\";\nimport { OptionHotkey } from \"./OptionHotkey\";\nimport { OptionIcon } from \"./OptionIcon\";\nimport { OptionText } from \"./OptionText\";\n\ntype OptionBaseContentProps = {\n\ticon?: ReactNode;\n\ttext: string;\n\tsearchText?: string;\n\temphasizeContent?: boolean;\n};\n\ntype OptionTrailingContent = { code?: string; hotkey?: never } | { code?: never; hotkey?: string };\n\nexport type OptionContentProps = OptionBaseContentProps & OptionTrailingContent;\n\n/** Общая фиксированная композиция содержимого button/link опции. */\nexport function OptionContent({ icon, text, searchText, emphasizeContent, code, hotkey }: OptionContentProps) {\n\treturn (\n\t\t<>\n\t\t\t{icon !== undefined && icon !== null ? <OptionIcon>{icon}</OptionIcon> : null}\n\t\t\t<OptionText className={emphasizeContent ? uiStyles.uiOptionContentEmphasize : undefined}>\n\t\t\t\t<HighlightText text={text} highlight={searchText} />\n\t\t\t</OptionText>\n\t\t\t{code !== undefined && code !== null ? (\n\t\t\t\t<OptionCode className={emphasizeContent ? uiStyles.uiOptionContentEmphasize : undefined}>\n\t\t\t\t\t<HighlightText text={code} highlight={searchText} />\n\t\t\t\t</OptionCode>\n\t\t\t) : hotkey ? (\n\t\t\t\t<OptionHotkey>{hotkey}</OptionHotkey>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n","import { type ButtonHTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport { OptionContent, type OptionContentProps } from \"./OptionContent\";\n\nexport type OptionButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\" | \"children\"> &\n\tOptionContentProps & { ref?: Ref<HTMLButtonElement> };\n\n/** Основное button-действие внутри внешней оболочки Option. */\nexport function OptionButton({ ref, icon, text, searchText, code, hotkey, emphasizeContent, ...props }: OptionButtonProps) {\n\treturn (\n\t\t<button {...props} ref={ref} type=\"button\" className={cn(uiStyles.uiOptionButton, props.className)}>\n\t\t\t<OptionContent\n\t\t\t\ticon={icon}\n\t\t\t\ttext={text}\n\t\t\t\tsearchText={searchText}\n\t\t\t\temphasizeContent={emphasizeContent}\n\t\t\t\t{...(code !== undefined ? { code } : { hotkey })}\n\t\t\t/>\n\t\t</button>\n\t);\n}\n","import { type AnchorHTMLAttributes, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport { OptionContent, type OptionContentProps } from \"./OptionContent\";\n\nexport type OptionLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"children\"> &\n\tOptionContentProps & { ref?: Ref<HTMLAnchorElement> };\n\n/** Основное link-действие внутри внешней оболочки Option. */\nexport function OptionLink({ ref, icon, text, searchText, code, hotkey, ...props }: OptionLinkProps) {\n\treturn (\n\t\t<a {...props} ref={ref} className={cn(uiStyles.uiOptionLink, props.className)}>\n\t\t\t<OptionContent icon={icon} text={text} searchText={searchText} {...(code !== undefined ? { code } : { hotkey })} />\n\t\t</a>\n\t);\n}\n"],"mappings":";;;;;AAQA,SAAgB,EAAmB,EAAE,QAAK,GAAG,KAAkC;CAC9E,OAAO,kBAAC,UAAD;EAAQ,GAAI;EAAY;EAAK,MAAK;EAAS,WAAW,EAAG,EAAS,gBAAgB,EAAM,SAAS;CAAI,CAAA;AAC7G;;;ACQA,SAAgB,EAAO,EAAE,QAAK,WAAQ,aAAU,aAAU,cAAW,GAAG,KAAsB;CAC7F,OACC,kBAAC,OAAD;EACC,GAAI;EACC;EACL,iBAAe,EAAM,qBAAqB,KAAY,KAAA;EACtD,WAAW,EACV,EAAS,eACT,KAAU,EAAS,qBACnB,KAAY,EAAS,UACrB,KAAY,EAAS,UACrB,CACD;CACA,CAAA;AAEH;;;ACvBA,SAAgB,EAAW,GAAwB;CAClD,OAAO,kBAAC,QAAD;EAAM,GAAI;EAAO,WAAW,EAAG,EAAS,cAAc,EAAM,SAAS;CAAI,CAAA;AACjF;;;ACFA,SAAgB,EAAa,GAA0B;CACtD,OAAO,kBAAC,OAAD;EAAK,GAAI;EAAO,WAAW,EAAG,EAAS,UAAU,EAAM,SAAS;CAAI,CAAA;AAC5E;;;ACFA,SAAgB,EAAW,GAAwB;CAClD,OAAO,kBAAC,QAAD;EAAM,GAAI;EAAO,WAAW,EAAG,EAAS,mBAAmB,EAAM,SAAS;CAAI,CAAA;AACtF;;;ACFA,SAAgB,EAAW,GAAwB;CAClD,OAAO,kBAAC,QAAD;EAAM,GAAI;EAAO,WAAW,EAAG,EAAS,cAAc,EAAM,SAAS;CAAS,CAAA;AACtF;;;ACUA,SAAgB,EAAc,EAAE,SAAM,SAAM,eAAY,qBAAkB,SAAM,aAA8B;CAC7G,OACC,kBAAA,GAAA,EAAA,UAAA;EACE,KAA+B,OAAyC,OAAlC,kBAAC,GAAD,EAAA,UAAa,EAAiB,CAAA;EACrE,kBAAC,GAAD;GAAY,WAAW,IAAmB,EAAS,2BAA2B,KAAA;GAC7E,UAAA,kBAAC,GAAD;IAAqB;IAAM,WAAW;GAAa,CAAA;EACxC,CAAA;EACX,KAA+B,OAI5B,IACH,kBAAC,GAAD,EAAA,UAAe,EAAqB,CAAA,IACjC,OALH,kBAAC,GAAD;GAAY,WAAW,IAAmB,EAAS,2BAA2B,KAAA;GAC7E,UAAA,kBAAC,GAAD;IAAe,MAAM;IAAM,WAAW;GAAa,CAAA;EACxC,CAAA;CAIZ,EAAA,CAAA;AAEJ;;;AC1BA,SAAgB,EAAa,EAAE,QAAK,SAAM,SAAM,eAAY,SAAM,WAAQ,qBAAkB,GAAG,KAA4B;CAC1H,OACC,kBAAC,UAAD;EAAQ,GAAI;EAAY;EAAK,MAAK;EAAS,WAAW,EAAG,EAAS,gBAAgB,EAAM,SAAS;EAChG,UAAA,kBAAC,GAAD;GACO;GACA;GACM;GACM;GAClB,GAAK,MAAS,KAAA,IAAuB,EAAE,UAAO,IAApB,EAAE,QAAK;EACjC,CAAA;CACM,CAAA;AAEV;;;ACZA,SAAgB,EAAW,EAAE,QAAK,SAAM,SAAM,eAAY,SAAM,WAAQ,GAAG,KAA0B;CACpG,OACC,kBAAC,KAAD;EAAG,GAAI;EAAY;EAAK,WAAW,EAAG,EAAS,cAAc,EAAM,SAAS;EAC3E,UAAA,kBAAC,GAAD;GAAqB;GAAY;GAAkB;GAAY,GAAK,MAAS,KAAA,IAAuB,EAAE,UAAO,IAApB,EAAE,QAAK;EAAkB,CAAA;CAChH,CAAA;AAEL"}
@@ -6,6 +6,8 @@ export type PickerSelectionActions = {
6
6
  };
7
7
  export interface PickerOptionsProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
8
8
  rootRef?: Ref<HTMLDivElement>;
9
+ bodyRef?: Ref<HTMLDivElement>;
10
+ bodyProps?: Omit<HTMLAttributes<HTMLDivElement>, "children" | "className">;
9
11
  children: ReactNode;
10
12
  toolbar?: ReactNode | false;
11
13
  selectionActions?: PickerSelectionActions;
@@ -18,5 +20,5 @@ export interface PickerOptionsProps extends Omit<HTMLAttributes<HTMLDivElement>,
18
20
  * selectionActions, но не передан toolbar, компонент показывает стандартные
19
21
  * действия выбора и снятия выбора.
20
22
  */
21
- export declare function PickerOptions({ rootRef, children, toolbar, selectionActions, layoutClassName, bodyClassName, scrollable, className, ...props }: PickerOptionsProps): import("react").JSX.Element;
23
+ export declare function PickerOptions({ rootRef, bodyRef, bodyProps, children, toolbar, selectionActions, layoutClassName, bodyClassName, scrollable, className, ...props }: PickerOptionsProps): import("react").JSX.Element;
22
24
  //# sourceMappingURL=PickerOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PickerOptions.d.ts","sourceRoot":"","sources":["../../src/picker/PickerOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAStE,MAAM,MAAM,sBAAsB,GAAG;IACpC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC3F,OAAO,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,UAAiB,EACjB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,kBAAkB,+BAmBpB"}
1
+ {"version":3,"file":"PickerOptions.d.ts","sourceRoot":"","sources":["../../src/picker/PickerOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAStE,MAAM,MAAM,sBAAsB,GAAG;IACpC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC3F,OAAO,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,UAAiB,EACjB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,kBAAkB,+BAwBpB"}
@@ -11,7 +11,7 @@ interface PickerPopupProps {
11
11
  descriptionId?: string;
12
12
  activeOptionId?: string;
13
13
  ariaMultiselectable?: boolean;
14
- popupRole?: "listbox" | "dialog";
14
+ popupRole?: "listbox" | "tree" | "treegrid" | "grid" | "dialog";
15
15
  setFloating: (node: HTMLElement | null) => void;
16
16
  getFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;
17
17
  onKeyDown: (event: KeyboardEvent<HTMLElement>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"PickerPopup.d.ts","sourceRoot":"","sources":["../../src/picker/PickerPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAwC,MAAM,oBAAoB,CAAC;AAI3F,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,UAAU,gBAAgB;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,cAAc,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,EAAE,SAAS,CAAC;CACpB;AAMD,wBAAgB,WAAW,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,cAAc,EACd,MAAM,EACN,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,SAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,YAAiB,EACjB,WAAmB,EACnB,QAAY,EACZ,SAAS,EACT,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,EAAE,gBAAgB,+BAwClB"}
1
+ {"version":3,"file":"PickerPopup.d.ts","sourceRoot":"","sources":["../../src/picker/PickerPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAmB,KAAK,aAAa,EAAmB,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAEzH,OAAO,EAAE,eAAe,EAAwC,MAAM,oBAAoB,CAAC;AAI3F,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,UAAU,gBAAgB;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,cAAc,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChE,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,EAAE,SAAS,CAAC;CACpB;AAMD,wBAAgB,WAAW,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,cAAc,EACd,MAAM,EACN,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,SAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,YAAiB,EACjB,WAAmB,EACnB,QAAY,EACZ,SAAS,EACT,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,EAAE,gBAAgB,+BAuElB"}
@@ -1,4 +1,4 @@
1
- import { MouseEvent, ReactNode } from "react";
1
+ import { type AriaAttributes, type MouseEvent, type ReactNode } from "react";
2
2
  interface PickerTriggerActionsProps {
3
3
  open: boolean;
4
4
  disabled?: boolean;
@@ -7,7 +7,12 @@ interface PickerTriggerActionsProps {
7
7
  onToggleClick: () => void;
8
8
  openAriaLabel?: string;
9
9
  closeAriaLabel?: string;
10
+ /**
11
+ * Передаёт ARIA-связи непосредственно кнопке раскрытия, не меняя геометрию
12
+ * контейнера с adornment-действиями.
13
+ */
14
+ toggleAria?: Pick<AriaAttributes, "aria-controls" | "aria-expanded" | "aria-haspopup">;
10
15
  }
11
- export declare function PickerTriggerActions({ open, disabled, children, onToggleMouseDown, onToggleClick, openAriaLabel, closeAriaLabel }: PickerTriggerActionsProps): import("react").JSX.Element;
16
+ export declare function PickerTriggerActions({ open, disabled, children, onToggleMouseDown, onToggleClick, openAriaLabel, closeAriaLabel, toggleAria }: PickerTriggerActionsProps): import("react").JSX.Element;
12
17
  export {};
13
18
  //# sourceMappingURL=PickerTriggerActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PickerTriggerActions.d.ts","sourceRoot":"","sources":["../../src/picker/PickerTriggerActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAO9C,UAAU,yBAAyB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAgC,EAChC,cAAiC,EACjC,EAAE,yBAAyB,+BAkB3B"}
1
+ {"version":3,"file":"PickerTriggerActions.d.ts","sourceRoot":"","sources":["../../src/picker/PickerTriggerActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAO7E,UAAU,yBAAyB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC,CAAC;CACvF;AAED,wBAAgB,oBAAoB,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAgC,EAChC,cAAiC,EACjC,UAAU,EACV,EAAE,yBAAyB,+BAmB3B"}
@@ -1,4 +1,4 @@
1
- import { ComponentPropsWithoutRef, ReactNode } from "react";
1
+ import { type ComponentPropsWithoutRef, type ReactNode, type Ref } from "react";
2
2
  export interface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<"input">, "size"> {
3
3
  rootRef?: (node: HTMLDivElement | null) => void;
4
4
  endAdornment?: ReactNode;
@@ -7,5 +7,10 @@ export interface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<"
7
7
  inputClassName?: string;
8
8
  isLoading?: boolean;
9
9
  }
10
- export declare const PickerTriggerInput: import("react").ForwardRefExoticComponent<PickerTriggerInputProps & import("react").RefAttributes<HTMLInputElement>>;
10
+ export declare function PickerTriggerInput({ ref, rootRef, endAdornment, overlay, rootClassName, inputClassName, isLoading, ...props }: PickerTriggerInputProps & {
11
+ ref?: Ref<HTMLInputElement>;
12
+ }): import("react").JSX.Element;
13
+ export declare namespace PickerTriggerInput {
14
+ var displayName: string;
15
+ }
11
16
  //# sourceMappingURL=PickerTriggerInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PickerTriggerInput.d.ts","sourceRoot":"","sources":["../../src/picker/PickerTriggerInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AASxE,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC/F,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,sHAwB9B,CAAC"}
1
+ {"version":3,"file":"PickerTriggerInput.d.ts","sourceRoot":"","sources":["../../src/picker/PickerTriggerInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAShF,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC/F,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EAClC,GAAG,EACH,OAAO,EACP,YAAY,EACZ,OAAO,EACP,aAAa,EACb,cAAc,EACd,SAAS,EACT,GAAG,KAAK,EACR,EAAE,uBAAuB,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,+BAsB3D;yBA/Be,kBAAkB"}
@@ -1,2 +1,2 @@
1
- import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _ } from "../chunks/picker-BA6okKnz.js";
1
+ import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _ } from "../chunks/picker-SJXnHwsj.js";
2
2
  export { e as PickerClearButton, _ as PickerField, o as PickerOptions, i as PickerPopup, r as PickerSelectedToken, a as PickerSelectionToolbar, g as PickerStatus, m as PickerTrigger, c as PickerTriggerActions, n as PickerTriggerInput, d as createPickerTriggerPolicy, l as extractPickerTextContent, f as getPickerPlaceholder, t as usePickerDefaultFilter, s as usePickerFloatingListbox, p as usePickerQuery, u as usePickerSelectionLifecycle, h as usePickerTriggerController };
@@ -3,5 +3,5 @@ export interface PolymorphicComponentBaseProps<E extends React.ElementType = Rea
3
3
  as?: E;
4
4
  }
5
5
  export type PolymorphicComponentProps<E extends React.ElementType> = PolymorphicComponentBaseProps<E> & Omit<React.ComponentPropsWithRef<E>, keyof PolymorphicComponentBaseProps>;
6
- export declare const PolymorphicComponent: <E extends React.ElementType = "div">({ as, children, ...props }: PolymorphicComponentProps<E>) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
6
+ export declare function PolymorphicComponent<E extends React.ElementType = "div">({ as, children, ...props }: PolymorphicComponentProps<E>): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
7
7
  //# sourceMappingURL=PolymorphicComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PolymorphicComponent.d.ts","sourceRoot":"","sources":["../../src/polymorphic/PolymorphicComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,WAAW,6BAA6B,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;IAC7F,EAAE,CAAC,EAAE,CAAC,CAAC;CACP;AAED,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,IAAI,6BAA6B,CAAC,CAAC,CAAC,GACpG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,6BAA6B,CAAC,CAAC;AAE3E,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,4BAA4B,yBAAyB,CAAC,CAAC,CAAC,uEAKjI,CAAC"}
1
+ {"version":3,"file":"PolymorphicComponent.d.ts","sourceRoot":"","sources":["../../src/polymorphic/PolymorphicComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,WAAW,6BAA6B,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;IAC7F,EAAE,CAAC,EAAE,CAAC,CAAC;CACP;AAED,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,IAAI,6BAA6B,CAAC,CAAC,CAAC,GACpG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,6BAA6B,CAAC,CAAC;AAE3E,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC,sEAKjI"}
@@ -1,6 +1,8 @@
1
1
  import { createElement as e } from "react";
2
2
  //#region src/polymorphic/PolymorphicComponent.tsx
3
- var t = ({ as: t, children: n, ...r }) => e(t || "div", { ...r }, n);
3
+ function t({ as: t, children: n, ...r }) {
4
+ return e(t || "div", { ...r }, n);
5
+ }
4
6
  //#endregion
5
7
  export { t as PolymorphicComponent };
6
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/polymorphic/PolymorphicComponent.tsx"],"sourcesContent":["import React, { createElement } from \"react\";\n\nexport interface PolymorphicComponentBaseProps<E extends React.ElementType = React.ElementType> {\n\tas?: E;\n}\n\nexport type PolymorphicComponentProps<E extends React.ElementType> = PolymorphicComponentBaseProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof PolymorphicComponentBaseProps>;\n\nexport const PolymorphicComponent = <E extends React.ElementType = \"div\">({ as, children, ...props }: PolymorphicComponentProps<E>) => {\n\tconst Component = as || \"div\";\n\n\t// return <Component {...props}>{children}</Component>;\n\treturn createElement(Component, { ...props }, children);\n};\n"],"mappings":";;AASA,IAAa,KAA6D,EAAE,OAAI,aAAU,GAAG,QAIrF,EAHW,KAAM,OAGQ,EAAE,GAAG,EAAM,GAAG,CAAQ"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/polymorphic/PolymorphicComponent.tsx"],"sourcesContent":["import React, { createElement } from \"react\";\n\nexport interface PolymorphicComponentBaseProps<E extends React.ElementType = React.ElementType> {\n\tas?: E;\n}\n\nexport type PolymorphicComponentProps<E extends React.ElementType> = PolymorphicComponentBaseProps<E> &\n\tOmit<React.ComponentPropsWithRef<E>, keyof PolymorphicComponentBaseProps>;\n\nexport function PolymorphicComponent<E extends React.ElementType = \"div\">({ as, children, ...props }: PolymorphicComponentProps<E>) {\n\tconst Component = as || \"div\";\n\n\t// return <Component {...props}>{children}</Component>;\n\treturn createElement(Component, { ...props }, children);\n}\n"],"mappings":";;AASA,SAAgB,EAA0D,EAAE,OAAI,aAAU,GAAG,KAAuC;CAInI,OAAO,EAHW,KAAM,OAGQ,EAAE,GAAG,EAAM,GAAG,CAAQ;AACvD"}
@@ -16,6 +16,6 @@ interface FloatingPopoverProps {
16
16
  */
17
17
  positionUpdateKey?: unknown;
18
18
  }
19
- export declare const FloatingPopover: React.FC<FloatingPopoverProps>;
19
+ export declare function FloatingPopover({ content, children, openOnHover, placement, openDelay, closeDelay, maxWidth, state, tooltip, positionUpdateKey }: FloatingPopoverProps): React.JSX.Element;
20
20
  export {};
21
21
  //# sourceMappingURL=FloatingPopover.d.ts.map
@@ -1 +1 @@
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,EAQT,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,CAgF1D,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,EAQT,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,wBAAgB,eAAe,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,WAAkB,EAClB,SAAoB,EACpB,SAAe,EACf,UAAgB,EAChB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,EAAE,oBAAoB,qBAqEtB"}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- export declare const FloatingTooltip: React.FC<{
2
+ export declare function FloatingTooltip({ x, y, children }: {
3
3
  x: number;
4
4
  y: number;
5
5
  children: React.ReactNode;
6
- }>;
6
+ }): React.JSX.Element;
7
7
  //# sourceMappingURL=FloatingTooltip.d.ts.map