@ryuzaki13/react-foundation-ui 3.8.1 → 3.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/chunks/ui.module-oRwY3Zli.js.map +1 -1
  2. package/dist/multi-select/index.js +3 -1
  3. package/dist/multi-select/index.js.map +1 -1
  4. package/dist/multi-select/ui/MultiSelectOptionRow.d.ts.map +1 -1
  5. package/dist/styles.css +1 -1
  6. package/package.json +1 -1
  7. package/storybook-static/assets/{Badge-EK9gQx9e.js → Badge-Exgo2liR.js} +1 -1
  8. package/storybook-static/assets/{Badge.stories-CtgtZ5eo.js → Badge.stories-BSZPB2hP.js} +1 -1
  9. package/storybook-static/assets/{BadgeList-C8Szc3WZ.js → BadgeList-vXAflISJ.js} +1 -1
  10. package/storybook-static/assets/{BarcodeScannerDialog.stories-BRpvqkgE.js → BarcodeScannerDialog.stories-B5JJTqxe.js} +1 -1
  11. package/storybook-static/assets/{Button-CiBLpfB4.js → Button-BzRtAjtM.js} +1 -1
  12. package/storybook-static/assets/{Button-DaL6GfgY.js → Button-W5ftYk1w.js} +1 -1
  13. package/storybook-static/assets/{Button.stories-C7LxYTQb.js → Button.stories-DcuEJMqp.js} +1 -1
  14. package/storybook-static/assets/{CalendarView-B5maPbIS.js → CalendarView-C8taheM_.js} +1 -1
  15. package/storybook-static/assets/{CheckBox-DXdhv4Lf.js → CheckBox-C-EWY4_-.js} +1 -1
  16. package/storybook-static/assets/{CheckBox-xWQASPSK.js → CheckBox-Cahw6EU8.js} +1 -1
  17. package/storybook-static/assets/{CheckBox.stories-B0TljSQ3.js → CheckBox.stories-DL49eu_s.js} +1 -1
  18. package/storybook-static/assets/{Color-6AOWCN3U-CtC_yr9J.js → Color-6AOWCN3U-B0iuSBAP.js} +1 -1
  19. package/storybook-static/assets/{ContextMenu-Dz3oD_WF.js → ContextMenu-DqLKk-wW.js} +1 -1
  20. package/storybook-static/assets/{ContextMenu-DMPKMqfn.js → ContextMenu-k1Mubm6h.js} +1 -1
  21. package/storybook-static/assets/{ContextMenu.stories-D_ozImXJ.js → ContextMenu.stories-CNnrfTxO.js} +1 -1
  22. package/storybook-static/assets/{DateInput-CeLmydmh.js → DateInput-CgBBiqYK.js} +1 -1
  23. package/storybook-static/assets/{DateInput-Dm9hU8oI.js → DateInput-NSuuc0Vu.js} +1 -1
  24. package/storybook-static/assets/{DateInput.stories-B_IZPZqF.js → DateInput.stories-eWY9Pqwp.js} +1 -1
  25. package/storybook-static/assets/{DateRangePresetSelect-DTkAwI-o.js → DateRangePresetSelect-Ch6rsktY.js} +1 -1
  26. package/storybook-static/assets/{DateRangePresetSelect-CH7Mmtrc.js → DateRangePresetSelect-DibXoV_U.js} +1 -1
  27. package/storybook-static/assets/{DateRangePresetSelect.stories-C6gIY87L.js → DateRangePresetSelect.stories-B8yndfPd.js} +1 -1
  28. package/storybook-static/assets/{DeprecatedMultiSelect-CX5U1Wb1.js → DeprecatedMultiSelect-1K4GSVRr.js} +1 -1
  29. package/storybook-static/assets/{DeprecatedMultiSelect-EaJ_mQ1Q.js → DeprecatedMultiSelect-D8BCr3qw.js} +1 -1
  30. package/storybook-static/assets/{DeprecatedMultiSelect.stories-Bo6fL6Zr.js → DeprecatedMultiSelect.stories-DH7fIprL.js} +1 -1
  31. package/storybook-static/assets/{Detail-CCh7sDpc.js → Detail-CzQ7DLhL.js} +1 -1
  32. package/storybook-static/assets/{Detail.stories-RskA9Xs8.js → Detail.stories-DzmSAGkt.js} +1 -1
  33. package/storybook-static/assets/{Dialog-DKMGI2PI.js → Dialog-Cm7gLcJI.js} +1 -1
  34. package/storybook-static/assets/{Dialog-ChxYkiWk.js → Dialog-DEDDnDtQ.js} +1 -1
  35. package/storybook-static/assets/{Dialog.stories-CGdnARk7.js → Dialog.stories-BzvBjaiX.js} +1 -1
  36. package/storybook-static/assets/{Disclosure-CgnOdAzR.js → Disclosure-Bpji7KuP.js} +1 -1
  37. package/storybook-static/assets/{Disclosure.stories-DgfVdZ8V.js → Disclosure.stories-Bwuzf5fl.js} +1 -1
  38. package/storybook-static/assets/{DisclosureGroup-CjcLktuT.js → DisclosureGroup-bCpsF5YE.js} +1 -1
  39. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CiPiMqkv.js → DocsRenderer-JROSPFPF-DQRIOLjc.js} +1 -1
  40. package/storybook-static/assets/{DropZone-Cp8Wufyw.js → DropZone-Diu_Hlgs.js} +1 -1
  41. package/storybook-static/assets/{DropZone-DQ73_0Pf.js → DropZone-qvCLdJmm.js} +1 -1
  42. package/storybook-static/assets/{DropZone.stories-DP_hFMc_.js → DropZone.stories-DHgexefI.js} +1 -1
  43. package/storybook-static/assets/{DropdownMenu-DaXeJjTB.js → DropdownMenu-Bl2IPF3Q.js} +1 -1
  44. package/storybook-static/assets/{ExpandableActionPanel-D6BzMChs.js → ExpandableActionPanel-B3iQGrX8.js} +1 -1
  45. package/storybook-static/assets/{ExpandableActionPanel.stories-B5_ZvkZK.js → ExpandableActionPanel.stories-DRnMPxSP.js} +1 -1
  46. package/storybook-static/assets/{Flex-CzSeUflw.js → Flex-CrWmRoxc.js} +1 -1
  47. package/storybook-static/assets/{Flex.stories-4xln9Tx7.js → Flex.stories-Db20If9k.js} +1 -1
  48. package/storybook-static/assets/{FlexContainer-CUkvfdhf.js → FlexContainer-YYPiKtpT.js} +1 -1
  49. package/storybook-static/assets/{FlexItem-DxLk1kGw.js → FlexItem-CXY6tvoB.js} +1 -1
  50. package/storybook-static/assets/{FloatingPopover-BN7M-D7P.js → FloatingPopover-DSRofmW2.js} +1 -1
  51. package/storybook-static/assets/{FormattedTableCell-D-neZi6J.js → FormattedTableCell-B-t0D2oX.js} +1 -1
  52. package/storybook-static/assets/{Grid-B8BNlV5p.js → Grid-Ad2q9giD.js} +1 -1
  53. package/storybook-static/assets/{Grid-Bbyr5bon.js → Grid-CUmJniwF.js} +1 -1
  54. package/storybook-static/assets/{Grid.stories-D-uV0QMB.js → Grid.stories-CsohhjMJ.js} +1 -1
  55. package/storybook-static/assets/{GridContainer-2Q2ODK51.js → GridContainer-DfZnU_h-.js} +1 -1
  56. package/storybook-static/assets/{ImageCropper.stories-Dtt2FAGL.js → ImageCropper.stories-Bdg7E1B6.js} +1 -1
  57. package/storybook-static/assets/{ImageRenderer-BjtFa8z8.js → ImageRenderer-DEsg7Nf5.js} +1 -1
  58. package/storybook-static/assets/{ImageRenderer.stories-BKcYCMTG.js → ImageRenderer.stories-C2uPYFbK.js} +1 -1
  59. package/storybook-static/assets/{ImageView.stories-BqgrUQOD.js → ImageView.stories-qFIo_3jG.js} +1 -1
  60. package/storybook-static/assets/{ImageViewer.stories-CW8xG4Dn.js → ImageViewer.stories-D6RoxWRG.js} +2 -2
  61. package/storybook-static/assets/{ImageViewerRuntime-BouFP69S.js → ImageViewerRuntime-DEVRfnpp.js} +1 -1
  62. package/storybook-static/assets/{Input-DSoJ1bPZ.js → Input-CXSVW4qb.js} +1 -1
  63. package/storybook-static/assets/{Input-DKfVkFor.js → Input-b2F0zrLw.js} +1 -1
  64. package/storybook-static/assets/{Input.stories-DzI_GHu4.js → Input.stories-CKUo8mda.js} +1 -1
  65. package/storybook-static/assets/{InputDateTime-F_UMqLSE.js → InputDateTime-CBgevl2k.js} +1 -1
  66. package/storybook-static/assets/{InputDateTime.stories-BZofscBL.js → InputDateTime.stories-Dc_yRirT.js} +1 -1
  67. package/storybook-static/assets/{InputFile-Ducp25c4.js → InputFile-BX9qIipq.js} +1 -1
  68. package/storybook-static/assets/{InputFile-DgDsyDsY.js → InputFile-VkGuvstd.js} +1 -1
  69. package/storybook-static/assets/{InputFile.stories-DlaBCWWc.js → InputFile.stories-VernHNAn.js} +1 -1
  70. package/storybook-static/assets/{InputFiles-5sqxbwqq.js → InputFiles-BpSb2G11.js} +1 -1
  71. package/storybook-static/assets/{InputFiles-E1Lv_1S-.js → InputFiles-CRFuNd-6.js} +1 -1
  72. package/storybook-static/assets/{InputFiles.stories-CMWGpeMF.js → InputFiles.stories-CfrGV2lA.js} +1 -1
  73. package/storybook-static/assets/{InputFilesList-BhKPPY0s.js → InputFilesList-BoL4jQmC.js} +1 -1
  74. package/storybook-static/assets/{InputImage-dJAnInGG.js → InputImage-BKfXCZHx.js} +1 -1
  75. package/storybook-static/assets/{InputImage-Bml_XdoH.js → InputImage-BcUm7aKp.js} +1 -1
  76. package/storybook-static/assets/{InputImage.stories-6DtkfR4R.js → InputImage.stories-l1xnaTXn.js} +1 -1
  77. package/storybook-static/assets/{InteractiveComponents-4E2d9zH2.js → InteractiveComponents-DKix-b3k.js} +1 -1
  78. package/storybook-static/assets/{InteractiveComponents.stories-BU4phFyf.js → InteractiveComponents.stories-CK118Tbj.js} +1 -1
  79. package/storybook-static/assets/{LayoutPicker-VdWtkSuS.js → LayoutPicker-BqI2-D2r.js} +1 -1
  80. package/storybook-static/assets/{LayoutPicker-CowWslXH.js → LayoutPicker-Ca57uusp.js} +1 -1
  81. package/storybook-static/assets/{LayoutPicker.stories-CixcTM0K.js → LayoutPicker.stories-BDRBBnj-.js} +1 -1
  82. package/storybook-static/assets/{Listbox-Bdk5_SQj.js → Listbox-D_Qgzkw1.js} +1 -1
  83. package/storybook-static/assets/{Listbox-BMbMW6QU.js → Listbox-lrvI9Fx9.js} +1 -1
  84. package/storybook-static/assets/{Listbox.stories-CICddsFG.js → Listbox.stories-Djb1uju9.js} +1 -1
  85. package/storybook-static/assets/{Modal-BmtPDyvC.js → Modal-BpqYaQXu.js} +1 -1
  86. package/storybook-static/assets/{Modal-LszfoLT0.js → Modal-CLZFIZH2.js} +1 -1
  87. package/storybook-static/assets/{Modal.stories-COopXi-m.js → Modal.stories-DNpMq9oL.js} +1 -1
  88. package/storybook-static/assets/{ModalManagerProvider-Dwy_KGoK.js → ModalManagerProvider-DMlNCo5h.js} +1 -1
  89. package/storybook-static/assets/{MultiSelect-D8OZAHlg.js → MultiSelect-C593f3VV.js} +1 -1
  90. package/storybook-static/assets/{MultiSelect-D9E5MjIr.js → MultiSelect-DmC3DaMc.js} +1 -1
  91. package/storybook-static/assets/{MultiSelect.stories-BNy8uqkv.js → MultiSelect.stories-R6JTKnFI.js} +1 -1
  92. package/storybook-static/assets/MultiSelectCore-BaRmQrD-.js +3 -0
  93. package/storybook-static/assets/{NoData-D9Sjnk2c.js → NoData-Bvl_1jH4.js} +1 -1
  94. package/storybook-static/assets/{NotificationsHost-D0Pk-Yqg.js → NotificationsHost-CdPm_hcB.js} +1 -1
  95. package/storybook-static/assets/{NotificationsHost.stories-CEUX8dAF.js → NotificationsHost.stories-Bo_dwZZe.js} +1 -1
  96. package/storybook-static/assets/{ODataMultiSelect-BxNC8zss.js → ODataMultiSelect-BVlJ8U90.js} +1 -1
  97. package/storybook-static/assets/{ODataMultiSelect.stories-BLourbRQ.js → ODataMultiSelect.stories-CqHpctYU.js} +1 -1
  98. package/storybook-static/assets/{ODataSelect-DvZjbRtG.js → ODataSelect-BCl-z6Sg.js} +1 -1
  99. package/storybook-static/assets/{ODataSelect.stories-CswbeNTT.js → ODataSelect.stories-Cm-Xkq40.js} +1 -1
  100. package/storybook-static/assets/{ODataTreeMultiSelect-DagrfWBY.js → ODataTreeMultiSelect-1CrmEPOx.js} +1 -1
  101. package/storybook-static/assets/{ODataTreeMultiSelect.stories-TbWSFRbD.js → ODataTreeMultiSelect.stories-B2YMNMyr.js} +1 -1
  102. package/storybook-static/assets/{ODataTreeSelect-BLNFg44u.js → ODataTreeSelect-BqP9H4QH.js} +1 -1
  103. package/storybook-static/assets/{ODataTreeSelect.stories-BKCm0DtZ.js → ODataTreeSelect.stories-x_GCdGW8.js} +1 -1
  104. package/storybook-static/assets/{OneStepScroller-NyCOFbAV.js → OneStepScroller-B1H-Yg0P.js} +1 -1
  105. package/storybook-static/assets/{Option-B82YmTfK.js → Option-ChGr-plg.js} +1 -1
  106. package/storybook-static/assets/{OptionButton-CmHVNPma.js → OptionButton-D6mT04a1.js} +1 -1
  107. package/storybook-static/assets/{OptionContent-BG9-OWJw.js → OptionContent-CXc6K3fK.js} +1 -1
  108. package/storybook-static/assets/{OptionContentContainer-CU1GwCic.js → OptionContentContainer-D0p7mbft.js} +1 -1
  109. package/storybook-static/assets/{PeriodSelect-kOE0lDjL.js → PeriodSelect-Bm9WdjpG.js} +1 -1
  110. package/storybook-static/assets/{PeriodSelect-B9MQy6oj.js → PeriodSelect-CpnYgcOA.js} +1 -1
  111. package/storybook-static/assets/{PeriodSelect.stories-BTASzqE2.js → PeriodSelect.stories-4Im6GLjq.js} +1 -1
  112. package/storybook-static/assets/{PickerField--0kZhFr0.js → PickerField-w1JCZyzA.js} +1 -1
  113. package/storybook-static/assets/{PickerTriggerActions-DAjE-u3Q.js → PickerTriggerActions-BCupttoF.js} +1 -1
  114. package/storybook-static/assets/{Popover-BLuKIsin.js → Popover-CCHTXorF.js} +1 -1
  115. package/storybook-static/assets/{Popover-7L-pHu2i.js → Popover-CbgP8DJy.js} +1 -1
  116. package/storybook-static/assets/{Popover.stories-DqwCkB57.js → Popover.stories-zZ2fYcQb.js} +1 -1
  117. package/storybook-static/assets/{PresetRangeDateInput-Ctf7L0HP.js → PresetRangeDateInput-D-Xf5CL3.js} +1 -1
  118. package/storybook-static/assets/{PresetRangeDateInput-CuE_81Mt.js → PresetRangeDateInput-cmWbFoHz.js} +1 -1
  119. package/storybook-static/assets/{PresetRangeDateInput.stories-D9TMoYOB.js → PresetRangeDateInput.stories-C3VxU77P.js} +1 -1
  120. package/storybook-static/assets/{PresetSelect-CN0IKu0a.js → PresetSelect-BmTJNeUt.js} +1 -1
  121. package/storybook-static/assets/{README-CQlYzU33.js → README-3VGZSgWz.js} +1 -1
  122. package/storybook-static/assets/{README-B0DB8YYR.js → README-5uy1ulgc.js} +1 -1
  123. package/storybook-static/assets/{README-D-yCn4_H.js → README-B3bdpv3F.js} +1 -1
  124. package/storybook-static/assets/{README-BxhHDiwn.js → README-B7kN5fdq.js} +1 -1
  125. package/storybook-static/assets/{README-BoYFqkwC.js → README-BC4nu9of.js} +1 -1
  126. package/storybook-static/assets/{README-BbLROfhp.js → README-BMXu-jQk.js} +1 -1
  127. package/storybook-static/assets/{README-DzksXkTj.js → README-BRE26E-6.js} +1 -1
  128. package/storybook-static/assets/{README-CzKv1E7w.js → README-BW8ukk_3.js} +1 -1
  129. package/storybook-static/assets/{README-BSU3d8yx.js → README-BZW-Ku8G.js} +1 -1
  130. package/storybook-static/assets/{README-CFweVjlA.js → README-B_TP46xP.js} +1 -1
  131. package/storybook-static/assets/{README-WztnWpwt.js → README-Bc63jJ_g.js} +1 -1
  132. package/storybook-static/assets/{README-BkkuU9ec.js → README-BcSaq4c4.js} +1 -1
  133. package/storybook-static/assets/{README-RmnKu3vw.js → README-BeMdGWkW.js} +1 -1
  134. package/storybook-static/assets/{README-C2PTb-8t.js → README-Bf9aqOSG.js} +1 -1
  135. package/storybook-static/assets/{README-D5w1MRjv.js → README-BfbEWAVW.js} +1 -1
  136. package/storybook-static/assets/{README-C6zxVMFm.js → README-Bfp-2y9L.js} +1 -1
  137. package/storybook-static/assets/{README-DE0HxW6s.js → README-BiyBf-O3.js} +1 -1
  138. package/storybook-static/assets/{README-DLep-Z9_.js → README-BkJ_PjJk.js} +1 -1
  139. package/storybook-static/assets/{README-Bdl63lRm.js → README-Bl2m1JMK.js} +1 -1
  140. package/storybook-static/assets/{README-CTjO8DPy.js → README-BsvaCxyJ.js} +1 -1
  141. package/storybook-static/assets/{README-0UO2pXtj.js → README-C4vu077M.js} +1 -1
  142. package/storybook-static/assets/{README-DMuWFEvU.js → README-CLTYPp6T.js} +1 -1
  143. package/storybook-static/assets/{README-BGVEAmni.js → README-CXLnU8PY.js} +1 -1
  144. package/storybook-static/assets/{README-q8mu9DD1.js → README-CZciBX1A.js} +1 -1
  145. package/storybook-static/assets/{README-CTGa35Ko.js → README-C_zVigpw.js} +1 -1
  146. package/storybook-static/assets/{README-B3aq-Sx4.js → README-CaZGDS4o.js} +1 -1
  147. package/storybook-static/assets/{README-IapRnWcI.js → README-CjwMWiHf.js} +1 -1
  148. package/storybook-static/assets/{README-CyKQxj4u.js → README-CnX5IOsQ.js} +1 -1
  149. package/storybook-static/assets/{README-D2gE2Ldm.js → README-Cu9QJjVK.js} +1 -1
  150. package/storybook-static/assets/{README-rCT7dLcC.js → README-CwqRXSIJ.js} +1 -1
  151. package/storybook-static/assets/{README-DmwyVlUw.js → README-D7IHIZJQ.js} +1 -1
  152. package/storybook-static/assets/{README-BtB9H9nN.js → README-DEOe-D4O.js} +1 -1
  153. package/storybook-static/assets/{README-CBreaBmO.js → README-DEtA9vXg.js} +1 -1
  154. package/storybook-static/assets/{README-DA2Q8qus.js → README-DFF21yas.js} +1 -1
  155. package/storybook-static/assets/{README-CfyDEk1-.js → README-DLtEU6xV.js} +1 -1
  156. package/storybook-static/assets/{README-DaIVdhSy.js → README-DVPc9Io_.js} +1 -1
  157. package/storybook-static/assets/{README-BNAmw1CY.js → README-DXajBW2j.js} +1 -1
  158. package/storybook-static/assets/{README-D6pLREG_.js → README-DcMAIy3x.js} +1 -1
  159. package/storybook-static/assets/{README-BlUNAvHA.js → README-DkgiAGPo.js} +1 -1
  160. package/storybook-static/assets/{README-9pbSM7O_.js → README-DnkVTJ7s.js} +1 -1
  161. package/storybook-static/assets/{README-WH-bEvJ2.js → README-Dv4LnFqu.js} +1 -1
  162. package/storybook-static/assets/{README-BGY4pbd2.js → README-EmDsFxzc.js} +1 -1
  163. package/storybook-static/assets/{README-Xfa0qaGa.js → README-HRwASuVm.js} +1 -1
  164. package/storybook-static/assets/{README-Cy3qBWwg.js → README-IkL3xuvr.js} +1 -1
  165. package/storybook-static/assets/{README-1kX985QJ.js → README-Iwf47F8s.js} +1 -1
  166. package/storybook-static/assets/{README-BTJcWR49.js → README-T35eDlrl.js} +1 -1
  167. package/storybook-static/assets/{README-BmyhpBE4.js → README-UcG-T3oc.js} +1 -1
  168. package/storybook-static/assets/{README-BnWc_1XT.js → README-jg6CIybs.js} +1 -1
  169. package/storybook-static/assets/{README-BsuQaM1w.js → README-k2-wWcjY.js} +1 -1
  170. package/storybook-static/assets/{README-CVJoPV0y.js → README-lHhj1ioe.js} +1 -1
  171. package/storybook-static/assets/{README-BsZdSPmu.js → README-vCy3YlCq.js} +1 -1
  172. package/storybook-static/assets/{README-8-_hu7iJ.js → README-xMu2rAZ4.js} +1 -1
  173. package/storybook-static/assets/{README-C63rWkBl.js → README-zF7TglyH.js} +1 -1
  174. package/storybook-static/assets/{RadioButton-dnLpCCML.js → RadioButton-BBfQWcy3.js} +1 -1
  175. package/storybook-static/assets/{RadioButton-ZsulWLed.js → RadioButton-Cy_jQtud.js} +1 -1
  176. package/storybook-static/assets/{RadioButton.stories-CKipwhZp.js → RadioButton.stories-9V4bon68.js} +1 -1
  177. package/storybook-static/assets/{RadioGroup-DEEYma_e.js → RadioGroup-BndgLwX8.js} +1 -1
  178. package/storybook-static/assets/{RadioGroup-u13QVsxA.js → RadioGroup-TwFpisuE.js} +1 -1
  179. package/storybook-static/assets/{RadioGroup.stories-DwwO3k93.js → RadioGroup.stories-DJLxesgz.js} +1 -1
  180. package/storybook-static/assets/{Scrollable-CUhjICar.js → Scrollable-DtB02dAG.js} +1 -1
  181. package/storybook-static/assets/{Scrollable-Dxjen-sM.js → Scrollable-pBI6H_we.js} +1 -1
  182. package/storybook-static/assets/{Scrollable.stories-Cjcgg_Bc.js → Scrollable.stories-CahJ5rFA.js} +1 -1
  183. package/storybook-static/assets/{Select-DXRE65Ab.js → Select-BOnv-Uuv.js} +1 -1
  184. package/storybook-static/assets/{Select-COV2S25J.js → Select-CClfxa48.js} +1 -1
  185. package/storybook-static/assets/{Select.stories-BJiP7tQH.js → Select.stories-C0X5pvUk.js} +1 -1
  186. package/storybook-static/assets/{Separator-C28fV2R8.js → Separator-BQlVHMcy.js} +1 -1
  187. package/storybook-static/assets/{Separator-Bro2wWAu.js → Separator-BdOz35ux.js} +1 -1
  188. package/storybook-static/assets/{Separator.stories-CNqUFK4v.js → Separator.stories-DRmR0Kda.js} +1 -1
  189. package/storybook-static/assets/{SerializableSelect-d-m2CyxF.js → SerializableSelect-ClSz_VvD.js} +1 -1
  190. package/storybook-static/assets/{SerializableSelect.stories-C8qJHCIJ.js → SerializableSelect.stories-DozN_Quy.js} +1 -1
  191. package/storybook-static/assets/{ShimmerText-DFlPCOpX.js → ShimmerText-CuhrU7uk.js} +1 -1
  192. package/storybook-static/assets/{ShimmerText.stories-wu2MXfaC.js → ShimmerText.stories-Djb6DvbN.js} +1 -1
  193. package/storybook-static/assets/{SingleDateTimeInput-BWOF4zyN.js → SingleDateTimeInput-C4jzvJ05.js} +1 -1
  194. package/storybook-static/assets/{SingleDateTimeInput-Dcoe14K6.js → SingleDateTimeInput-hC1Ft3qs.js} +1 -1
  195. package/storybook-static/assets/{SingleDateTimeInput.stories-Ck0OwzWi.js → SingleDateTimeInput.stories-D-HmSpnz.js} +1 -1
  196. package/storybook-static/assets/{Slider-Dqr7gPar.js → Slider-WLUfmHyw.js} +1 -1
  197. package/storybook-static/assets/{Slider-DrpDDQaE.js → Slider-u0qKNrgI.js} +1 -1
  198. package/storybook-static/assets/{Slider.stories-LKfnEkw4.js → Slider.stories-CX8fS5Ax.js} +1 -1
  199. package/storybook-static/assets/{SliderInput-MDuEi7Va.js → SliderInput-BEirf0Ys.js} +1 -1
  200. package/storybook-static/assets/{SliderInput-BqyHw-PE.js → SliderInput-ibTyal5l.js} +1 -1
  201. package/storybook-static/assets/{SliderInput.stories-DOwDFBuL.js → SliderInput.stories-xuycnRN_.js} +1 -1
  202. package/storybook-static/assets/{Sortable-iwVfz_Pp.js → Sortable-p0kUHa8E.js} +1 -1
  203. package/storybook-static/assets/{Sortable.stories-B5Y6AaC5.js → Sortable.stories-BdCtmfnr.js} +1 -1
  204. package/storybook-static/assets/{Splitter-ORF-Ncb1.js → Splitter-BzAg1cZ0.js} +1 -1
  205. package/storybook-static/assets/{Splitter.stories-DQmiJCOW.js → Splitter.stories-C5zZ4lHf.js} +1 -1
  206. package/storybook-static/assets/{StateSelect-Z_2ucbVB.js → StateSelect-CyjHfKNv.js} +1 -1
  207. package/storybook-static/assets/{StateSelect-Bb-xFYJr.js → StateSelect-bHA1Vf6z.js} +1 -1
  208. package/storybook-static/assets/{StateSelect.stories-4BgCeVtO.js → StateSelect.stories-D94g21N9.js} +1 -1
  209. package/storybook-static/assets/{StatusIndicator-JOpyf0X8.js → StatusIndicator-ylfiroPh.js} +1 -1
  210. package/storybook-static/assets/{StatusIndicator.stories-D3skmWV0.js → StatusIndicator.stories-BB7y4KGW.js} +1 -1
  211. package/storybook-static/assets/{StringToggle.stories-WRtPfnkA.js → StringToggle.stories-BwuTZAGa.js} +1 -1
  212. package/storybook-static/assets/{Switch-Cml2InwJ.js → Switch-BXWiUOXs.js} +1 -1
  213. package/storybook-static/assets/{Switch-Bi6ldbAc.js → Switch-DRLWRp0P.js} +1 -1
  214. package/storybook-static/assets/{Switch.stories-NXO81irA.js → Switch.stories-taC_bi5a.js} +1 -1
  215. package/storybook-static/assets/{Table-CzzWl6jB.js → Table-BYiIQfjA.js} +1 -1
  216. package/storybook-static/assets/{Table.stories-B6fUlbDF.js → Table.stories-B9u81cAN.js} +1 -1
  217. package/storybook-static/assets/{TableEditor.stories-0X9buuFB.js → TableEditor.stories-CG0ULNok.js} +1 -1
  218. package/storybook-static/assets/{Tabs-Dc1vW6AD.js → Tabs-BYp06IN2.js} +1 -1
  219. package/storybook-static/assets/{Tabs.stories-CBVMbChq.js → Tabs.stories-BCkUYsqs.js} +1 -1
  220. package/storybook-static/assets/{TabsBox-Dp_XwFIC.js → TabsBox-DBm2a1iA.js} +1 -1
  221. package/storybook-static/assets/{TagInput-CjIacwww.js → TagInput-D9gedxBU.js} +1 -1
  222. package/storybook-static/assets/{TagInput.stories-DTgqndkw.js → TagInput.stories-6eOGQ16t.js} +1 -1
  223. package/storybook-static/assets/{Text-BZ-hxc1d.js → Text-CcgH9LXI.js} +1 -1
  224. package/storybook-static/assets/{Textarea-BBHME6fw.js → Textarea-DXOTj2Y7.js} +1 -1
  225. package/storybook-static/assets/{Textarea-mfo7IAA2.js → Textarea-aGrLpQXu.js} +1 -1
  226. package/storybook-static/assets/{Textarea.stories-AiHRDIfK.js → Textarea.stories-BwqxG2lk.js} +1 -1
  227. package/storybook-static/assets/{TimePanel-CHRlMett.js → TimePanel-DroAbbvD.js} +1 -1
  228. package/storybook-static/assets/{TimePanel.stories-ZfKuLFkK.js → TimePanel.stories-DgU6ia4A.js} +1 -1
  229. package/storybook-static/assets/{Toggle-DsZR39by.js → Toggle-B7MbU9HB.js} +1 -1
  230. package/storybook-static/assets/{Toggle-d2cXgZGn.js → Toggle-BUSzQ1ww.js} +1 -1
  231. package/storybook-static/assets/{Toggle.stories-D-yiUzAX.js → Toggle.stories-BYU9hS62.js} +1 -1
  232. package/storybook-static/assets/{TreeMultiSelect-DdJPRTnS.js → TreeMultiSelect-BhFYUbr0.js} +1 -1
  233. package/storybook-static/assets/{TreeMultiSelect-dLo-KzWu.js → TreeMultiSelect-CZIyMaIZ.js} +1 -1
  234. package/storybook-static/assets/{TreeMultiSelect.stories-CBZ8dhJM.js → TreeMultiSelect.stories-DG_mdSkQ.js} +1 -1
  235. package/storybook-static/assets/{TreePickerBase-CVgiS4iD.js → TreePickerBase-CbULuQpp.js} +1 -1
  236. package/storybook-static/assets/{TreeSelect-BKrsYQTN.js → TreeSelect-CMSolQHr.js} +1 -1
  237. package/storybook-static/assets/{TreeSelect-Dp52E_73.js → TreeSelect-Cu1BsepL.js} +1 -1
  238. package/storybook-static/assets/{TreeSelect.stories-B1wm8Xba.js → TreeSelect.stories-B2J0N4ke.js} +1 -1
  239. package/storybook-static/assets/{TreeTable-CPpQ6e43.js → TreeTable-AIcYVdfl.js} +1 -1
  240. package/storybook-static/assets/{TreeTable.stories-DCDLySGX.js → TreeTable.stories-BKbbLMK7.js} +1 -1
  241. package/storybook-static/assets/{blocks-za-wOwFF.js → blocks-Bdsl8TP-.js} +3 -3
  242. package/storybook-static/assets/{check-BnCTqaAz.js → check-DGqyuB4O.js} +1 -1
  243. package/storybook-static/assets/{chevron-down-Vq8KbCfI.js → chevron-down-BykqjXRq.js} +1 -1
  244. package/storybook-static/assets/{chevron-left-DWH9v-JE.js → chevron-left-Z5uCO076.js} +1 -1
  245. package/storybook-static/assets/{chevron-right-GObYqCJe.js → chevron-right-C8yfwmkk.js} +1 -1
  246. package/storybook-static/assets/{chunk-W22LQPXL-DffsJI6Z.js → chunk-W22LQPXL-hfBk2z5K.js} +1 -1
  247. package/storybook-static/assets/{circle-alert-DHzv4KpY.js → circle-alert-C9sxb8DT.js} +1 -1
  248. package/storybook-static/assets/{circle-check-DKd35XtT.js → circle-check-BLrYJ_8h.js} +1 -1
  249. package/storybook-static/assets/{components-Ds9xsAdN.js → components-xYnqEbBt.js} +3 -3
  250. package/storybook-static/assets/{contextMenu-DxOBp2Sj.js → contextMenu-C-b4jBpY.js} +1 -1
  251. package/storybook-static/assets/{download-BmBq6Np5.js → download-g1fk8W6J.js} +1 -1
  252. package/storybook-static/assets/{floating-ui.react-Rf5ZEhEh.js → floating-ui.react-cCWtY5RA.js} +1 -1
  253. package/storybook-static/assets/{foundationApi-C2D1ZAsU.js → foundationApi-Ci5vPKh_.js} +1 -1
  254. package/storybook-static/assets/{foundationLib-BFg_qpNI.js → foundationLib-DNlIsEyf.js} +1 -1
  255. package/storybook-static/assets/{hooks-CgazONpd.js → hooks-XqeLihmr.js} +1 -1
  256. package/storybook-static/assets/iframe-TsWsvoxA.js +1 -0
  257. package/storybook-static/assets/{iframe--CGTMt9T.js → iframe-ltYEol2F.js} +3 -3
  258. package/storybook-static/assets/{info-B6O6v4M3.js → info-CBSXRv7d.js} +1 -1
  259. package/storybook-static/assets/{odata-BEDULcKk.js → odata-Dd_3_5NS.js} +1 -1
  260. package/storybook-static/assets/{odataStoryFixtures-DHVieZR4.js → odataStoryFixtures-3lOfs9T6.js} +1 -1
  261. package/storybook-static/assets/{react-Cp6q3rBu.js → react-BxWB81Qy.js} +1 -1
  262. package/storybook-static/assets/{refresh-cw-B7iOgoek.js → refresh-cw-FKHfW9eG.js} +1 -1
  263. package/storybook-static/assets/{settings-2-DT9oEwF5.js → settings-2-Cz1PtqGa.js} +1 -1
  264. package/storybook-static/assets/{sortable-Cp70acZd.js → sortable-BelHSus7.js} +1 -1
  265. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-BBBKSXp2.js → syntaxhighlighter-QEQV7K2Y-gGot_qSq.js} +1 -1
  266. package/storybook-static/assets/{trash-2-Cj8Ikfyz.js → trash-2-BT2kW3r-.js} +1 -1
  267. package/storybook-static/assets/{triangle-alert-DFhuVxlv.js → triangle-alert-CPiJJHYc.js} +1 -1
  268. package/storybook-static/assets/{ui-Bpz_yxm8.css → ui-CjMNsuUW.css} +1 -1
  269. package/storybook-static/assets/{uiClasses-Bar5W7-L.js → uiClasses-BblrV9p1.js} +1 -1
  270. package/storybook-static/assets/{useODataSelectBase-Bm1bPs1s.js → useODataSelectBase-bPN0T_Xm.js} +1 -1
  271. package/storybook-static/assets/{useODataTreeData-BPDg66yj.js → useODataTreeData-CIpE4LZu.js} +1 -1
  272. package/storybook-static/assets/{usePickerQuery-B55wi-Qp.js → usePickerQuery-OTz4Oze6.js} +1 -1
  273. package/storybook-static/assets/{usePickerTriggerController-Det5k_cM.js → usePickerTriggerController-vNC5e_t0.js} +1 -1
  274. package/storybook-static/assets/{x-BZlxy_R9.js → x-BdAuXjBq.js} +1 -1
  275. package/storybook-static/iframe.html +2 -2
  276. package/storybook-static/project.json +1 -1
  277. package/storybook-static/assets/MultiSelectCore-Ds4jXHOk.js +0 -3
  278. package/storybook-static/assets/iframe-brnPa2qH.js +0 -1
  279. /package/storybook-static/assets/{ui.module-0uniSGT-.js → ui.module-l7VCYIW-.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ui.module-oRwY3Zli.js","names":[],"sources":["../../src/ui.module.scss"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n@use \"@/styles/tone-derived\" as toneDerived;\n\n.uiSizable {\n\t--base-width: 100%;\n\n\twidth: var(--base-width);\n\n\t&.xs {\n\t\t--base-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n\t}\n\n\t&.sm {\n\t\t--base-width: calc(var(--drp-ui-width-sm, var(--ui-width-sm)) - var(--width-add));\n\t}\n\n\t&.md {\n\t\t--base-width: calc(var(--drp-ui-width-md, var(--ui-width-md)) - var(--width-add));\n\t}\n\n\t&.lg {\n\t\t--base-width: calc(var(--drp-ui-width-lg, var(--ui-width-lg)) - var(--width-add));\n\t}\n\n\t&.xl {\n\t\t--base-width: calc(var(--drp-ui-width-xl, var(--ui-width-xl)) - var(--width-add));\n\t}\n}\n\n// TODO: Тестовый класс\n.uiErrorElement {\n\t--grid-size: var(--space-sm);\n\t--grid-line-size: var(--border-width);\n\t@include toneDerived.tone-soft-declaration(\"--grid-line-color\", \"error\");\n\n\theight: var(--control-height);\n\twidth: 100%; // calc(10em - var(--width-add));\n\tflex-shrink: 0;\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\tborder: var(--focus-width) solid var(--error-border);\n\tborder-radius: var(--radius-sm);\n\toutline: none;\n\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tcolor: var(--error-text);\n\tbackground-color: var(--surface-0);\n\tbackground-image:\n\t\trepeating-linear-gradient(\n\t\t\t45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t),\n\t\trepeating-linear-gradient(\n\t\t\t-45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t);\n}\n\n.uiContainer {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.uiInputContainer {\n\t@extend .uiContainer;\n\n\t--padding-right: var(--control-height);\n}\n\n.uiLabelBase {\n\tdisplay: inline-block;\n\tfont-weight: 400;\n\tfont-variation-settings: \"wght\" 400;\n}\n\n.uiLabel {\n\t@extend .uiLabelBase;\n\n\tmargin-block: var(--space-xs);\n}\n\n.uiDescription {\n\t--paragraph-margin: 0;\n\n\tpadding-bottom: var(--space-xs);\n\tcolor: var(--content-1);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiLabel,\n.uiDescription {\n\tmargin-inline: var(--space-xs);\n}\n\n.uiPlaceholder {\n\tcolor: var(--content-2);\n\tfont-weight: 100;\n\tfont-variation-settings: \"wght\" 100;\n\t// font-size: var(--font-size-sm);\n\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.required {\n\t.uiLabelBase::after {\n\t\tcontent: \" *\";\n\t\tcolor: var(--error-text);\n\t}\n}\n\n.uiControl {\n\t@include ui-tone(\"neutral\");\n\t@include ui-appearance-outline;\n\t@include ui-control-base;\n\n\t--ui-radius: var(--radius-sm);\n\n\t&.invalid,\n\t&:invalid {\n\t\t@include ui-tone(\"error\");\n\t\t@include ui-appearance-outline;\n\t}\n\n\t&::placeholder {\n\t\t@extend .uiPlaceholder;\n\t}\n}\n\n.uiToneNeutral {\n\t@include ui-tone(\"neutral\");\n}\n\n.uiToneAccent {\n\t@include ui-tone(\"accent\");\n}\n\n.uiToneBrand {\n\t@include ui-tone(\"brand\");\n}\n\n.uiToneError {\n\t@include ui-tone(\"error\");\n}\n\n.uiToneWarning {\n\t@include ui-tone(\"warning\");\n}\n\n.uiToneSuccess {\n\t@include ui-tone(\"success\");\n}\n\n.uiToneInfo {\n\t@include ui-tone(\"info\");\n}\n\n.uiAppearanceSolid {\n\t@include ui-appearance-solid;\n}\n\n.uiAppearanceOutline {\n\t@include ui-appearance-outline;\n}\n\n.uiAppearanceGhost {\n\t@include ui-appearance-ghost;\n}\n\n.uiAppearanceTransparent {\n\t@include ui-appearance-transparent;\n}\n\n.uiInputControl {\n\t@extend .uiControl;\n\n\theight: var(--control-height);\n}\n\n.uiInputWithToggle {\n\t@extend .uiInputControl;\n\n\tcolor: var(--content-0);\n\n\tpadding: 0 var(--padding-right) 0 var(--space-sm);\n\twidth: 100%;\n\ttext-align: left;\n\n\t// &[type=\"button\"] {\n\t// \twhite-space: nowrap;\n\t// }\n}\n\n.uiSelectionControl {\n\t@include ui-control-base;\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n\t--ui-background: var(--surface-0);\n\t--ui-background-hover: var(--ui-tone-soft);\n\t--ui-background-active: var(--ui-tone-soft);\n\t--ui-border-color: var(--ui-tone-border);\n\t--ui-border-hover: var(--ui-tone-border-hover);\n\t--ui-border-active: var(--ui-tone-border-active);\n\t--ui-border-focus: var(--ui-tone-border-focus);\n\n\tappearance: none;\n\tmargin: 0;\n\tcursor: pointer;\n\n\t&:checked {\n\t\tborder-color: var(--ui-tone-border-active);\n\n\t\t& + .uiSelectionIcon {\n\t\t\tcolor: var(--ui-tone-fill);\n\t\t}\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\n\t\tborder-color: var(--border-0);\n\n\t\t&:checked {\n\t\t\t& + .uiSelectionIcon {\n\t\t\t\tcolor: var(--border-0);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.uiSelectionIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tpointer-events: none;\n\tcolor: transparent;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\topacity var(--transition-fast) ease;\n}\n\n.uiElement,\n.uiPopupOption {\n\t&.disabled,\n\t&:disabled {\n\t\tuser-select: none;\n\n\t\t.uiLabel,\n\t\t.uiDescription {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.uiPlaceholder,\n\t\t.uiOptionText,\n\t\t.uiOptionCode {\n\t\t\topacity: 0.25;\n\t\t}\n\t}\n\n\t// Класс disabled используется у составных ненативных элементов: им нужно явно запретить события.\n\t&.disabled {\n\t\tcursor: default;\n\t\tpointer-events: none;\n\t}\n\n\t// Нативный disabled уже блокирует активацию, а pointer-events остаются для курсора и tooltip.\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t}\n}\n\n.uiPanelTonePrimary {\n\t--ui-panel-background: var(--surface-0);\n}\n\n.uiPanelToneSecondary {\n\t--ui-panel-background: var(--surface-1);\n}\n\n.uiPanelToneTertiary {\n\t--ui-panel-background: var(--surface-2);\n}\n\n.uiFilledPanel {\n\tbackground-color: var(--ui-panel-background, var(--surface-0));\n}\n\n.uiFramedPanel {\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: var(--space-sm);\n}\n\n.uiPanel {\n\t@extend .uiFramedPanel;\n\t@extend .uiFilledPanel;\n}\n\n.uiStateFocus {\n\t@include focusVisible;\n\n\tbackground-color: var(--surface-1);\n\tborder-color: var(--border-1);\n\tcursor: pointer;\n}\n\n.uiOptionBase {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tgap: var(--space-sm);\n\theight: 100%;\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.uiPopupOption {\n\t@extend .uiOptionBase;\n\n\theight: auto;\n\tmin-height: var(--control-height);\n}\n\n.uiPopupOption {\n\tborder-radius: var(--radius-sm);\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: var(--content-0);\n\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t.uiMenuOptionIcon,\n\t.uiPopupOptionIcon {\n\t\tflex-shrink: 0;\n\t\tfont-size: var(--font-size-sm);\n\t\twidth: var(--icon-size);\n\t\theight: var(--icon-size);\n\t}\n\n\t.uiMenuOptionIcon,\n\t.keyboard {\n\t\tcolor: var(--content-2);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--accent-on-fill);\n\t\tbackground-color: var(--accent-fill);\n\t\tcursor: default;\n\n\t\t// Вторичный код должен сохранять контраст выбранной строки, а не брать приглушённый content-цвет.\n\t\t.uiOptionCode {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t@include hover(true, false) {\n\t\tcolor: var(--accent-text-hover);\n\t\tbackground-color: var(--accent-fill-hover);\n\t\tcursor: pointer;\n\t}\n\n\t// Active идёт после hover, чтобы нажатие не теряло своё состояние у мыши и touch-устройств.\n\t&.uiPopupOptionActive,\n\t&:active {\n\t\tcolor: var(--accent-text-active);\n\t\tbackground-color: var(--accent-fill-active);\n\n\t\t.uiOptionCode {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t&.disabled {\n\t\t// background-color: var(--surface-2);\n\t\tcolor: var(--content-2);\n\t}\n\n\t&:focus-within {\n\t\t// @extend .uiStateFocus;\n\t\t@include focusVisible;\n\t}\n}\n\n.uiOptionButton,\n.uiOptionLink {\n\t@extend .uiOptionBase;\n\n\tflex: 1 1 0;\n\tmin-width: 0;\n\theight: 100%;\n\tpadding: var(--space-xs) var(--space-sm);\n\tborder: none;\n\tborder-radius: inherit;\n\toutline: none;\n\tbackground: transparent;\n\tcolor: inherit;\n\tcursor: inherit;\n\ttext-decoration: none;\n}\n\n.uiPopupOptionSeparator {\n\tborder-top: var(--border);\n\tmargin-block: var(--space-xs);\n}\n\n.uiPopupGroupLabel {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n\tfont-weight: 300;\n\ttext-transform: uppercase;\n\tfont-size: var(--font-size-sm);\n}\n\n.uiMenuOptionIcon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.uiOptionText {\n\t// font-size: var(--font-size-sm);\n\tflex: 1;\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.uiOptionCode {\n\t// font-size: var(--font-size-sm);\n\tfont-variant-numeric: tabular-nums;\n\tcolor: var(--content-1);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiOptionContentEmphasize {\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n}\n\n.uiToggleButtonContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\theight: 100%;\n\twidth: 100%;\n\n\ttransition-property: width;\n\ttransition-duration: var(--transition-fast);\n\ttransition-timing-function: cubic-bezier(1, 0, 0.5, 0.5);\n\n\t> button {\n\t\tbackground: transparent;\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\theight: var(--control-height);\n\t\twidth: var(--control-height);\n\t\tborder-radius: var(--radius-sm);\n\t\tflex: 0 0 var(--control-height);\n\t}\n\n\t// &[data-disabled] {\n\t// \tcursor: default;\n\t// \tpointer-events: none;\n\t// \topacity: var(--disabled-opacity);\n\t// }\n}\n\n.uiToggleButton {\n\tcolor: var(--content-2);\n\n\t&:hover {\n\t\tcolor: var(--content-0);\n\t}\n}\n\n.uiToggleIcon {\n\ttransition: transform var(--transition-fast) ease-in-out;\n\n\t&.uiToggleIconOpen {\n\t\ttransform: rotate(180deg);\n\t}\n}\n\n// TODO: пока в свалку стили для дата-подобных компонентов\n\n// Для компонентов, который не являются input, но выставляют себя за него\n.uiInputControlFake {\n\t@extend .uiInputControl;\n\n\twidth: 100%;\n\tpadding: 0 var(--space-sm);\n\tfont-size: var(--font-size-md);\n\n\tdisplay: flex;\n\talign-items: center;\n\n\tcursor: text;\n}\n\n.uiClearButton {\n\tcolor: var(--error-text);\n\n\t&:disabled {\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n}\n\n.uiButtonSeparator {\n\tborder-left: var(--border);\n\theight: calc(100% - var(--space-sm));\n}\n"],"mappings":""}
1
+ {"version":3,"file":"ui.module-oRwY3Zli.js","names":[],"sources":["../../src/ui.module.scss"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n@use \"@/styles/tone-derived\" as toneDerived;\n\n.uiSizable {\n\t--base-width: 100%;\n\n\twidth: var(--base-width);\n\n\t&.xs {\n\t\t--base-width: calc(var(--drp-ui-width-xs, var(--ui-width-xs)) - var(--width-add));\n\t}\n\n\t&.sm {\n\t\t--base-width: calc(var(--drp-ui-width-sm, var(--ui-width-sm)) - var(--width-add));\n\t}\n\n\t&.md {\n\t\t--base-width: calc(var(--drp-ui-width-md, var(--ui-width-md)) - var(--width-add));\n\t}\n\n\t&.lg {\n\t\t--base-width: calc(var(--drp-ui-width-lg, var(--ui-width-lg)) - var(--width-add));\n\t}\n\n\t&.xl {\n\t\t--base-width: calc(var(--drp-ui-width-xl, var(--ui-width-xl)) - var(--width-add));\n\t}\n}\n\n// TODO: Тестовый класс\n.uiErrorElement {\n\t--grid-size: var(--space-sm);\n\t--grid-line-size: var(--border-width);\n\t@include toneDerived.tone-soft-declaration(\"--grid-line-color\", \"error\");\n\n\theight: var(--control-height);\n\twidth: 100%; // calc(10em - var(--width-add));\n\tflex-shrink: 0;\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\tborder: var(--focus-width) solid var(--error-border);\n\tborder-radius: var(--radius-sm);\n\toutline: none;\n\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tcolor: var(--error-text);\n\tbackground-color: var(--surface-0);\n\tbackground-image:\n\t\trepeating-linear-gradient(\n\t\t\t45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t),\n\t\trepeating-linear-gradient(\n\t\t\t-45deg,\n\t\t\tvar(--grid-line-color) 0 var(--grid-line-size),\n\t\t\ttransparent var(--grid-line-size) var(--grid-size)\n\t\t);\n}\n\n.uiContainer {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.uiInputContainer {\n\t@extend .uiContainer;\n\n\t--padding-right: var(--control-height);\n}\n\n.uiLabelBase {\n\tdisplay: inline-block;\n\tfont-weight: 400;\n\tfont-variation-settings: \"wght\" 400;\n}\n\n.uiLabel {\n\t@extend .uiLabelBase;\n\n\tmargin-block: var(--space-xs);\n}\n\n.uiDescription {\n\t--paragraph-margin: 0;\n\n\tpadding-bottom: var(--space-xs);\n\tcolor: var(--content-1);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiLabel,\n.uiDescription {\n\tmargin-inline: var(--space-xs);\n}\n\n.uiPlaceholder {\n\tcolor: var(--content-2);\n\tfont-weight: 100;\n\tfont-variation-settings: \"wght\" 100;\n\t// font-size: var(--font-size-sm);\n\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.required {\n\t.uiLabelBase::after {\n\t\tcontent: \" *\";\n\t\tcolor: var(--error-text);\n\t}\n}\n\n.uiControl {\n\t@include ui-tone(\"neutral\");\n\t@include ui-appearance-outline;\n\t@include ui-control-base;\n\n\t--ui-radius: var(--radius-sm);\n\n\t&.invalid,\n\t&:invalid {\n\t\t@include ui-tone(\"error\");\n\t\t@include ui-appearance-outline;\n\t}\n\n\t&::placeholder {\n\t\t@extend .uiPlaceholder;\n\t}\n}\n\n.uiToneNeutral {\n\t@include ui-tone(\"neutral\");\n}\n\n.uiToneAccent {\n\t@include ui-tone(\"accent\");\n}\n\n.uiToneBrand {\n\t@include ui-tone(\"brand\");\n}\n\n.uiToneError {\n\t@include ui-tone(\"error\");\n}\n\n.uiToneWarning {\n\t@include ui-tone(\"warning\");\n}\n\n.uiToneSuccess {\n\t@include ui-tone(\"success\");\n}\n\n.uiToneInfo {\n\t@include ui-tone(\"info\");\n}\n\n.uiAppearanceSolid {\n\t@include ui-appearance-solid;\n}\n\n.uiAppearanceOutline {\n\t@include ui-appearance-outline;\n}\n\n.uiAppearanceGhost {\n\t@include ui-appearance-ghost;\n}\n\n.uiAppearanceTransparent {\n\t@include ui-appearance-transparent;\n}\n\n.uiInputControl {\n\t@extend .uiControl;\n\n\theight: var(--control-height);\n}\n\n.uiInputWithToggle {\n\t@extend .uiInputControl;\n\n\tcolor: var(--content-0);\n\n\tpadding: 0 var(--padding-right) 0 var(--space-sm);\n\twidth: 100%;\n\ttext-align: left;\n\n\t// &[type=\"button\"] {\n\t// \twhite-space: nowrap;\n\t// }\n}\n\n.uiSelectionControl {\n\t@include ui-control-base;\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n\t--ui-background: var(--surface-0);\n\t--ui-background-hover: var(--ui-tone-soft);\n\t--ui-background-active: var(--ui-tone-soft);\n\t--ui-border-color: var(--ui-tone-border);\n\t--ui-border-hover: var(--ui-tone-border-hover);\n\t--ui-border-active: var(--ui-tone-border-active);\n\t--ui-border-focus: var(--ui-tone-border-focus);\n\n\tappearance: none;\n\tmargin: 0;\n\tcursor: pointer;\n\n\t&:checked {\n\t\tborder-color: var(--ui-tone-border-active);\n\n\t\t& + .uiSelectionIcon {\n\t\t\tcolor: var(--ui-tone-text);\n\t\t}\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\n\t\tborder-color: var(--border-0);\n\n\t\t&:checked {\n\t\t\t& + .uiSelectionIcon {\n\t\t\t\tcolor: var(--border-0);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.uiSelectionIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tpointer-events: none;\n\tcolor: transparent;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\topacity var(--transition-fast) ease;\n}\n\n.uiElement,\n.uiPopupOption {\n\t&.disabled,\n\t&:disabled {\n\t\tuser-select: none;\n\n\t\t.uiLabel,\n\t\t.uiDescription {\n\t\t\tcolor: var(--content-2);\n\t\t}\n\n\t\t.uiPlaceholder,\n\t\t.uiOptionText,\n\t\t.uiOptionCode {\n\t\t\topacity: 0.25;\n\t\t}\n\t}\n\n\t// Класс disabled используется у составных ненативных элементов: им нужно явно запретить события.\n\t&.disabled {\n\t\tcursor: default;\n\t\tpointer-events: none;\n\t}\n\n\t// Нативный disabled уже блокирует активацию, а pointer-events остаются для курсора и tooltip.\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t}\n}\n\n.uiPanelTonePrimary {\n\t--ui-panel-background: var(--surface-0);\n}\n\n.uiPanelToneSecondary {\n\t--ui-panel-background: var(--surface-1);\n}\n\n.uiPanelToneTertiary {\n\t--ui-panel-background: var(--surface-2);\n}\n\n.uiFilledPanel {\n\tbackground-color: var(--ui-panel-background, var(--surface-0));\n}\n\n.uiFramedPanel {\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: var(--space-sm);\n}\n\n.uiPanel {\n\t@extend .uiFramedPanel;\n\t@extend .uiFilledPanel;\n}\n\n.uiStateFocus {\n\t@include focusVisible;\n\n\tbackground-color: var(--surface-1);\n\tborder-color: var(--border-1);\n\tcursor: pointer;\n}\n\n.uiOptionBase {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tgap: var(--space-sm);\n\theight: 100%;\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.uiPopupOption {\n\t@extend .uiOptionBase;\n\n\theight: auto;\n\tmin-height: var(--control-height);\n}\n\n.uiPopupOption {\n\tborder-radius: var(--radius-sm);\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: var(--content-0);\n\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t.uiMenuOptionIcon,\n\t.uiPopupOptionIcon {\n\t\tflex-shrink: 0;\n\t\tfont-size: var(--font-size-sm);\n\t\twidth: var(--icon-size);\n\t\theight: var(--icon-size);\n\t}\n\n\t.uiMenuOptionIcon,\n\t.keyboard {\n\t\tcolor: var(--content-2);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--accent-on-fill);\n\t\tbackground-color: var(--accent-fill);\n\t\tcursor: default;\n\n\t\t// Вторичный код должен сохранять контраст выбранной строки, а не брать приглушённый content-цвет.\n\t\t.uiOptionCode {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t@include hover(true, false) {\n\t\tcolor: var(--accent-text-hover);\n\t\tbackground-color: var(--accent-fill-hover);\n\t\tcursor: pointer;\n\t}\n\n\t// Active идёт после hover, чтобы нажатие не теряло своё состояние у мыши и touch-устройств.\n\t&.uiPopupOptionActive,\n\t&:active {\n\t\tcolor: var(--accent-text-active);\n\t\tbackground-color: var(--accent-fill-active);\n\n\t\t.uiOptionCode {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t&.disabled {\n\t\t// background-color: var(--surface-2);\n\t\tcolor: var(--content-2);\n\t}\n\n\t&:focus-within {\n\t\t// @extend .uiStateFocus;\n\t\t@include focusVisible;\n\t}\n}\n\n.uiOptionButton,\n.uiOptionLink {\n\t@extend .uiOptionBase;\n\n\tflex: 1 1 0;\n\tmin-width: 0;\n\theight: 100%;\n\tpadding: var(--space-xs) var(--space-sm);\n\tborder: none;\n\tborder-radius: inherit;\n\toutline: none;\n\tbackground: transparent;\n\tcolor: inherit;\n\tcursor: inherit;\n\ttext-decoration: none;\n}\n\n.uiPopupOptionSeparator {\n\tborder-top: var(--border);\n\tmargin-block: var(--space-xs);\n}\n\n.uiPopupGroupLabel {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n\tfont-weight: 300;\n\ttext-transform: uppercase;\n\tfont-size: var(--font-size-sm);\n}\n\n.uiMenuOptionIcon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.uiOptionText {\n\t// font-size: var(--font-size-sm);\n\tflex: 1;\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.uiOptionCode {\n\t// font-size: var(--font-size-sm);\n\tfont-variant-numeric: tabular-nums;\n\tcolor: var(--content-1);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n}\n\n.uiOptionContentEmphasize {\n\tfont-weight: 600;\n\tfont-variation-settings: \"wght\" 600;\n}\n\n.uiToggleButtonContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\theight: 100%;\n\twidth: 100%;\n\n\ttransition-property: width;\n\ttransition-duration: var(--transition-fast);\n\ttransition-timing-function: cubic-bezier(1, 0, 0.5, 0.5);\n\n\t> button {\n\t\tbackground: transparent;\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\theight: var(--control-height);\n\t\twidth: var(--control-height);\n\t\tborder-radius: var(--radius-sm);\n\t\tflex: 0 0 var(--control-height);\n\t}\n\n\t// &[data-disabled] {\n\t// \tcursor: default;\n\t// \tpointer-events: none;\n\t// \topacity: var(--disabled-opacity);\n\t// }\n}\n\n.uiToggleButton {\n\tcolor: var(--content-2);\n\n\t&:hover {\n\t\tcolor: var(--content-0);\n\t}\n}\n\n.uiToggleIcon {\n\ttransition: transform var(--transition-fast) ease-in-out;\n\n\t&.uiToggleIconOpen {\n\t\ttransform: rotate(180deg);\n\t}\n}\n\n// TODO: пока в свалку стили для дата-подобных компонентов\n\n// Для компонентов, который не являются input, но выставляют себя за него\n.uiInputControlFake {\n\t@extend .uiInputControl;\n\n\twidth: 100%;\n\tpadding: 0 var(--space-sm);\n\tfont-size: var(--font-size-md);\n\n\tdisplay: flex;\n\talign-items: center;\n\n\tcursor: text;\n}\n\n.uiClearButton {\n\tcolor: var(--error-text);\n\n\t&:disabled {\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n}\n\n.uiButtonSeparator {\n\tborder-left: var(--border);\n\theight: calc(100% - var(--space-sm));\n}\n"],"mappings":""}
@@ -94,7 +94,9 @@ function ce({ option: e, index: t, listId: n, activeIndex: r, selectedKeys: i, q
94
94
  children: [/* @__PURE__ */ x("div", {
95
95
  role: "gridcell",
96
96
  className: O.optionCheckBox,
97
- onMouseDown: (e) => e.stopPropagation(),
97
+ onMouseDown: (e) => {
98
+ e.preventDefault(), e.stopPropagation();
99
+ },
98
100
  onClick: (e) => e.stopPropagation(),
99
101
  children: /* @__PURE__ */ x(h, {
100
102
  value: y,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/multi-select/lib/materializeMultiSelectOptions.ts","../../src/multi-select/lib/adaptLegacyMultiSelectContext.ts","../../src/multi-select/lib/resolveLegacyMultiSelectTextKey.ts","../../src/multi-select/lib/multiSelectSelection.ts","../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/lib/createMultiSelectOptionSections.ts","../../src/multi-select/ui/MultiSelectOptionRow.tsx","../../src/multi-select/ui/MultiSelectOptionList.tsx","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelectOptionsWrapper.tsx","../../src/multi-select/ui/MultiSelectCore.tsx","../../src/multi-select/ui/DeprecatedMultiSelect.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":["/**\n * Создаёт mutable-снимок readonly options. Сохранение ссылки включается только\n * legacy-адаптером, чей опубликованный callback-контракт исторически mutable.\n */\nexport function materializeMultiSelectOptions<TOption>(options: readonly TOption[], preserveArrayReference = false): TOption[] {\n\tif (preserveArrayReference && Array.isArray(options)) {\n\t\treturn options;\n\t}\n\n\treturn [...options];\n}\n","import { type CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { type DeprecatedMultiSelectOptionDisableContext, type DeprecatedMultiSelectRenderContext } from \"../ui/legacyMultiSelectTypes\";\nimport {\n\ttype MultiSelectOptionDisableContext,\n\ttype MultiSelectRenderContext as GenericMultiSelectRenderContext\n} from \"../ui/multiSelectTypes\";\n\nimport { materializeMultiSelectOptions } from \"./materializeMultiSelectOptions\";\n\n/** Преобразует generic render-context в опубликованный legacy-контракт. */\nexport function adaptLegacyMultiSelectRenderContext(\n\tcontext: GenericMultiSelectRenderContext<CollectionItem>\n): DeprecatedMultiSelectRenderContext {\n\treturn {\n\t\tselectedItems: materializeMultiSelectOptions(context.selectedOptions, true),\n\t\tcommittedSelectedItems: materializeMultiSelectOptions(context.committedSelectedOptions, true),\n\t\tavailableItems: materializeMultiSelectOptions(context.availableOptions, true),\n\t\tquery: context.query,\n\t\topen: context.open,\n\t\tclearSelection: context.clearSelection,\n\t\tselectAll: context.selectAll,\n\t\tdeselectAll: context.deselectAll\n\t};\n}\n\n/** Преобразует generic disable-context без изменения identity выбранных элементов. */\nexport function adaptLegacyMultiSelectOptionDisableContext(\n\tcontext: MultiSelectOptionDisableContext<CollectionItem>\n): DeprecatedMultiSelectOptionDisableContext {\n\treturn {\n\t\tselectedItems: materializeMultiSelectOptions(context.selectedOptions, true),\n\t\tcommittedSelectedItems: materializeMultiSelectOptions(context.committedSelectedOptions, true),\n\t\tselectedKeys: context.selectedKeys,\n\t\topen: context.open\n\t};\n}\n","import { type CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\n/** Сохраняет исходное правило вывода textKey для legacy code/text API. */\nexport function resolveLegacyMultiSelectTextKey(items: readonly CollectionItem[], codeKey: string, textKey?: string) {\n\tif (textKey) {\n\t\treturn textKey;\n\t}\n\n\tconst sampleItem = items[0];\n\n\tif (!sampleItem) {\n\t\treturn codeKey;\n\t}\n\n\treturn Object.keys(sampleItem).find((key) => key !== codeKey) ?? codeKey;\n}\n","import { type MultiSelectOptionKey } from \"../ui/multiSelectTypes\";\n\n/** Сравнивает наборы выбора по identity опций, не связывая их с object reference. */\nexport function areMultiSelectSelectionsEqual<TOption>(\n\tleft: readonly TOption[],\n\tright: readonly TOption[],\n\tgetOptionKey: (option: TOption) => MultiSelectOptionKey\n): boolean {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map(getOptionKey));\n\n\treturn left.every((option) => rightKeys.has(getOptionKey(option)));\n}\n","@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 { type MultiSelectOptionGroup } from \"../ui/multiSelectTypes\";\n\nexport type MultiSelectOptionEntry<TOption> = Readonly<{\n\toption: TOption;\n\tindex: number;\n}>;\n\nexport type MultiSelectOptionSection<TOption> = Readonly<{\n\tgroup: MultiSelectOptionGroup | undefined;\n\tentries: readonly MultiSelectOptionEntry<TOption>[];\n}>;\n\n/**\n * Группирует только соседние опции и сохраняет их глобальные индексы. Благодаря\n * этому визуальные заголовки не попадают в active-index клавиатурной навигации.\n */\nexport function createMultiSelectOptionSections<TOption>(\n\tentries: readonly MultiSelectOptionEntry<TOption>[],\n\tgetOptionGroup: (option: TOption) => MultiSelectOptionGroup | undefined\n): readonly MultiSelectOptionSection<TOption>[] {\n\tconst sections: Array<{\n\t\tgroup: MultiSelectOptionGroup | undefined;\n\t\tentries: MultiSelectOptionEntry<TOption>[];\n\t}> = [];\n\n\tfor (const entry of entries) {\n\t\tconst group = getOptionGroup(entry.option);\n\t\tconst currentSection = sections.at(-1);\n\t\tconst belongsToCurrentSection = currentSection?.group?.key === group?.key;\n\n\t\tif (currentSection && belongsToCurrentSection) {\n\t\t\tcurrentSection.entries.push(entry);\n\t\t\tcontinue;\n\t\t}\n\n\t\tsections.push({ group, entries: [entry] });\n\t}\n\n\treturn sections;\n}\n","import { CheckBox } from \"../../check-box\";\nimport { Option, OptionButton } from \"../../option\";\n\nimport styles from \"./MultiSelect.module.scss\";\nimport { type MultiSelectOptionContent, type MultiSelectOptionKey, type MultiSelectOptionState } from \"./multiSelectTypes\";\n\ntype MultiSelectOptionRowProps<TOption> = Readonly<{\n\toption: TOption;\n\tindex: number;\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: ReadonlySet<MultiSelectOptionKey>;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionKey: (option: TOption) => MultiSelectOptionKey;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (option: TOption) => void;\n\tselectOnlyOption: (option: TOption) => void;\n\trenderOption: (option: TOption, state: MultiSelectOptionState) => MultiSelectOptionContent;\n}>;\n\n/** Одна интерактивная строка grid: checkbox меняет draft, основная кнопка подтверждает только эту опцию. */\nexport function MultiSelectOptionRow<TOption>({\n\toption,\n\tindex,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tquery,\n\thighlightQuery,\n\tgetOptionKey,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderOption\n}: MultiSelectOptionRowProps<TOption>) {\n\tconst active = index === activeIndex;\n\tconst optionKey = getOptionKey(option);\n\tconst selected = selectedKeys.has(optionKey);\n\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\tconst content = renderOption(option, { selected, active, disabled: optionDisabled, query, highlightQuery });\n\n\treturn (\n\t\t<Option\n\t\t\tid={getOptionId(listId, index)}\n\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\trole=\"row\"\n\t\t\taria-selected={selected}\n\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\tselected={selected}\n\t\t\tactive={active}\n\t\t\tdisabled={optionDisabled}>\n\t\t\t<div\n\t\t\t\trole=\"gridcell\"\n\t\t\t\tclassName={styles.optionCheckBox}\n\t\t\t\tonMouseDown={(event) => event.stopPropagation()}\n\t\t\t\tonClick={(event) => event.stopPropagation()}>\n\t\t\t\t<CheckBox\n\t\t\t\t\tvalue={selected}\n\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\taria-label={`${selected ? \"Убрать\" : \"Добавить\"} «${content.text}» ${selected ? \"из выбора\" : \"в выбор\"}`}\n\t\t\t\t\tonChange={() => toggleOption(option)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div role=\"gridcell\" className={styles.optionActionCell}>\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\taria-label={`Выбрать только «${content.text}»`}\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(option)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Option>\n\t);\n}\n","import { Fragment } from \"react\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport { createMultiSelectOptionSections, type MultiSelectOptionEntry } from \"../lib/createMultiSelectOptionSections\";\n\nimport { MultiSelectOptionRow } from \"./MultiSelectOptionRow\";\nimport {\n\ttype MultiSelectOptionContent,\n\ttype MultiSelectOptionGroup,\n\ttype MultiSelectOptionKey,\n\ttype MultiSelectOptionState\n} from \"./multiSelectTypes\";\n\ntype MultiSelectOptionListProps<TOption> = Readonly<{\n\tentries: readonly MultiSelectOptionEntry<TOption>[];\n\tsectionId: string;\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: ReadonlySet<MultiSelectOptionKey>;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionKey: (option: TOption) => MultiSelectOptionKey;\n\tgetOptionGroup?: (option: TOption) => MultiSelectOptionGroup | undefined;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (option: TOption) => void;\n\tselectOnlyOption: (option: TOption) => void;\n\trenderOption: (option: TOption, state: MultiSelectOptionState) => MultiSelectOptionContent;\n}>;\n\n/** Рендерит одну selected/available-секцию, сохраняя global option indexes при группировке. */\nexport function MultiSelectOptionList<TOption>({ entries, sectionId, getOptionGroup, ...rowProps }: MultiSelectOptionListProps<TOption>) {\n\tconst sections = getOptionGroup ? createMultiSelectOptionSections(entries, getOptionGroup) : [{ group: undefined, entries }];\n\n\treturn sections.map((section, sectionIndex) => {\n\t\tconst rows = section.entries.map(({ option, index }) => (\n\t\t\t<MultiSelectOptionRow key={`${rowProps.getOptionKey(option)}-${index}`} option={option} index={index} {...rowProps} />\n\t\t));\n\n\t\tif (!section.group) {\n\t\t\treturn <Fragment key={`${sectionId}-ungrouped-${sectionIndex}`}>{rows}</Fragment>;\n\t\t}\n\n\t\tconst groupLabelId = `${sectionId}-group-${sectionIndex}`;\n\n\t\treturn (\n\t\t\t<div key={`${sectionId}-${section.group.key}-${sectionIndex}`} role=\"rowgroup\" aria-labelledby={groupLabelId}>\n\t\t\t\t<div id={groupLabelId} role=\"row\" className={uiStyles.uiPopupGroupLabel}>\n\t\t\t\t\t<div role=\"gridcell\">{section.group.label}</div>\n\t\t\t\t</div>\n\t\t\t\t{rows}\n\t\t\t</div>\n\t\t);\n\t});\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 { type PropsWithChildren } from \"react\";\n\nimport { PickerStatus } from \"../../picker\";\n\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\ntype MultiSelectOptionsWrapperProps = PropsWithChildren<{\n\tisNoData?: boolean;\n\terror?: string;\n}>;\n\n/** Выбирает одно доступное состояние тела popup, не меняя структуру самого grid. */\nexport function MultiSelectOptionsWrapper({ isNoData, error, children }: MultiSelectOptionsWrapperProps) {\n\tif (isNoData) {\n\t\treturn <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\t}\n\n\tif (error) {\n\t\treturn <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\t}\n\n\treturn <>{children}</>;\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerTrigger,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { formatMultiSelectOptionCount } from \"../lib/formatMultiSelectOptionCount\";\nimport { materializeMultiSelectOptions } from \"../lib/materializeMultiSelectOptions\";\nimport { areMultiSelectSelectionsEqual } from \"../lib/multiSelectSelection\";\n\nimport { type MultiSelectProps } from \"./MultiSelect\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionList } from \"./MultiSelectOptionList\";\nimport { MultiSelectOptionsWrapper } from \"./MultiSelectOptionsWrapper\";\nimport { type MultiSelectOptionDisableContext } from \"./multiSelectTypes\";\n\ntype MultiSelectCoreProps<TOption> = MultiSelectProps<TOption> &\n\tReadonly<{\n\t\t/** Сохраняет опубликованную ссылочную семантику только для legacy MultiSelect. */\n\t\tpreserveOptionArrayReference?: boolean;\n\t}>;\n\n/**\n * Единая generic-реализация множественного выбора. Публичные компоненты только\n * адаптируют свои контракты к этим selector-функциям, поэтому focus и a11y\n * поведение не расходятся между новым и legacy API.\n */\nexport function MultiSelectCore<TOption>({\n\tref,\n\toptions,\n\tvalue,\n\tonChange,\n\tgetOptionKey,\n\tgetOptionLabel,\n\tgetOptionCode,\n\tgetOptionGroup,\n\tgetOptionSearchText,\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\trenderOption,\n\tpreserveOptionArrayReference = false\n}: MultiSelectCoreProps<TOption>) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = \"search-multi\";\n\tconst committedSelectedOptions = useMemo(\n\t\t() => materializeMultiSelectOptions(value, preserveOptionArrayReference),\n\t\t[preserveOptionArrayReference, value]\n\t);\n\tconst committedSelectedKeys = useMemo(\n\t\t() => new Set(committedSelectedOptions.map(getOptionKey)),\n\t\t[committedSelectedOptions, getOptionKey]\n\t);\n\tconst availableOptions = useMemo(\n\t\t() => options.filter((option) => !committedSelectedKeys.has(getOptionKey(option))),\n\t\t[committedSelectedKeys, getOptionKey, options]\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 getSearchText = useCallback(\n\t\t(option: TOption) =>\n\t\t\tgetOptionSearchText?.(option) ??\n\t\t\t[getOptionLabel(option), getOptionCode?.(option), extractPickerTextContent(getOptionGroup?.(option)?.label)].filter(\n\t\t\t\t(part): part is string => Boolean(part)\n\t\t\t),\n\t\t[getOptionCode, getOptionGroup, getOptionLabel, getOptionSearchText]\n\t);\n\tconst filteredCommittedSelectedOptions = usePickerDefaultFilter({\n\t\toptions: committedSelectedOptions,\n\t\tquery: currentQuery,\n\t\tenabled: defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst filteredAvailableOptions = usePickerDefaultFilter({\n\t\toptions: availableOptions,\n\t\tquery: currentQuery,\n\t\tenabled: defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst visibleOptions = useMemo(\n\t\t() => [...filteredCommittedSelectedOptions, ...filteredAvailableOptions],\n\t\t[filteredAvailableOptions, filteredCommittedSelectedOptions]\n\t);\n\tconst selectedIndex = filteredCommittedSelectedOptions.length > 0 ? 0 : -1;\n\tconst compareSelections = useCallback(\n\t\t(left: TOption[], right: TOption[]) => areMultiSelectSelectionsEqual(left, right, getOptionKey),\n\t\t[getOptionKey]\n\t);\n\tconst {\n\t\tdraftValue: draftSelectedOptions,\n\t\tsetDraftValue: setDraftSelectedOptions,\n\t\tprepareOpen\n\t} = usePickerSelectionLifecycle({\n\t\tvalue: committedSelectedOptions,\n\t\topen,\n\t\tonCommit: onChange,\n\t\tonOpen,\n\t\tonClose,\n\t\tisEqual: compareSelections\n\t});\n\tconst selectedKeys = useMemo(() => new Set(draftSelectedOptions.map(getOptionKey)), [draftSelectedOptions, getOptionKey]);\n\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext<TOption>>(\n\t\t() => ({\n\t\t\tselectedOptions: draftSelectedOptions,\n\t\t\tcommittedSelectedOptions,\n\t\t\tselectedKeys,\n\t\t\topen\n\t\t}),\n\t\t[committedSelectedOptions, draftSelectedOptions, open, selectedKeys]\n\t);\n\tconst isOptionDisabled = useCallback(\n\t\t(option: TOption) => getOptionDisabled?.(option, 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 = (option: TOption) => {\n\t\tconst optionKey = getOptionKey(option);\n\n\t\tsetDraftSelectedOptions((currentOptions) => {\n\t\t\tconst isSelected = currentOptions.some((selectedOption) => getOptionKey(selectedOption) === optionKey);\n\n\t\t\tif (isSelected) {\n\t\t\t\treturn currentOptions.filter((selectedOption) => getOptionKey(selectedOption) !== optionKey);\n\t\t\t}\n\n\t\t\tif (isOptionDisabled(option)) {\n\t\t\t\treturn currentOptions;\n\t\t\t}\n\n\t\t\treturn [...currentOptions, option];\n\t\t});\n\t};\n\n\tconst setInputNode = useCallback(\n\t\t(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\t\t[ref]\n\t);\n\n\tconst clearSelection = () => {\n\t\tsetDraftSelectedOptions([]);\n\n\t\tif (!open) {\n\t\t\tonChange([]);\n\t\t}\n\t};\n\n\tconst selectAll = () => {\n\t\tsetDraftSelectedOptions((currentOptions) => {\n\t\t\tconst nextOptions = [...currentOptions];\n\t\t\tconst nextSelectedKeys = new Set(currentOptions.map(getOptionKey));\n\n\t\t\tfor (const option of visibleOptions) {\n\t\t\t\tconst optionKey = getOptionKey(option);\n\n\t\t\t\tif (!nextSelectedKeys.has(optionKey) && !isOptionDisabled(option)) {\n\t\t\t\t\tnextSelectedKeys.add(optionKey);\n\t\t\t\t\tnextOptions.push(option);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nextOptions;\n\t\t});\n\t};\n\n\tconst deselectAll = () => {\n\t\tsetDraftSelectedOptions([]);\n\t};\n\n\tconst selectOnlyOption = (option: TOption) => {\n\t\tif (isOptionDisabled(option)) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetDraftSelectedOptions([option]);\n\t\tclose();\n\t};\n\n\tconst currentSelectedOptions = open ? draftSelectedOptions : committedSelectedOptions;\n\tconst hasSelectedOptions = currentSelectedOptions.length > 0;\n\tconst renderContext = {\n\t\tselectedOptions: currentSelectedOptions,\n\t\tcommittedSelectedOptions,\n\t\tavailableOptions: filteredAvailableOptions,\n\t\tquery: currentQuery,\n\t\topen,\n\t\tclearSelection,\n\t\tselectAll,\n\t\tdeselectAll\n\t};\n\tconst defaultTokenNode =\n\t\tcurrentSelectedOptions.length > 1\n\t\t\t? formatMultiSelectOptionCount(currentSelectedOptions.length)\n\t\t\t: currentSelectedOptions.length === 1\n\t\t\t\t? getOptionLabel(currentSelectedOptions[0])\n\t\t\t\t: undefined;\n\tconst tokenNode = renderToken === undefined ? defaultTokenNode : typeof renderToken === \"function\" ? renderToken(renderContext) : null;\n\tconst toolbarNode = typeof renderToolbar === \"function\" ? renderToolbar(renderContext) : renderToolbar;\n\tconst renderDefaultOption = useCallback(\n\t\t(option: TOption) => ({ text: getOptionLabel(option), code: getOptionCode?.(option) }),\n\t\t[getOptionCode, getOptionLabel]\n\t);\n\tconst optionRenderer = renderOption ?? renderDefaultOption;\n\tconst selectedEntries = filteredCommittedSelectedOptions.map((option, index) => ({ option, index }));\n\tconst availableEntries = filteredAvailableOptions.map((option, index) => ({\n\t\toption,\n\t\tindex: index + selectedEntries.length\n\t}));\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={options.length}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\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={hasSelectedOptions}\n\t\t\t\t\t\t\tshowSelectedValue={hasSelectedOptions && 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 activeOption = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\tif (activeIndex >= 0 && activeIndex < visibleOptions.length) {\n\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeOption);\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 activeOption = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\tif (activeIndex >= 0 && activeIndex < visibleOptions.length) {\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption(activeOption);\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<MultiSelectOptionList\n\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\tsectionId={`${listId}-selected`}\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\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\tgetOptionKey={getOptionKey}\n\t\t\t\t\t\t\t\t\t\tgetOptionGroup={getOptionGroup}\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\trenderOption={optionRenderer}\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableEntries.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<MultiSelectOptionList\n\t\t\t\t\t\t\t\t\t\tentries={availableEntries}\n\t\t\t\t\t\t\t\t\t\tsectionId={`${listId}-available`}\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\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\tgetOptionKey={getOptionKey}\n\t\t\t\t\t\t\t\t\t\tgetOptionGroup={getOptionGroup}\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\trenderOption={optionRenderer}\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","import { type ReactNode, type Ref, useMemo } from \"react\";\n\nimport { type CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { type UiBaseProps } from \"../../types\";\nimport { adaptLegacyMultiSelectOptionDisableContext, adaptLegacyMultiSelectRenderContext } from \"../lib/adaptLegacyMultiSelectContext\";\nimport { resolveLegacyMultiSelectTextKey } from \"../lib/resolveLegacyMultiSelectTextKey\";\n\nimport {\n\ttype DeprecatedMultiSelectItemState,\n\ttype DeprecatedMultiSelectOptionContent,\n\ttype DeprecatedMultiSelectOptionDisableContext,\n\ttype DeprecatedMultiSelectRenderContext\n} from \"./legacyMultiSelectTypes\";\nimport { MultiSelectCore } from \"./MultiSelectCore\";\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<DeprecatedMultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<DeprecatedMultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: DeprecatedMultiSelectItemState) => DeprecatedMultiSelectOptionContent;\n}\n\n/** Контракт устаревшего codeKey/textKey-компонента. */\nexport interface DeprecatedMultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tref?: Ref<HTMLInputElement>;\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: DeprecatedMultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\n/**\n * Устаревший адаптер OData-подобных `codeKey`/`textKey` коллекций. Компонент\n * сохраняет прежнюю OData-семантику, пока consumers переходят на selector API\n * канонического `MultiSelect`.\n *\n * @deprecated Используйте `MultiSelect` с selector-функциями.\n */\nexport function DeprecatedMultiSelect<TOption extends Record<string, string> = CollectionItem>({\n\tref,\n\tcodeKey,\n\ttextKey,\n\thideCode,\n\titems,\n\tvalue,\n\tonChange,\n\tgetOptionDisabled,\n\tonClose,\n\trenderToken,\n\trenderToolbar,\n\trenderItem,\n\t...props\n}: DeprecatedMultiSelectProps<TOption>) {\n\tconst selectedItems = useMemo(() => value ?? [], [value]);\n\tconst resolvedTextKey = useMemo(\n\t\t() => resolveLegacyMultiSelectTextKey([...selectedItems, ...items], codeKey, textKey),\n\t\t[codeKey, items, selectedItems, textKey]\n\t);\n\tconst adaptedRenderToken =\n\t\ttypeof renderToken === \"function\"\n\t\t\t? (context: Parameters<typeof adaptLegacyMultiSelectRenderContext>[0]) =>\n\t\t\t\t\trenderToken(adaptLegacyMultiSelectRenderContext(context))\n\t\t\t: renderToken;\n\tconst adaptedRenderToolbar =\n\t\ttypeof renderToolbar === \"function\"\n\t\t\t? (context: Parameters<typeof adaptLegacyMultiSelectRenderContext>[0]) =>\n\t\t\t\t\trenderToolbar(adaptLegacyMultiSelectRenderContext(context))\n\t\t\t: renderToolbar;\n\n\treturn (\n\t\t<MultiSelectCore\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t\tpreserveOptionArrayReference\n\t\t\toptions={items}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={onChange}\n\t\t\tgetOptionKey={(item) => item[codeKey]}\n\t\t\tgetOptionLabel={(item) => item[resolvedTextKey] ?? item[codeKey] ?? \"\"}\n\t\t\tgetOptionCode={hideCode ? undefined : (item) => item[codeKey] ?? \"\"}\n\t\t\tgetOptionSearchText={(item) => Array.from(new Set([item[resolvedTextKey], item[codeKey], ...Object.values(item)]))}\n\t\t\tgetOptionDisabled={\n\t\t\t\tgetOptionDisabled\n\t\t\t\t\t? (item, context) => getOptionDisabled(item, adaptLegacyMultiSelectOptionDisableContext(context))\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tonClose={onClose}\n\t\t\trenderToken={adaptedRenderToken}\n\t\t\trenderToolbar={adaptedRenderToolbar}\n\t\t\trenderOption={\n\t\t\t\trenderItem\n\t\t\t\t\t? (item, state) => renderItem(item, state)\n\t\t\t\t\t: (item) => ({\n\t\t\t\t\t\t\ttext: item[resolvedTextKey] ?? \"\",\n\t\t\t\t\t\t\tcode: hideCode ? undefined : (item[codeKey] ?? \"\")\n\t\t\t\t\t\t})\n\t\t\t}\n\t\t/>\n\t);\n}\n\nDeprecatedMultiSelect.displayName = \"DeprecatedMultiSelect\";\n\nexport {\n\ttype DeprecatedMultiSelectItemState,\n\ttype DeprecatedMultiSelectOptionContent,\n\ttype DeprecatedMultiSelectOptionDisableContext,\n\ttype DeprecatedMultiSelectRenderContext\n} from \"./legacyMultiSelectTypes\";\n","import { type Ref } from \"react\";\n\nimport { type UiBaseProps } from \"../../types\";\n\nimport { MultiSelectCore } from \"./MultiSelectCore\";\nimport {\n\ttype MultiSelectOptionDisableContext,\n\ttype MultiSelectOptionGroup,\n\ttype MultiSelectOptionKey,\n\ttype MultiSelectRenderers\n} from \"./multiSelectTypes\";\n\n/**\n * Типобезопасный контракт множественного выбора. Опция остаётся в исходной\n * domain/view-model форме, а UI получает только необходимые selector-функции.\n */\nexport type MultiSelectProps<TOption> = MultiSelectRenderers<TOption> &\n\tOmit<UiBaseProps<TOption[], readonly TOption[]>, \"onChange\"> &\n\tReadonly<{\n\t\tref?: Ref<HTMLInputElement>;\n\t\toptions: readonly TOption[];\n\t\tonChange: (value: TOption[]) => void;\n\t\tgetOptionKey: (option: TOption) => MultiSelectOptionKey;\n\t\tgetOptionLabel: (option: TOption) => string;\n\t\tgetOptionCode?: (option: TOption) => string | undefined;\n\t\tgetOptionGroup?: (option: TOption) => MultiSelectOptionGroup | undefined;\n\t\tgetOptionSearchText?: (option: TOption) => string | readonly string[];\n\t\tgetOptionDisabled?: (option: TOption, context: MultiSelectOptionDisableContext<TOption>) => boolean;\n\t\tquery?: string;\n\t\tdefaultQuery?: string;\n\t\thighlightQuery?: string;\n\t\tonQuery?: (value: string) => void;\n\t\tdefaultFilter?: boolean;\n\t\tonOpen?: () => void;\n\t\tonClose?: (value: TOption[]) => void;\n\t\terror?: string;\n\t\tisLoading?: boolean;\n\t}>;\n\n/** Множественный выбор для произвольной типизированной коллекции опций. */\nexport function MultiSelect<TOption>(props: MultiSelectProps<TOption>) {\n\treturn <MultiSelectCore {...props} />;\n}\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 { DeprecatedMultiSelect } from \"./DeprecatedMultiSelect\";\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<DeprecatedMultiSelect\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 { DeprecatedMultiSelect } from \"./DeprecatedMultiSelect\";\n\nimport type { UiBaseProps } from \"../../types\";\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\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<DeprecatedMultiSelect\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/lib/materializeMultiSelectOptions.ts","../../src/multi-select/lib/adaptLegacyMultiSelectContext.ts","../../src/multi-select/lib/resolveLegacyMultiSelectTextKey.ts","../../src/multi-select/lib/multiSelectSelection.ts","../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/lib/createMultiSelectOptionSections.ts","../../src/multi-select/ui/MultiSelectOptionRow.tsx","../../src/multi-select/ui/MultiSelectOptionList.tsx","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelectOptionsWrapper.tsx","../../src/multi-select/ui/MultiSelectCore.tsx","../../src/multi-select/ui/DeprecatedMultiSelect.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":["/**\n * Создаёт mutable-снимок readonly options. Сохранение ссылки включается только\n * legacy-адаптером, чей опубликованный callback-контракт исторически mutable.\n */\nexport function materializeMultiSelectOptions<TOption>(options: readonly TOption[], preserveArrayReference = false): TOption[] {\n\tif (preserveArrayReference && Array.isArray(options)) {\n\t\treturn options;\n\t}\n\n\treturn [...options];\n}\n","import { type CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { type DeprecatedMultiSelectOptionDisableContext, type DeprecatedMultiSelectRenderContext } from \"../ui/legacyMultiSelectTypes\";\nimport {\n\ttype MultiSelectOptionDisableContext,\n\ttype MultiSelectRenderContext as GenericMultiSelectRenderContext\n} from \"../ui/multiSelectTypes\";\n\nimport { materializeMultiSelectOptions } from \"./materializeMultiSelectOptions\";\n\n/** Преобразует generic render-context в опубликованный legacy-контракт. */\nexport function adaptLegacyMultiSelectRenderContext(\n\tcontext: GenericMultiSelectRenderContext<CollectionItem>\n): DeprecatedMultiSelectRenderContext {\n\treturn {\n\t\tselectedItems: materializeMultiSelectOptions(context.selectedOptions, true),\n\t\tcommittedSelectedItems: materializeMultiSelectOptions(context.committedSelectedOptions, true),\n\t\tavailableItems: materializeMultiSelectOptions(context.availableOptions, true),\n\t\tquery: context.query,\n\t\topen: context.open,\n\t\tclearSelection: context.clearSelection,\n\t\tselectAll: context.selectAll,\n\t\tdeselectAll: context.deselectAll\n\t};\n}\n\n/** Преобразует generic disable-context без изменения identity выбранных элементов. */\nexport function adaptLegacyMultiSelectOptionDisableContext(\n\tcontext: MultiSelectOptionDisableContext<CollectionItem>\n): DeprecatedMultiSelectOptionDisableContext {\n\treturn {\n\t\tselectedItems: materializeMultiSelectOptions(context.selectedOptions, true),\n\t\tcommittedSelectedItems: materializeMultiSelectOptions(context.committedSelectedOptions, true),\n\t\tselectedKeys: context.selectedKeys,\n\t\topen: context.open\n\t};\n}\n","import { type CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\n/** Сохраняет исходное правило вывода textKey для legacy code/text API. */\nexport function resolveLegacyMultiSelectTextKey(items: readonly CollectionItem[], codeKey: string, textKey?: string) {\n\tif (textKey) {\n\t\treturn textKey;\n\t}\n\n\tconst sampleItem = items[0];\n\n\tif (!sampleItem) {\n\t\treturn codeKey;\n\t}\n\n\treturn Object.keys(sampleItem).find((key) => key !== codeKey) ?? codeKey;\n}\n","import { type MultiSelectOptionKey } from \"../ui/multiSelectTypes\";\n\n/** Сравнивает наборы выбора по identity опций, не связывая их с object reference. */\nexport function areMultiSelectSelectionsEqual<TOption>(\n\tleft: readonly TOption[],\n\tright: readonly TOption[],\n\tgetOptionKey: (option: TOption) => MultiSelectOptionKey\n): boolean {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map(getOptionKey));\n\n\treturn left.every((option) => rightKeys.has(getOptionKey(option)));\n}\n","@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 { type MultiSelectOptionGroup } from \"../ui/multiSelectTypes\";\n\nexport type MultiSelectOptionEntry<TOption> = Readonly<{\n\toption: TOption;\n\tindex: number;\n}>;\n\nexport type MultiSelectOptionSection<TOption> = Readonly<{\n\tgroup: MultiSelectOptionGroup | undefined;\n\tentries: readonly MultiSelectOptionEntry<TOption>[];\n}>;\n\n/**\n * Группирует только соседние опции и сохраняет их глобальные индексы. Благодаря\n * этому визуальные заголовки не попадают в active-index клавиатурной навигации.\n */\nexport function createMultiSelectOptionSections<TOption>(\n\tentries: readonly MultiSelectOptionEntry<TOption>[],\n\tgetOptionGroup: (option: TOption) => MultiSelectOptionGroup | undefined\n): readonly MultiSelectOptionSection<TOption>[] {\n\tconst sections: Array<{\n\t\tgroup: MultiSelectOptionGroup | undefined;\n\t\tentries: MultiSelectOptionEntry<TOption>[];\n\t}> = [];\n\n\tfor (const entry of entries) {\n\t\tconst group = getOptionGroup(entry.option);\n\t\tconst currentSection = sections.at(-1);\n\t\tconst belongsToCurrentSection = currentSection?.group?.key === group?.key;\n\n\t\tif (currentSection && belongsToCurrentSection) {\n\t\t\tcurrentSection.entries.push(entry);\n\t\t\tcontinue;\n\t\t}\n\n\t\tsections.push({ group, entries: [entry] });\n\t}\n\n\treturn sections;\n}\n","import { CheckBox } from \"../../check-box\";\nimport { Option, OptionButton } from \"../../option\";\n\nimport styles from \"./MultiSelect.module.scss\";\nimport { type MultiSelectOptionContent, type MultiSelectOptionKey, type MultiSelectOptionState } from \"./multiSelectTypes\";\n\ntype MultiSelectOptionRowProps<TOption> = Readonly<{\n\toption: TOption;\n\tindex: number;\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: ReadonlySet<MultiSelectOptionKey>;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionKey: (option: TOption) => MultiSelectOptionKey;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (option: TOption) => void;\n\tselectOnlyOption: (option: TOption) => void;\n\trenderOption: (option: TOption, state: MultiSelectOptionState) => MultiSelectOptionContent;\n}>;\n\n/** Одна интерактивная строка grid: checkbox меняет draft, основная кнопка подтверждает только эту опцию. */\nexport function MultiSelectOptionRow<TOption>({\n\toption,\n\tindex,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tquery,\n\thighlightQuery,\n\tgetOptionKey,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderOption\n}: MultiSelectOptionRowProps<TOption>) {\n\tconst active = index === activeIndex;\n\tconst optionKey = getOptionKey(option);\n\tconst selected = selectedKeys.has(optionKey);\n\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\tconst content = renderOption(option, { selected, active, disabled: optionDisabled, query, highlightQuery });\n\n\treturn (\n\t\t<Option\n\t\t\tid={getOptionId(listId, index)}\n\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\trole=\"row\"\n\t\t\taria-selected={selected}\n\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\tselected={selected}\n\t\t\tactive={active}\n\t\t\tdisabled={optionDisabled}>\n\t\t\t<div\n\t\t\t\trole=\"gridcell\"\n\t\t\t\tclassName={styles.optionCheckBox}\n\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Checkbox меняет draft мышью, но владельцем виртуального фокуса\n\t\t\t\t\t * остаётся combobox input с aria-activedescendant. Иначе браузер\n\t\t\t\t\t * переводит focus на input[type=checkbox] и разрывает навигацию строк.\n\t\t\t\t\t */\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}}\n\t\t\t\tonClick={(event) => event.stopPropagation()}>\n\t\t\t\t<CheckBox\n\t\t\t\t\tvalue={selected}\n\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\taria-label={`${selected ? \"Убрать\" : \"Добавить\"} «${content.text}» ${selected ? \"из выбора\" : \"в выбор\"}`}\n\t\t\t\t\tonChange={() => toggleOption(option)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div role=\"gridcell\" className={styles.optionActionCell}>\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\taria-label={`Выбрать только «${content.text}»`}\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(option)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Option>\n\t);\n}\n","import { Fragment } from \"react\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport { createMultiSelectOptionSections, type MultiSelectOptionEntry } from \"../lib/createMultiSelectOptionSections\";\n\nimport { MultiSelectOptionRow } from \"./MultiSelectOptionRow\";\nimport {\n\ttype MultiSelectOptionContent,\n\ttype MultiSelectOptionGroup,\n\ttype MultiSelectOptionKey,\n\ttype MultiSelectOptionState\n} from \"./multiSelectTypes\";\n\ntype MultiSelectOptionListProps<TOption> = Readonly<{\n\tentries: readonly MultiSelectOptionEntry<TOption>[];\n\tsectionId: string;\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: ReadonlySet<MultiSelectOptionKey>;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionKey: (option: TOption) => MultiSelectOptionKey;\n\tgetOptionGroup?: (option: TOption) => MultiSelectOptionGroup | undefined;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (option: TOption) => void;\n\tselectOnlyOption: (option: TOption) => void;\n\trenderOption: (option: TOption, state: MultiSelectOptionState) => MultiSelectOptionContent;\n}>;\n\n/** Рендерит одну selected/available-секцию, сохраняя global option indexes при группировке. */\nexport function MultiSelectOptionList<TOption>({ entries, sectionId, getOptionGroup, ...rowProps }: MultiSelectOptionListProps<TOption>) {\n\tconst sections = getOptionGroup ? createMultiSelectOptionSections(entries, getOptionGroup) : [{ group: undefined, entries }];\n\n\treturn sections.map((section, sectionIndex) => {\n\t\tconst rows = section.entries.map(({ option, index }) => (\n\t\t\t<MultiSelectOptionRow key={`${rowProps.getOptionKey(option)}-${index}`} option={option} index={index} {...rowProps} />\n\t\t));\n\n\t\tif (!section.group) {\n\t\t\treturn <Fragment key={`${sectionId}-ungrouped-${sectionIndex}`}>{rows}</Fragment>;\n\t\t}\n\n\t\tconst groupLabelId = `${sectionId}-group-${sectionIndex}`;\n\n\t\treturn (\n\t\t\t<div key={`${sectionId}-${section.group.key}-${sectionIndex}`} role=\"rowgroup\" aria-labelledby={groupLabelId}>\n\t\t\t\t<div id={groupLabelId} role=\"row\" className={uiStyles.uiPopupGroupLabel}>\n\t\t\t\t\t<div role=\"gridcell\">{section.group.label}</div>\n\t\t\t\t</div>\n\t\t\t\t{rows}\n\t\t\t</div>\n\t\t);\n\t});\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 { type PropsWithChildren } from \"react\";\n\nimport { PickerStatus } from \"../../picker\";\n\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\ntype MultiSelectOptionsWrapperProps = PropsWithChildren<{\n\tisNoData?: boolean;\n\terror?: string;\n}>;\n\n/** Выбирает одно доступное состояние тела popup, не меняя структуру самого grid. */\nexport function MultiSelectOptionsWrapper({ isNoData, error, children }: MultiSelectOptionsWrapperProps) {\n\tif (isNoData) {\n\t\treturn <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\t}\n\n\tif (error) {\n\t\treturn <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\t}\n\n\treturn <>{children}</>;\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerTrigger,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { formatMultiSelectOptionCount } from \"../lib/formatMultiSelectOptionCount\";\nimport { materializeMultiSelectOptions } from \"../lib/materializeMultiSelectOptions\";\nimport { areMultiSelectSelectionsEqual } from \"../lib/multiSelectSelection\";\n\nimport { type MultiSelectProps } from \"./MultiSelect\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionList } from \"./MultiSelectOptionList\";\nimport { MultiSelectOptionsWrapper } from \"./MultiSelectOptionsWrapper\";\nimport { type MultiSelectOptionDisableContext } from \"./multiSelectTypes\";\n\ntype MultiSelectCoreProps<TOption> = MultiSelectProps<TOption> &\n\tReadonly<{\n\t\t/** Сохраняет опубликованную ссылочную семантику только для legacy MultiSelect. */\n\t\tpreserveOptionArrayReference?: boolean;\n\t}>;\n\n/**\n * Единая generic-реализация множественного выбора. Публичные компоненты только\n * адаптируют свои контракты к этим selector-функциям, поэтому focus и a11y\n * поведение не расходятся между новым и legacy API.\n */\nexport function MultiSelectCore<TOption>({\n\tref,\n\toptions,\n\tvalue,\n\tonChange,\n\tgetOptionKey,\n\tgetOptionLabel,\n\tgetOptionCode,\n\tgetOptionGroup,\n\tgetOptionSearchText,\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\trenderOption,\n\tpreserveOptionArrayReference = false\n}: MultiSelectCoreProps<TOption>) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = \"search-multi\";\n\tconst committedSelectedOptions = useMemo(\n\t\t() => materializeMultiSelectOptions(value, preserveOptionArrayReference),\n\t\t[preserveOptionArrayReference, value]\n\t);\n\tconst committedSelectedKeys = useMemo(\n\t\t() => new Set(committedSelectedOptions.map(getOptionKey)),\n\t\t[committedSelectedOptions, getOptionKey]\n\t);\n\tconst availableOptions = useMemo(\n\t\t() => options.filter((option) => !committedSelectedKeys.has(getOptionKey(option))),\n\t\t[committedSelectedKeys, getOptionKey, options]\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 getSearchText = useCallback(\n\t\t(option: TOption) =>\n\t\t\tgetOptionSearchText?.(option) ??\n\t\t\t[getOptionLabel(option), getOptionCode?.(option), extractPickerTextContent(getOptionGroup?.(option)?.label)].filter(\n\t\t\t\t(part): part is string => Boolean(part)\n\t\t\t),\n\t\t[getOptionCode, getOptionGroup, getOptionLabel, getOptionSearchText]\n\t);\n\tconst filteredCommittedSelectedOptions = usePickerDefaultFilter({\n\t\toptions: committedSelectedOptions,\n\t\tquery: currentQuery,\n\t\tenabled: defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst filteredAvailableOptions = usePickerDefaultFilter({\n\t\toptions: availableOptions,\n\t\tquery: currentQuery,\n\t\tenabled: defaultFilter,\n\t\tgetSearchText\n\t});\n\tconst visibleOptions = useMemo(\n\t\t() => [...filteredCommittedSelectedOptions, ...filteredAvailableOptions],\n\t\t[filteredAvailableOptions, filteredCommittedSelectedOptions]\n\t);\n\tconst selectedIndex = filteredCommittedSelectedOptions.length > 0 ? 0 : -1;\n\tconst compareSelections = useCallback(\n\t\t(left: TOption[], right: TOption[]) => areMultiSelectSelectionsEqual(left, right, getOptionKey),\n\t\t[getOptionKey]\n\t);\n\tconst {\n\t\tdraftValue: draftSelectedOptions,\n\t\tsetDraftValue: setDraftSelectedOptions,\n\t\tprepareOpen\n\t} = usePickerSelectionLifecycle({\n\t\tvalue: committedSelectedOptions,\n\t\topen,\n\t\tonCommit: onChange,\n\t\tonOpen,\n\t\tonClose,\n\t\tisEqual: compareSelections\n\t});\n\tconst selectedKeys = useMemo(() => new Set(draftSelectedOptions.map(getOptionKey)), [draftSelectedOptions, getOptionKey]);\n\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext<TOption>>(\n\t\t() => ({\n\t\t\tselectedOptions: draftSelectedOptions,\n\t\t\tcommittedSelectedOptions,\n\t\t\tselectedKeys,\n\t\t\topen\n\t\t}),\n\t\t[committedSelectedOptions, draftSelectedOptions, open, selectedKeys]\n\t);\n\tconst isOptionDisabled = useCallback(\n\t\t(option: TOption) => getOptionDisabled?.(option, 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 = (option: TOption) => {\n\t\tconst optionKey = getOptionKey(option);\n\n\t\tsetDraftSelectedOptions((currentOptions) => {\n\t\t\tconst isSelected = currentOptions.some((selectedOption) => getOptionKey(selectedOption) === optionKey);\n\n\t\t\tif (isSelected) {\n\t\t\t\treturn currentOptions.filter((selectedOption) => getOptionKey(selectedOption) !== optionKey);\n\t\t\t}\n\n\t\t\tif (isOptionDisabled(option)) {\n\t\t\t\treturn currentOptions;\n\t\t\t}\n\n\t\t\treturn [...currentOptions, option];\n\t\t});\n\t};\n\n\tconst setInputNode = useCallback(\n\t\t(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\t\t[ref]\n\t);\n\n\tconst clearSelection = () => {\n\t\tsetDraftSelectedOptions([]);\n\n\t\tif (!open) {\n\t\t\tonChange([]);\n\t\t}\n\t};\n\n\tconst selectAll = () => {\n\t\tsetDraftSelectedOptions((currentOptions) => {\n\t\t\tconst nextOptions = [...currentOptions];\n\t\t\tconst nextSelectedKeys = new Set(currentOptions.map(getOptionKey));\n\n\t\t\tfor (const option of visibleOptions) {\n\t\t\t\tconst optionKey = getOptionKey(option);\n\n\t\t\t\tif (!nextSelectedKeys.has(optionKey) && !isOptionDisabled(option)) {\n\t\t\t\t\tnextSelectedKeys.add(optionKey);\n\t\t\t\t\tnextOptions.push(option);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nextOptions;\n\t\t});\n\t};\n\n\tconst deselectAll = () => {\n\t\tsetDraftSelectedOptions([]);\n\t};\n\n\tconst selectOnlyOption = (option: TOption) => {\n\t\tif (isOptionDisabled(option)) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetDraftSelectedOptions([option]);\n\t\tclose();\n\t};\n\n\tconst currentSelectedOptions = open ? draftSelectedOptions : committedSelectedOptions;\n\tconst hasSelectedOptions = currentSelectedOptions.length > 0;\n\tconst renderContext = {\n\t\tselectedOptions: currentSelectedOptions,\n\t\tcommittedSelectedOptions,\n\t\tavailableOptions: filteredAvailableOptions,\n\t\tquery: currentQuery,\n\t\topen,\n\t\tclearSelection,\n\t\tselectAll,\n\t\tdeselectAll\n\t};\n\tconst defaultTokenNode =\n\t\tcurrentSelectedOptions.length > 1\n\t\t\t? formatMultiSelectOptionCount(currentSelectedOptions.length)\n\t\t\t: currentSelectedOptions.length === 1\n\t\t\t\t? getOptionLabel(currentSelectedOptions[0])\n\t\t\t\t: undefined;\n\tconst tokenNode = renderToken === undefined ? defaultTokenNode : typeof renderToken === \"function\" ? renderToken(renderContext) : null;\n\tconst toolbarNode = typeof renderToolbar === \"function\" ? renderToolbar(renderContext) : renderToolbar;\n\tconst renderDefaultOption = useCallback(\n\t\t(option: TOption) => ({ text: getOptionLabel(option), code: getOptionCode?.(option) }),\n\t\t[getOptionCode, getOptionLabel]\n\t);\n\tconst optionRenderer = renderOption ?? renderDefaultOption;\n\tconst selectedEntries = filteredCommittedSelectedOptions.map((option, index) => ({ option, index }));\n\tconst availableEntries = filteredAvailableOptions.map((option, index) => ({\n\t\toption,\n\t\tindex: index + selectedEntries.length\n\t}));\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={options.length}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\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={hasSelectedOptions}\n\t\t\t\t\t\t\tshowSelectedValue={hasSelectedOptions && 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 activeOption = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\tif (activeIndex >= 0 && activeIndex < visibleOptions.length) {\n\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeOption);\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 activeOption = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\tif (activeIndex >= 0 && activeIndex < visibleOptions.length) {\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption(activeOption);\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<MultiSelectOptionList\n\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\tsectionId={`${listId}-selected`}\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\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\tgetOptionKey={getOptionKey}\n\t\t\t\t\t\t\t\t\t\tgetOptionGroup={getOptionGroup}\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\trenderOption={optionRenderer}\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableEntries.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<MultiSelectOptionList\n\t\t\t\t\t\t\t\t\t\tentries={availableEntries}\n\t\t\t\t\t\t\t\t\t\tsectionId={`${listId}-available`}\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\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\tgetOptionKey={getOptionKey}\n\t\t\t\t\t\t\t\t\t\tgetOptionGroup={getOptionGroup}\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\trenderOption={optionRenderer}\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","import { type ReactNode, type Ref, useMemo } from \"react\";\n\nimport { type CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { type UiBaseProps } from \"../../types\";\nimport { adaptLegacyMultiSelectOptionDisableContext, adaptLegacyMultiSelectRenderContext } from \"../lib/adaptLegacyMultiSelectContext\";\nimport { resolveLegacyMultiSelectTextKey } from \"../lib/resolveLegacyMultiSelectTextKey\";\n\nimport {\n\ttype DeprecatedMultiSelectItemState,\n\ttype DeprecatedMultiSelectOptionContent,\n\ttype DeprecatedMultiSelectOptionDisableContext,\n\ttype DeprecatedMultiSelectRenderContext\n} from \"./legacyMultiSelectTypes\";\nimport { MultiSelectCore } from \"./MultiSelectCore\";\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<DeprecatedMultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<DeprecatedMultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: DeprecatedMultiSelectItemState) => DeprecatedMultiSelectOptionContent;\n}\n\n/** Контракт устаревшего codeKey/textKey-компонента. */\nexport interface DeprecatedMultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tref?: Ref<HTMLInputElement>;\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: DeprecatedMultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\n/**\n * Устаревший адаптер OData-подобных `codeKey`/`textKey` коллекций. Компонент\n * сохраняет прежнюю OData-семантику, пока consumers переходят на selector API\n * канонического `MultiSelect`.\n *\n * @deprecated Используйте `MultiSelect` с selector-функциями.\n */\nexport function DeprecatedMultiSelect<TOption extends Record<string, string> = CollectionItem>({\n\tref,\n\tcodeKey,\n\ttextKey,\n\thideCode,\n\titems,\n\tvalue,\n\tonChange,\n\tgetOptionDisabled,\n\tonClose,\n\trenderToken,\n\trenderToolbar,\n\trenderItem,\n\t...props\n}: DeprecatedMultiSelectProps<TOption>) {\n\tconst selectedItems = useMemo(() => value ?? [], [value]);\n\tconst resolvedTextKey = useMemo(\n\t\t() => resolveLegacyMultiSelectTextKey([...selectedItems, ...items], codeKey, textKey),\n\t\t[codeKey, items, selectedItems, textKey]\n\t);\n\tconst adaptedRenderToken =\n\t\ttypeof renderToken === \"function\"\n\t\t\t? (context: Parameters<typeof adaptLegacyMultiSelectRenderContext>[0]) =>\n\t\t\t\t\trenderToken(adaptLegacyMultiSelectRenderContext(context))\n\t\t\t: renderToken;\n\tconst adaptedRenderToolbar =\n\t\ttypeof renderToolbar === \"function\"\n\t\t\t? (context: Parameters<typeof adaptLegacyMultiSelectRenderContext>[0]) =>\n\t\t\t\t\trenderToolbar(adaptLegacyMultiSelectRenderContext(context))\n\t\t\t: renderToolbar;\n\n\treturn (\n\t\t<MultiSelectCore\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t\tpreserveOptionArrayReference\n\t\t\toptions={items}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={onChange}\n\t\t\tgetOptionKey={(item) => item[codeKey]}\n\t\t\tgetOptionLabel={(item) => item[resolvedTextKey] ?? item[codeKey] ?? \"\"}\n\t\t\tgetOptionCode={hideCode ? undefined : (item) => item[codeKey] ?? \"\"}\n\t\t\tgetOptionSearchText={(item) => Array.from(new Set([item[resolvedTextKey], item[codeKey], ...Object.values(item)]))}\n\t\t\tgetOptionDisabled={\n\t\t\t\tgetOptionDisabled\n\t\t\t\t\t? (item, context) => getOptionDisabled(item, adaptLegacyMultiSelectOptionDisableContext(context))\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tonClose={onClose}\n\t\t\trenderToken={adaptedRenderToken}\n\t\t\trenderToolbar={adaptedRenderToolbar}\n\t\t\trenderOption={\n\t\t\t\trenderItem\n\t\t\t\t\t? (item, state) => renderItem(item, state)\n\t\t\t\t\t: (item) => ({\n\t\t\t\t\t\t\ttext: item[resolvedTextKey] ?? \"\",\n\t\t\t\t\t\t\tcode: hideCode ? undefined : (item[codeKey] ?? \"\")\n\t\t\t\t\t\t})\n\t\t\t}\n\t\t/>\n\t);\n}\n\nDeprecatedMultiSelect.displayName = \"DeprecatedMultiSelect\";\n\nexport {\n\ttype DeprecatedMultiSelectItemState,\n\ttype DeprecatedMultiSelectOptionContent,\n\ttype DeprecatedMultiSelectOptionDisableContext,\n\ttype DeprecatedMultiSelectRenderContext\n} from \"./legacyMultiSelectTypes\";\n","import { type Ref } from \"react\";\n\nimport { type UiBaseProps } from \"../../types\";\n\nimport { MultiSelectCore } from \"./MultiSelectCore\";\nimport {\n\ttype MultiSelectOptionDisableContext,\n\ttype MultiSelectOptionGroup,\n\ttype MultiSelectOptionKey,\n\ttype MultiSelectRenderers\n} from \"./multiSelectTypes\";\n\n/**\n * Типобезопасный контракт множественного выбора. Опция остаётся в исходной\n * domain/view-model форме, а UI получает только необходимые selector-функции.\n */\nexport type MultiSelectProps<TOption> = MultiSelectRenderers<TOption> &\n\tOmit<UiBaseProps<TOption[], readonly TOption[]>, \"onChange\"> &\n\tReadonly<{\n\t\tref?: Ref<HTMLInputElement>;\n\t\toptions: readonly TOption[];\n\t\tonChange: (value: TOption[]) => void;\n\t\tgetOptionKey: (option: TOption) => MultiSelectOptionKey;\n\t\tgetOptionLabel: (option: TOption) => string;\n\t\tgetOptionCode?: (option: TOption) => string | undefined;\n\t\tgetOptionGroup?: (option: TOption) => MultiSelectOptionGroup | undefined;\n\t\tgetOptionSearchText?: (option: TOption) => string | readonly string[];\n\t\tgetOptionDisabled?: (option: TOption, context: MultiSelectOptionDisableContext<TOption>) => boolean;\n\t\tquery?: string;\n\t\tdefaultQuery?: string;\n\t\thighlightQuery?: string;\n\t\tonQuery?: (value: string) => void;\n\t\tdefaultFilter?: boolean;\n\t\tonOpen?: () => void;\n\t\tonClose?: (value: TOption[]) => void;\n\t\terror?: string;\n\t\tisLoading?: boolean;\n\t}>;\n\n/** Множественный выбор для произвольной типизированной коллекции опций. */\nexport function MultiSelect<TOption>(props: MultiSelectProps<TOption>) {\n\treturn <MultiSelectCore {...props} />;\n}\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 { DeprecatedMultiSelect } from \"./DeprecatedMultiSelect\";\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<DeprecatedMultiSelect\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 { DeprecatedMultiSelect } from \"./DeprecatedMultiSelect\";\n\nimport type { UiBaseProps } from \"../../types\";\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\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<DeprecatedMultiSelect\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 +1 @@
1
- {"version":3,"file":"MultiSelectOptionRow.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/MultiSelectOptionRow.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE3H,KAAK,yBAAyB,CAAC,OAAO,IAAI,QAAQ,CAAC;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,oBAAoB,CAAC;IACxD,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,KAAK,wBAAwB,CAAC;CAC3F,CAAC,CAAC;AAEH,4GAA4G;AAC5G,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,EAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,WAAW,EACX,YAAY,EACZ,KAAK,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,EAAE,yBAAyB,CAAC,OAAO,CAAC,+BA2CpC"}
1
+ {"version":3,"file":"MultiSelectOptionRow.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/MultiSelectOptionRow.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE3H,KAAK,yBAAyB,CAAC,OAAO,IAAI,QAAQ,CAAC;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,oBAAoB,CAAC;IACxD,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,KAAK,wBAAwB,CAAC;CAC3F,CAAC,CAAC;AAEH,4GAA4G;AAC5G,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,EAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,WAAW,EACX,YAAY,EACZ,KAAK,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,EAAE,yBAAyB,CAAC,OAAO,CAAC,+BAmDpC"}