@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generatedAt":
|
|
1
|
+
{"generatedAt":1784550463815,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":false,"hasStorybookEslint":false,"refCount":0,"metaFramework":{"name":"tanstack-react","packageName":"@tanstack/react-router","version":"1.170.17"},"knownPackages":{"testPackages":{"@testing-library/dom":"10.4.1","@testing-library/react":"16.3.2","@testing-library/user-event":"^14.6.1","vitest":"4.1.10"},"stateManagementPackages":{"zustand":"^5.0.14"},"dataFetchingPackages":{"@tanstack/react-query":"^5.101.1"},"routerPackages":{"@tanstack/react-router":"^1.170.16"}},"hasRouterPackage":false,"packageManager":{"type":"npm","version":"11.7.0","agent":"npm","nodeLinker":"node_modules"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/react-vite","options":{}},"builder":"@storybook/builder-vite","renderer":"@storybook/react","portableStoriesFileCount":0,"applicationFileCount":9,"storybookVersion":"10.4.6","storybookVersionSpecifier":"^10.4.6","language":"typescript","storybookPackages":{"@storybook/react-vite":{"version":"10.4.6"},"storybook":{}},"addons":{"@storybook/addon-docs":{"version":"10.4.6"},"@storybook/addon-a11y":{"version":"10.4.6"}},"packageJsonType":"module"}
|
|
@@ -1,48 +0,0 @@
|
|
|
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-D0Ze9qh3.js";
|
|
4
|
-
import { useId as r } from "react";
|
|
5
|
-
import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
|
|
6
|
-
import { SquareIcon as a } from "lucide-react";
|
|
7
|
-
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
-
//#region src/check-box/CheckBox.tsx
|
|
9
|
-
function c({ label: c, description: l, placeholder: u, disabled: d, size: f, className: p, onChange: m, value: h, noWrap: g, id: _, tone: v = "neutral", ...y }) {
|
|
10
|
-
let b = r(), x = _ ?? b, S = l ? `${x}-description` : void 0, C = c ?? u, w = h ?? !1;
|
|
11
|
-
return /* @__PURE__ */ s("div", {
|
|
12
|
-
className: i(e.uiElement, f && e.uiSizable, f && e[f], d && e.disabled, p),
|
|
13
|
-
"aria-disabled": d || void 0,
|
|
14
|
-
children: [/* @__PURE__ */ s("div", {
|
|
15
|
-
className: n.row,
|
|
16
|
-
children: [/* @__PURE__ */ s("div", {
|
|
17
|
-
className: i(n.wrapper, t(v)),
|
|
18
|
-
children: [/* @__PURE__ */ o("input", {
|
|
19
|
-
...y,
|
|
20
|
-
id: x,
|
|
21
|
-
type: "checkbox",
|
|
22
|
-
checked: w,
|
|
23
|
-
disabled: d,
|
|
24
|
-
"aria-checked": w,
|
|
25
|
-
"aria-describedby": S,
|
|
26
|
-
className: i(e.uiSelectionControl, n.input),
|
|
27
|
-
onChange: () => m?.(!w)
|
|
28
|
-
}), /* @__PURE__ */ o("div", {
|
|
29
|
-
className: i(e.uiSelectionIcon, n.icon),
|
|
30
|
-
"aria-hidden": "true",
|
|
31
|
-
children: /* @__PURE__ */ o(a, {})
|
|
32
|
-
})]
|
|
33
|
-
}), C && /* @__PURE__ */ o("label", {
|
|
34
|
-
htmlFor: x,
|
|
35
|
-
className: i(e.uiLabelBase, g && "textNoWrap"),
|
|
36
|
-
children: C
|
|
37
|
-
})]
|
|
38
|
-
}), l && /* @__PURE__ */ o("p", {
|
|
39
|
-
id: S,
|
|
40
|
-
className: e.uiDescription,
|
|
41
|
-
children: l
|
|
42
|
-
})]
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
//#endregion
|
|
46
|
-
export { c as t };
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=check-box-BowNqqd3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-box-BowNqqd3.js","names":[],"sources":["../../src/check-box/CheckBox.tsx"],"sourcesContent":["import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { 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}\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\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\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\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={checked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiSelectionControl, styles.input)}\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<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":";;;;;;;;AAsBA,SAAgB,EAAS,EACxB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,WACA,IAAI,GACJ,UAAO,WACP,GAAG,KACc;CACjB,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAU,KAAS;CAEzB,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;KACA;KACJ,MAAK;KACI;KACC;KACV,gBAAc;KACd,oBAAkB;KAClB,WAAW,EAAG,EAAS,oBAAoB,EAAO,KAAK;KACvD,gBAAgB,IAAW,CAAC,CAAO;IACnC,CAAA,GACD,kBAAC,OAAD;KAAK,WAAW,EAAG,EAAS,iBAAiB,EAAO,IAAI;KAAG,eAAY;eACtE,kBAAC,GAAD,CAAa,CAAA;IACT,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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select-BCpRct-k.js","names":[],"sources":["../../src/multi-select/ui/MultiSelectOption.tsx","../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectOptionsToolbar.tsx","../../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\n.selectAllButton {\n\t// font-size: var(--font-size-sm);\n\tpadding-block: var(--space-xs);\n\tborder-radius: var(--radius-sm);\n\n\t&:hover {\n\t\t// color: var(--content-accent);\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n","import { Grid } from \"../../grid\";\n\nimport styles from \"./MultiSelect.module.scss\";\n\n/**\n * Панель массовых действий для `MultiSelect`. Позволяет быстро выбрать все доступные элементы или снять выбор.\n */\nexport function MultiSelectOptionsToolbar({ onSelectAll, onDeselectAll }: { onSelectAll: () => void; onDeselectAll: () => void }) {\n\treturn (\n\t\t<Grid.Container gap=\"xs\" templateColumns=\"1fr 1fr\">\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectAllButton}\n\t\t\t\tonClick={onSelectAll}\n\t\t\t\tdata-ui=\"multi-select-select-all\"\n\t\t\t\tdata-action=\"select-all\">\n\t\t\t\tВыбрать все\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectAllButton}\n\t\t\t\tonClick={onDeselectAll}\n\t\t\t\tdata-ui=\"multi-select-deselect-all\"\n\t\t\t\tdata-action=\"deselect-all\">\n\t\t\t\tСнять выбор\n\t\t\t</button>\n\t\t</Grid.Container>\n\t);\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 { MultiSelectOption } from \"./MultiSelectOption\";\nimport { MultiSelectOptionsToolbar } from \"./MultiSelectOptionsToolbar\";\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 <MultiSelectOptionsToolbar 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":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"picker-DTZk09Ag.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerPopup.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n",".popupLayout {\n\tdisplay: grid;\n\tgrid-template-rows: auto 1fr;\n\tmin-height: 0;\n\tmax-height: 75vh;\n\toverflow: hidden;\n\n\tflex: 1 1 auto;\n}\n\n.popupBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--status-error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tmaxWidth?: CSSProperties[\"maxWidth\"];\n\tlayoutClassName?: string;\n\theaderClassName?: string;\n\tbodyClassName?: string;\n\theader?: ReactNode;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tdescriptionId,\n\tactiveOptionId,\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tmaxWidth,\n\tlayoutClassName,\n\theaderClassName,\n\tbodyClassName,\n\theader,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={{ ...floatingStyles, maxWidth }}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<div className={cn(styles.popupLayout, layoutClassName)}>\n\t\t\t\t\t\t\t\t{header ? (\n\t\t\t\t\t\t\t\t\t<div className={headerClassName}>\n\t\t\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t\t\t\t<Separator className=\"marginBlockSm\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<div />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className={cn(styles.popupBody, bodyClassName)}>{children}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, loadingState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? loadingState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={rootRef} className={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}>\n\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t)}\n\t\t\t\t</InputControl>\n\t\t\t\t{overlay}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node.map(extractPickerTextContent).filter((value): value is string => Boolean(value));\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\treturn undefined;\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport { useFloatingListbox } from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\topen: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\nexport function usePickerQuery({ open, query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst previousOpenRef = useRef(false);\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst syncResetInternalQuery = useEffectEvent(() => setInternalQuery(\"\"));\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open && resolvedResetOnClose) {\n\t\t\tif (!isControlled) {\n\t\t\t\tsyncResetInternalQuery();\n\t\t\t}\n\n\t\t\tonQuery?.(\"\");\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [isControlled, onQuery, open, resolvedResetOnClose]);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\")\n\t};\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\tconst syncDraftValue = useEffectEvent((value: TValue) => setDraftValue(value));\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\tsyncDraftValue(value);\n\t\t}\n\t}, [open, value]);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Панель массовых действий для `MultiSelect`. Позволяет быстро выбрать все доступные элементы или снять выбор.
|
|
3
|
-
*/
|
|
4
|
-
export declare function MultiSelectOptionsToolbar({ onSelectAll, onDeselectAll }: {
|
|
5
|
-
onSelectAll: () => void;
|
|
6
|
-
onDeselectAll: () => void;
|
|
7
|
-
}): import("react").JSX.Element;
|
|
8
|
-
//# sourceMappingURL=MultiSelectOptionsToolbar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectOptionsToolbar.d.ts","sourceRoot":"","sources":["../../../src/multi-select/ui/MultiSelectOptionsToolbar.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,IAAI,CAAA;CAAE,+BAqB/H"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BxBCFrOJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-CMnxoKbT.js";import{g as o,t as s}from"./lucide-react-BmnaUuit.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{n as u,r as d}from"./uiClasses-CaHp0EWd.js";import{n as f,t as p}from"./CheckBox.module-Hr3mvdAC.js";function m({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:l,value:d,noWrap:f,id:m,tone:_=`neutral`,...v}){let y=(0,h.useId)(),b=m??y,x=t?`${b}-description`:void 0,S=e??n,C=d??!1;return(0,g.jsxs)(`div`,{className:i(c.uiElement,a&&c.uiSizable,a&&c[a],r&&c.disabled,s),"aria-disabled":r||void 0,children:[(0,g.jsxs)(`div`,{className:p.row,children:[(0,g.jsxs)(`div`,{className:i(p.wrapper,u(_)),children:[(0,g.jsx)(`input`,{...v,id:b,type:`checkbox`,checked:C,disabled:r,"aria-checked":C,"aria-describedby":x,className:i(c.uiSelectionControl,p.input),onChange:()=>l?.(!C)}),(0,g.jsx)(`div`,{className:i(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,g.jsx)(o,{})})]}),S&&(0,g.jsx)(`label`,{htmlFor:b,className:i(c.uiLabelBase,f&&`textNoWrap`),children:S})]}),t&&(0,g.jsx)(`p`,{id:x,className:c.uiDescription,children:t})]})}var h,g,_=t((()=>{h=e(n(),1),a(),s(),l(),d(),f(),g=r(),m.__docgenInfo={description:`Компонент флажка для выбора булевого значения в формах и списках.
|
|
2
|
-
Поддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.`,methods:[],displayName:`CheckBox`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``,defaultValue:{value:`"neutral"`,computed:!1}},noWrap:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}}));export{_ as n,m as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";var t,n,r,i,a,o=e((()=>{t=`cgozWT`,n=`_1evcXl`,r=`lU3P-V`,i=`PhkI5X`,a={row:t,wrapper:n,input:r,icon:i}}));export{o as n,a as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BxBCFrOJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-CMnxoKbT.js";import{o as ee,t as o}from"./lucide-react-BmnaUuit.js";import{i as s,t as c}from"./text-B62c97-X.js";import{n as l,t as u}from"./ui.module-wFHXkJzp.js";import{t as te}from"./CheckBox-m8RUUjvq.js";import{t as d}from"./Grid-JvQFWmt_.js";import{t as f}from"./grid-DZrPQELi.js";import{C as ne,S as p,T as m,a as h,b as g,d as re,g as ie,l as ae,m as oe,r as se,s as ce,t as _,v}from"./picker-CxN205s6.js";import{n as le,t as y}from"./SelectOptionContent-YY3Lf4SM.js";import{t as b}from"./check-box-CuugSv5K.js";function x({item:e,textKey:t,codeKey:n,highlight:r}){return(0,S.jsx)(y,{label:e[t],code:n&&e[n],highlight:r})}var S,C=t((()=>{le(),S=r(),x.__docgenInfo={description:"Отдельная опция внутри `MultiSelect`. Отрисовывает состояние выбора и подсветку текста для найденных совпадений.",methods:[],displayName:`MultiSelectOption`,props:{item:{required:!0,tsType:{name:`CollectionItem`},description:``},textKey:{required:!0,tsType:{name:`string`},description:``},codeKey:{required:!1,tsType:{name:`string`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},selected:{required:!0,tsType:{name:`boolean`},description:``}}}})),w,T,E,D,O,k=t((()=>{w=`_9oSdQi`,T=`iobHig`,E=`yatXso`,D=`h2aA6E`,O={multiSelect:w,multiSelectTokens:T,multiSelectToken:E,selectAllButton:D}}));function A({onSelectAll:e,onDeselectAll:t}){return(0,j.jsxs)(d.Container,{gap:`xs`,templateColumns:`1fr 1fr`,children:[(0,j.jsx)(`button`,{type:`button`,className:O.selectAllButton,onClick:e,"data-ui":`multi-select-select-all`,"data-action":`select-all`,children:`Выбрать все`}),(0,j.jsx)(`button`,{type:`button`,className:O.selectAllButton,onClick:t,"data-ui":`multi-select-deselect-all`,"data-action":`deselect-all`,children:`Снять выбор`})]})}var j,M=t((()=>{f(),k(),j=r(),A.__docgenInfo={description:"Панель массовых действий для `MultiSelect`. Позволяет быстро выбрать все доступные элементы или снять выбор.",methods:[],displayName:`MultiSelectOptionsToolbar`,props:{onSelectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onDeselectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}}));function N({value:e}){return e?(0,P.jsx)(`div`,{className:O.multiSelectTokens,children:(0,P.jsx)(`div`,{className:O.multiSelectToken,children:e})}):null}var P,F=t((()=>{k(),P=r(),N.__docgenInfo={description:"Токен выбранного значения в `MultiSelect`. Показывает выбранный элемент и кнопку его удаления из текущего набора.",methods:[],displayName:`MultiSelectToken`,props:{value:{required:!0,tsType:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]},description:``}}}}));function I(e,t,n){if(n)return n;let r=e[0];return r?Object.keys(r).find(e=>e!==t)??t:t}function L(e,t,n){if(e.length===0)return;if(e.length>1)return`${e.length} элемент${e.length>5?`ов`:`а`})`;let r=I(e,t,n);return e[0]?.[r]??e[0]?.[t]}function ue(e){return function(t){return(0,R.jsx)(N,{value:L(t.selectedItems,e.codeKey,e.textKey)})}}function de(e){return(0,R.jsx)(A,{onSelectAll:e.selectAll,onDeselectAll:e.deselectAll})}function fe(e){return function(t,n){return(0,R.jsx)(x,{item:t,selected:n.selected,highlight:n.highlightQuery,textKey:I([t],e.codeKey,e.textKey),codeKey:e.hideCode?void 0:e.codeKey})}}var R,z=t((()=>{C(),M(),F(),R=r(),de.__docgenInfo={description:``,methods:[],displayName:`renderDefaultMultiSelectToolbar`,props:{selectedItems:{required:!0,tsType:{name:`Array`,elements:[{name:`CollectionItem`}],raw:`CollectionItem[]`},description:``},committedSelectedItems:{required:!0,tsType:{name:`Array`,elements:[{name:`CollectionItem`}],raw:`CollectionItem[]`},description:``},availableItems:{required:!0,tsType:{name:`Array`,elements:[{name:`CollectionItem`}],raw:`CollectionItem[]`},description:``},query:{required:!0,tsType:{name:`string`},description:``},open:{required:!0,tsType:{name:`boolean`},description:``},clearSelection:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},selectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},deselectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}}));function B({text:e,isError:t}){return(0,V.jsxs)(`div`,{className:l.uiPopupOption,children:[(0,V.jsx)(`span`,{className:l.uiPopupOptionIcon}),(0,V.jsx)(s,{color:t?`error`:`primary`,children:e})]})}var V,pe=t((()=>{c(),u(),V=r(),B.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}}));function me({isNoData:e,isLoading:t,error:n,children:r}){return e?(0,W.jsx)(v,{emptyState:(0,W.jsx)(B,{text:`Нет данных`})}):t?(0,W.jsx)(v,{loadingState:(0,W.jsx)(B,{text:`Загрузка...`})}):n?(0,W.jsx)(v,{errorState:(0,W.jsx)(B,{isError:!0,text:`Ошибка загрузки`})}):(0,W.jsx)(W.Fragment,{children:r})}function H(e,t){return e[t]}function he(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function ge(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>H(e,n)));return e.every(e=>r.has(H(e,n)))}function _e({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:ee,highlightQuery:o,getOptionDisabled:s,getOptionId:c,setOptionRef:u,toggleOption:d,selectOnlyOption:f,renderItem:ne}){return e.map(({item:e,index:p})=>{let m=p===n,h=r.has(H(e,a)),g=s?.(e)??!1;return(0,W.jsxs)(`div`,{id:c(t,p),ref:e=>u(p,e),role:`option`,"aria-selected":h,"aria-disabled":g||void 0,className:i(l.uiSelectOption,g&&l.disabled,h&&l.selected,m&&l.uiPopupOptionActive),onMouseDown:e=>{e.preventDefault()},children:[(0,W.jsx)(`div`,{onClick:e=>{e.stopPropagation()},children:(0,W.jsx)(te,{value:h,disabled:g,onChange:()=>{g||d(e)},onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()}})}),(0,W.jsx)(`div`,{className:`overflowHidden`,onClick:()=>{g||f(e)},children:ne(e,{selected:h,active:m,disabled:g,query:ee,highlightQuery:o})})]},`${H(e,a)}-${p}`)})}var U,W,ve,G,K=t((()=>{U=e(n(),1),a(),o(),b(),_(),p(),u(),z(),k(),pe(),W=r(),ve=[],G=(0,U.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:s,placeholder:c,size:u,query:te,defaultQuery:d,highlightQuery:f,onQuery:p,defaultFilter:_=!0,onOpen:v,onClose:le,getOptionDisabled:y,disabled:b,error:x,isLoading:S,renderToken:C,renderToolbar:w,renderItem:T},E)=>{let D=(0,U.useRef)(null),[k,A]=(0,U.useState)(!1),j=`search-multi`,M=i??ve,N=(0,U.useMemo)(()=>new Set(M.map(t=>H(t,e))),[e,M]),P=(0,U.useMemo)(()=>r.filter(t=>!N.has(H(t,e))),[e,N,r]),F=(0,U.useMemo)(()=>I([...M,...r],e,t),[e,M,r,t]),{query:L,setQuery:R}=ce({open:k,query:te,defaultQuery:d,onQuery:p,triggerMode:j}),z=re({options:M,query:L,enabled:_,getSearchText:t=>he(t,e,F)}),B=re({options:P,query:L,enabled:_,getSearchText:t=>he(t,e,F)}),V=(0,U.useMemo)(()=>[...z,...B],[B,z]),pe=z.length>0?0:-1,{draftValue:G,setDraftValue:K,prepareOpen:ye}=h({value:M,open:k,onCommit:a,onOpen:v,onClose:le,isEqual:(t,n)=>ge(t,n,e)}),q=(0,U.useMemo)(()=>new Set(G.map(t=>H(t,e))),[e,G]),be=(0,U.useMemo)(()=>({selectedItems:G,committedSelectedItems:M,selectedKeys:q,open:k}),[M,G,k,q]),J=(0,U.useCallback)(e=>y?.(e,be)??!1,[y,be]),{activeIndex:Y,context:xe,floatingStyles:Se,getFloatingProps:Ce,setReference:we,setFloating:Te,setOptionRef:Ee,close:De,openList:Oe,toggleOpen:ke,selectActiveOption:Ae,handleReferenceKeyDown:je,handleFloatingKeyDown:Me,getOptionId:Ne,getActiveOptionId:Pe}=ae({options:V,selectedIndex:pe,open:k,onOpenChange:A,onSelect:void 0,disabled:b,getOptionDisabled:J,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:j}),Fe=f??L,X=t=>{let n=H(t,e);K(r=>r.some(t=>H(t,e)===n)?r.filter(t=>H(t,e)!==n):J(t)?r:[...r,t])},Ie=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Le=()=>{K([]),k||a([])},Re=()=>{K(t=>{let n=[...t],r=new Set(t.map(t=>H(t,e)));for(let t of V){let i=H(t,e);!r.has(i)&&!J(t)&&(r.add(i),n.push(t))}return n})},ze=()=>{K([])},Z=e=>{J(e)||(K([e]),De())},Be=k?G:M,Ve=Be.length>0,He={selectedItems:Be,committedSelectedItems:M,availableItems:B,query:L,open:k,clearSelection:Le,selectAll:Re,deselectAll:ze},Ue=C===void 0?ue({codeKey:e,textKey:F}):C,We=w===void 0?de:w,Ge=T??fe({codeKey:e,textKey:F,hideCode:n}),Ke=typeof Ue==`function`?Ue(He):null,qe=typeof We==`function`?We(He):null,Q=z.map((e,t)=>({item:e,index:t})),Je=B.map((e,t)=>({item:e,index:t+Q.length})),Ye=!S&&!x&&V.length===0,$=se({mode:j,open:k,currentQuery:L,hasDisplayValue:!1,inputRef:D,setQuery:R,openList:Oe,close:De,toggleOpen:ke,onBeforeOpen:()=>{k||ye()}});return(0,W.jsx)(m,{label:o,description:s,disabled:b,placeholder:c,size:u,className:O.multiSelect,children:({controlId:t,labelId:n,describedBy:r})=>{let i=`${t}-listbox`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(oe,{ref:Ie,rootRef:we,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:b,value:L,placeholder:Ve?void 0:c,"aria-labelledby":n,"aria-describedby":r,"aria-haspopup":`listbox`,"aria-expanded":k,"aria-controls":k?i:void 0,"aria-autocomplete":`list`,"aria-activedescendant":k?Pe(i):void 0,rootClassName:`flex alignItemsCenter`,endAdornment:(0,W.jsxs)(ie,{open:k,disabled:b,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,children:[Ke,(0,W.jsx)(`button`,{type:`button`,disabled:!Ve,className:l.uiClearButton,"data-ui":`multi-select-clear-button`,"data-action":`clear-multi-select`,onClick:Le,"aria-label":`Очистить все`,children:(0,W.jsx)(ee,{})})]}),onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{je(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(Y>=0){let e=V[Y];if(e){X(e);return}}Ae()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,W.jsx)(g,{open:k,context:xe,floatingStyles:Se,listId:i,labelId:n,descriptionId:r,activeOptionId:k?Pe(i):void 0,setFloating:Te,getFloatingProps:Ce,onKeyDown:Me,initialFocus:-1,returnFocus:!1,tabIndex:-1,className:l.uiPopupOptions,header:qe,children:(0,W.jsx)(me,{isNoData:Ye,isLoading:S,error:x,children:(0,W.jsxs)(`div`,{className:`scrollable h100`,children:[(0,W.jsx)(_e,{entries:Q,listId:i,activeIndex:Y,selectedKeys:q,codeKey:e,query:L,highlightQuery:Fe,getOptionDisabled:J,getOptionId:Ne,setOptionRef:Ee,toggleOption:X,selectOnlyOption:Z,renderItem:Ge}),Q.length>0&&P.length>0&&(0,W.jsx)(ne,{className:`marginBlockSm`}),(0,W.jsx)(_e,{entries:Je,listId:i,activeIndex:Y,selectedKeys:q,codeKey:e,query:L,highlightQuery:Fe,getOptionDisabled:J,getOptionId:Ne,setOptionRef:Ee,toggleOption:X,selectOnlyOption:Z,renderItem:Ge})]})})})]})}})}),G.displayName=`MultiSelect`,G.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
|
|
2
|
-
Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.`,methods:[],displayName:`MultiSelect`,props:{renderToken:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderToolbar:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: CollectionItem, state: MultiSelectItemState) => React.ReactNode`,signature:{arguments:[{type:{name:`CollectionItem`},name:`item`},{type:{name:`MultiSelectItemState`},name:`state`}],return:{name:`ReactReactNode`,raw:`React.ReactNode`}}},description:``},label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},codeKey:{required:!0,tsType:{name:`string`},description:``},textKey:{required:!1,tsType:{name:`string`},description:``},hideCode:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},highlightQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: TOption, context: MultiSelectOptionDisableContext) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`item`},{type:{name:`MultiSelectOptionDisableContext`},name:`context`}],return:{name:`boolean`}}},description:``},onOpen:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: TOption[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``}}}}));export{K as n,G as t};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-BxBCFrOJ.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{a,i as o,n as s,o as c,s as l}from"./odataStoryFixtures-h0MkHLcZ.js";import{n as u,t as d}from"./useODataTreeData-wlNQaI0p.js";import{n as f,t as p}from"./TreeMultiSelect-Cm8XLcaB.js";function m({label:e,description:t,disabled:n,size:r,placeholder:i,query:a,defaultQuery:o,onQuery:s,value:c,onChange:l,odata:d,segments:f,model:m}){let g=u({odata:d,segments:f,model:m});return(0,h.jsx)(p,{label:e,description:t,disabled:n||g.isLoading,size:r,placeholder:i??g.placeholder,nodes:g.nodes,value:c,onChange:l,query:a,defaultQuery:o,onQuery:s,isLoading:g.isLoading,error:g.isError?`Ошибка загрузки`:void 0})}var h,g=n((()=>{d(),f(),h=i(),m.__docgenInfo={description:``,methods:[],displayName:`ODataTreeMultiSelect`,props:{model:{required:!1,tsType:{name:`ODataDependentBaseProps["model"]`,raw:`ODataDependentBaseProps["model"]`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}},composes:[`Omit`]}})),_=e({Basic:()=>S,ErrorState:()=>E,LoadingState:()=>T,MixedSelection:()=>w,ParentCompression:()=>C,__namedExportsOrder:()=>D,default:()=>x});function v({initialValue:e={},odata:t=s,segments:n=c,label:r=`ODataTreeMultiSelect`,description:i}){let[a,o]=(0,y.useState)(e);return(0,b.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,b.jsx)(m,{label:r,description:i,odata:t,segments:n,value:a,onChange:o}),(0,b.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(a)]})]})}var y,b,x,S,C,w,T,E,D,O=n((()=>{y=t(r(),1),o(),g(),b=i(),x={title:`Shared/UI/ODataTreeMultiSelect`,component:m,decorators:[l],parameters:{atomicCanvas:!0,layout:`padded`,odataMockMode:`success`},args:{label:`OData дерево`,description:`Multi-select поверх одной OData-цепочки.`,odata:s,segments:c,value:{},onChange:()=>{}},argTypes:{segments:{control:!1},value:{control:!1},onChange:{control:!1}}},S={render:()=>(0,b.jsx)(v,{initialValue:{OWNER:[a.owner]}})},C={render:()=>(0,b.jsx)(v,{label:`Компрессия subtree`,description:`Пример, когда наружу уходит узел верхнего уровня вместо полного списка потомков.`,initialValue:{REGION:[a.region]}})},w={render:()=>(0,b.jsx)(v,{label:`Смешанный выбор`,description:`Смешанный frontier по соседним уровням в OData-дереве.`,initialValue:{BRANCH:[a.branch],OWNER:[a.ownerAlt]}})},T={parameters:{odataMockMode:`loading`},render:()=>(0,b.jsx)(v,{description:`Сценарий загрузки дерева.`})},E={parameters:{odataMockMode:`collectionError`},render:()=>(0,b.jsx)(v,{description:`Сценарий ошибки загрузки дерева.`})},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: () => <StatefulODataTreeMultiSelect initialValue={{
|
|
3
|
-
OWNER: [storyValues.owner]
|
|
4
|
-
}} />
|
|
5
|
-
}`,...S.parameters?.docs?.source}}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
|
|
6
|
-
render: () => <StatefulODataTreeMultiSelect label="Компрессия subtree" description="Пример, когда наружу уходит узел верхнего уровня вместо полного списка потомков." initialValue={{
|
|
7
|
-
REGION: [storyValues.region]
|
|
8
|
-
}} />
|
|
9
|
-
}`,...C.parameters?.docs?.source}}},w.parameters={...w.parameters,docs:{...w.parameters?.docs,source:{originalSource:`{
|
|
10
|
-
render: () => <StatefulODataTreeMultiSelect label="Смешанный выбор" description="Смешанный frontier по соседним уровням в OData-дереве." initialValue={{
|
|
11
|
-
BRANCH: [storyValues.branch],
|
|
12
|
-
OWNER: [storyValues.ownerAlt]
|
|
13
|
-
}} />
|
|
14
|
-
}`,...w.parameters?.docs?.source}}},T.parameters={...T.parameters,docs:{...T.parameters?.docs,source:{originalSource:`{
|
|
15
|
-
parameters: {
|
|
16
|
-
odataMockMode: "loading"
|
|
17
|
-
},
|
|
18
|
-
render: () => <StatefulODataTreeMultiSelect description="Сценарий загрузки дерева." />
|
|
19
|
-
}`,...T.parameters?.docs?.source}}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
|
|
20
|
-
parameters: {
|
|
21
|
-
odataMockMode: "collectionError"
|
|
22
|
-
},
|
|
23
|
-
render: () => <StatefulODataTreeMultiSelect description="Сценарий ошибки загрузки дерева." />
|
|
24
|
-
}`,...E.parameters?.docs?.source}}},D=[`Basic`,`ParentCompression`,`MixedSelection`,`LoadingState`,`ErrorState`]}));O();export{S as Basic,E as ErrorState,T as LoadingState,w as MixedSelection,C as ParentCompression,D as __namedExportsOrder,x as default,O as n,_ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BxBCFrOJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./TreePickerBase-xFkOCgy0.js";function d(e,t){if(e.size!==0){if(e.size===1){let n=t.nodeById.get([...e][0]);return n?n.code&&n.code!==n.label?`${n.label} · ${n.code}`:n.label:void 0}return`Выбрано ${e.size} узл.`}}function f({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:i,nodes:o,value:f,onChange:h,query:g,defaultQuery:_,onQuery:v,isLoading:y,error:b}){let x=(0,p.useMemo)(()=>c(o),[o]),S=(0,p.useMemo)(()=>l(f,x),[x,f]),C=(0,p.useMemo)(()=>a(S,x),[S,x]),w=(0,p.useMemo)(()=>d(S,x),[S,x]);return(0,m.jsx)(u,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:o,selectedIds:C.selectedIds,partialIds:C.partialIds,selectionMode:`multi`,triggerMode:`search`,selectedSummary:w,query:g,defaultQuery:_,onQuery:v,onNodeActivate:e=>h(s(f,e.id,x)),onClearSelection:()=>h({}),isLoading:y,error:b})}var p,m,h=t((()=>{p=e(n(),1),i(),o(),m=r(),f.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``}},composes:[`Omit`]}}));export{h as n,f as t};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-BxBCFrOJ.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{n as a,t as o}from"./TreeMultiSelect-Cm8XLcaB.js";import{n as s,t as c}from"./treeStoryFixtures-Cd984L7t.js";var l=e({Basic:()=>m,MixedSelection:()=>g,ParentCompression:()=>h,__namedExportsOrder:()=>_,default:()=>p});function u({initialValue:e={},label:t=`TreeMultiSelect`,description:n}){let[r,i]=(0,d.useState)(e);return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{label:t,description:n,nodes:c,value:r,onChange:i}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(r)]})]})}var d,f,p,m,h,g,_,v=n((()=>{d=t(r(),1),a(),s(),f=i(),p={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:c,value:{},onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},m={render:()=>(0,f.jsx)(u,{initialValue:{OWNER:[`P0001`]}})},h={render:()=>(0,f.jsx)(u,{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,initialValue:{REGION:[`R01`]}})},g={render:()=>(0,f.jsx)(u,{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,initialValue:{BRANCH:[`B0101`],OWNER:[`P0004`]}})},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: () => <StatefulTreeMultiSelect initialValue={{
|
|
3
|
-
OWNER: ["P0001"]
|
|
4
|
-
}} />
|
|
5
|
-
}`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
6
|
-
render: () => <StatefulTreeMultiSelect label="Компрессия parent" description="Когда выбран весь subtree, наружу может уйти только родительский узел." initialValue={{
|
|
7
|
-
REGION: ["R01"]
|
|
8
|
-
}} />
|
|
9
|
-
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
10
|
-
render: () => <StatefulTreeMultiSelect label="Смешанный выбор" description="Пример mixed frontier по соседним уровням." initialValue={{
|
|
11
|
-
BRANCH: ["B0101"],
|
|
12
|
-
OWNER: ["P0004"]
|
|
13
|
-
}} />
|
|
14
|
-
}`,...g.parameters?.docs?.source}}},_=[`Basic`,`ParentCompression`,`MixedSelection`]}));v();export{m as Basic,g as MixedSelection,h as ParentCompression,_ as __namedExportsOrder,p as default,v as n,l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.eMqOwq{border-radius:var(--radius-sm);cursor:pointer;align-items:stretch;display:flex}.eMqOwq:focus{outline:var(--focus-width) solid var(--focus-ring);outline-offset:var(--focus-offset);background-color:var(--surface-accent);border-color:var(--border-1);cursor:pointer}.eMqOwq:hover{background-color:var(--surface-accent);cursor:pointer}.JKstO-{background-color:var(--surface-2);color:var(--content-accent);cursor:default}.hKgr8e{background-color:var(--surface-1)}._6EH37F{align-items:center;gap:var(--space-xs);width:100%;padding:var(--space-xs) var(--space-xs) var(--space-xs) 0;text-align:left;border-radius:var(--radius-sm);background:0 0;display:flex}.o5NWnX{width:calc(var(--tree-level) * 1em);flex-shrink:0}.ibSd-S,.lXezvv{flex-shrink:0;justify-content:center;align-items:center;width:1.5em;height:1.5em;display:inline-flex}.ibSd-S{border-radius:var(--radius-sm);color:var(--content-2);background:0 0;border:none}.ibSd-S:hover{color:var(--content-0);background-color:var(--surface-0)}.FMlLGX{transition:transform var(--transition-fast) ease}.d2Zt7U{transform:rotate(90deg)}._8PN4hs{border:var(--border);border-radius:var(--radius-xs);background-color:var(--surface-0);color:#0000;flex-shrink:0;justify-content:center;align-items:center;width:1em;height:1em;display:inline-flex}._4JEoen{background-color:var(--status-info-text);border-color:var(--status-info-text);color:var(--white)}.GS8eEC{background-color:var(--surface-1);border-color:var(--status-info-text);color:var(--status-info-text)}.T8gVno{width:.75rem;height:.75rem}.o6stdX{padding-right:calc(var(--control-height) * 2)}.I5zvhe{color:#0000;caret-color:#0000}.KQ0PBI{inset:0 calc(var(--control-height) * 2) 0 var(--space-md);pointer-events:none;align-items:center;display:flex;position:absolute;overflow:hidden}._7hAQQA{align-items:center;height:100%;display:flex;position:absolute;top:0;right:0}.XeUHNc{color:var(--status-error-text)}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BxBCFrOJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-CMnxoKbT.js";import{A as o,o as s,t as c,vt as l,wt as u}from"./lucide-react-BmnaUuit.js";import{n as ee,t as d}from"./ui.module-wFHXkJzp.js";import{a as te}from"./Input-D6FlpB4Y.js";import{t as f}from"./input-CjJ-AgIT.js";import{T as ne,b as re,g as ie,l as ae,m as oe,r as se,s as ce,t as p,v as le}from"./picker-CxN205s6.js";import{n as ue,t as de}from"./SelectOptionContent-YY3Lf4SM.js";function m(e,t){return`${e}::${t}`}function fe(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=0,s=(e,c)=>{t.set(e.id,e),n.set(e.id,c),i.set(e.id,o++),a.set(m(e.codeKey,e.value),e.id);let l=(e.children??[]).map(e=>e.id);r.set(e.id,l);for(let t of e.children??[])s(t,e.id)};for(let t of e)s(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a}}function pe(e,t){if(e)return t.nodeIdByCodeValue.get(m(e.codeKey,e.value))}function h(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i){let i=t.nodeIdByCodeValue.get(m(r,e));i&&n.add(i)}return x(n,t)}function g(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={};for(let e of n){let n=t.nodeById.get(e);n&&(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value))}return r}function _(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function v(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function y(e,t,n){for(let r of[...e])v(r,t,n)&&e.delete(r)}function b(e,t,n){if(t.has(e))return!0;let r=n.childrenById.get(e)??[];return r.length===0?!1:r.every(e=>b(e,t,n))}function x(e,t){let n=new Set(e);for(let e of[...n])_(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];r.length===0||n.has(e)||r.every(e=>b(e,n,t))&&(y(n,e,t),n.add(e))}return n}function S(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){e.delete(r);for(let t of n.childrenById.get(r)??[])e.add(t);return!0}r=n.parentById.get(r)}return!1}function me(e,t,n){return t.has(e)?!0:_(e,n).some(e=>t.has(e))}function C(e,t,n,r){let i=n.childrenById.get(e)??[];if(t.has(e))return r.selectedIds.add(e),{selected:!0,partial:!1};if(i.length===0)return{selected:!1,partial:!1};let a=i.map(e=>C(e,t,n,r)),o=a.every(e=>e.selected&&!e.partial),s=a.some(e=>e.selected||e.partial);return o?(r.selectedIds.add(e),{selected:!0,partial:!1}):s?(r.partialIds.add(e),{selected:!1,partial:!0}):{selected:!1,partial:!1}}function w(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)C(r,e,t,n);return n}function T(e,t,n){let r=h(e,n),i=e=>{if(me(e,r,n)){if(r.has(e)){r.delete(e);return}S(r,e,n)&&i(e);return}y(r,e,n),r.add(e)};return i(t),g(x(r,n),n)}function E(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function he(e,t){let n=new Set;for(let r of e)E(r,t,n);return n}function D(e,t,n){let r=(e.children??[]).map(e=>D(e,t,n)).filter(e=>!!e);return!e.searchText.toLowerCase().includes(t)&&r.length===0?null:(r.length>0&&n.add(e.id),r.length===0?e:{...e,children:r})}function ge(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>D(e,n,r)).filter(e=>!!e),expandedIds:r}}function _e(e,t){let n=[],r=(e,i,a)=>{let o=(e.children?.length??0)>0,s=o&&t.has(e.id);if(n.push({node:e,level:i,parentId:a,hasChildren:o,isExpanded:s,isLeaf:!o}),s)for(let t of e.children??[])r(t,i+1,e.id)};for(let t of e)r(t,0);return n}var O=t((()=>{})),k,A,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,J=t((()=>{k=`eMqOwq`,A=`JKstO-`,j=`hKgr8e`,M=`_6EH37F`,N=`o5NWnX`,P=`ibSd-S`,F=`lXezvv`,I=`FMlLGX`,L=`d2Zt7U`,R=`_8PN4hs`,z=`_4JEoen`,B=`GS8eEC`,V=`T8gVno`,H=`o6stdX`,U=`I5zvhe`,W=`KQ0PBI`,G=`_7hAQQA`,K=`XeUHNc`,q={treeRow:k,treeRowSelected:A,treeRowActive:j,treeNodeButton:M,treeIndent:N,treeExpander:P,treeExpanderPlaceholder:F,treeExpanderIcon:I,treeExpanderIconExpanded:L,treeSelection:R,treeSelectionChecked:z,treeSelectionPartial:B,treeSelectionIcon:V,treeSummary:H,inputWithOverlay:U,valueOverlay:W,treeActions:G,treeClearButton:K}}));function ve({node:e,level:t,highlight:n,hasChildren:r,isExpanded:a,selected:s,partial:c,selectionMode:ee,onToggleExpand:d}){return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:q.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),r?(0,Y.jsx)(`button`,{type:`button`,className:q.treeExpander,onClick:e=>{e.stopPropagation(),d?.()},"aria-label":a?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":a?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Y.jsx)(l,{className:i(q.treeExpanderIcon,a&&q.treeExpanderIconExpanded)})}):(0,Y.jsx)(`span`,{className:q.treeExpanderPlaceholder,"aria-hidden":`true`}),ee===`multi`&&(0,Y.jsx)(`span`,{className:i(q.treeSelection,s&&q.treeSelectionChecked,c&&q.treeSelectionPartial),"aria-hidden":`true`,children:s?(0,Y.jsx)(u,{className:q.treeSelectionIcon}):c?(0,Y.jsx)(o,{className:q.treeSelectionIcon}):null}),(0,Y.jsx)(de,{label:e.label,code:e.code,highlight:n})]})}var Y,X=t((()=>{a(),c(),ue(),J(),Y=r(),ve.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
|
|
2
|
-
id: string;
|
|
3
|
-
codeKey: string;
|
|
4
|
-
value: string;
|
|
5
|
-
label: string;
|
|
6
|
-
code?: string;
|
|
7
|
-
searchText: string;
|
|
8
|
-
children?: TreeSelectNode[];
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
}`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}}]}},description:``},level:{required:!0,tsType:{name:`number`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},hasChildren:{required:!0,tsType:{name:`boolean`},description:``},isExpanded:{required:!0,tsType:{name:`boolean`},description:``},selected:{required:!0,tsType:{name:`boolean`},description:``},partial:{required:!0,tsType:{name:`boolean`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},description:``},onToggleExpand:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}}));function Z({label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:c,partialIds:l,selectionMode:u,triggerMode:d=`display`,selectedSummary:f,selectedSummaryText:p,query:ue,defaultQuery:de,onQuery:m,onNodeActivate:pe,onClearSelection:h,isLoading:g,error:_}){let v=(0,Q.useRef)(null),y=(0,Q.useRef)(!1),[b,x]=(0,Q.useState)(()=>new Set),S=d===`search`?`search-single`:`display`,me=(0,Q.useMemo)(()=>fe(o),[o]),{query:C,setQuery:w}=ce({open:!0,query:ue,defaultQuery:de,onQuery:m,triggerMode:`display`}),{nodes:T,expandedIds:E}=(0,Q.useMemo)(()=>ge(o,C),[o,C]),D=(0,Q.useMemo)(()=>he(c,me),[c,me]),O=(0,Q.useMemo)(()=>new Set([...b,...E,...D]),[b,E,D]),k=(0,Q.useMemo)(()=>_e(T,O),[T,O]),{open:A,activeIndex:j,context:M,floatingStyles:N,getFloatingProps:P,setReference:F,setFloating:I,setOptionRef:L,close:R,openList:z,toggleOpen:B,selectOption:V,handleReferenceKeyDown:H,handleFloatingKeyDown:U,getOptionId:W,getActiveOptionId:G}=ae({options:k,selectedIndex:(0,Q.useMemo)(()=>k.findIndex(e=>c.has(e.node.id)),[c,k]),onSelect:e=>pe(e.node),disabled:n||g,closeOnSelect:u===`single`,allowOpenWithoutOptions:!0,triggerMode:S}),K=c.size>0,J=d===`search`&&(A||C.length>0),Y=J?C:p??``,X=d===`display`&&!!f,Z=se({mode:S,open:A,currentQuery:C,hasDisplayValue:!!p,inputRef:v,setQuery:w,openList:z,close:R,toggleOpen:B});(0,Q.useEffect)(()=>{y.current&&!A&&Z.policy.resetQueryOnClose&&w(``),y.current=A},[A,w,Z.policy.resetQueryOnClose]);let ye=e=>{v.current=e},be=()=>{h?.(),w(``),R()},xe=e=>{e.hasChildren&&x(t=>{let n=new Set(t);return n.has(e.node.id)?n.delete(e.node.id):n.add(e.node.id),n})};return(0,$.jsx)(ne,{label:e,description:t,disabled:n,placeholder:r,size:a,children:({controlId:e,labelId:t,describedBy:a})=>{let o=`${e}-listbox`;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(oe,{ref:ye,rootRef:F,id:e,type:`text`,role:`combobox`,autoComplete:`off`,disabled:n||g,readOnly:d!==`search`,value:d===`display`&&X?``:Y,placeholder:d===`search`?!p||J?r:void 0:K?void 0:r,"aria-labelledby":t,"aria-describedby":a,"aria-haspopup":`listbox`,"aria-expanded":A,"aria-controls":A?o:void 0,"aria-autocomplete":d===`search`?`list`:`none`,"aria-activedescendant":A&&k.length>0?G(o):void 0,inputClassName:i(K&&q.treeSummary,X&&q.inputWithOverlay),overlay:X?(0,$.jsx)(`div`,{className:q.valueOverlay,children:f}):void 0,endAdornment:(0,$.jsx)(ie,{open:A,disabled:n||g,onToggleMouseDown:Z.handleToggleMouseDown,onToggleClick:Z.handleToggleClick,children:K&&h?(0,$.jsx)(`button`,{type:`button`,className:q.treeClearButton,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:e=>{e.preventDefault(),e.stopPropagation(),be()},"aria-label":`Очистить выбор`,children:(0,$.jsx)(s,{})}):null}),onChange:e=>{d===`search`&&Z.handleTriggerInputChange(e.target.value)},onClick:Z.handleTriggerClick,onFocus:e=>{Z.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{H(e),!e.defaultPrevented&&Z.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{let e=j>=0?k[j]:void 0;e&&V(e)},enableSpaceActivation:d===`display`})}}),(0,$.jsx)(re,{open:A,context:M,floatingStyles:N,listId:o,labelId:t,descriptionId:a,activeOptionId:k.length>0?G(o):void 0,setFloating:I,getFloatingProps:P,onKeyDown:U,className:i(ee.uiPopupOptions,`scrollable`),header:d===`display`?(0,$.jsx)(te,{value:C,onChange:w,onClear:()=>w(``),placeholder:`Поиск по дереву`,onKeyDown:e=>{e.key!==`Escape`&&e.key!==`Tab`&&e.stopPropagation()},onClick:e=>{e.stopPropagation()}}):void 0,children:(0,$.jsx)(`div`,{className:``,children:k.length===0?(0,$.jsx)(le,{errorState:_,loadingState:g?`Загрузка...`:void 0,emptyState:!_&&!g?`Нет данных`:void 0}):k.map((e,t)=>{let n=c.has(e.node.id),r=!n&&l.has(e.node.id),a=t===j;return(0,$.jsx)(`div`,{id:W(o,t),ref:e=>L(t,e),role:`option`,"aria-selected":n,className:i(q.treeRow,a&&q.treeRowActive,n&&q.treeRowSelected),onMouseDown:e=>{e.preventDefault()},onClick:()=>V(e),children:(0,$.jsx)(`div`,{className:q.treeNodeButton,children:(0,$.jsx)(ve,{node:e.node,level:e.level,highlight:C,hasChildren:e.hasChildren,isExpanded:e.isExpanded,selected:n,partial:r,selectionMode:u,onToggleExpand:()=>xe(e)})})},e.node.id)})})})]})}})}var Q,$,ye=t((()=>{Q=e(n(),1),a(),c(),f(),p(),d(),O(),X(),J(),$=r(),Z.__docgenInfo={description:``,methods:[],displayName:`TreePickerBase`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},selectedIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},partialIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},description:``},triggerMode:{required:!1,tsType:{name:`union`,raw:`"display" | "search"`,elements:[{name:`literal`,value:`"display"`},{name:`literal`,value:`"search"`}]},description:``,defaultValue:{value:`"display"`,computed:!1}},selectedSummary:{required:!1,tsType:{name:`ReactNode`},description:``},selectedSummaryText:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},onNodeActivate:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(node: TreeSelectNode) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
|
|
11
|
-
id: string;
|
|
12
|
-
codeKey: string;
|
|
13
|
-
value: string;
|
|
14
|
-
label: string;
|
|
15
|
-
code?: string;
|
|
16
|
-
searchText: string;
|
|
17
|
-
children?: TreeSelectNode[];
|
|
18
|
-
disabled?: boolean;
|
|
19
|
-
}`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}}]}},name:`node`}],return:{name:`void`}}},description:``},onClearSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``}}}}));export{O as a,pe as c,w as i,ye as n,T as o,fe as r,h as s,Z as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BxBCFrOJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,c as a,n as o,r as s,t as c}from"./TreePickerBase-xFkOCgy0.js";function l(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function u({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:i,nodes:o,value:u,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1}){let b=(0,d.useMemo)(()=>s(o),[o]),x=a(u,b),S=x?b.nodeById.get(x):void 0;return(0,f.jsx)(c,{label:e,description:t,disabled:n,placeholder:r,size:i,nodes:o,selectedIds:x?new Set([x]):new Set,partialIds:new Set,selectionMode:`single`,triggerMode:`search`,selectedSummaryText:l(S),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var d,f,p=t((()=>{d=e(n(),1),i(),o(),f=r(),u.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значение"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}}},composes:[`Omit`]}}));export{p as n,u as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{m as t,p as n}from"./iframe-BxBCFrOJ.js";import{i as r,n as i,r as a,t as o}from"./chunk-3LY4VQVK-CNZt5fIP.js";var s;e((()=>{a(),i(),t(),s=(0,n(r(),1).default)(2)(async(e,t)=>e===!1?t:o(t))}))();export{s as formatter};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{a as t,n,r}from"./Grid-JvQFWmt_.js";var i=e((()=>{n(),t(),r()}));export{i as t};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BxBCFrOJ.js";import{t as r}from"./react-dom-BKRiX1TT.js";import{i,n as a,r as o,s,t as c}from"./utils-CMnxoKbT.js";import{a as l,c as u,f as d,h as f,i as p,m,p as h,r as g,s as _,u as v}from"./floating-ui.react-DV6_xxif.js";function y(){var e=[...arguments];return(0,F.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}function b(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function x(e){return`nodeType`in e}function S(e){return e?b(e)?e:x(e)?e.ownerDocument?.defaultView??window:window:window}function ee(e){let{Document:t}=S(e);return e instanceof t}function C(e){return b(e)?!1:e instanceof S(e).HTMLElement}function w(e){return e instanceof S(e).SVGElement}function T(e){return e?b(e)?e.document:x(e)?ee(e)?e:C(e)||w(e)?e.ownerDocument:document:document:document}function te(e){let t=(0,F.useRef)(e);return L(()=>{t.current=e}),(0,F.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function E(){let e=(0,F.useRef)(null);return[(0,F.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,F.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function D(e,t){t===void 0&&(t=[e]);let n=(0,F.useRef)(e);return L(()=>{n.current!==e&&(n.current=e)},t),n}function ne(e,t){let n=(0,F.useRef)();return(0,F.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function O(e){let t=te(e),n=(0,F.useRef)(null);return[n,(0,F.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function k(e){let t=(0,F.useRef)();return(0,F.useEffect)(()=>{t.current=e},[e]),t.current}function A(e,t){return(0,F.useMemo)(()=>{if(t)return t;let n=R[e]==null?0:R[e]+1;return R[e]=n,e+`-`+n},[e,t])}function j(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}function M(e){return`clientX`in e&&`clientY`in e}function N(e){if(!e)return!1;let{KeyboardEvent:t}=S(e.target);return t&&e instanceof t}function re(e){if(!e)return!1;let{TouchEvent:t}=S(e.target);return t&&e instanceof t}function ie(e){if(re(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return M(e)?{x:e.clientX,y:e.clientY}:null}function P(e){return e.matches(H)?e:e.querySelector(H)}var F,I,L,R,z,B,V,H,U=t((()=>{F=e(n()),I=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,L=I?F.useLayoutEffect:F.useEffect,R={},z=j(1),B=j(-1),V=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[V.Translate.toString(e),V.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),H=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`}));function ae(e){let{id:t,value:n}=e;return G.createElement(`div`,{id:t,style:se},n)}function W(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return G.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function oe(){let[e,t]=(0,G.useState)(``);return{announce:(0,G.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var G,se,ce=t((()=>{G=e(n()),se={display:`none`}}));function le(e){let t=(0,q.useContext)(Ot);(0,q.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function ue(){let[e]=(0,q.useState)(()=>new Set),t=(0,q.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,q.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}function de(e){let{announcements:t=At,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=kt}=e,{announce:a,announcement:o}=oe(),s=A(`DndLiveRegion`),[c,l]=(0,q.useState)(!1);if((0,q.useEffect)(()=>{l(!0)},[]),le((0,q.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=q.createElement(q.Fragment,null,q.createElement(ae,{id:r,value:i.draggable}),q.createElement(W,{id:s,announcement:o}));return n?(0,Dt.createPortal)(u,n):u}function K(){}function fe(e,t){return(0,q.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function pe(){var e=[...arguments];return(0,q.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}function me(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function he(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function ge(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function _e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function ve(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function ye(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}function be(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}function xe(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Se(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Y}function Ce(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}function we(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Te(e,t,n){let r=we(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}function Ee(e,t){t===void 0&&(t=Ft);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=S(e).getComputedStyle(e);t&&(n=Te(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function De(e){return Ee(e,{ignoreTransform:!0})}function Oe(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function ke(e,t){return t===void 0&&(t=S(e).getComputedStyle(e)),t.position===`fixed`}function Ae(e,t){t===void 0&&(t=S(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function je(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(ee(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!C(i)||w(i)||n.includes(i))return n;let a=S(e).getComputedStyle(i);return i!==e&&Ae(i,a)&&n.push(i),ke(i,a)?n:r(i.parentNode)}return e?r(e):n}function Me(e){let[t]=je(e,1);return t??null}function Ne(e){return!I||!e?null:b(e)?e:x(e)?ee(e)||e===T(e).scrollingElement?window:C(e)?e:null:null}function Pe(e){return b(e)?e.scrollX:e.scrollLeft}function Fe(e){return b(e)?e.scrollY:e.scrollTop}function Ie(e){return{x:Pe(e),y:Fe(e)}}function Le(e){return!I||!e?!1:e===document.scrollingElement}function Re(e){let t={x:0,y:0},n=Le(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}function ze(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=It);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=Re(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=X.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=X.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=X.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=X.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function Be(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function Ve(e){return e.reduce((e,t)=>z(e,Ie(t)),Y)}function He(e){return e.reduce((e,t)=>e+Pe(t),0)}function Ue(e){return e.reduce((e,t)=>e+Fe(t),0)}function We(e,t){if(t===void 0&&(t=Ee),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);Me(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}function Ge(e){let{EventTarget:t}=S(e);return e instanceof t?e:T(e)}function Ke(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}function qe(e){e.preventDefault()}function Je(e){e.stopPropagation()}function Ye(e){return!!(e&&`distance`in e)}function Xe(e){return!!(e&&`delay`in e)}function Ze(e){let{acceleration:t,activator:n=Zt.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=Qt.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=Qe({delta:d,disabled:!a}),[m,h]=E(),g=(0,q.useRef)({x:0,y:0}),_=(0,q.useRef)({x:0,y:0}),v=(0,q.useMemo)(()=>{switch(n){case Zt.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case Zt.DraggableRect:return i}},[n,i,c]),y=(0,q.useRef)(null),b=(0,q.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,q.useMemo)(()=>s===Qt.TreeOrder?[...l].reverse():l,[s,l]);(0,q.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=l.indexOf(e),i=u[n];if(!i)continue;let{direction:a,speed:s}=ze(e,i,v,t,f);for(let e of[`x`,`y`])p[e][a[e]]||(s[e]=0,a[e]=0);if(s.x>0||s.y>0){h(),y.current=e,m(b,o),g.current=s,_.current=a;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}function Qe(e){let{delta:t,disabled:n}=e,r=k(t);return ne(e=>{if(n||!r||!e)return $t;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[X.Backward]:e.x[X.Backward]||i.x===-1,[X.Forward]:e.x[X.Forward]||i.x===1},y:{[X.Backward]:e.y[X.Backward]||i.y===-1,[X.Forward]:e.y[X.Forward]||i.y===1}}},[n,t,r])}function $e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return ne(e=>t==null?null:r??e??null,[r,t])}function et(e,t){return(0,q.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}function tt(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,q.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,q.useRef)(e),d=g(),f=D(d),p=(0,q.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,q.useRef)(null),h=ne(t=>{if(d&&!n)return nn;if(!t||t===nn||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new Rt(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,q.useEffect)(()=>{u.current=e},[e]),(0,q.useEffect)(()=>{d||p()},[n,d]),(0,q.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,q.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case en.Always:return!1;case en.BeforeDragging:return n;default:return!n}}}function nt(e,t){return ne(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function rt(e,t){return nt(e,t)}function it(e){let{callback:t,disabled:n}=e,r=te(t),i=(0,q.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,q.useEffect)(()=>()=>i?.disconnect(),[i]),i}function at(e){let{callback:t,disabled:n}=e,r=te(t),i=(0,q.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,q.useEffect)(()=>()=>i?.disconnect(),[i]),i}function ot(e){return new Rt(Ee(e),e)}function st(e,t,n){t===void 0&&(t=ot);let[r,i]=(0,q.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=it({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=at({callback:a});return L(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function ct(e){return Se(e,nt(e))}function lt(e){let t=(0,q.useRef)(e),n=ne(n=>e?n&&n!==rn&&e&&t.current&&e.parentNode===t.current.parentNode?n:je(e):rn,[e]);return(0,q.useEffect)(()=>{t.current=e},[e]),n}function ut(e){let[t,n]=(0,q.useState)(null),r=(0,q.useRef)(e),i=(0,q.useCallback)(e=>{let t=Ne(e.target);t&&n(e=>e?(e.set(t,Ie(t)),new Map(e)):null)},[]);return(0,q.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=Ne(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,Ie(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{Ne(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,q.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>z(e,t),Y):Ve(e):Y,[e,t])}function dt(e,t){t===void 0&&(t=[]);let n=(0,q.useRef)(null);return(0,q.useEffect)(()=>{n.current=null},t),(0,q.useEffect)(()=>{let t=e!==Y;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?B(e,n.current):Y}function ft(e){(0,q.useEffect)(()=>{if(!I)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function pt(e,t){return(0,q.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function mt(e){return(0,q.useMemo)(()=>e?Oe(e):null,[e])}function ht(e,t){t===void 0&&(t=Ee);let[n]=e,r=mt(n?S(n):null),[i,a]=(0,q.useState)(an);function o(){a(()=>e.length?e.map(e=>Le(e)?r:new Rt(t(e),e)):an)}let s=at({callback:o});return L(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function gt(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return C(t)?t:e}function _t(e){let{measure:t}=e,[n,r]=(0,q.useState)(null),i=at({callback:(0,q.useCallback)(e=>{for(let{target:n}of e)if(C(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=O((0,q.useCallback)(e=>{let n=gt(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,q.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}function vt(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new ln}}}function yt(e,t){switch(t.type){case J.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case J.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case J.DragEnd:case J.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case J.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new ln(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case J.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new ln(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case J.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new ln(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function bt(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,q.useContext)(fn),a=k(r),o=k(n?.id);return(0,q.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!N(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=P(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function xt(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function St(e){return(0,q.useMemo)(()=>({draggable:{...cn.draggable,...e?.draggable},droppable:{...cn.droppable,...e?.droppable},dragOverlay:{...cn.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Ct(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,q.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;L(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=Se(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=Me(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}function wt(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=A(yn),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,q.useContext)(fn),{role:p=vn,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,q.useContext)(g?mn:_n),[v,y]=O(),[b,x]=O(),S=pt(o,t),ee=D(n);return L(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:ee}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,q.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===vn?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function Tt(){return(0,q.useContext)(pn)}function Et(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=A(bn),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,q.useContext)(fn),u=(0,q.useRef)({disabled:n}),d=(0,q.useRef)(!1),f=(0,q.useRef)(null),p=(0,q.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...xn,...i},_=D(h??r),v=at({callback:(0,q.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=O((0,q.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=D(t);return(0,q.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,q.useEffect)(()=>(s({type:J.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:J.UnregisterDroppable,key:a,id:r})),[r]),(0,q.useEffect)(()=>{n!==u.current.disabled&&(s({type:J.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}var q,Dt,Ot,kt,At,J,Y,jt,Mt,Nt,Pt,Ft,X,It,Lt,Rt,zt,Z,Q,Bt,Vt,Ht,Ut,Wt,Gt,Kt,qt,Jt,Yt,Xt,Zt,Qt,$t,en,tn,nn,rn,an,on,sn,cn,ln,un,dn,fn,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn=t((()=>{q=e(n()),Dt=e(r()),U(),ce(),Ot=(0,q.createContext)(null),kt={draggable:`
|
|
2
|
-
To pick up a draggable item, press the space bar.
|
|
3
|
-
While dragging, use the arrow keys to move the item.
|
|
4
|
-
Press space again to drop the item in its new position, or press escape to cancel.
|
|
5
|
-
`},At={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}},(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(J||={}),Y=Object.freeze({x:0,y:0}),jt=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=ye(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=me(ye(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(he)},Mt=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=_e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=_e(r),o=i.reduce((e,t,r)=>e+me(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(he)},Nt=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=be(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(ge)},Pt=Ce(1),Ft={ignoreTransform:!1},(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(X||={}),It={x:.2,y:.2},Lt=[[`x`,[`left`,`right`],He],[`y`,[`top`,`bottom`],Ue]],Rt=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=je(t),r=Ve(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of Lt)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},zt=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}},(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(Z||={}),(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(Q||={}),Bt={start:[Q.Space,Q.Enter],cancel:[Q.Esc],end:[Q.Space,Q.Enter,Q.Tab]},Vt=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Q.Right:return{...n,x:n.x+25};case Q.Left:return{...n,x:n.x-25};case Q.Down:return{...n,y:n.y+25};case Q.Up:return{...n,y:n.y-25}}},Ht=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new zt(T(t)),this.windowListeners=new zt(S(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Z.Resize,this.handleCancel),this.windowListeners.add(Z.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Z.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&We(n),t(Y)}handleKeyDown(e){if(N(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=Bt,coordinateGetter:a=Vt,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:Y;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=B(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=Re(n),p=Be(n),m={x:Math.min(i===Q.Right?p.right-p.width/2:p.right,Math.max(i===Q.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===Q.Down?p.bottom-p.height/2:p.bottom,Math.max(i===Q.Down?p.top:p.top+p.height/2,u.y))},h=i===Q.Right&&!s||i===Q.Left&&!c,g=i===Q.Down&&!l||i===Q.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===Q.Right&&e<=d.x||i===Q.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===Q.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===Q.Down&&e<=d.y||i===Q.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===Q.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,z(B(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}},Ht.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=Bt,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}],Ut=class{constructor(e,t,n){n===void 0&&(n=Ge(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=T(i),this.documentListeners=new zt(this.document),this.listeners=new zt(n),this.windowListeners=new zt(S(i)),this.initialCoordinates=ie(r)??Y,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Z.Resize,this.handleCancel),this.windowListeners.add(Z.DragStart,qe),this.windowListeners.add(Z.VisibilityChange,this.handleCancel),this.windowListeners.add(Z.ContextMenu,qe),this.documentListeners.add(Z.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Xe(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(Ye(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Z.Click,Je,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Z.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=ie(e)??Y,s=B(n,o);if(!t&&a){if(Ye(a)){if(a.tolerance!=null&&Ke(s,a.tolerance))return this.handleCancel();if(Ke(s,a.distance))return this.handleStart()}if(Xe(a)&&Ke(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===Q.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},Wt={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},Gt=class extends Ut{constructor(e){let{event:t}=e,n=T(t.target);super(e,Wt,n)}},Gt.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}],Kt={move:{name:`mousemove`},end:{name:`mouseup`}},(function(e){e[e.RightClick=2]=`RightClick`})(qt||={}),Jt=class extends Ut{constructor(e){super(e,Kt,T(e.event.target))}},Jt.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===qt.RightClick?!1:(r?.({event:n}),!0)}}],Yt={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},Xt=class extends Ut{constructor(e){super(e,Yt)}static setup(){return window.addEventListener(Yt.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Yt.move.name,e)};function e(){}}},Xt.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}],(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(Zt||={}),(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(Qt||={}),$t={x:{[X.Backward]:!1,[X.Forward]:!1},y:{[X.Backward]:!1,[X.Forward]:!1}},(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(en||={}),(function(e){e.Optimized=`optimized`})(tn||={}),nn=new Map,rn=[],an=[],on=[{sensor:Gt,options:{}},{sensor:Ht,options:{}}],sn={current:{}},cn={draggable:{measure:De},droppable:{measure:De,strategy:en.WhileDragging,frequency:tn.Optimized},dragOverlay:{measure:Ee}},ln=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},un={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new ln,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:K},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:cn,measureDroppableContainers:K,windowRect:null,measuringScheduled:!1},dn={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:K,draggableNodes:new Map,over:null,measureDroppableContainers:K},fn=(0,q.createContext)(dn),pn=(0,q.createContext)(un),mn=(0,q.createContext)({...Y,scaleX:1,scaleY:1}),(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(hn||={}),gn=(0,q.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=on,collisionDetection:o=Nt,measuring:s,modifiers:c,...l}=e,[u,d]=(0,q.useReducer)(yt,void 0,vt),[f,p]=ue(),[m,h]=(0,q.useState)(hn.Uninitialized),g=m===hn.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),ee=(0,q.useRef)({initial:null,translated:null}),C=(0,q.useMemo)(()=>_==null?null:{id:_,data:x?.data??sn,rect:ee},[_,x]),w=(0,q.useRef)(null),[T,te]=(0,q.useState)(null),[E,ne]=(0,q.useState)(null),O=D(l,Object.values(l)),k=A(`DndDescribedBy`,t),j=(0,q.useMemo)(()=>b.getEnabled(),[b]),M=St(s),{droppableRects:N,measureDroppableContainers:re,measuringScheduled:P}=tt(j,{dragging:g,dependencies:[y.x,y.y],config:M.droppable}),F=$e(v,_),I=(0,q.useMemo)(()=>E?ie(E):null,[E]),R=Me(),B=rt(F,M.draggable.measure);Ct({activeNode:_==null?null:v.get(_),config:R.layoutShiftCompensation,initialRect:B,measure:M.draggable.measure});let V=st(F,M.draggable.measure,B),H=st(F?F.parentElement:null),U=(0,q.useRef)({activatorEvent:null,active:null,activeNode:F,collisionRect:null,collisions:null,droppableRects:N,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ae=b.getNodeFor(U.current.over?.id),W=_t({measure:M.dragOverlay.measure}),oe=W.nodeRef.current??F,G=g?W.rect??V:null,se=!!(W.nodeRef.current&&W.rect),ce=ct(se?null:V),le=mt(oe?S(oe):null),K=lt(g?ae??F:null),fe=ht(K),pe=xt(c,{transform:{x:y.x-ce.x,y:y.y-ce.y,scaleX:1,scaleY:1},activatorEvent:E,active:C,activeNodeRect:V,containerNodeRect:H,draggingNodeRect:G,over:U.current.over,overlayNodeRect:W.rect,scrollableAncestors:K,scrollableAncestorRects:fe,windowRect:le}),me=I?z(I,y):null,he=ut(K),ge=dt(he),_e=dt(he,[V]),ye=z(pe,ge),be=G?Pt(G,pe):null,Se=C&&be?o({active:C,collisionRect:be,droppableRects:N,droppableContainers:j,pointerCoordinates:me}):null,Ce=ve(Se,`id`),[we,Te]=(0,q.useState)(null),Ee=xe(se?pe:z(pe,_e),we?.rect??null,V),De=(0,q.useRef)(null),Oe=(0,q.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(w.current==null)return;let i=v.get(w.current);if(!i)return;let a=e.nativeEvent,o=new n({active:w.current,activeNode:i,event:a,options:r,context:U,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=O.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=O.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=w.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=O.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:ee}};(0,Dt.unstable_batchedUpdates)(()=>{r?.(i),h(hn.Initializing),d({type:J.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),te(De.current),ne(a)})},onMove(e){d({type:J.DragMove,coordinates:e})},onEnd:s(J.DragEnd),onCancel:s(J.DragCancel)});De.current=o;function s(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=U.current,o=null;if(t&&i){let{cancelDrop:s}=O.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===J.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=J.DragCancel)}w.current=null,(0,Dt.unstable_batchedUpdates)(()=>{d({type:e}),h(hn.Uninitialized),Te(null),te(null),ne(null),De.current=null;let t=e===J.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=O.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),ke=et(a,(0,q.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(w.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},w.current=r,Oe(n,t))},[v,Oe]));ft(a),L(()=>{V&&m===hn.Initializing&&h(hn.Initialized)},[V,m]),(0,q.useEffect)(()=>{let{onDragMove:e}=O.current,{active:t,activatorEvent:n,collisions:r,over:i}=U.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:ye.x,y:ye.y},over:i};(0,Dt.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[ye.x,ye.y]),(0,q.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=U.current;if(!e||w.current==null||!t||!i)return;let{onDragOver:a}=O.current,o=r.get(Ce),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,Dt.unstable_batchedUpdates)(()=>{Te(s),a?.(c),f({type:`onDragOver`,event:c})})},[Ce]),L(()=>{U.current={activatorEvent:E,active:C,activeNode:F,collisionRect:be,collisions:Se,droppableRects:N,draggableNodes:v,draggingNode:oe,draggingNodeRect:G,droppableContainers:b,over:we,scrollableAncestors:K,scrollAdjustedTranslate:ye},ee.current={initial:G,translated:be}},[C,F,Se,be,v,oe,G,N,b,we,K,ye]),Ze({...R,delta:y,draggingRect:be,pointerCoordinates:me,scrollableAncestors:K,scrollableAncestorRects:fe});let Ae=(0,q.useMemo)(()=>({active:C,activeNode:F,activeNodeRect:V,activatorEvent:E,collisions:Se,containerNodeRect:H,dragOverlay:W,draggableNodes:v,droppableContainers:b,droppableRects:N,over:we,measureDroppableContainers:re,scrollableAncestors:K,scrollableAncestorRects:fe,measuringConfiguration:M,measuringScheduled:P,windowRect:le}),[C,F,V,E,Se,H,W,v,b,N,we,re,K,fe,M,P,le]),je=(0,q.useMemo)(()=>({activatorEvent:E,activators:ke,active:C,activeNodeRect:V,ariaDescribedById:{draggable:k},dispatch:d,draggableNodes:v,over:we,measureDroppableContainers:re}),[E,ke,C,V,d,k,v,we,re]);return q.createElement(Ot.Provider,{value:p},q.createElement(fn.Provider,{value:je},q.createElement(pn.Provider,{value:Ae},q.createElement(mn.Provider,{value:Ee},i)),q.createElement(bt,{disabled:n?.restoreFocus===!1})),q.createElement(de,{...n,hiddenTextDescribedById:k}));function Me(){let e=T?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),_n=(0,q.createContext)(null),vn=`button`,yn=`Draggable`,bn=`Droppable`,xn={timeout:25}}));function Cn(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function wn(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function Tn(e){return e!==null&&e>=0}function En(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Dn(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}function On(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return!r||!i&&!a?0:n<t?i?r.left-(i.left+i.width):a.left-(r.left+r.width):a?a.left-(r.left+r.width):r.left-(i.left+i.width)}function kn(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}function An(e){let{children:t,id:n,items:r,strategy:i=zn,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=Tt(),d=A(Hn,n),f=s.rect!==null,p=(0,$.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,$.useRef)(p),v=!En(p,_.current),y=g!==-1&&h===-1||v,b=Dn(a);L(()=>{v&&m&&u(p)},[v,p,m,u]),(0,$.useEffect)(()=>{_.current=p},[p]);let x=(0,$.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:wn(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return $.createElement(Un.Provider,{value:x},t)}function jn(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,$.useState)(null),s=(0,$.useRef)(n);return L(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=Ee(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,$.useEffect)(()=>{a&&o(null)},[a]),a}function Mn(e){let{animateLayoutChanges:t=Gn,attributes:n,disabled:r,data:i,getNewIndex:a=Wn,id:o,strategy:s,resizeObserverConfig:c,transition:l=Kn}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,$.useContext)(Un),b=Nn(r,p),x=u.indexOf(o),S=(0,$.useMemo)(()=>({sortable:{containerId:d,index:x,items:u},...i}),[d,i,x,u]),ee=(0,$.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:C,node:w,isOver:T,setNodeRef:te}=Et({id:o,data:S,disabled:b.droppable,resizeObserverConfig:{updateMeasurementsFor:ee,...c}}),{active:E,activatorEvent:D,activeNodeRect:ne,attributes:O,setNodeRef:k,listeners:A,isDragging:j,over:M,setActivatorNodeRef:re,transform:ie}=wt({id:o,data:S,attributes:{...Yn,...n},disabled:b.draggable}),P=y(te,k),F=!!E,I=F&&!m&&Tn(f)&&Tn(g),L=!_&&j,R=I?(L&&I?ie:null)??(s??v)({rects:h,activeNodeRect:ne,activeIndex:f,overIndex:g,index:x}):null,z=Tn(f)&&Tn(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):x,B=E?.id,H=(0,$.useRef)({activeId:B,items:u,newIndex:z,containerId:d}),U=u!==H.current.items,ae=t({active:E,containerId:d,isDragging:j,isSorting:F,id:o,index:x,items:u,newIndex:H.current.newIndex,previousItems:H.current.items,previousContainerId:H.current.containerId,transition:l,wasDragging:H.current.activeId!=null}),W=jn({disabled:!ae,index:x,node:w,rect:C});return(0,$.useEffect)(()=>{F&&H.current.newIndex!==z&&(H.current.newIndex=z),d!==H.current.containerId&&(H.current.containerId=d),u!==H.current.items&&(H.current.items=u)},[F,z,d,u]),(0,$.useEffect)(()=>{if(B===H.current.activeId)return;if(B!=null&&H.current.activeId==null){H.current.activeId=B;return}let e=setTimeout(()=>{H.current.activeId=B},50);return()=>clearTimeout(e)},[B]),{active:E,activeIndex:f,attributes:O,data:S,rect:C,index:x,newIndex:z,items:u,isOver:T,isSorting:F,isDragging:j,listeners:A,node:w,overIndex:g,over:M,setNodeRef:P,setActivatorNodeRef:re,setDroppableNodeRef:te,setDraggableNodeRef:k,transform:W??R,transition:oe()};function oe(){if(W||U&&H.current.newIndex===x)return Jn;if(!(L&&!N(D)||!l)&&(F||ae))return V.Transition.toString({...l,property:qn})}}function Nn(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function Pn(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}function Fn(e,t){return!Pn(e)||!Pn(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function In(e,t){return!Pn(e)||!Pn(t)||!Fn(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var $,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn=t((()=>{$=e(n()),Sn(),U(),Ln={scaleX:1,scaleY:1},Rn=e=>{let{rects:t,activeNodeRect:n,activeIndex:r,overIndex:i,index:a}=e,o=t[r]??n;if(!o)return null;let s=On(t,a,r);if(a===r){let e=t[i];return e?{x:r<i?e.left+e.width-(o.left+o.width):e.left-o.left,y:0,...Ln}:null}return a>r&&a<=i?{x:-o.width-s,y:0,...Ln}:a<r&&a>=i?{x:o.width+s,y:0,...Ln}:{x:0,y:0,...Ln}},zn=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=Cn(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},Bn={scaleX:1,scaleY:1},Vn=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...Bn}:null}let s=kn(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...Bn}:r<t&&r>=a?{x:0,y:o.height+s,...Bn}:{x:0,y:0,...Bn}},Hn=`Sortable`,Un=$.createContext({activeIndex:-1,containerId:Hn,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:zn,disabled:{draggable:!1,droppable:!1}}),Wn=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return Cn(n,r,i).indexOf(t)},Gn=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},Kn={duration:200,easing:`ease`},qn=`transform`,Jn=V.Transition.toString({property:qn,duration:0,easing:`linear`}),Yn={roleDescription:`sortable`},Xn=[Q.Down,Q.Right,Q.Up,Q.Left],Zn=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(Xn.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case Q.Down:r.top<a.top&&t.push(n);break;case Q.Up:r.top>a.top&&t.push(n);break;case Q.Left:r.left>a.left&&t.push(n);break;case Q.Right:r.left<a.left&&t.push(n);break}});let c=Mt({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=ve(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=je(c).some((e,t)=>s[t]!==e),i=Fn(e,t),a=In(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:B(u,l)}}}}}));function $n(e=6){return pe(fe(Gt,{activationConstraint:{distance:typeof e==`number`?e:e.activationDistance??6}}),fe(Ht,{coordinateGetter:Zn}))}function er({options:e,selectedIndex:t,open:n,onOpenChange:r,getOptionDisabled:i,onSelect:g,disabled:y,placement:b=`bottom-start`,closeOnSelect:x=!0,focusFloatingOnOpen:S=!0,allowOpenWithoutOptions:ee=!1,restoreFocusOnClose:C=!0}){let w=(0,tr.useRef)([]),[T,te]=(0,tr.useState)(!1),E=n??T,D=r??te,[ne,O]=(0,tr.useState)(t>=0?t:o(e,i)),k=n=>e.length===0?-1:n>=0&&n<e.length&&!i?.(e[n])?n:t>=0&&t<e.length&&!i?.(e[t])?t:o(e,i),A=k(ne),{refs:j,floatingStyles:M,context:N}=l({open:E,onOpenChange:D,placement:b,transform:!1,strategy:`fixed`,middleware:[d(4),v({padding:8}),h({padding:8}),m({padding:8,apply({availableHeight:e,rects:t,elements:n}){Object.assign(n.floating.style,{minWidth:`${t.reference.width}px`,maxHeight:`${Math.max(e,120)}px`})}})],whileElementsMounted:f}),{getFloatingProps:re}=_([p(N),u(N,{role:`listbox`})]),ie=ee||e.length>0;(0,tr.useEffect)(()=>{!E||A<0||w.current[A]?.scrollIntoView({block:`nearest`})},[A,E]),(0,tr.useEffect)(()=>{!E||!S||requestAnimationFrame(()=>{j.floating.current?.focus()})},[S,E,j]);let P=()=>{if(D(!1),C){let e=j.domReference.current;e instanceof HTMLElement&&e.focus()}},F=t=>{y||!ie||(e.length>0&&O(k(t)),D(!0))},I=()=>{F(t>=0?t:o(e,i))},L=()=>{if(E){P();return}I()},R=e=>{i?.(e)||(g?.(e),x&&P())},z=()=>{if(A<0)return;let t=e[A];t!==void 0&&R(t)},B=()=>{O(o(e,i))},V=()=>{O(s(e,i))},H=n=>{if(!y){if(n.key===`ArrowDown`){if(n.preventDefault(),!E){F(t>=0?t:o(e,i));return}O(t=>c(e,k(t),1,i));return}if(n.key===`ArrowUp`){if(n.preventDefault(),!E){F(t>=0?t:s(e,i));return}O(t=>c(e,k(t),-1,i));return}if(n.key===`Home`&&E){n.preventDefault(),B();return}if(n.key===`End`&&E){n.preventDefault(),V();return}if(n.key===`Escape`&&E){n.preventDefault(),P();return}n.key===`Tab`&&E&&P()}},U=t=>{if(t.key===`ArrowDown`){t.preventDefault(),O(t=>c(e,k(t),1,i));return}if(t.key===`ArrowUp`){t.preventDefault(),O(t=>c(e,k(t),-1,i));return}if(t.key===`Home`){t.preventDefault(),B();return}if(t.key===`End`){t.preventDefault(),V();return}if(!a(t,z)){if(t.key===`Escape`){t.preventDefault(),P();return}t.key===`Tab`&&P()}},ae=(e,t)=>`${e}-option-${t}`;return{open:E,setOpen:D,activeIndex:A,refs:j,context:N,floatingStyles:M,getFloatingProps:re,setReference:j.setReference,setFloating:j.setFloating,setOptionRef:(e,t)=>{w.current[e]=t},close:P,openList:I,openWithIndex:F,toggleOpen:L,selectOption:R,selectActiveOption:z,handleReferenceKeyDown:H,handleFloatingKeyDown:U,getOptionId:ae,getActiveOptionId:e=>A>=0?ae(e,A):void 0}}var tr,nr=t((()=>{i(),tr=e(n(),1),Sn(),Qn(),g()}));export{Rn as a,Mn as c,jt as d,Sn as f,An as i,Vn as l,U as m,nr as n,Qn as o,V as p,er as r,zn as s,$n as t,gn as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{P as t}from"./formatters-D4nD5Nic.js";var n=e((()=>{t()}));export{n as t};
|