@ryuzaki13/react-foundation-ui 1.1.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced-search/index.js +1 -1
- package/dist/check-box/CheckBox.d.ts +3 -1
- package/dist/check-box/CheckBox.d.ts.map +1 -1
- package/dist/check-box/index.js +1 -1
- package/dist/chunks/{CheckBox.module-D0Ze9qh3.js → CheckBox.module-C5SjPwSj.js} +2 -1
- package/dist/chunks/{CheckBox.module-D0Ze9qh3.js.map → CheckBox.module-C5SjPwSj.js.map} +1 -1
- package/dist/chunks/{TextEditorLexicalClient-DeBA6fQX.js → TextEditorLexicalClient-D2P2VLL0.js} +2 -2
- package/dist/chunks/{TextEditorLexicalClient-DeBA6fQX.js.map → TextEditorLexicalClient-D2P2VLL0.js.map} +1 -1
- package/dist/chunks/check-box-Dd3YFuxd.js +51 -0
- package/dist/chunks/check-box-Dd3YFuxd.js.map +1 -0
- package/dist/chunks/{multi-select-BCpRct-k.js → multi-select-Bg7Psslp.js} +56 -81
- package/dist/chunks/multi-select-Bg7Psslp.js.map +1 -0
- package/dist/chunks/{picker-DTZk09Ag.js → picker-BAQ9NeHe.js} +117 -88
- package/dist/chunks/picker-BAQ9NeHe.js.map +1 -0
- package/dist/chunks/{select-Bd48kVI3.js → select-DKbSVCp4.js} +16 -16
- package/dist/chunks/{select-Bd48kVI3.js.map → select-DKbSVCp4.js.map} +1 -1
- package/dist/layout-picker/index.js +11 -11
- package/dist/layout-picker/index.js.map +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
- package/dist/picker/PickerPopup.d.ts +4 -1
- package/dist/picker/PickerPopup.d.ts.map +1 -1
- package/dist/picker/PickerSelectionToolbar.d.ts +13 -0
- package/dist/picker/PickerSelectionToolbar.d.ts.map +1 -0
- package/dist/picker/index.d.ts +1 -0
- package/dist/picker/index.d.ts.map +1 -1
- package/dist/picker/index.js +2 -2
- package/dist/picker/model/usePickerFloatingListbox.d.ts +2 -0
- package/dist/picker/model/usePickerFloatingListbox.d.ts.map +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/text-editor/index.js +1 -1
- package/dist/tree-select/ODataTreeMultiSelect.d.ts +4 -2
- package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -1
- package/dist/tree-select/TreeMultiSelect.d.ts +4 -2
- package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
- package/dist/tree-select/TreeNodeContent.d.ts +4 -2
- package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts +8 -2
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +340 -235
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-select/model/resolveBalancedTreeColumnsLayout.d.ts +22 -0
- package/dist/tree-select/model/resolveBalancedTreeColumnsLayout.d.ts.map +1 -0
- package/dist/tree-select/model/treeUtils.d.ts +6 -0
- package/dist/tree-select/model/treeUtils.d.ts.map +1 -1
- package/dist/tree-select/types.d.ts +2 -0
- package/dist/tree-select/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/storybook-static/assets/{Badge-CYUtks4i.js → Badge-D7v1JZZ8.js} +1 -1
- package/storybook-static/assets/{Badge.stories-CiwiuZND.js → Badge.stories-ByDc-8tr.js} +1 -1
- package/storybook-static/assets/{Button-GcMG_GZZ.js → Button-C5Ybi_6I.js} +1 -1
- package/storybook-static/assets/{Button-DxBLrgCb.js → Button-DKzqaITD.js} +1 -1
- package/storybook-static/assets/{Button.stories-Cd0Os334.js → Button.stories-DX0MePOq.js} +1 -1
- package/storybook-static/assets/{CheckBox-DFUUkGhT.js → CheckBox-BbBVCd-t.js} +1 -1
- package/storybook-static/assets/CheckBox-CG7erYfw.js +2 -0
- package/storybook-static/assets/{CheckBox-B1xm2kwz.css → CheckBox-CT1_Mjc0.css} +1 -1
- package/storybook-static/assets/CheckBox.module-ezWPE2pa.js +1 -0
- package/storybook-static/assets/{CheckBox.stories-CJ_3y5UH.js → CheckBox.stories-DzB9XnzM.js} +1 -1
- package/storybook-static/assets/{Color-KMSTOMOX-D_F5kPOR.js → Color-KMSTOMOX-DkRZLrHN.js} +1 -1
- package/storybook-static/assets/{ContextMenu-Bwi_RCid.js → ContextMenu-BAhISS2o.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-CD3V_TkA.js → ContextMenu.stories-B4v0sOgu.js} +1 -1
- package/storybook-static/assets/{DateInput-BLOXukhB.js → DateInput-BXTSi08q.js} +1 -1
- package/storybook-static/assets/{DateInput-D838WG9k.js → DateInput-CwxInHA8.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-B5IcEl_E.js → DateInput.stories-7gdC4CVg.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-nV0sOrrq.js → DateRangePresetSelect-BJnOqHar.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-D-5OmKVI.js → DateRangePresetSelect-BYeBU5zB.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-B0OEeGyM.js → DateRangePresetSelect.stories-C7z1iucY.js} +1 -1
- package/storybook-static/assets/{Detail-BoRol63k.js → Detail-DH7ZmSPc.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Bvoc4JyH.js → Detail.stories-BSv9uWqB.js} +1 -1
- package/storybook-static/assets/{Dialog-6f4X_UF_.js → Dialog-Dpcmx3OO.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-DupxCJ26.js → Dialog.stories-CySTfqZJ.js} +1 -1
- package/storybook-static/assets/{Disclosure-mjTMcSOm.js → Disclosure-GuRERHI1.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-BXY5v1i7.js → Disclosure.stories-DYOViMcd.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-B5gLF2_w.js → DocsRenderer-JROSPFPF-mXFEHzID.js} +2 -2
- package/storybook-static/assets/{DropZone-BWidhx3w.js → DropZone-ueGIp3x3.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-DdzxEO58.js → DropZone.stories-DR_AdNgw.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CTP2q7WN.js → DropdownMenu-CK5lznDK.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-zrVipsOg.js → ExpandableActionPanel.stories-2CQ1AWdx.js} +1 -1
- package/storybook-static/assets/{Flex-DZrPfPl7.js → Flex-BOk2MClD.js} +1 -1
- package/storybook-static/assets/{Flex-BOdbeJ0I.js → Flex-DW-ftapu.js} +1 -1
- package/storybook-static/assets/{Flex.stories-BXa9Ld3i.js → Flex.stories-HzEHXSGa.js} +1 -1
- package/storybook-static/assets/{Grid-BHcgytfy.js → Grid-D1SjHhSh.js} +1 -1
- package/storybook-static/assets/{Grid-JvQFWmt_.js → Grid-zr1rxPoi.js} +1 -1
- package/storybook-static/assets/{Grid.stories-B5poAGUr.js → Grid.stories-BLEMxz0Y.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-DddyTDWa.js → ImageCropper.stories-B9PtK7QG.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-VdBmXv1k.js → ImageRenderer-DEGHLXPn.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-B5W5SEMP.js → ImageRenderer.stories-ukNyUK8o.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-Bxdytr0W.js → ImageView.stories-BszL_0Zc.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-BXJN4esR.js → ImageViewer.stories-GO-di0mo.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DLzkYOMn.js → ImageViewerRuntime-C7pZfqPI.js} +1 -1
- package/storybook-static/assets/{Input-D6FlpB4Y.js → Input-BTierf74.js} +1 -1
- package/storybook-static/assets/{Input-DoKDcdGf.js → Input-Bt2IerRO.js} +1 -1
- package/storybook-static/assets/{Input.stories-tR41eQh7.js → Input.stories-DhNpohII.js} +1 -1
- package/storybook-static/assets/{InputDateTime-BpvZYBm8.js → InputDateTime-BtZX5hDd.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-BOVClwU1.js → InputDateTime.stories-BTehTQnn.js} +1 -1
- package/storybook-static/assets/{InputFile-BGHb93zX.js → InputFile-DHcad0UA.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-CmhCmMX6.js → InputFile.stories-EhvFRZEW.js} +1 -1
- package/storybook-static/assets/{InputFiles-CLnOm0x9.js → InputFiles-BIPBlJCX.js} +1 -1
- package/storybook-static/assets/{InputFiles-Bsatbrje.js → InputFiles-v2NJm_qh.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-BOH1-zD8.js → InputFiles.stories-BayzozA6.js} +1 -1
- package/storybook-static/assets/{InputImage-CZAwib3W.js → InputImage-DGj2RHDF.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-BobdHmpf.js → InputImage.stories-DyULIi5J.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BNQIVp3u.js → LayoutPicker-BhMHQ6qN.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-Du0HfXjJ.js → LayoutPicker.stories-q8iUnVpY.js} +1 -1
- package/storybook-static/assets/{Listbox-Cup327ne.js → Listbox-C_Exppg-.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-BlrBt5zM.js → Listbox.stories-CGkGgr1a.js} +1 -1
- package/storybook-static/assets/{Modal-d1loZR-M.js → Modal-Bovqf5pf.js} +1 -1
- package/storybook-static/assets/{Modal.stories-ClQnn-f_.js → Modal.stories-BK00bPl-.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CUQV67Ev.css → MultiSelect-BoIwmje6.css} +1 -1
- package/storybook-static/assets/MultiSelect-CrQL1Ipo.js +2 -0
- package/storybook-static/assets/{MultiSelect-DydDWE0p.js → MultiSelect-Cuhm_3qG.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-iBixjG7e.js → MultiSelect.stories-DzpE4zRQ.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-C86XqiWb.js → NotificationsHost-ch3PRXY1.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-B1zhHRl_.js → NotificationsHost.stories-C2_Yv4hp.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-wVgBQ88Z.js → ODataMultiSelect-BaHv24bR.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-Cv2ibcVz.js → ODataMultiSelect.stories-CirB5r0U.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BMymfHVd.js → ODataSelect-DCpmIrxn.js} +1 -1
- package/storybook-static/assets/{ODataSelect-Rq48Ismc.js → ODataSelect-DRobtrxL.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DFID1Uev.js → ODataSelect.stories-BfDzSEYh.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-y1_5XOhF.js → ODataTreeMultiSelect-BKtVg8_t.js} +1 -1
- package/storybook-static/assets/ODataTreeMultiSelect.stories-Cy_hJFR7.js +28 -0
- package/storybook-static/assets/{ODataTreeSelect-Dxo-54Zi.js → ODataTreeSelect-CtcR9xTc.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-B3SQ3ubn.js → ODataTreeSelect.stories-CflBmWSY.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-B2brJahg.js → PeriodSelect-Bb9RLrAP.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-Je8sNgoc.js → PeriodSelect.stories-BVWGwTxF.js} +1 -1
- package/storybook-static/assets/{Popover-Dqyna8Ub.js → Popover-DHxAzBcZ.js} +1 -1
- package/storybook-static/assets/{Popover.stories-DHGRJd3v.js → Popover.stories-CSsXOlfQ.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-Bq32kP8I.js → PresetRangeDateInput-BtT9qT_X.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-C34e4bWa.js → PresetRangeDateInput.stories-CdDhCVhC.js} +1 -1
- package/storybook-static/assets/{RadioButton-D6gcuP42.js → RadioButton-g8BzgLBx.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-CcupC0LJ.js → RadioButton.stories-DDkpHQZh.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BfsMzoOg.js → RadioGroup-DEiqietc.js} +1 -1
- package/storybook-static/assets/{RadioGroup-B1nKl71P.js → RadioGroup-DmC3Kq0U.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-WojhAYJm.js → RadioGroup.stories-Cmj7AdLG.js} +1 -1
- package/storybook-static/assets/{Select-BxZr4NfI.js → Select-CmKYViuR.js} +1 -1
- package/storybook-static/assets/{Select-_QFx3i7X.js → Select-HhIbNmso.js} +1 -1
- package/storybook-static/assets/{Select.stories-2_XweKMH.js → Select.stories-CWJxI41B.js} +1 -1
- package/storybook-static/assets/{SelectOptionContent-YY3Lf4SM.js → SelectOptionContent-DptMfd-O.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-CDQfz0rk.js → SerializableSelect-BkSgKWRB.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-BxIcA2AU.js → SerializableSelect-CQA10vMJ.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-D23YkoRX.js → SerializableSelect.stories-BFCuuz2t.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-Ds1pL3ge.js → SingleDateTimeInput-BfcECgA3.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-DaHEQhiz.js → SingleDateTimeInput.stories-DyowjiLp.js} +1 -1
- package/storybook-static/assets/{Slider-D4sBhVAB.js → Slider-CPLgIEaw.js} +1 -1
- package/storybook-static/assets/{Slider.stories-BsM03Rby.js → Slider.stories-CnImlj4A.js} +1 -1
- package/storybook-static/assets/{SliderInput-cP0GSpO-.js → SliderInput-C2Q1T0vU.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-BGk9ZIYB.js → SliderInput.stories-CJUN89pc.js} +1 -1
- package/storybook-static/assets/{Sortable-CW9mxBpj.js → Sortable-DPyfih4N.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CkFOw5CW.js → Sortable.stories-DItOzu5t.js} +1 -1
- package/storybook-static/assets/{Splitter-BFbFbn0X.js → Splitter-gmjouNuu.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-Dj4bWJtu.js → Splitter.stories-CCSZIcqs.js} +1 -1
- package/storybook-static/assets/{StateSelect-CHvxD1oY.js → StateSelect-CG7RPOcH.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-DiAdGF8Q.js → StateSelect.stories-C1vyXGQT.js} +1 -1
- package/storybook-static/assets/{Switch-DzE9B2Ue.js → Switch-D74-uQCk.js} +1 -1
- package/storybook-static/assets/{Switch.stories-DmRSgOsO.js → Switch.stories-BT3z4Ejw.js} +1 -1
- package/storybook-static/assets/{Table-DgbZNzAp.js → Table-BrFX0-DO.js} +1 -1
- package/storybook-static/assets/{Table.stories-DqYHNHnR.js → Table.stories-C6oPBhy0.js} +1 -1
- package/storybook-static/assets/{Tabs-DSUhNbam.js → Tabs-DqP4L44q.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-DKsEFwhg.js → Tabs.stories-AJuiuYg6.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-B8x2doJL.js → TagInput.stories-BNKEqixk.js} +1 -1
- package/storybook-static/assets/{Textarea-ZqM5o8fk.js → Textarea-B60jfl8B.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-B0IBcsuI.js → Textarea.stories-BcDp6M7a.js} +1 -1
- package/storybook-static/assets/{TimePanel-DFVpYrKi.js → TimePanel-DLhzWAkt.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-Dah8MdEV.js → TimePanel.stories-EAF0Iwzy.js} +1 -1
- package/storybook-static/assets/{Toggle-CE93J6yJ.js → Toggle-zLmaeFxV.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-DQSLZ16I.js → Toggle.stories-CXCqTlgq.js} +1 -1
- package/storybook-static/assets/TreeMultiSelect-Cqzvsvll.js +1 -0
- package/storybook-static/assets/{TreeMultiSelect-DtUozmC9.js → TreeMultiSelect-DqCeanEK.js} +1 -1
- package/storybook-static/assets/TreeMultiSelect.stories-CLgN86i0.js +18 -0
- package/storybook-static/assets/TreePickerBase-B35lReuv.css +1 -0
- package/storybook-static/assets/TreePickerBase-BZAJrNmY.js +22 -0
- package/storybook-static/assets/TreeSelect-CGEhTrwZ.js +1 -0
- package/storybook-static/assets/{TreeSelect-C1dHJDVC.js → TreeSelect-CxXbMUuz.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-C_fffAaM.js → TreeSelect.stories-D6JsuirR.js} +1 -1
- package/storybook-static/assets/{TreeTable-mGpVE4fE.js → TreeTable-CHcN_J4f.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-on_ck1LO.js → TreeTable.stories-Chf80BCf.js} +1 -1
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-BP3dvWMO.js → WithTooltip-7X4HQR7L-ClNgbWeP.js} +1 -1
- package/storybook-static/assets/{base-table-XPKfaZOF.js → base-table-DFNAHbOh.js} +3 -3
- package/storybook-static/assets/{blocks-CdNjp0UR.js → blocks-Cvma_IcF.js} +6 -6
- package/storybook-static/assets/{button-mxhQ6kpI.js → button-kPwSLavu.js} +1 -1
- package/storybook-static/assets/{check-box-CuugSv5K.js → check-box-lrsmWYyx.js} +1 -1
- package/storybook-static/assets/{chunk-3LY4VQVK-CNZt5fIP.js → chunk-3LY4VQVK-BTM7iIVH.js} +1 -1
- package/storybook-static/assets/{chunk-LITCR56V--UakKRHa.js → chunk-LITCR56V-ArT2yDYL.js} +1 -1
- package/storybook-static/assets/{contextMenu-DRYHg4YV.js → contextMenu-Ca1VYkz6.js} +1 -1
- package/storybook-static/assets/{error-s5vKL37a.js → error-DuNJO9vV.js} +1 -1
- package/storybook-static/assets/{flex-4NGrP0a9.js → flex-BGvA-XpI.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-DV6_xxif.js → floating-ui.react-DQwZi-9a.js} +1 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-DE5ZvVwE.js +1 -0
- package/storybook-static/assets/{formatters-D4nD5Nic.js → formatters-h4ZtB1KQ.js} +1 -1
- package/storybook-static/assets/grid-D9Cj-9Hk.js +1 -0
- package/storybook-static/assets/hooks-0JTkzX8v.js +5 -0
- package/storybook-static/assets/{iframe-BxBCFrOJ.js → iframe-DOzGPw3M.js} +3 -3
- package/storybook-static/assets/{input-CjJ-AgIT.js → input-CfG8dfNR.js} +1 -1
- package/storybook-static/assets/{lucide-react-BmnaUuit.js → lucide-react-CXmxxiwZ.js} +1 -1
- package/storybook-static/assets/{mdx-react-shim-BEzdmfRR.js → mdx-react-shim-Dt6mwzpn.js} +1 -1
- package/storybook-static/assets/{media-NSeJNB4V.js → media-C2c8Madb.js} +1 -1
- package/storybook-static/assets/{misc-_2j1xxm-.js → misc-BetQ78R5.js} +1 -1
- package/storybook-static/assets/{notifications-Bb4NwpnZ.js → notifications-JG54VOrf.js} +1 -1
- package/storybook-static/assets/{odata-DkCpE6Ui.js → odata-CfPigtOy.js} +1 -1
- package/storybook-static/assets/odata-service-CXxiscbG.js +1 -0
- package/storybook-static/assets/{odataStoryFixtures-h0MkHLcZ.js → odataStoryFixtures-x2DUwBVr.js} +1 -1
- package/storybook-static/assets/picker-C3kxY39P.js +2 -0
- package/storybook-static/assets/{picker-BmTTr59E.css → picker-DzBkX15M.css} +1 -1
- package/storybook-static/assets/{popover-DBec4vEA.js → popover-DK9hrPJ3.js} +1 -1
- package/storybook-static/assets/{preset-select-CaY8SOYT.js → preset-select-DI74dY8m.js} +1 -1
- package/storybook-static/assets/{react-18-DPMOLLe1.js → react-18-BDmeTisq.js} +1 -1
- package/storybook-static/assets/{react-0gkFNWVQ.js → react-DWEKtw6N.js} +1 -1
- package/storybook-static/assets/{react-dom-BKRiX1TT.js → react-dom-C1-d-rN9.js} +1 -1
- package/storybook-static/assets/select-Clm8A0Fz.js +1 -0
- package/storybook-static/assets/{slider-BqG2yvL2.js → slider-Dyk9y0wa.js} +1 -1
- package/storybook-static/assets/{sortable-Viqf8wuB.js → sortable-V1-iQvjL.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-DuzwRVHO.js → syntaxhighlighter-RTCFPKCB-fdaSGWy2.js} +1 -1
- package/storybook-static/assets/{text-B62c97-X.js → text-BDg3R98B.js} +1 -1
- package/storybook-static/assets/{theming-CG2b7751.js → theming-Cpt7iVYH.js} +1 -1
- package/storybook-static/assets/ui-DKM94Yn2.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-J0YKxol4.js → useODataSelectBase-CfKXO11g.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-wlNQaI0p.js → useODataTreeData-CNz5U2G8.js} +1 -1
- package/storybook-static/assets/{utils-CMnxoKbT.js → utils-D2Si_EM1.js} +1 -1
- package/storybook-static/iframe.html +1 -1
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/check-box-BowNqqd3.js +0 -48
- package/dist/chunks/check-box-BowNqqd3.js.map +0 -1
- package/dist/chunks/multi-select-BCpRct-k.js.map +0 -1
- package/dist/chunks/picker-DTZk09Ag.js.map +0 -1
- package/dist/multi-select/ui/MultiSelectOptionsToolbar.d.ts +0 -8
- package/dist/multi-select/ui/MultiSelectOptionsToolbar.d.ts.map +0 -1
- package/storybook-static/assets/CheckBox-m8RUUjvq.js +0 -2
- package/storybook-static/assets/CheckBox.module-Hr3mvdAC.js +0 -1
- package/storybook-static/assets/MultiSelect-BUWlGDnx.js +0 -2
- package/storybook-static/assets/ODataTreeMultiSelect.stories-Be4AaF8U.js +0 -24
- package/storybook-static/assets/TreeMultiSelect-Cm8XLcaB.js +0 -1
- package/storybook-static/assets/TreeMultiSelect.stories-DKd_qDqk.js +0 -14
- package/storybook-static/assets/TreePickerBase-qreyVjhY.css +0 -1
- package/storybook-static/assets/TreePickerBase-xFkOCgy0.js +0 -19
- package/storybook-static/assets/TreeSelect-C0Oxcp_s.js +0 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-BC5xVOel.js +0 -1
- package/storybook-static/assets/grid-DZrPQELi.js +0 -1
- package/storybook-static/assets/hooks-hqscBU_x.js +0 -5
- package/storybook-static/assets/odata-service-BO_9B-Az.js +0 -1
- package/storybook-static/assets/picker-CxN205s6.js +0 -1
- package/storybook-static/assets/select-C23Vd0JX.js +0 -1
- package/storybook-static/assets/ui-CAk1ISqX.js +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { t as e } from "./ui.module-BisoTevy.js";
|
|
2
|
+
import { n as t } from "./uiClasses-BNjBunnY.js";
|
|
3
|
+
import { t as n } from "./CheckBox.module-C5SjPwSj.js";
|
|
4
|
+
import { useId as r } from "react";
|
|
5
|
+
import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
|
|
6
|
+
import { MinusIcon as a, SquareIcon as o } from "lucide-react";
|
|
7
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
+
//#region src/check-box/CheckBox.tsx
|
|
9
|
+
function l({ label: l, description: u, placeholder: d, disabled: f, size: p, className: m, onChange: h, value: g, noWrap: _, id: v, tone: y = "neutral", indeterminate: b = !1, ...x }) {
|
|
10
|
+
let S = r(), C = v ?? S, w = u ? `${C}-description` : void 0, T = l ?? d, E = g ?? !1, D = (e) => {
|
|
11
|
+
e && (e.indeterminate = b);
|
|
12
|
+
};
|
|
13
|
+
return /* @__PURE__ */ c("div", {
|
|
14
|
+
className: i(e.uiElement, p && e.uiSizable, p && e[p], f && e.disabled, m),
|
|
15
|
+
"aria-disabled": f || void 0,
|
|
16
|
+
children: [/* @__PURE__ */ c("div", {
|
|
17
|
+
className: n.row,
|
|
18
|
+
children: [/* @__PURE__ */ c("div", {
|
|
19
|
+
className: i(n.wrapper, t(y)),
|
|
20
|
+
children: [/* @__PURE__ */ s("input", {
|
|
21
|
+
...x,
|
|
22
|
+
ref: D,
|
|
23
|
+
id: C,
|
|
24
|
+
type: "checkbox",
|
|
25
|
+
checked: E,
|
|
26
|
+
disabled: f,
|
|
27
|
+
"aria-checked": b ? "mixed" : E,
|
|
28
|
+
"aria-describedby": w,
|
|
29
|
+
className: i(e.uiSelectionControl, n.input, b && n.inputIndeterminate),
|
|
30
|
+
onChange: () => h?.(!E)
|
|
31
|
+
}), /* @__PURE__ */ s("div", {
|
|
32
|
+
className: i(e.uiSelectionIcon, n.icon),
|
|
33
|
+
"aria-hidden": "true",
|
|
34
|
+
children: s(b ? a : o, {})
|
|
35
|
+
})]
|
|
36
|
+
}), T && /* @__PURE__ */ s("label", {
|
|
37
|
+
htmlFor: C,
|
|
38
|
+
className: i(e.uiLabelBase, _ && "textNoWrap"),
|
|
39
|
+
children: T
|
|
40
|
+
})]
|
|
41
|
+
}), u && /* @__PURE__ */ s("p", {
|
|
42
|
+
id: w,
|
|
43
|
+
className: e.uiDescription,
|
|
44
|
+
children: u
|
|
45
|
+
})]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { l as t };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=check-box-Dd3YFuxd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-box-Dd3YFuxd.js","names":[],"sources":["../../src/check-box/CheckBox.tsx"],"sourcesContent":["import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { MinusIcon, SquareIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\nimport { getUiToneClassName } from \"../uiClasses\";\n\nimport styles from \"./CheckBox.module.scss\";\n\nimport type { UiBaseProps, UiTone } from \"../types\";\n\ninterface CheckBoxProps\n\textends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"checked\" | \"value\" | \"onChange\" | \"type\">, UiBaseProps<boolean> {\n\ttone?: UiTone;\n\tnoWrap?: boolean;\n\t/** Показывает частично выбранную группу и публикует `aria-checked=\"mixed\"`. */\n\tindeterminate?: boolean;\n}\n\n/**\n * Компонент флажка для выбора булевого значения в формах и списках.\n * Поддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.\n */\nexport function CheckBox({\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize,\n\tclassName,\n\tonChange,\n\tvalue,\n\tnoWrap,\n\tid: externalId,\n\ttone = \"neutral\",\n\tindeterminate = false,\n\t...props\n}: CheckBoxProps) {\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst text = label ?? placeholder;\n\tconst checked = value ?? false;\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tif (node) {\n\t\t\tnode.indeterminate = indeterminate;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, size && uiStyles.uiSizable, size && uiStyles[size], disabled && uiStyles.disabled, className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t<div className={styles.row}>\n\t\t\t\t<div className={cn(styles.wrapper, getUiToneClassName(tone))}>\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-checked={indeterminate ? \"mixed\" : checked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiSelectionControl, styles.input, indeterminate && styles.inputIndeterminate)}\n\t\t\t\t\t\tonChange={() => onChange?.(!checked)}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={cn(uiStyles.uiSelectionIcon, styles.icon)} aria-hidden=\"true\">\n\t\t\t\t\t\t{indeterminate ? <MinusIcon /> : <SquareIcon />}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{text && (\n\t\t\t\t\t<label htmlFor={id} className={cn(uiStyles.uiLabelBase, noWrap && \"textNoWrap\")}>\n\t\t\t\t\t\t{text}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,EAAS,EACxB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,WACA,IAAI,GACJ,UAAO,WACP,mBAAgB,IAChB,GAAG,KACc;CACjB,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAU,KAAS,IACnB,KAAgB,MAAkC;EACvD,AAAI,MACH,EAAK,gBAAgB;CAEvB;CAEA,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,KAAQ,EAAS,WAAW,KAAQ,EAAS,IAAO,KAAY,EAAS,UAAU,CAAS;EAC9H,iBAAe,KAAY,KAAA;YAF5B,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACC,kBAAC,OAAD;IAAK,WAAW,EAAG,EAAO,SAAS,EAAmB,CAAI,CAAC;cAA3D,CACC,kBAAC,SAAD;KACC,GAAI;KACJ,KAAK;KACD;KACJ,MAAK;KACI;KACC;KACV,gBAAc,IAAgB,UAAU;KACxC,oBAAkB;KAClB,WAAW,EAAG,EAAS,oBAAoB,EAAO,OAAO,KAAiB,EAAO,kBAAkB;KACnG,gBAAgB,IAAW,CAAC,CAAO;IACnC,CAAA,GACD,kBAAC,OAAD;KAAK,WAAW,EAAG,EAAS,iBAAiB,EAAO,IAAI;KAAG,eAAY;eACrD,EAAhB,IAAiB,IAAgB,GAAjB,CAAY,CAAiB;IAC1C,CAAA,CACD;OACJ,KACA,kBAAC,SAAD;IAAO,SAAS;IAAI,WAAW,EAAG,EAAS,aAAa,KAAU,YAAY;cAC5E;GACK,CAAA,CAEJ;MACJ,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;aACxC;EACC,CAAA,CAEA;;AAEP"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Text as e } from "../text/index.js";
|
|
2
2
|
import { t } from "./ui.module-BisoTevy.js";
|
|
3
|
-
import { t as n } from "./
|
|
4
|
-
import {
|
|
5
|
-
import { a as i, c as a, d as o, f as s, i as c, l, n as u, r as d, t as f, u as p } from "./picker-DTZk09Ag.js";
|
|
3
|
+
import { t as n } from "./check-box-Dd3YFuxd.js";
|
|
4
|
+
import { a as r, c as i, d as a, f as o, i as s, l as c, n as l, p as u, r as d, t as f, u as p } from "./picker-BAQ9NeHe.js";
|
|
6
5
|
import { t as ee } from "./separator-B72Aq-6a.js";
|
|
7
6
|
import { t as m } from "./SelectOptionContent-CI7wq9Oi.js";
|
|
8
7
|
import { n as h, t as g } from "./useODataSelectBase-wZ07hQFv.js";
|
|
@@ -22,33 +21,9 @@ function se({ item: e, textKey: t, codeKey: n, highlight: r }) {
|
|
|
22
21
|
var C = {
|
|
23
22
|
multiSelect: "_9oSdQi",
|
|
24
23
|
multiSelectTokens: "iobHig",
|
|
25
|
-
multiSelectToken: "yatXso"
|
|
26
|
-
selectAllButton: "h2aA6E"
|
|
24
|
+
multiSelectToken: "yatXso"
|
|
27
25
|
};
|
|
28
26
|
//#endregion
|
|
29
|
-
//#region src/multi-select/ui/MultiSelectOptionsToolbar.tsx
|
|
30
|
-
function ce({ onSelectAll: e, onDeselectAll: t }) {
|
|
31
|
-
return /* @__PURE__ */ S(n.Container, {
|
|
32
|
-
gap: "xs",
|
|
33
|
-
templateColumns: "1fr 1fr",
|
|
34
|
-
children: [/* @__PURE__ */ x("button", {
|
|
35
|
-
type: "button",
|
|
36
|
-
className: C.selectAllButton,
|
|
37
|
-
onClick: e,
|
|
38
|
-
"data-ui": "multi-select-select-all",
|
|
39
|
-
"data-action": "select-all",
|
|
40
|
-
children: "Выбрать все"
|
|
41
|
-
}), /* @__PURE__ */ x("button", {
|
|
42
|
-
type: "button",
|
|
43
|
-
className: C.selectAllButton,
|
|
44
|
-
onClick: t,
|
|
45
|
-
"data-ui": "multi-select-deselect-all",
|
|
46
|
-
"data-action": "deselect-all",
|
|
47
|
-
children: "Снять выбор"
|
|
48
|
-
})]
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
//#endregion
|
|
52
27
|
//#region src/multi-select/ui/MultiSelectToken.tsx
|
|
53
28
|
function w({ value: e }) {
|
|
54
29
|
return e ? /* @__PURE__ */ x("div", {
|
|
@@ -72,18 +47,18 @@ function E(e, t, n) {
|
|
|
72
47
|
let r = T(e, t, n);
|
|
73
48
|
return e[0]?.[r] ?? e[0]?.[t];
|
|
74
49
|
}
|
|
75
|
-
function
|
|
50
|
+
function ce(e) {
|
|
76
51
|
return function(t) {
|
|
77
52
|
return /* @__PURE__ */ x(w, { value: E(t.selectedItems, e.codeKey, e.textKey) });
|
|
78
53
|
};
|
|
79
54
|
}
|
|
80
|
-
function
|
|
81
|
-
return /* @__PURE__ */ x(
|
|
55
|
+
function le(e) {
|
|
56
|
+
return /* @__PURE__ */ x(a, {
|
|
82
57
|
onSelectAll: e.selectAll,
|
|
83
58
|
onDeselectAll: e.deselectAll
|
|
84
59
|
});
|
|
85
60
|
}
|
|
86
|
-
function
|
|
61
|
+
function ue(e) {
|
|
87
62
|
return function(t, n) {
|
|
88
63
|
return /* @__PURE__ */ x(se, {
|
|
89
64
|
item: t,
|
|
@@ -107,33 +82,33 @@ function D({ text: n, isError: r }) {
|
|
|
107
82
|
}
|
|
108
83
|
//#endregion
|
|
109
84
|
//#region src/multi-select/ui/MultiSelect.tsx
|
|
110
|
-
function
|
|
85
|
+
function de({ isNoData: e, isLoading: t, error: n, children: r }) {
|
|
111
86
|
return e ? /* @__PURE__ */ x(p, { emptyState: /* @__PURE__ */ x(D, { text: "Нет данных" }) }) : t ? /* @__PURE__ */ x(p, { loadingState: /* @__PURE__ */ x(D, { text: "Загрузка..." }) }) : n ? /* @__PURE__ */ x(p, { errorState: /* @__PURE__ */ x(D, {
|
|
112
87
|
isError: !0,
|
|
113
88
|
text: "Ошибка загрузки"
|
|
114
89
|
}) }) : /* @__PURE__ */ x(oe, { children: r });
|
|
115
90
|
}
|
|
116
|
-
var
|
|
91
|
+
var fe = [];
|
|
117
92
|
function O(e, t) {
|
|
118
93
|
return e[t];
|
|
119
94
|
}
|
|
120
|
-
function
|
|
95
|
+
function pe(e, t, n) {
|
|
121
96
|
return Array.from(/* @__PURE__ */ new Set([
|
|
122
97
|
e[n],
|
|
123
98
|
e[t],
|
|
124
99
|
...Object.values(e)
|
|
125
100
|
]));
|
|
126
101
|
}
|
|
127
|
-
function
|
|
102
|
+
function me(e, t, n) {
|
|
128
103
|
if (e.length !== t.length) return !1;
|
|
129
104
|
let r = new Set(t.map((e) => O(e, n)));
|
|
130
105
|
return e.every((e) => r.has(O(e, n)));
|
|
131
106
|
}
|
|
132
|
-
function
|
|
107
|
+
function he({ entries: e, listId: r, activeIndex: i, selectedKeys: a, codeKey: o, query: s, highlightQuery: c, getOptionDisabled: l, getOptionId: u, setOptionRef: d, toggleOption: f, selectOnlyOption: p, renderItem: ee }) {
|
|
133
108
|
return e.map(({ item: e, index: m }) => {
|
|
134
109
|
let h = m === i, g = a.has(O(e, o)), _ = l?.(e) ?? !1;
|
|
135
110
|
return /* @__PURE__ */ S("div", {
|
|
136
|
-
id: u(
|
|
111
|
+
id: u(r, m),
|
|
137
112
|
ref: (e) => d(m, e),
|
|
138
113
|
role: "option",
|
|
139
114
|
"aria-selected": g,
|
|
@@ -146,7 +121,7 @@ function ge({ entries: e, listId: n, activeIndex: i, selectedKeys: a, codeKey: o
|
|
|
146
121
|
onClick: (e) => {
|
|
147
122
|
e.stopPropagation();
|
|
148
123
|
},
|
|
149
|
-
children: /* @__PURE__ */ x(
|
|
124
|
+
children: /* @__PURE__ */ x(n, {
|
|
150
125
|
value: g,
|
|
151
126
|
disabled: _,
|
|
152
127
|
onChange: () => {
|
|
@@ -175,8 +150,8 @@ function ge({ entries: e, listId: n, activeIndex: i, selectedKeys: a, codeKey: o
|
|
|
175
150
|
}, `${O(e, o)}-${m}`);
|
|
176
151
|
});
|
|
177
152
|
}
|
|
178
|
-
var k = _(({ codeKey: e, textKey: n, hideCode:
|
|
179
|
-
let ve = ne(null), [L, ye] = y(!1), R = "search-multi", z = m ??
|
|
153
|
+
var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange: h, label: g, description: _, placeholder: b, size: re, query: ie, defaultQuery: se, highlightQuery: w, onQuery: E, defaultFilter: D = !0, onOpen: k, onClose: ge, getOptionDisabled: A, disabled: j, error: M, isLoading: N, renderToken: P, renderToolbar: F, renderItem: _e }, I) => {
|
|
154
|
+
let ve = ne(null), [L, ye] = y(!1), R = "search-multi", z = m ?? fe, be = v(() => new Set(z.map((t) => O(t, e))), [e, z]), xe = v(() => p.filter((t) => !be.has(O(t, e))), [
|
|
180
155
|
e,
|
|
181
156
|
be,
|
|
182
157
|
p
|
|
@@ -189,25 +164,25 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
189
164
|
open: L,
|
|
190
165
|
query: ie,
|
|
191
166
|
defaultQuery: se,
|
|
192
|
-
onQuery:
|
|
167
|
+
onQuery: E,
|
|
193
168
|
triggerMode: R
|
|
194
|
-
}), H =
|
|
169
|
+
}), H = r({
|
|
195
170
|
options: z,
|
|
196
171
|
query: V,
|
|
197
|
-
enabled:
|
|
198
|
-
getSearchText: (t) =>
|
|
199
|
-
}), U =
|
|
172
|
+
enabled: D,
|
|
173
|
+
getSearchText: (t) => pe(t, e, B)
|
|
174
|
+
}), U = r({
|
|
200
175
|
options: xe,
|
|
201
176
|
query: V,
|
|
202
|
-
enabled:
|
|
203
|
-
getSearchText: (t) =>
|
|
204
|
-
}), W = v(() => [...H, ...U], [U, H]), Ce = H.length > 0 ? 0 : -1, { draftValue: G, setDraftValue: K, prepareOpen: we } =
|
|
177
|
+
enabled: D,
|
|
178
|
+
getSearchText: (t) => pe(t, e, B)
|
|
179
|
+
}), W = v(() => [...H, ...U], [U, H]), Ce = H.length > 0 ? 0 : -1, { draftValue: G, setDraftValue: K, prepareOpen: we } = l({
|
|
205
180
|
value: z,
|
|
206
181
|
open: L,
|
|
207
182
|
onCommit: h,
|
|
208
|
-
onOpen:
|
|
209
|
-
onClose:
|
|
210
|
-
isEqual: (t, n) =>
|
|
183
|
+
onOpen: k,
|
|
184
|
+
onClose: ge,
|
|
185
|
+
isEqual: (t, n) => me(t, n, e)
|
|
211
186
|
}), q = v(() => new Set(G.map((t) => O(t, e))), [e, G]), Te = v(() => ({
|
|
212
187
|
selectedItems: G,
|
|
213
188
|
committedSelectedItems: z,
|
|
@@ -218,7 +193,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
218
193
|
G,
|
|
219
194
|
L,
|
|
220
195
|
q
|
|
221
|
-
]), J = te((e) => A?.(e, Te) ?? !1, [A, Te]), { activeIndex: Y, context: Ee, floatingStyles: De, getFloatingProps: Oe, setReference: ke, setFloating: Ae, setOptionRef: je, close: Me, openList: Ne, toggleOpen: Pe, selectActiveOption: Fe, handleReferenceKeyDown: Ie, handleFloatingKeyDown: Le, getOptionId: Re, getActiveOptionId: ze } =
|
|
196
|
+
]), J = te((e) => A?.(e, Te) ?? !1, [A, Te]), { activeIndex: Y, context: Ee, floatingStyles: De, getFloatingProps: Oe, setReference: ke, setFloating: Ae, setOptionRef: je, close: Me, openList: Ne, toggleOpen: Pe, selectActiveOption: Fe, handleReferenceKeyDown: Ie, handleFloatingKeyDown: Le, getOptionId: Re, getActiveOptionId: ze } = s({
|
|
222
197
|
options: W,
|
|
223
198
|
selectedIndex: Ce,
|
|
224
199
|
open: L,
|
|
@@ -229,7 +204,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
229
204
|
closeOnSelect: !1,
|
|
230
205
|
allowOpenWithoutOptions: !0,
|
|
231
206
|
triggerMode: R
|
|
232
|
-
}), Be =
|
|
207
|
+
}), Be = w ?? V, X = (t) => {
|
|
233
208
|
let n = O(t, e);
|
|
234
209
|
K((r) => r.some((t) => O(t, e) === n) ? r.filter((t) => O(t, e) !== n) : J(t) ? r : [...r, t]);
|
|
235
210
|
}, Ve = (e) => {
|
|
@@ -262,13 +237,13 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
262
237
|
clearSelection: He,
|
|
263
238
|
selectAll: Ue,
|
|
264
239
|
deselectAll: We
|
|
265
|
-
}, Je = P === void 0 ?
|
|
240
|
+
}, Je = P === void 0 ? ce({
|
|
266
241
|
codeKey: e,
|
|
267
242
|
textKey: B
|
|
268
|
-
}) : P, Ye = F === void 0 ?
|
|
243
|
+
}) : P, Ye = F === void 0 ? le : F, Xe = _e ?? ue({
|
|
269
244
|
codeKey: e,
|
|
270
245
|
textKey: B,
|
|
271
|
-
hideCode:
|
|
246
|
+
hideCode: a
|
|
272
247
|
}), Ze = typeof Je == "function" ? Je(qe) : null, Qe = typeof Ye == "function" ? Ye(qe) : null, Q = H.map((e, t) => ({
|
|
273
248
|
item: e,
|
|
274
249
|
index: t
|
|
@@ -289,16 +264,16 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
289
264
|
L || we();
|
|
290
265
|
}
|
|
291
266
|
});
|
|
292
|
-
return /* @__PURE__ */ x(
|
|
267
|
+
return /* @__PURE__ */ x(u, {
|
|
293
268
|
label: g,
|
|
294
269
|
description: _,
|
|
295
270
|
disabled: j,
|
|
296
271
|
placeholder: b,
|
|
297
272
|
size: re,
|
|
298
273
|
className: C.multiSelect,
|
|
299
|
-
children: ({ controlId: n, labelId: r, describedBy:
|
|
274
|
+
children: ({ controlId: n, labelId: r, describedBy: a }) => {
|
|
300
275
|
let s = `${n}-listbox`;
|
|
301
|
-
return /* @__PURE__ */ S(oe, { children: [/* @__PURE__ */ x(
|
|
276
|
+
return /* @__PURE__ */ S(oe, { children: [/* @__PURE__ */ x(i, {
|
|
302
277
|
ref: Ve,
|
|
303
278
|
rootRef: ke,
|
|
304
279
|
id: n,
|
|
@@ -309,14 +284,14 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
309
284
|
value: V,
|
|
310
285
|
placeholder: Ke ? void 0 : b,
|
|
311
286
|
"aria-labelledby": r,
|
|
312
|
-
"aria-describedby":
|
|
287
|
+
"aria-describedby": a,
|
|
313
288
|
"aria-haspopup": "listbox",
|
|
314
289
|
"aria-expanded": L,
|
|
315
290
|
"aria-controls": L ? s : void 0,
|
|
316
291
|
"aria-autocomplete": "list",
|
|
317
292
|
"aria-activedescendant": L ? ze(s) : void 0,
|
|
318
293
|
rootClassName: "flex alignItemsCenter",
|
|
319
|
-
endAdornment: /* @__PURE__ */ S(
|
|
294
|
+
endAdornment: /* @__PURE__ */ S(c, {
|
|
320
295
|
open: L,
|
|
321
296
|
disabled: j,
|
|
322
297
|
onToggleMouseDown: $.handleToggleMouseDown,
|
|
@@ -362,7 +337,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
362
337
|
floatingStyles: De,
|
|
363
338
|
listId: s,
|
|
364
339
|
labelId: r,
|
|
365
|
-
descriptionId:
|
|
340
|
+
descriptionId: a,
|
|
366
341
|
activeOptionId: L ? ze(s) : void 0,
|
|
367
342
|
setFloating: Ae,
|
|
368
343
|
getFloatingProps: Oe,
|
|
@@ -372,14 +347,14 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
372
347
|
tabIndex: -1,
|
|
373
348
|
className: t.uiPopupOptions,
|
|
374
349
|
header: Qe,
|
|
375
|
-
children: /* @__PURE__ */ x(
|
|
350
|
+
children: /* @__PURE__ */ x(de, {
|
|
376
351
|
isNoData: et,
|
|
377
352
|
isLoading: N,
|
|
378
353
|
error: M,
|
|
379
354
|
children: /* @__PURE__ */ S("div", {
|
|
380
355
|
className: "scrollable h100",
|
|
381
356
|
children: [
|
|
382
|
-
/* @__PURE__ */ x(
|
|
357
|
+
/* @__PURE__ */ x(he, {
|
|
383
358
|
entries: Q,
|
|
384
359
|
listId: s,
|
|
385
360
|
activeIndex: Y,
|
|
@@ -395,7 +370,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
395
370
|
renderItem: Xe
|
|
396
371
|
}),
|
|
397
372
|
Q.length > 0 && xe.length > 0 && /* @__PURE__ */ x(ee, { className: "marginBlockSm" }),
|
|
398
|
-
/* @__PURE__ */ x(
|
|
373
|
+
/* @__PURE__ */ x(he, {
|
|
399
374
|
entries: $e,
|
|
400
375
|
listId: s,
|
|
401
376
|
activeIndex: Y,
|
|
@@ -420,7 +395,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: r, items: p, value: m, onChange:
|
|
|
420
395
|
k.displayName = "MultiSelect";
|
|
421
396
|
//#endregion
|
|
422
397
|
//#region src/multi-select/model/useODataMultiSelect.ts
|
|
423
|
-
function
|
|
398
|
+
function ge({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange: a }) {
|
|
424
399
|
let o = h({
|
|
425
400
|
odata: e,
|
|
426
401
|
segment: t,
|
|
@@ -437,8 +412,8 @@ function A({ odata: e, segment: t, model: n, value: r, dependencies: i, onChange
|
|
|
437
412
|
}
|
|
438
413
|
//#endregion
|
|
439
414
|
//#region src/multi-select/ui/ODataMultiSelect.tsx
|
|
440
|
-
var
|
|
441
|
-
let u =
|
|
415
|
+
var A = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a, value: o, dependencies: s, onChange: c, size: l }) => {
|
|
416
|
+
let u = ge({
|
|
442
417
|
odata: e,
|
|
443
418
|
segment: t,
|
|
444
419
|
model: re(n),
|
|
@@ -464,7 +439,7 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
|
|
|
464
439
|
placeholder: u.placeholder,
|
|
465
440
|
error: u.isError ? "Ошибка загрузки" : void 0
|
|
466
441
|
});
|
|
467
|
-
},
|
|
442
|
+
}, j = ({ item: e, values: t, onChange: n, width: r = 15 }) => {
|
|
468
443
|
let [i, a] = y({}), o = t ?? i, s = `calc(${r}em + var(--width-add))`, c = te((r) => {
|
|
469
444
|
let i = {
|
|
470
445
|
...o,
|
|
@@ -482,7 +457,7 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
|
|
|
482
457
|
maxWidth: s,
|
|
483
458
|
minWidth: s
|
|
484
459
|
},
|
|
485
|
-
children: /* @__PURE__ */ x(
|
|
460
|
+
children: /* @__PURE__ */ x(A, {
|
|
486
461
|
odata: e.odata,
|
|
487
462
|
segment: e.segment,
|
|
488
463
|
model: e.model,
|
|
@@ -491,13 +466,13 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
|
|
|
491
466
|
onChange: c
|
|
492
467
|
})
|
|
493
468
|
});
|
|
494
|
-
},
|
|
469
|
+
}, M = ({ width: e = 15, odata: t, segments: n, model: r, values: i, onChange: a }) => {
|
|
495
470
|
let [o, s] = y({}), c = i ?? o;
|
|
496
471
|
return b([{
|
|
497
472
|
odata: t,
|
|
498
473
|
segments: n,
|
|
499
474
|
model: r
|
|
500
|
-
}]).map((t) => /* @__PURE__ */ x(
|
|
475
|
+
}]).map((t) => /* @__PURE__ */ x(j, {
|
|
501
476
|
item: t,
|
|
502
477
|
values: c,
|
|
503
478
|
onChange: (e) => {
|
|
@@ -508,19 +483,19 @@ var j = ({ odata: e, segment: t, model: n, label: r, description: i, disabled: a
|
|
|
508
483
|
};
|
|
509
484
|
//#endregion
|
|
510
485
|
//#region src/multi-select/ui/SerializableMultiSelect.tsx
|
|
511
|
-
function
|
|
486
|
+
function N(e, t) {
|
|
512
487
|
return e[t];
|
|
513
488
|
}
|
|
514
|
-
function
|
|
489
|
+
function P(e, t, n) {
|
|
515
490
|
let r = e[t];
|
|
516
491
|
if (typeof r == "string") return r;
|
|
517
|
-
let i =
|
|
492
|
+
let i = N(e, n);
|
|
518
493
|
return typeof i == "string" ? i : String(i);
|
|
519
494
|
}
|
|
520
|
-
function
|
|
495
|
+
function F({ label: e, description: t, disabled: n, placeholder: r, size: i, options: a, value: o, onChange: s, optionKey: c, optionLabel: l, renderCode: u }) {
|
|
521
496
|
let d = a.map((e) => ({
|
|
522
|
-
key: String(
|
|
523
|
-
text:
|
|
497
|
+
key: String(N(e, c)),
|
|
498
|
+
text: P(e, l, c)
|
|
524
499
|
})), f = new Set((o ?? []).map((e) => String(e))), p = d.filter((e) => f.has(e.key));
|
|
525
500
|
return /* @__PURE__ */ x(k, {
|
|
526
501
|
label: e,
|
|
@@ -537,6 +512,6 @@ function _e({ label: e, description: t, disabled: n, placeholder: r, size: i, op
|
|
|
537
512
|
});
|
|
538
513
|
}
|
|
539
514
|
//#endregion
|
|
540
|
-
export { k as a,
|
|
515
|
+
export { k as a, A as i, M as n, w as o, j as r, F as t };
|
|
541
516
|
|
|
542
|
-
//# sourceMappingURL=multi-select-
|
|
517
|
+
//# sourceMappingURL=multi-select-Bg7Psslp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-select-Bg7Psslp.js","names":[],"sources":["../../src/multi-select/ui/MultiSelectOption.tsx","../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectToken.tsx","../../src/multi-select/ui/defaultRenderers.tsx","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelect.tsx","../../src/multi-select/model/useODataMultiSelect.ts","../../src/multi-select/ui/ODataMultiSelect.tsx","../../src/multi-select/ui/ODataDependentSegmentMultiSelect.tsx","../../src/multi-select/ui/ODataDependentMultiSelect.tsx","../../src/multi-select/ui/SerializableMultiSelect.tsx"],"sourcesContent":["import { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { SelectOptionContent } from \"../../select/SelectOptionContent\";\n\ninterface MultiSelectOptionProps {\n\titem: CollectionItem;\n\ttextKey: string;\n\tcodeKey?: string;\n\thighlight?: string;\n\tselected: boolean;\n}\n\n/**\n * Отдельная опция внутри `MultiSelect`. Отрисовывает состояние выбора и подсветку текста для найденных совпадений.\n */\nexport function MultiSelectOption({ item, textKey, codeKey, highlight }: MultiSelectOptionProps) {\n\treturn <SelectOptionContent label={item[textKey]} code={codeKey && item[codeKey]} highlight={highlight} />;\n}\n","@use \"@/styles/mixins\" as *;\n\n.multiSelect {\n\t// Общий контейнер\n\tpadding: 0;\n}\n\n.multiSelectTokens {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\theight: calc(100% - var(--space-sm));\n\tmax-width: calc(100% - var(--control-height) * 2);\n\n\t// overflow: hidden;\n\n\t&:empty {\n\t\tdisplay: none;\n\t}\n}\n\n.multiSelectToken {\n\t// font-size: var(--font-size-sm);\n\n\t// flex: 1 1 0%;\n\t// min-width: 0;\n\tmax-width: 70%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\tword-break: normal;\n\ttext-overflow: ellipsis;\n\n\tpointer-events: none;\n}\n","import styles from \"./MultiSelect.module.scss\";\n\ninterface MultiSelectTokenProps {\n\tvalue: string | undefined;\n}\n\n/**\n * Токен выбранного значения в `MultiSelect`. Показывает выбранный элемент и кнопку его удаления из текущего набора.\n */\nexport function MultiSelectToken({ value }: MultiSelectTokenProps) {\n\tif (!value) return null;\n\n\treturn (\n\t\t<div className={styles.multiSelectTokens}>\n\t\t\t<div className={styles.multiSelectToken}>{value}</div>\n\t\t</div>\n\t);\n}\n","import { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { PickerSelectionToolbar } from \"../../picker\";\n\nimport { MultiSelectOption } from \"./MultiSelectOption\";\nimport { MultiSelectToken } from \"./MultiSelectToken\";\n\nimport type { MultiSelectItemState, MultiSelectRenderContext } from \"./MultiSelect\";\n\ninterface MultiSelectRendererConfig {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n}\n\nexport function resolveMultiSelectTextKey(items: 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\nexport function getDefaultMultiSelectTokenValue(items: CollectionItem[], codeKey: string, textKey?: string) {\n\tif (items.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (items.length > 1) {\n\t\treturn `${items.length} элемент${items.length > 5 ? \"ов\" : \"а\"})`;\n\t}\n\n\tconst resolvedTextKey = resolveMultiSelectTextKey(items, codeKey, textKey);\n\treturn items[0]?.[resolvedTextKey] ?? items[0]?.[codeKey];\n}\n\nexport function createDefaultMultiSelectTokenRenderer(config: MultiSelectRendererConfig) {\n\treturn function renderDefaultToken(context: MultiSelectRenderContext) {\n\t\treturn <MultiSelectToken value={getDefaultMultiSelectTokenValue(context.selectedItems, config.codeKey, config.textKey)} />;\n\t};\n}\n\nexport function renderDefaultMultiSelectToolbar(context: MultiSelectRenderContext) {\n\treturn <PickerSelectionToolbar onSelectAll={context.selectAll} onDeselectAll={context.deselectAll} />;\n}\n\nexport function createDefaultMultiSelectItemRenderer(config: MultiSelectRendererConfig) {\n\treturn function renderDefaultItem(item: CollectionItem, state: MultiSelectItemState) {\n\t\treturn (\n\t\t\t<MultiSelectOption\n\t\t\t\titem={item}\n\t\t\t\tselected={state.selected}\n\t\t\t\thighlight={state.highlightQuery}\n\t\t\t\ttextKey={resolveMultiSelectTextKey([item], config.codeKey, config.textKey)}\n\t\t\t\tcodeKey={config.hideCode ? undefined : config.codeKey}\n\t\t\t/>\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 React, { forwardRef, type PropsWithChildren, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { XIcon } from \"lucide-react\";\n\nimport { CheckBox } from \"../../check-box\";\nimport {\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { type UiBaseProps } from \"../../types\";\nimport uiStyles from \"../../ui.module.scss\";\n\nimport {\n\tcreateDefaultMultiSelectItemRenderer,\n\tcreateDefaultMultiSelectTokenRenderer,\n\trenderDefaultMultiSelectToolbar,\n\tresolveMultiSelectTextKey\n} from \"./defaultRenderers\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ninterface MultiSelectOptionsProps extends PropsWithChildren {\n\tisNoData?: boolean;\n\tisLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, isLoading, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\tif (isLoading) return <PickerStatus loadingState={<MultiSelectOptionSkeleton text=\"Загрузка...\" />} />;\n\tif (error) return <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\n\treturn <>{children}</>;\n}\n\nexport interface MultiSelectItemState {\n\tselected: boolean;\n\tactive: boolean;\n\tdisabled: boolean;\n\tquery: string;\n\thighlightQuery: string;\n}\n\nexport interface MultiSelectRenderContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tavailableItems: CollectionItem[];\n\tquery: string;\n\topen: boolean;\n\tclearSelection: () => void;\n\tselectAll: () => void;\n\tdeselectAll: () => void;\n}\n\nexport interface MultiSelectOptionDisableContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tselectedKeys: ReadonlySet<string>;\n\topen: boolean;\n}\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => React.ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: MultiSelectItemState) => React.ReactNode;\n}\n\nexport interface MultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\thighlightQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\titems: TOption[];\n\tgetOptionDisabled?: (item: TOption, context: MultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\nconst fallback: CollectionItem[] = [];\n\nfunction getItemKey(item: CollectionItem, codeKey: string) {\n\treturn item[codeKey];\n}\n\nfunction getItemSearchParts(item: CollectionItem, codeKey: string, textKey: string) {\n\treturn Array.from(new Set([item[textKey], item[codeKey], ...Object.values(item)]));\n}\n\nfunction areSelectionsEqual(left: CollectionItem[], right: CollectionItem[], codeKey: string) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map((item) => getItemKey(item, codeKey)));\n\n\treturn left.every((item) => rightKeys.has(getItemKey(item, codeKey)));\n}\n\ninterface MultiSelectOptionEntry {\n\titem: CollectionItem;\n\tindex: number;\n}\n\ninterface MultiSelectOptionGroupProps {\n\tentries: MultiSelectOptionEntry[];\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: Set<string>;\n\tcodeKey: string;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionDisabled?: (item: CollectionItem) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (item: CollectionItem) => void;\n\tselectOnlyOption: (item: CollectionItem) => void;\n\trenderItem: (item: CollectionItem, state: MultiSelectItemState) => React.ReactNode;\n}\n\nfunction MultiSelectOptionGroup({\n\tentries,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tcodeKey,\n\tquery,\n\thighlightQuery,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderItem\n}: MultiSelectOptionGroupProps) {\n\treturn entries.map(({ item, index }) => {\n\t\tconst active = index === activeIndex;\n\t\tconst selected = selectedKeys.has(getItemKey(item, codeKey));\n\t\tconst optionDisabled = getOptionDisabled?.(item) ?? false;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={`${getItemKey(item, codeKey)}-${index}`}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tuiStyles.uiSelectOption,\n\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\tactive && uiStyles.uiPopupOptionActive\n\t\t\t\t)}\n\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}}>\n\t\t\t\t<div\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}}>\n\t\t\t\t\t<CheckBox\n\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\tonChange={() => {\n\t\t\t\t\t\t\tif (!optionDisabled) {\n\t\t\t\t\t\t\t\ttoggleOption(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"overflowHidden\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tif (!optionDisabled) {\n\t\t\t\t\t\t\tselectOnlyOption(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t{renderItem(item, { selected, active, disabled: optionDisabled, query, highlightQuery })}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t});\n}\n\n/**\n * Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.\n * Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.\n */\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(\n\t(\n\t\t{\n\t\t\tcodeKey,\n\t\t\ttextKey,\n\t\t\thideCode,\n\t\t\titems,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tplaceholder,\n\t\t\tsize,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\thighlightQuery,\n\t\t\tonQuery,\n\t\t\tdefaultFilter = true,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tgetOptionDisabled,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tisLoading,\n\t\t\trenderToken,\n\t\t\trenderToolbar,\n\t\t\trenderItem\n\t\t},\n\t\tref\n\t) => {\n\t\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\t\tconst [open, setOpen] = useState(false);\n\t\tconst triggerMode = \"search-multi\";\n\t\tconst committedSelectedItems = value ?? fallback;\n\t\tconst committedSelectedKeys = useMemo(\n\t\t\t() => new Set(committedSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedItems]\n\t\t);\n\t\tconst availableItems = useMemo(\n\t\t\t() => items.filter((item) => !committedSelectedKeys.has(getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedKeys, items]\n\t\t);\n\t\tconst resolvedTextKey = useMemo(\n\t\t\t() => resolveMultiSelectTextKey([...committedSelectedItems, ...items], codeKey, textKey),\n\t\t\t[codeKey, committedSelectedItems, items, textKey]\n\t\t);\n\t\tconst { query: currentQuery, setQuery } = usePickerQuery({\n\t\t\topen,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\tonQuery,\n\t\t\ttriggerMode\n\t\t});\n\t\tconst filteredCommittedSelectedItems = usePickerDefaultFilter({\n\t\t\toptions: committedSelectedItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst filteredAvailableItems = usePickerDefaultFilter({\n\t\t\toptions: availableItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst visibleOptions = useMemo(\n\t\t\t() => [...filteredCommittedSelectedItems, ...filteredAvailableItems],\n\t\t\t[filteredAvailableItems, filteredCommittedSelectedItems]\n\t\t);\n\t\tconst selectedIndex = filteredCommittedSelectedItems.length > 0 ? 0 : -1;\n\t\tconst {\n\t\t\tdraftValue: draftSelectedItems,\n\t\t\tsetDraftValue: setDraftSelectedItems,\n\t\t\tprepareOpen\n\t\t} = usePickerSelectionLifecycle({\n\t\t\tvalue: committedSelectedItems,\n\t\t\topen,\n\t\t\tonCommit: onChange,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tisEqual: (left, right) => areSelectionsEqual(left, right, codeKey)\n\t\t});\n\t\tconst selectedKeys = useMemo(\n\t\t\t() => new Set(draftSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, draftSelectedItems]\n\t\t);\n\t\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext>(\n\t\t\t() => ({\n\t\t\t\tselectedItems: draftSelectedItems,\n\t\t\t\tcommittedSelectedItems,\n\t\t\t\tselectedKeys,\n\t\t\t\topen\n\t\t\t}),\n\t\t\t[committedSelectedItems, draftSelectedItems, open, selectedKeys]\n\t\t);\n\t\tconst isOptionDisabled = useCallback(\n\t\t\t(item: CollectionItem) => getOptionDisabled?.(item, optionDisableContext) ?? false,\n\t\t\t[getOptionDisabled, optionDisableContext]\n\t\t);\n\t\tconst {\n\t\t\tactiveIndex,\n\t\t\tcontext,\n\t\t\tfloatingStyles,\n\t\t\tgetFloatingProps,\n\t\t\tsetReference,\n\t\t\tsetFloating,\n\t\t\tsetOptionRef,\n\t\t\tclose,\n\t\t\topenList,\n\t\t\ttoggleOpen,\n\t\t\tselectActiveOption,\n\t\t\thandleReferenceKeyDown,\n\t\t\thandleFloatingKeyDown,\n\t\t\tgetOptionId,\n\t\t\tgetActiveOptionId\n\t\t} = usePickerFloatingListbox({\n\t\t\toptions: visibleOptions,\n\t\t\tselectedIndex,\n\t\t\topen,\n\t\t\tonOpenChange: setOpen,\n\t\t\tonSelect: undefined,\n\t\t\tdisabled,\n\t\t\tgetOptionDisabled: isOptionDisabled,\n\t\t\tcloseOnSelect: false,\n\t\t\tallowOpenWithoutOptions: true,\n\t\t\ttriggerMode\n\t\t});\n\n\t\tconst currentHighlightQuery = highlightQuery ?? currentQuery;\n\t\tconst toggleDraftSelection = (item: CollectionItem) => {\n\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst isSelected = currentItems.some((selectedItem) => getItemKey(selectedItem, codeKey) === itemKey);\n\n\t\t\t\tif (isSelected) {\n\t\t\t\t\treturn currentItems.filter((selectedItem) => getItemKey(selectedItem, codeKey) !== itemKey);\n\t\t\t\t}\n\n\t\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\t\treturn currentItems;\n\t\t\t\t}\n\n\t\t\t\treturn [...currentItems, item];\n\t\t\t});\n\t\t};\n\n\t\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\t\tinputRef.current = node;\n\n\t\t\tif (typeof ref === \"function\") {\n\t\t\t\tref(node);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ref) {\n\t\t\t\tref.current = node;\n\t\t\t}\n\t\t};\n\n\t\tconst clearSelection = () => {\n\t\t\tsetDraftSelectedItems([]);\n\n\t\t\tif (!open) {\n\t\t\t\tonChange([]);\n\t\t\t}\n\t\t};\n\n\t\tconst selectAll = () => {\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst nextItems = [...currentItems];\n\t\t\t\tconst selectedKeys = new Set(currentItems.map((item) => getItemKey(item, codeKey)));\n\n\t\t\t\tfor (const item of visibleOptions) {\n\t\t\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\t\t\tif (!selectedKeys.has(itemKey) && !isOptionDisabled(item)) {\n\t\t\t\t\t\tselectedKeys.add(itemKey);\n\t\t\t\t\t\tnextItems.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn nextItems;\n\t\t\t});\n\t\t};\n\n\t\tconst deselectAll = () => {\n\t\t\tsetDraftSelectedItems([]);\n\t\t};\n\n\t\tconst selectOnlyOption = (item: CollectionItem) => {\n\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetDraftSelectedItems([item]);\n\t\t\tclose();\n\t\t};\n\n\t\tconst currentSelectedItems = open ? draftSelectedItems : committedSelectedItems;\n\t\tconst hasSelectedItems = currentSelectedItems.length > 0;\n\t\tconst renderContext: MultiSelectRenderContext = {\n\t\t\tselectedItems: currentSelectedItems,\n\t\t\tcommittedSelectedItems,\n\t\t\tavailableItems: filteredAvailableItems,\n\t\t\tquery: currentQuery,\n\t\t\topen,\n\t\t\tclearSelection,\n\t\t\tselectAll,\n\t\t\tdeselectAll\n\t\t};\n\t\tconst tokenRenderer =\n\t\t\trenderToken === undefined ? createDefaultMultiSelectTokenRenderer({ codeKey, textKey: resolvedTextKey }) : renderToken;\n\t\tconst toolbarRenderer = renderToolbar === undefined ? renderDefaultMultiSelectToolbar : renderToolbar;\n\t\tconst itemRenderer =\n\t\t\trenderItem ??\n\t\t\tcreateDefaultMultiSelectItemRenderer({\n\t\t\t\tcodeKey,\n\t\t\t\ttextKey: resolvedTextKey,\n\t\t\t\thideCode\n\t\t\t});\n\t\tconst tokenNode = typeof tokenRenderer === \"function\" ? tokenRenderer(renderContext) : null;\n\t\tconst toolbarNode = typeof toolbarRenderer === \"function\" ? toolbarRenderer(renderContext) : null;\n\t\t// const hasToken = tokenNode !== null && tokenNode !== undefined;\n\t\tconst selectedEntries = filteredCommittedSelectedItems.map((item, index) => ({ item, index }));\n\t\tconst itemEntries = filteredAvailableItems.map((item, index) => ({ item, index: index + selectedEntries.length }));\n\t\tconst isNoData = !isLoading && !error && visibleOptions.length === 0;\n\t\tconst triggerController = usePickerTriggerController({\n\t\t\tmode: triggerMode,\n\t\t\topen,\n\t\t\tcurrentQuery,\n\t\t\thasDisplayValue: false,\n\t\t\tinputRef,\n\t\t\tsetQuery,\n\t\t\topenList,\n\t\t\tclose,\n\t\t\ttoggleOpen,\n\t\t\tonBeforeOpen: () => {\n\t\t\t\tif (!open) {\n\t\t\t\t\tprepareOpen();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<PickerField\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tsize={size}\n\t\t\t\tclassName={styles.multiSelect}>\n\t\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PickerTriggerInput\n\t\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tvalue={currentQuery}\n\t\t\t\t\t\t\t\tplaceholder={hasSelectedItems ? undefined : placeholder}\n\t\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\trootClassName=\"flex alignItemsCenter\"\n\t\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t\t{tokenNode}\n\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tdisabled={!hasSelectedItems}\n\t\t\t\t\t\t\t\t\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"multi-select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-multi-select\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={clearSelection}\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Очистить все\">\n\t\t\t\t\t\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\t\tonActivateWhenOpen: () => {\n\t\t\t\t\t\t\t\t\t\t\tif (activeIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst activeItem = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeItem);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tselectActiveOption();\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tenableClosedArrowDownOpen: true,\n\t\t\t\t\t\t\t\t\t\tsuppressClosedArrowUp: true\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\t\tactiveOptionId={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\t\tinitialFocus={-1}\n\t\t\t\t\t\t\t\treturnFocus={false}\n\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\tclassName={uiStyles.uiPopupOptions}\n\t\t\t\t\t\t\t\theader={toolbarNode}>\n\t\t\t\t\t\t\t\t<MultiSelectOptionsWrapper isNoData={isNoData} isLoading={isLoading} error={error}>\n\t\t\t\t\t\t\t\t\t<div className=\"scrollable h100\">\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableItems.length > 0 && <Separator className=\"marginBlockSm\" />}\n\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={itemEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</MultiSelectOptionsWrapper>\n\t\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t</PickerField>\n\t\t);\n\t}\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n","import { ODataCollectionModel, ODataSelectBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { mapSelectedItemsToValues, useODataSelectBase } from \"../../select/model/useODataSelectBase\";\n\ninterface UseODataMultiSelectOptions extends Omit<ODataSelectBaseProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (keys: string[]) => void;\n}\n\nexport function useODataMultiSelect({ odata, segment, model, value, dependencies, onChange }: UseODataMultiSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies\n\t});\n\n\tconst handleChange = (items: CollectionItem[]) => {\n\t\tonChange(mapSelectedItemsToValues(items, odataModel.selectionKey));\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\thandleChange\n\t};\n}\n","import React from \"react\";\n\nimport { ODataSelectBaseProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { UiBaseProps } from \"../../types\";\nimport { useODataMultiSelect } from \"../model/useODataMultiSelect\";\n\nimport { MultiSelect } from \"./MultiSelect\";\n\ntype ODataMultiSelectProps = ODataSelectBaseProps & Omit<UiBaseProps<string[]>, \"placeholder\"> & {};\n\nexport const ODataMultiSelect: React.FC<ODataMultiSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tsize\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataMultiSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tsize={size}\n\t\t\tcodeKey={odataModel.codeKey}\n\t\t\ttextKey={odataModel.textKey}\n\t\t\thideCode={segment.hideCode ?? odata.hideCode}\n\t\t\titems={odataModel.filteredItems}\n\t\t\tvalue={odataModel.selectedItems}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tquery={odataModel.query}\n\t\t\tdefaultFilter={false}\n\t\t\thighlightQuery={odataModel.debouncedQuery}\n\t\t\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n};\n","import { useCallback, useState } from \"react\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentItem } from \"@ryuzaki13/react-foundation-api/odata\";\n\ninterface ODataDependentSegmentMultiSelectProps {\n\titem: ODataDependentSegmentItem;\n\t/**\n\t * Выбранные значения (управляемый компонент)\n\t */\n\tvalues?: Record<string, string[]>;\n\t/**\n\t * Обработчик изменения выбранных значений\n\t */\n\tonChange?: (selected: Record<string, string[]>) => void;\n\t/**\n\t * Ширина одного элемента в `em` единицах.\n\t *\n\t * @default 15\n\t */\n\twidth?: number;\n}\n\nexport const ODataDependentSegmentMultiSelect: React.FC<ODataDependentSegmentMultiSelectProps> = ({\n\titem,\n\tvalues,\n\tonChange,\n\twidth = 15\n}) => {\n\tconst [internalSelectedValues, setInternalSelectedValues] = useState<Record<string, string[]>>({});\n\tconst selectedValues = values ?? internalSelectedValues;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tconst nextSelectedValues = {\n\t\t\t\t...selectedValues,\n\t\t\t\t[item.id]: keys\n\t\t\t};\n\n\t\t\tif (!values) {\n\t\t\t\tsetInternalSelectedValues(nextSelectedValues);\n\t\t\t}\n\n\t\t\tonChange?.(nextSelectedValues);\n\t\t},\n\t\t[item.id, onChange, selectedValues, values]\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={selectedValues}\n\t\t\t\tvalue={selectedValues[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useState } from \"react\";\n\nimport { flattenODataDependentServices, ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\ninterface ODataDependentMultiSelectProps extends ODataDependentBaseProps {\n\t/**\n\t * Выбранные значения (управляемый компонент)\n\t */\n\tvalues?: Record<string, string[]>;\n\n\t/**\n\t * Обработчик изменения выбранных значений\n\t */\n\tonChange?: (selected: Record<string, string[]>) => void;\n\n\t/**\n\t * Ширина одного элемента в `em` единицах.\n\t *\n\t * @default 15\n\t */\n\twidth?: number;\n}\n\nexport const ODataDependentMultiSelect: React.FC<ODataDependentMultiSelectProps> = ({\n\twidth = 15,\n\todata,\n\tsegments,\n\tmodel,\n\tvalues,\n\tonChange\n}) => {\n\tconst [internalSelectedValues, setInternalSelectedValues] = useState<Record<string, string[]>>({});\n\tconst selectedValues = values ?? internalSelectedValues;\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={selectedValues}\n\t\t\tonChange={(nextSelectedValues) => {\n\t\t\t\tif (!values) {\n\t\t\t\t\tsetInternalSelectedValues(nextSelectedValues);\n\t\t\t\t}\n\n\t\t\t\tonChange?.(nextSelectedValues);\n\t\t\t}}\n\t\t\twidth={width}\n\t\t/>\n\t));\n};\n","import { MultiSelect } from \"./MultiSelect\";\n\nimport type { UiBaseProps } from \"../../types\";\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], string> extends never ? never : K;\n}[keyof TOption];\n\nexport interface SerializableMultiSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends UiBaseProps<Extract<TOption[TOptionKey], string>[]> {\n\toptions: readonly TOption[];\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], string> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], string>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" ? key : String(key);\n}\n\nexport function SerializableMultiSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode\n}: SerializableMultiSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\t// Как будто можно не мемоизировать, нет смысла\n\tconst items = options.map<CollectionItem>((option) => ({\n\t\tkey: String(getSerializableOptionKey(option, optionKey)),\n\t\ttext: getSerializableOptionLabel(option, optionLabel, optionKey)\n\t}));\n\tconst selectedKeys = new Set((value ?? []).map((item) => String(item)));\n\tconst selectedItems = items.filter((item) => selectedKeys.has(item.key));\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\titems={items}\n\t\t\tcodeKey=\"key\"\n\t\t\ttextKey=\"text\"\n\t\t\thideCode={renderCode ? undefined : true}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={(nextItems) => onChange(nextItems.map((item) => item.key) as Extract<TOption[TOptionKey], string>[])}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,GAAkB,EAAE,SAAM,YAAS,YAAS,gBAAqC;CAChG,OAAO,kBAAC,GAAD;EAAqB,OAAO,EAAK;EAAU,MAAM,KAAW,EAAK;EAAqB;CAAY,CAAA;AAC1G;;;;;;;;AERA,SAAgB,EAAiB,EAAE,YAAgC;CAGlE,OAFK,IAGJ,kBAAC,OAAD;EAAK,WAAW,EAAO;YACtB,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAmB;EAAW,CAAA;CACjD,CAAA,IALa;AAOpB;;;ACFA,SAAgB,EAA0B,GAAyB,GAAiB,GAAkB;CACrG,IAAI,GACH,OAAO;CAGR,IAAM,IAAa,EAAM;CAMzB,OAJK,IAIE,OAAO,KAAK,CAAU,CAAC,CAAC,MAAM,MAAQ,MAAQ,CAAO,KAAK,IAHzD;AAIT;AAEA,SAAgB,EAAgC,GAAyB,GAAiB,GAAkB;CAC3G,IAAI,EAAM,WAAW,GACpB;CAGD,IAAI,EAAM,SAAS,GAClB,OAAO,GAAG,EAAM,OAAO,UAAU,EAAM,SAAS,IAAI,OAAO,IAAI;CAGhE,IAAM,IAAkB,EAA0B,GAAO,GAAS,CAAO;CACzE,OAAO,EAAM,EAAE,GAAG,MAAoB,EAAM,EAAE,GAAG;AAClD;AAEA,SAAgB,GAAsC,GAAmC;CACxF,OAAO,SAA4B,GAAmC;EACrE,OAAO,kBAAC,GAAD,EAAkB,OAAO,EAAgC,EAAQ,eAAe,EAAO,SAAS,EAAO,OAAO,EAAI,CAAA;CAC1H;AACD;AAEA,SAAgB,GAAgC,GAAmC;CAClF,OAAO,kBAAC,GAAD;EAAwB,aAAa,EAAQ;EAAW,eAAe,EAAQ;CAAc,CAAA;AACrG;AAEA,SAAgB,GAAqC,GAAmC;CACvF,OAAO,SAA2B,GAAsB,GAA6B;EACpF,OACC,kBAAC,IAAD;GACO;GACN,UAAU,EAAM;GAChB,WAAW,EAAM;GACjB,SAAS,EAA0B,CAAC,CAAI,GAAG,EAAO,SAAS,EAAO,OAAO;GACzE,SAAS,EAAO,WAAW,KAAA,IAAY,EAAO;EAC9C,CAAA;CAEH;AACD;;;ACrDA,SAAgB,EAA0B,EAAE,SAAM,cAA2C;CAC5F,OACC,kBAAC,OAAD;EAAK,WAAW,EAAS;YAAzB,CACC,kBAAC,QAAD,EAAM,WAAW,EAAS,kBAAyB,CAAA,GACnD,kBAAC,GAAD;GAAM,OAAO,IAAU,UAAU;aAAY;EAAW,CAAA,CACpD;;AAEP;;;ACqBA,SAAS,GAA0B,EAAE,aAAU,cAAW,UAAO,eAAqC;CAKrG,OAJI,IAAiB,kBAAC,GAAD,EAAc,YAAY,kBAAC,GAAD,EAA2B,MAAK,aAAc,CAAA,EAAI,CAAA,IAC7F,IAAkB,kBAAC,GAAD,EAAc,cAAc,kBAAC,GAAD,EAA2B,MAAK,cAAe,CAAA,EAAI,CAAA,IACjG,IAAc,kBAAC,GAAD,EAAc,YAAY,kBAAC,GAAD;EAA2B,SAAA;EAAQ,MAAK;CAAmB,CAAA,EAAI,CAAA,IAEpG,kBAAA,IAAA,EAAG,YAAW,CAAA;AACtB;AAsDA,IAAM,KAA6B,CAAC;AAEpC,SAAS,EAAW,GAAsB,GAAiB;CAC1D,OAAO,EAAK;AACb;AAEA,SAAS,GAAmB,GAAsB,GAAiB,GAAiB;CACnF,OAAO,MAAM,qBAAK,IAAI,IAAI;EAAC,EAAK;EAAU,EAAK;EAAU,GAAG,OAAO,OAAO,CAAI;CAAC,CAAC,CAAC;AAClF;AAEA,SAAS,GAAmB,GAAwB,GAAyB,GAAiB;CAC7F,IAAI,EAAK,WAAW,EAAM,QACzB,OAAO;CAGR,IAAM,IAAY,IAAI,IAAI,EAAM,KAAK,MAAS,EAAW,GAAM,CAAO,CAAC,CAAC;CAExE,OAAO,EAAK,OAAO,MAAS,EAAU,IAAI,EAAW,GAAM,CAAO,CAAC,CAAC;AACrE;AAuBA,SAAS,GAAuB,EAC/B,YACA,WACA,gBACA,iBACA,YACA,UACA,mBACA,sBACA,gBACA,iBACA,iBACA,qBACA,kBAC+B;CAC/B,OAAO,EAAQ,KAAK,EAAE,SAAM,eAAY;EACvC,IAAM,IAAS,MAAU,GACnB,IAAW,EAAa,IAAI,EAAW,GAAM,CAAO,CAAC,GACrD,IAAiB,IAAoB,CAAI,KAAK;EAEpD,OACC,kBAAC,OAAD;GAEC,IAAI,EAAY,GAAQ,CAAK;GAC7B,MAAM,MAAS,EAAa,GAAO,CAAI;GACvC,MAAK;GACL,iBAAe;GACf,iBAAe,KAAkB,KAAA;GACjC,WAAW,GACV,EAAS,gBACT,KAAkB,EAAS,UAC3B,KAAY,EAAS,UACrB,KAAU,EAAS,mBACpB;GACA,cAAc,MAAU;IACvB,EAAM,eAAe;GACtB;aAfD,CAgBC,kBAAC,OAAD;IACC,UAAU,MAAU;KACnB,EAAM,gBAAgB;IACvB;cACA,kBAAC,GAAD;KACC,OAAO;KACP,UAAU;KACV,gBAAgB;MACf,AAAK,KACJ,EAAa,CAAI;KAEnB;KACA,UAAU,MAAU;MACnB,EAAM,gBAAgB;KACvB;KACA,cAAc,MAAU;MACvB,EAAM,gBAAgB;KACvB;IACA,CAAA;GACG,CAAA,GACL,kBAAC,OAAD;IACC,WAAU;IACV,eAAe;KACd,AAAK,KACJ,EAAiB,CAAI;IAEvB;cACC,GAAW,GAAM;KAAE;KAAU;KAAQ,UAAU;KAAgB;KAAO;IAAe,CAAC;GACnF,CAAA,CACD;KA5CC,GAAG,EAAW,GAAM,CAAO,EAAE,GAAG,GA4CjC;CAEP,CAAC;AACF;AAMA,IAAa,IAAc,GAEzB,EACC,YACA,YACA,aACA,UACA,UACA,aACA,UACA,gBACA,gBACA,UACA,WACA,kBACA,mBACA,YACA,mBAAgB,IAChB,WACA,aACA,sBACA,aACA,UACA,cACA,gBACA,kBACA,kBAED,MACI;CACJ,IAAM,KAAW,GAAgC,IAAI,GAC/C,CAAC,GAAM,MAAW,EAAS,EAAK,GAChC,IAAc,gBACd,IAAyB,KAAS,IAClC,KAAwB,QACvB,IAAI,IAAI,EAAuB,KAAK,MAAS,EAAW,GAAM,CAAO,CAAC,CAAC,GAC7E,CAAC,GAAS,CAAsB,CACjC,GACM,KAAiB,QAChB,EAAM,QAAQ,MAAS,CAAC,GAAsB,IAAI,EAAW,GAAM,CAAO,CAAC,CAAC,GAClF;EAAC;EAAS;EAAuB;CAAK,CACvC,GACM,IAAkB,QACjB,EAA0B,CAAC,GAAG,GAAwB,GAAG,CAAK,GAAG,GAAS,CAAO,GACvF;EAAC;EAAS;EAAwB;EAAO;CAAO,CACjD,GACM,EAAE,OAAO,GAAc,iBAAa,EAAe;EACxD;EACA;EACA;EACA;EACA;CACD,CAAC,GACK,IAAiC,EAAuB;EAC7D,SAAS;EACT,OAAO;EACP,SAAS;EACT,gBAAgB,MAAS,GAAmB,GAAM,GAAS,CAAe;CAC3E,CAAC,GACK,IAAyB,EAAuB;EACrD,SAAS;EACT,OAAO;EACP,SAAS;EACT,gBAAgB,MAAS,GAAmB,GAAM,GAAS,CAAe;CAC3E,CAAC,GACK,IAAiB,QAChB,CAAC,GAAG,GAAgC,GAAG,CAAsB,GACnE,CAAC,GAAwB,CAA8B,CACxD,GACM,KAAgB,EAA+B,SAAS,IAAI,IAAI,IAChE,EACL,YAAY,GACZ,eAAe,GACf,oBACG,EAA4B;EAC/B,OAAO;EACP;EACA,UAAU;EACV;EACA;EACA,UAAU,GAAM,MAAU,GAAmB,GAAM,GAAO,CAAO;CAClE,CAAC,GACK,IAAe,QACd,IAAI,IAAI,EAAmB,KAAK,MAAS,EAAW,GAAM,CAAO,CAAC,CAAC,GACzE,CAAC,GAAS,CAAkB,CAC7B,GACM,KAAuB,SACrB;EACN,eAAe;EACf;EACA;EACA;CACD,IACA;EAAC;EAAwB;EAAoB;EAAM;CAAY,CAChE,GACM,IAAmB,IACvB,MAAyB,IAAoB,GAAM,EAAoB,KAAK,IAC7E,CAAC,GAAmB,EAAoB,CACzC,GACM,EACL,gBACA,aACA,oBACA,sBACA,kBACA,iBACA,kBACA,WACA,cACA,gBACA,wBACA,4BACA,2BACA,iBACA,0BACG,EAAyB;EAC5B,SAAS;EACT;EACA;EACA,cAAc;EACd,UAAU,KAAA;EACV;EACA,mBAAmB;EACnB,eAAe;EACf,yBAAyB;EACzB;CACD,CAAC,GAEK,KAAwB,KAAkB,GAC1C,KAAwB,MAAyB;EACtD,IAAM,IAAU,EAAW,GAAM,CAAO;EAExC,GAAuB,MACH,EAAa,MAAM,MAAiB,EAAW,GAAc,CAAO,MAAM,CAEzF,IACI,EAAa,QAAQ,MAAiB,EAAW,GAAc,CAAO,MAAM,CAAO,IAGvF,EAAiB,CAAI,IACjB,IAGD,CAAC,GAAG,GAAc,CAAI,CAC7B;CACF,GAEM,MAAgB,MAAkC;EAGvD,IAFA,GAAS,UAAU,GAEf,OAAO,KAAQ,YAAY;GAC9B,EAAI,CAAI;GACR;EACD;EAEA,AAAI,MACH,EAAI,UAAU;CAEhB,GAEM,WAAuB;EAG5B,AAFA,EAAsB,CAAC,CAAC,GAEnB,KACJ,EAAS,CAAC,CAAC;CAEb,GAEM,WAAkB;EACvB,GAAuB,MAAiB;GACvC,IAAM,IAAY,CAAC,GAAG,CAAY,GAC5B,IAAe,IAAI,IAAI,EAAa,KAAK,MAAS,EAAW,GAAM,CAAO,CAAC,CAAC;GAElF,KAAK,IAAM,KAAQ,GAAgB;IAClC,IAAM,IAAU,EAAW,GAAM,CAAO;IAExC,AAAI,CAAC,EAAa,IAAI,CAAO,KAAK,CAAC,EAAiB,CAAI,MACvD,EAAa,IAAI,CAAO,GACxB,EAAU,KAAK,CAAI;GAErB;GAEA,OAAO;EACR,CAAC;CACF,GAEM,WAAoB;EACzB,EAAsB,CAAC,CAAC;CACzB,GAEM,KAAoB,MAAyB;EAC9C,EAAiB,CAAI,MAIzB,EAAsB,CAAC,CAAI,CAAC,GAC5B,GAAM;CACP,GAEM,KAAuB,IAAO,IAAqB,GACnD,KAAmB,GAAqB,SAAS,GACjD,KAA0C;EAC/C,eAAe;EACf;EACA,gBAAgB;EAChB,OAAO;EACP;EACA;EACA;EACA;CACD,GACM,KACL,MAAgB,KAAA,IAAY,GAAsC;EAAE;EAAS,SAAS;CAAgB,CAAC,IAAI,GACtG,KAAkB,MAAkB,KAAA,IAAY,KAAkC,GAClF,KACL,MACA,GAAqC;EACpC;EACA,SAAS;EACT;CACD,CAAC,GACI,KAAY,OAAO,MAAkB,aAAa,GAAc,EAAa,IAAI,MACjF,KAAc,OAAO,MAAoB,aAAa,GAAgB,EAAa,IAAI,MAEvF,IAAkB,EAA+B,KAAK,GAAM,OAAW;EAAE;EAAM;CAAM,EAAE,GACvF,KAAc,EAAuB,KAAK,GAAM,OAAW;EAAE;EAAM,OAAO,IAAQ,EAAgB;CAAO,EAAE,GAC3G,KAAW,CAAC,KAAa,CAAC,KAAS,EAAe,WAAW,GAC7D,IAAoB,EAA2B;EACpD,MAAM;EACN;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA,oBAAoB;GACnB,AAAK,KACJ,GAAY;EAEd;CACD,CAAC;CAED,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACN,WAAW,EAAO;aAChB,EAAE,cAAW,YAAS,qBAAkB;GACzC,IAAM,IAAS,GAAG,EAAU;GAE5B,OACC,kBAAA,IAAA,EAAA,UAAA,CACC,kBAAC,GAAD;IACC,KAAK;IACL,SAAS;IACT,IAAI;IACJ,MAAK;IACL,MAAK;IACL,cAAa;IACH;IACV,OAAO;IACP,aAAa,KAAmB,KAAA,IAAY;IAC5C,mBAAiB;IACjB,oBAAkB;IAClB,iBAAc;IACd,iBAAe;IACf,iBAAe,IAAO,IAAS,KAAA;IAC/B,qBAAkB;IAClB,yBAAuB,IAAO,GAAkB,CAAM,IAAI,KAAA;IAC1D,eAAc;IACd,cACC,kBAAC,GAAD;KACO;KACI;KACV,mBAAmB,EAAkB;KACrC,eAAe,EAAkB;eAJlC,CAKE,IAED,kBAAC,UAAD;MACC,MAAK;MACL,UAAU,CAAC;MACX,WAAW,EAAS;MACpB,WAAQ;MACR,eAAY;MACZ,SAAS;MACT,cAAW;gBACX,kBAAC,IAAD,CAAQ,CAAA;KACD,CAAA,CACa;;IAEvB,WAAW,MAAU;KACpB,EAAkB,yBAAyB,EAAM,OAAO,KAAK;IAC9D;IACA,SAAS,EAAkB;IAC3B,UAAU,MAAU;KACnB,EAAkB,mBAAmB,EAAM,aAAa;IACzD;IACA,YAAY,MAAU;KACrB,GAAuB,CAAK,GAExB,GAAM,oBAIV,EAAkB,qBAAqB;MACtC;MACA,0BAA0B;OACzB,IAAI,KAAe,GAAG;QACrB,IAAM,IAAa,EAAe;QAClC,IAAI,GAAY;SACf,EAAqB,CAAU;SAC/B;QACD;OACD;OAEA,GAAmB;MACpB;MACA,2BAA2B;MAC3B,uBAAuB;KACxB,CAAC;IACF;GACA,CAAA,GAED,kBAAC,GAAD;IACO;IACG;IACO;IACR;IACC;IACT,eAAe;IACf,gBAAgB,IAAO,GAAkB,CAAM,IAAI,KAAA;IACtC;IACK;IAClB,WAAW;IACX,cAAc;IACd,aAAa;IACb,UAAU;IACV,WAAW,EAAS;IACpB,QAAQ;cACR,kBAAC,IAAD;KAAqC;KAAqB;KAAkB;eAC3E,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACC,kBAAC,IAAD;QACC,SAAS;QACD;QACK;QACC;QACL;QACT,OAAO;QACP,gBAAgB;QAChB,mBAAmB;QACN;QACC;QACd,cAAc;QACI;QAClB,YAAY;OACZ,CAAA;OAEA,EAAgB,SAAS,KAAK,GAAe,SAAS,KAAK,kBAAC,IAAD,EAAW,WAAU,gBAAiB,CAAA;OAElG,kBAAC,IAAD;QACC,SAAS;QACD;QACK;QACC;QACL;QACT,OAAO;QACP,gBAAgB;QAChB,mBAAmB;QACN;QACC;QACd,cAAc;QACI;QAClB,YAAY;OACZ,CAAA;MACG;;IACqB,CAAA;GACf,CAAA,CACZ,EAAA,CAAA;EAEJ;CACY,CAAA;AAEf,CACD;AAEA,EAAY,cAAc;;;ACnlB1B,SAAgB,GAAoB,EAAE,UAAO,YAAS,UAAO,UAAO,iBAAc,eAAwC;CACzH,IAAM,IAAa,EAAmB;EACrC;EACA;EACA;EACA;EACA;CACD,CAAC,GAEK,KAAgB,MAA4B;EACjD,EAAS,EAAyB,GAAO,EAAW,YAAY,CAAC;CAClE;CAEA,OAAO;EACN,GAAG;EACH;CACD;AACD;;;AChBA,IAAa,KAAqD,EACjE,UACA,YACA,OAAO,GACP,UACA,gBACA,aACA,UACA,iBACA,aACA,cACK;CAEL,IAAM,IAAa,GAAoB;EACtC;EACA;EACA,OAJa,GAAwB,CAIrC;EACA;EACA;EACA;CACD,CAAC;CAED,OACC,kBAAC,GAAD;EACQ;EACM;EACP;EACN,SAAS,EAAW;EACpB,SAAS,EAAW;EACpB,UAAU,EAAQ,YAAY,EAAM;EACpC,OAAO,EAAW;EAClB,OAAO,EAAW;EAClB,UAAU,EAAW;EACrB,SAAS,EAAW;EACpB,OAAO,EAAW;EAClB,eAAe;EACf,gBAAgB,EAAW;EAC3B,UAAU,KAAY,EAAW;EACjC,aAAa,EAAW;EACxB,OAAO,EAAW,UAAU,oBAAoB,KAAA;CAChD,CAAA;AAEH,GC7Ba,KAAqF,EACjG,SACA,WACA,aACA,WAAQ,SACH;CACL,IAAM,CAAC,GAAwB,KAA6B,EAAmC,CAAC,CAAC,GAC3F,IAAiB,KAAU,GAC3B,IAAa,QAAQ,EAAM,yBAE3B,IAAwB,IAC5B,MAAmB;EACnB,IAAM,IAAqB;GAC1B,GAAG;IACF,EAAK,KAAK;EACZ;EAMA,AAJK,KACJ,EAA0B,CAAkB,GAG7C,IAAW,CAAkB;CAC9B,GACA;EAAC,EAAK;EAAI;EAAU;EAAgB;CAAM,CAC3C;CAEA,OACC,kBAAC,OAAD;EAAK,OAAO;GAAE,UAAU;GAAY,UAAU;EAAW;YACxD,kBAAC,GAAD;GACC,OAAO,EAAK;GACZ,SAAS,EAAK;GACd,OAAO,EAAK;GACZ,cAAc;GACd,OAAO,EAAe,EAAK;GAC3B,UAAU;EACV,CAAA;CACG,CAAA;AAEP,GCrCa,KAAuE,EACnF,WAAQ,IACR,UACA,aACA,UACA,WACA,kBACK;CACL,IAAM,CAAC,GAAwB,KAA6B,EAAmC,CAAC,CAAC,GAC3F,IAAiB,KAAU;CASjC,OARc,EAA8B,CAC3C;EACC;EACA;EACA;CACD,CACD,CAEO,CAAA,CAAM,KAAK,MACjB,kBAAC,GAAD;EAEO;EACN,QAAQ;EACR,WAAW,MAAuB;GAKjC,AAJK,KACJ,EAA0B,CAAkB,GAG7C,IAAW,CAAkB;EAC9B;EACO;CACP,GAXK,EAAK,EAWV,CACD;AACF;;;ACpCA,SAAS,EACR,GACA,GACuC;CACvC,OAAO,EAAO;AACf;AAEA,SAAS,EAIP,GAAiB,GAA2B,GAA+B;CAC5E,IAAM,IAAQ,EAAO;CAErB,IAAI,OAAO,KAAU,UACpB,OAAO;CAGR,IAAM,IAAM,EAAyB,GAAQ,CAAS;CACtD,OAAO,OAAO,KAAQ,WAAW,IAAM,OAAO,CAAG;AAClD;AAEA,SAAgB,EAId,EACD,UACA,gBACA,aACA,gBACA,SACA,YACA,UACA,aACA,cACA,gBACA,iBACmE;CAEnE,IAAM,IAAQ,EAAQ,KAAqB,OAAY;EACtD,KAAK,OAAO,EAAyB,GAAQ,CAAS,CAAC;EACvD,MAAM,EAA2B,GAAQ,GAAa,CAAS;CAChE,EAAE,GACI,IAAe,IAAI,KAAK,KAAS,CAAC,EAAA,CAAG,KAAK,MAAS,OAAO,CAAI,CAAC,CAAC,GAChE,IAAgB,EAAM,QAAQ,MAAS,EAAa,IAAI,EAAK,GAAG,CAAC;CAEvE,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACG;EACP;EACC;EACP,SAAQ;EACR,SAAQ;EACR,UAAU,IAAa,KAAA,IAAY;EACnC,OAAO;EACP,WAAW,MAAc,EAAS,EAAU,KAAK,MAAS,EAAK,GAAG,CAA2C;CAC7G,CAAA;AAEH"}
|