@ryuzaki13/react-foundation-ui 3.1.11 → 3.3.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/chunks/table-column-interactions-DzEvVuXe.js.map +1 -1
- package/dist/layout-picker/index.js +91 -60
- package/dist/layout-picker/index.js.map +1 -1
- package/dist/layout-picker/ui/LayoutPicker.d.ts +17 -1
- package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
- package/dist/layout-picker/ui/LayoutPresetPreview.d.ts +8 -0
- package/dist/layout-picker/ui/LayoutPresetPreview.d.ts.map +1 -0
- package/dist/splitter/Splitter.d.ts +3 -1
- package/dist/splitter/Splitter.d.ts.map +1 -1
- package/dist/splitter/SplitterHeightContainer.d.ts +24 -0
- package/dist/splitter/SplitterHeightContainer.d.ts.map +1 -0
- package/dist/splitter/index.d.ts +1 -0
- package/dist/splitter/index.d.ts.map +1 -1
- package/dist/splitter/index.js +184 -84
- package/dist/splitter/index.js.map +1 -1
- package/dist/splitter/useSplitterContainerHeight.d.ts +24 -0
- package/dist/splitter/useSplitterContainerHeight.d.ts.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/styles/mixins/_mixin.scss +43 -0
- package/storybook-static/assets/{Badge-DMeJysIv.js → Badge-D_miams1.js} +1 -1
- package/storybook-static/assets/{Badge.stories-DvNQ06lz.js → Badge.stories-C53rR6-m.js} +1 -1
- package/storybook-static/assets/{BadgeList-CO7wmhen.js → BadgeList-CXhMsbHN.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-CNr1YHnH.js → BarcodeScannerDialog.stories-seqRo6OE.js} +1 -1
- package/storybook-static/assets/{Button-BGDiDObX.js → Button-CnG8UaLy.js} +1 -1
- package/storybook-static/assets/{Button-BnbopVrx.js → Button-HcCf8ewy.js} +1 -1
- package/storybook-static/assets/{Button.stories-B_vh9vWu.js → Button.stories-BHSzUc2w.js} +1 -1
- package/storybook-static/assets/{CalendarView-D-AoscWR.js → CalendarView-XtXqdANe.js} +1 -1
- package/storybook-static/assets/{CheckBox-CNwSS4x-.js → CheckBox-CVtYfxZ9.js} +1 -1
- package/storybook-static/assets/{CheckBox-DFKl6X6O.js → CheckBox-D6vctcKk.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-CQDmYOCE.js → CheckBox.stories-DHXvTXOu.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-BHwSg3Ve.js → Color-6AOWCN3U-BbiWLCrL.js} +1 -1
- package/storybook-static/assets/{ContextMenu-B55zGMkr.js → ContextMenu-CveMvmMr.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BQyEArge.js → ContextMenu-nOxBI728.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-DoB8T7qq.js → ContextMenu.stories-BX-U2HL5.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-Bp-x3GjU.js → CustomOptionButton-CeQkVSnm.js} +1 -1
- package/storybook-static/assets/{DateInput-CEzZlA7a.js → DateInput-Cl0jsK8W.js} +1 -1
- package/storybook-static/assets/{DateInput-uKgrV_i2.js → DateInput-DZulw10a.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-BHGr75Za.js → DateInput.stories-BAk7jvdQ.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DpTqeahJ.js → DateRangePresetSelect-BbP1EZha.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-D8loCgDP.js → DateRangePresetSelect-fHheb8Qb.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-ByB8xYCo.js → DateRangePresetSelect.stories-DAE_gknP.js} +1 -1
- package/storybook-static/assets/{Detail-BVI0ZMCR.js → Detail-COtF87BC.js} +1 -1
- package/storybook-static/assets/{Detail.stories-BESXPBRG.js → Detail.stories-CSfAEQCi.js} +1 -1
- package/storybook-static/assets/{Dialog-DaBWR5lX.js → Dialog-BrBqkDX8.js} +1 -1
- package/storybook-static/assets/{Dialog-7UYw11C-.js → Dialog-C2uB9kIV.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-DJfiBF2X.js → Dialog.stories-Bm3UXA9U.js} +1 -1
- package/storybook-static/assets/{Disclosure-BT3_2wim.js → Disclosure-xhFEOG3w.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-CW14muXq.js → Disclosure.stories-Vl98lnzh.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-D4ywFTK1.js → DisclosureGroup-DUChaiu8.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-BB7m694z.js → DocsRenderer-JROSPFPF-C_WINtPH.js} +1 -1
- package/storybook-static/assets/{DropZone-DroVMeFW.js → DropZone-1gMBb4LE.js} +1 -1
- package/storybook-static/assets/{DropZone-CkpPf2Ym.js → DropZone-BZvrpfEI.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-H3oHPSgn.js → DropZone.stories-DVD3fCWD.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CR-0aPFt.js → DropdownMenu-DTeBES3S.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-C8gvedUk.js → ExpandableActionPanel-3gzSQS7e.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-4VZLqIJG.js → ExpandableActionPanel.stories-D19yOaYM.js} +1 -1
- package/storybook-static/assets/{Flex-BVNxZ6Xi.js → Flex-DIZfsMsu.js} +1 -1
- package/storybook-static/assets/{Flex.stories-C0iLqBtf.js → Flex.stories-b6asO6Wg.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-iQfpx33c.js → FloatingPopover-BMKn-ql-.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-DuOzSOq2.js → FormattedTableCell-BT4z527d.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-CXlMRNU9.css +1 -0
- package/storybook-static/assets/{Grid-DjjVW_Zv.js → Grid-DOOnMH98.js} +1 -1
- package/storybook-static/assets/{Grid.stories-af60sApH.js → Grid.stories-BytLkIod.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-CyTRwgsq.js → ImageCropper.stories-mOkJIs2l.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-C1JrhJEh.js → ImageRenderer-CZRbXgZb.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-0N2gZ7pW.js → ImageRenderer.stories-DTw8oVgX.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-BUvVhEQi.js → ImageView.stories-C_y-kuMM.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-DQvp-8PA.js → ImageViewer.stories-BMW63e3_.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-C1R7YJjb.js → ImageViewerRuntime-CNlV0hTZ.js} +1 -1
- package/storybook-static/assets/{Input-PCnCDfCc.js → Input-CVU8GJSJ.js} +1 -1
- package/storybook-static/assets/{Input-CCoRpQA-.js → Input-D7ogoGUR.js} +1 -1
- package/storybook-static/assets/{Input.stories-B1BXs_Oi.js → Input.stories-Ck5NAzN5.js} +1 -1
- package/storybook-static/assets/{InputDateTime-Lwlxam28.js → InputDateTime-BtQKShpA.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-uen-OcdG.js → InputDateTime.stories-Ck_Vdd0f.js} +1 -1
- package/storybook-static/assets/{InputFile-CLoJGype.js → InputFile-BtrIqfKw.js} +1 -1
- package/storybook-static/assets/{InputFile-CWsd9AT5.js → InputFile-C-wYyGvd.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-CU2hQHzw.js → InputFile.stories-Hz_10-5g.js} +1 -1
- package/storybook-static/assets/{InputFiles-DDvgo5_t.js → InputFiles-fMA23_Bz.js} +1 -1
- package/storybook-static/assets/{InputFiles-UsxU995Q.js → InputFiles-kGadQIOr.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-Xybfwzym.js → InputFiles.stories-DCGwLGsk.js} +1 -1
- package/storybook-static/assets/{InputFilesList-uAKqNArY.js → InputFilesList-D2d_PfYA.js} +1 -1
- package/storybook-static/assets/{InputImage-CS9ySFBB.js → InputImage-DUthKRXu.js} +1 -1
- package/storybook-static/assets/{InputImage-Qgk9M4kC.js → InputImage-DmHkPJAH.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-C6ruZA9G.js → InputImage.stories-jatpBa1U.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-DzDaJWyA.js → InteractiveComponents-DoYiFxrU.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-ElVCyI3k.js → InteractiveComponents.stories-C7MNF767.js} +1 -1
- package/storybook-static/assets/LayoutPicker-BXPyXDP-.js +85 -0
- package/storybook-static/assets/{LayoutPicker-DjolQnoU.js → LayoutPicker-C-QQvpXv.js} +39 -2
- package/storybook-static/assets/LayoutPicker.stories-Dwo08nCV.js +91 -0
- package/storybook-static/assets/{Listbox-CoskUebV.js → Listbox-CVTOtx7h.js} +1 -1
- package/storybook-static/assets/{Listbox-BOmRUACj.js → Listbox-lOsGVKCt.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-C9ZQ-n46.js → Listbox.stories-JF_tgMsM.js} +1 -1
- package/storybook-static/assets/{Modal-B0iwM39D.js → Modal-DNDnh6eL.js} +1 -1
- package/storybook-static/assets/{Modal-BRWAjcim.js → Modal-XipTBtwq.js} +1 -1
- package/storybook-static/assets/{Modal.stories-B2l2giba.js → Modal.stories-C-D2Op2H.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-CBSdkzkh.js → ModalManagerProvider-BSgCQPE0.js} +1 -1
- package/storybook-static/assets/{MultiSelect-C22p2qFd.js → MultiSelect-BkjfbN5S.js} +1 -1
- package/storybook-static/assets/{MultiSelect-UuMNjdIM.js → MultiSelect-juwreD-7.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-CfY-hEDN.js → MultiSelect.stories-DpH2Lt7S.js} +1 -1
- package/storybook-static/assets/{NoData-DD1-TPJ8.js → NoData-A59EYm0a.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-Cph6Rv-P.js → NotificationsHost-Dmp9bSBy.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-CTwxblPK.js → NotificationsHost.stories-Ds9fPqPw.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-BHRi8PM3.js → ODataMultiSelect-ATFN6j03.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-DO4MwYqZ.js → ODataMultiSelect.stories-BZHufWhw.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BzowLQRW.js → ODataSelect-wsq-aKaL.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-yiyUyvLW.js → ODataSelect.stories-DDJckPji.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-DYEDHrJk.js → ODataTreeMultiSelect-DRkVACkc.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-BTicwCLX.js → ODataTreeMultiSelect.stories-Cf9f-c1A.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-D5k1Iff-.js → ODataTreeSelect-DmpAqcJn.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-CCVP7I2I.js → ODataTreeSelect.stories-CmjLCIoB.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-Cz6xH1bE.js → OneStepScroller-EAhOZmWt.js} +1 -1
- package/storybook-static/assets/{Option-BwIc-SxO.js → Option-Bc5-OwJm.js} +1 -1
- package/storybook-static/assets/{OptionButton-1bkL_ARz.js → OptionButton-PxwmoR0s.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DHDeruQ5.js → PeriodSelect-B-NPWAUQ.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-3cBfMenI.js → PeriodSelect-Dd3tAy-l.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-DClPnVuc.js → PeriodSelect.stories-BCRagfo9.js} +1 -1
- package/storybook-static/assets/{PickerField-BVM71JTp.js → PickerField-BSGmEh4a.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-DV6T2DSE.js → PickerTriggerActions-CbcemWC5.js} +1 -1
- package/storybook-static/assets/{Popover-Cd2h2-HN.js → Popover-ChIXyBaB.js} +1 -1
- package/storybook-static/assets/{Popover-Dgdym7C9.js → Popover-DDcNjJVQ.js} +1 -1
- package/storybook-static/assets/{Popover.stories-DZY8b7B4.js → Popover.stories-DFA9Jxpy.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-BlDKWB8g.js → PresetRangeDateInput-BqXmZpJv.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-M7g0tNmF.js → PresetRangeDateInput-CbqvxYsV.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-DUlRx8Hm.js → PresetRangeDateInput.stories-BHQTcW_z.js} +1 -1
- package/storybook-static/assets/{PresetSelect-BX0eCpVd.js → PresetSelect-CtDoIWSg.js} +1 -1
- package/storybook-static/assets/{README-BACv6QvN.js → README-87vCeikt.js} +1 -1
- package/storybook-static/assets/{README-BvYIa23p.js → README-8ieYbwRv.js} +1 -1
- package/storybook-static/assets/{README-_q_WEwWm.js → README-B2UhI-qx.js} +1 -1
- package/storybook-static/assets/{README-BVgy3UNo.js → README-B3SMW4TV.js} +1 -1
- package/storybook-static/assets/{README-Bppk1lMH.js → README-B43WmszX.js} +1 -1
- package/storybook-static/assets/{README-ClIksAGj.js → README-B5rpg-Bo.js} +1 -1
- package/storybook-static/assets/{README-BtA-sh7R.js → README-BAPMV_Cm.js} +1 -1
- package/storybook-static/assets/{README-q48GU6pG.js → README-BEzdp9qB.js} +1 -1
- package/storybook-static/assets/{README-Dntdyfw9.js → README-BHN17dUh.js} +1 -1
- package/storybook-static/assets/{README-CVYFrIk6.js → README-BPBvX2pu.js} +1 -1
- package/storybook-static/assets/{README-BtZJxRh9.js → README-BRozDrPV.js} +1 -1
- package/storybook-static/assets/{README-0gkKItXp.js → README-BS2qCis7.js} +1 -1
- package/storybook-static/assets/{README-Ccs88yDD.js → README-BS9CB7TR.js} +1 -1
- package/storybook-static/assets/{README-D9v4z9v1.js → README-BTI7-oMS.js} +1 -1
- package/storybook-static/assets/{README-BMD3jUe3.js → README-Bf13jEbX.js} +1 -1
- package/storybook-static/assets/{README-BYXXSCUq.js → README-BmX_gdJm.js} +1 -1
- package/storybook-static/assets/{README-KYuSHqmC.js → README-BuUZJLLD.js} +1 -1
- package/storybook-static/assets/{README-Hr6AhE0j.js → README-BviZJCGw.js} +1 -1
- package/storybook-static/assets/{README-BK1Z-v3p.js → README-CD0CH2Wy.js} +1 -1
- package/storybook-static/assets/{README-fIek3dXZ.js → README-CNQJDOEQ.js} +1 -1
- package/storybook-static/assets/{README-zkI8EjI4.js → README-COGC_G42.js} +1 -1
- package/storybook-static/assets/{README-Bqu12v63.js → README-CSYTh4FM.js} +1 -1
- package/storybook-static/assets/{README-Cm3-DZcu.js → README-CVzeBBbC.js} +1 -1
- package/storybook-static/assets/{README-DNC05YJB.js → README-CYkJGsO-.js} +1 -1
- package/storybook-static/assets/{README-hKk-aoSP.js → README-ClbpyGVv.js} +1 -1
- package/storybook-static/assets/{README-UspzlcL6.js → README-CvznQ5DE.js} +1 -1
- package/storybook-static/assets/{README-BpUXnkc_.js → README-D1_Y0Xmw.js} +1 -1
- package/storybook-static/assets/{README-3UAsyZbR.js → README-D2yCfl2o.js} +1 -1
- package/storybook-static/assets/{README-BxqbgiGL.js → README-D9bg9f74.js} +1 -1
- package/storybook-static/assets/{README-CHevIXCB.js → README-DJ1jDUnA.js} +1 -1
- package/storybook-static/assets/{README-Du37Xl3P.js → README-DMbTryDc.js} +1 -1
- package/storybook-static/assets/{README-CbYkIIHQ.js → README-DNjzB9pT.js} +1 -1
- package/storybook-static/assets/{README-DetgVpvA.js → README-DTAFDnFQ.js} +1 -1
- package/storybook-static/assets/{README-el0JuYkD.js → README-DUBJn2Ju.js} +1 -1
- package/storybook-static/assets/{README-BHkzEfPJ.js → README-D_RZ1dEa.js} +1 -1
- package/storybook-static/assets/{README-COom255N.js → README-DaHZmDOI.js} +1 -1
- package/storybook-static/assets/{README-D8nwrTvb.js → README-Daclz_Vq.js} +1 -1
- package/storybook-static/assets/{README-C56Pk295.js → README-Dl_o4aSe.js} +1 -1
- package/storybook-static/assets/{README-DIr-LZmu.js → README-DmaK5qEx.js} +1 -1
- package/storybook-static/assets/{README-C57tdNnd.js → README-DxeEPo-5.js} +1 -1
- package/storybook-static/assets/{README-QnABYk99.js → README-Dxm4jPJX.js} +1 -1
- package/storybook-static/assets/{README-BB4AIZx4.js → README-ErUs-WY2.js} +1 -1
- package/storybook-static/assets/{README-BIEcjQkL.js → README-OfF6wOio.js} +1 -1
- package/storybook-static/assets/{README-CueQgLpu.js → README-QZVvMoOB.js} +1 -1
- package/storybook-static/assets/{README-DYigwbHC.js → README-QjVUi8kc.js} +1 -1
- package/storybook-static/assets/{README-CjQxMGrK.js → README-SZH6KGw3.js} +1 -1
- package/storybook-static/assets/{README-DvWtY7cD.js → README-ZR6Xp0dF.js} +1 -1
- package/storybook-static/assets/{README-BTsdFVZT.js → README-a77qa4ty.js} +1 -1
- package/storybook-static/assets/{README-tqczNkKb.js → README-ex5nxaXZ.js} +1 -1
- package/storybook-static/assets/{README-Cvwidnmb.js → README-g1OFGqQI.js} +1 -1
- package/storybook-static/assets/{README-C1gKZwYI.js → README-gx4Fd1mY.js} +1 -1
- package/storybook-static/assets/{README-BOClmhwG.js → README-q1qdBpXc.js} +1 -1
- package/storybook-static/assets/{README-DWp4mMDT.js → README-vD1-Ulbp.js} +1 -1
- package/storybook-static/assets/{RadioButton-Mehizuhq.js → RadioButton-CF3QPcrf.js} +1 -1
- package/storybook-static/assets/{RadioButton-auLj4-zL.js → RadioButton-hjjU5sk5.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-DUPHMC7R.js → RadioButton.stories-koM1Ljav.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CCBow4kQ.js → RadioGroup-Br-l88J6.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DQJJ6gPZ.js → RadioGroup-D5eW-uDY.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DAD36GWN.js → RadioGroup.stories-DrwOi4QH.js} +1 -1
- package/storybook-static/assets/{Scrollable-BxISsXHD.js → Scrollable-BrsRmcMz.js} +1 -1
- package/storybook-static/assets/{Select-CW1LEiv_.js → Select-Bf5M5oc0.js} +1 -1
- package/storybook-static/assets/{Select-d-fEnaa8.js → Select-Cmlknxsv.js} +1 -1
- package/storybook-static/assets/{Select.stories-UnxQwrgw.js → Select.stories-BM8U-sIP.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-DD2_hWWj.js → SerializableSelect-DF8HELZf.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-B9tOS_kS.js → SerializableSelect.stories-BfDNuils.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DbdBxnNL.js → SingleDateTimeInput-4p_cgs10.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-BZHoMXPL.js → SingleDateTimeInput-DEOj7KGq.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-DYrlQQK_.js → SingleDateTimeInput.stories-D2EI6quF.js} +1 -1
- package/storybook-static/assets/Slider-Bz4wP74t.js +1 -0
- package/storybook-static/assets/{Slider-DUu2FS36.js → Slider-XVAOSj2a.js} +1 -1
- package/storybook-static/assets/{Slider.stories-DhgTMJXk.js → Slider.stories-B8_8QSd8.js} +1 -1
- package/storybook-static/assets/{SliderInput-BPDYabBm.js → SliderInput-1U-1F8y3.js} +1 -1
- package/storybook-static/assets/SliderInput-BmIo8trQ.js +2 -0
- package/storybook-static/assets/{SliderInput.stories-B_tKQkjE.js → SliderInput.stories-Da1hcUQg.js} +1 -1
- package/storybook-static/assets/{Sortable-rVZSJ0MP.js → Sortable-DdSm1U01.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CRJnSkcQ.js → Sortable.stories-B3vBG-Wg.js} +1 -1
- package/storybook-static/assets/Splitter-BdSyx5Lj.css +1 -0
- package/storybook-static/assets/Splitter-SV-d9MZj.js +105 -0
- package/storybook-static/assets/Splitter.stories-jPF9QpQ5.js +52 -0
- package/storybook-static/assets/{StateSelect-C-0IvRHS.js → StateSelect-CLYa34QZ.js} +1 -1
- package/storybook-static/assets/{StateSelect-gOQ0XvSf.js → StateSelect-Dg6j3tmo.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-CIxhqpNM.js → StateSelect.stories-B-XXt836.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-CBIQrF9V.js → StatusIndicator-SmIOAZiH.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-BBU6jew8.js → StatusIndicator.stories-Dxn-Ph9C.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-CsRMTm3I.js → StringToggle.stories-Dm_95aFz.js} +1 -1
- package/storybook-static/assets/{Switch-DatgDVdK.js → Switch-DHKEAZQb.js} +1 -1
- package/storybook-static/assets/{Switch-CVYrb-C8.js → Switch-_tgHhBGP.js} +1 -1
- package/storybook-static/assets/{Switch.stories-BPu1LZgU.js → Switch.stories-BHEJkS4S.js} +1 -1
- package/storybook-static/assets/{Table-imlpBfwX.js → Table-DlSI_r_q.js} +1 -1
- package/storybook-static/assets/{Table.stories-Cvh1IQDl.js → Table.stories-B5rgYs9g.js} +1 -1
- package/storybook-static/assets/{TableEditor.stories-LCjtLdiP.js → TableEditor.stories-KVe48GsE.js} +1 -1
- package/storybook-static/assets/{Tabs-CRz6bWov.js → Tabs-DrYsqBrH.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-DPnAgLNJ.js → Tabs.stories-BPct4JgR.js} +1 -1
- package/storybook-static/assets/{TabsBox-Nz7G3xEL.js → TabsBox-AWLl9n9k.js} +1 -1
- package/storybook-static/assets/{TagInput-BpcFBJfZ.js → TagInput-Bhnrf28Y.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-BfSaOSvw.js → TagInput.stories-Bkt4gArB.js} +1 -1
- package/storybook-static/assets/{Text-B3D2vMCW.js → Text-BgFSnObV.js} +1 -1
- package/storybook-static/assets/{Textarea-xdvWOiup.js → Textarea-BNJPblVu.js} +1 -1
- package/storybook-static/assets/{Textarea-3jbBpgul.js → Textarea-ClwEnzFe.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-CF4DNsNe.js → Textarea.stories-DpKH8ULU.js} +1 -1
- package/storybook-static/assets/{TimePanel-Bv2GqewD.js → TimePanel-BZwQNhG_.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-BxlduVmr.js → TimePanel.stories-4TgrKbYT.js} +1 -1
- package/storybook-static/assets/{Toggle-RzkOO8XU.js → Toggle-CO8Ij90u.js} +1 -1
- package/storybook-static/assets/{Toggle-CZQF9SOX.js → Toggle-DbixMwD6.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-DLk-SFNM.js → Toggle.stories-Dc4VwIpg.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-Q83iIlgk.js → TreeMultiSelect-C-_TH1CD.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DKkT-avt.js → TreeMultiSelect-CriZ1qIe.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-BZmGApb6.js → TreeMultiSelect.stories-d_SN0Sy2.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-BLj2YWml.js → TreePickerBase-DrIewo4F.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DWyC2NwF.js → TreeSelect-9_6a1BFQ.js} +1 -1
- package/storybook-static/assets/{TreeSelect-aoVPbBgH.js → TreeSelect-Bbt4VmZS.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-CKsSdre0.js → TreeSelect.stories-pu8ExKD5.js} +1 -1
- package/storybook-static/assets/{TreeTable-JNPEvZz4.js → TreeTable-DophWkj1.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-BvNIzTgS.js → TreeTable.stories-Pfm9IHtt.js} +1 -1
- package/storybook-static/assets/{blocks-BQbV8tvi.js → blocks-B8YtS91C.js} +3 -3
- package/storybook-static/assets/{check-D8lsE3m8.js → check-Dpmf3AX3.js} +1 -1
- package/storybook-static/assets/{chevron-down-BUOphp2x.js → chevron-down-DNiHhbIr.js} +1 -1
- package/storybook-static/assets/{chevron-left-BEy7ghdm.js → chevron-left-DOGuNTdf.js} +1 -1
- package/storybook-static/assets/{chevron-right-DooOlrxc.js → chevron-right-Dpww2xSW.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-IfzPJQYN.js → chunk-W22LQPXL-DMKzrwT-.js} +1 -1
- package/storybook-static/assets/{circle-alert-D81odDTC.js → circle-alert-0JRaOQ6l.js} +1 -1
- package/storybook-static/assets/{circle-check-qf8iTA7G.js → circle-check-cScFaPMW.js} +1 -1
- package/storybook-static/assets/{components-DZ74KJ1z.js → components-CX2-Yz0X.js} +3 -3
- package/storybook-static/assets/{contextMenu-CVqxMXIo.js → contextMenu-9tIzHxoE.js} +1 -1
- package/storybook-static/assets/{download-DHdaBay2.js → download-DgVtY66c.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-BNZYvpUN.js → floating-ui.react-DoTNEH-V.js} +1 -1
- package/storybook-static/assets/{foundationApi-CZ_3jdeC.js → foundationApi-CrfT1bel.js} +1 -1
- package/storybook-static/assets/{foundationLib-DbJQ6xV6.js → foundationLib-C3lg6eHJ.js} +1 -1
- package/storybook-static/assets/{hooks-v5_dpZPQ.js → hooks-DUjApVwU.js} +1 -1
- package/storybook-static/assets/{iframe-Dvo-sM6X.js → iframe-BNEMNAEw.js} +4 -4
- package/storybook-static/assets/iframe-DRW7Blys.js +1 -0
- package/storybook-static/assets/{info-bO3OPRxt.js → info-DLaCn50r.js} +1 -1
- package/storybook-static/assets/number-scale-D2KTkjVQ.js +1 -0
- package/storybook-static/assets/{odata-qSl-tFRM.js → odata-gcOB7kIq.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-D1GWvgZm.js → odataStoryFixtures-DYyQ-sVj.js} +1 -1
- package/storybook-static/assets/{react-_Ic2fGi_.js → react-E46PZk5t.js} +1 -1
- package/storybook-static/assets/{refresh-cw-208ktFgy.js → refresh-cw-DOoEo5nW.js} +1 -1
- package/storybook-static/assets/{settings-2-Cvceha-j.js → settings-2-qiHcSfL1.js} +1 -1
- package/storybook-static/assets/{sortable-CwkKLxhm.js → sortable-YPosiOrw.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-BXNKwdIE.js → syntaxhighlighter-QEQV7K2Y-Cb3owL36.js} +1 -1
- package/storybook-static/assets/{trash-2-B0tUyzY_.js → trash-2-m2QWUX7a.js} +1 -1
- package/storybook-static/assets/{triangle-alert-DVsUvFoI.js → triangle-alert-dC_KzK0I.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-DSETV5ip.js → useODataSelectBase-CZT1sCI4.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-PxgMVfow.js → useODataTreeData-C4C8qk14.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-BujjL0G3.js → usePickerQuery-BVa-C4dI.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-D-NPyaVF.js → usePickerTriggerController-DSGNNIhS.js} +1 -1
- package/storybook-static/assets/{x-BpYpjEHH.js → x-B7mf6jeL.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/assets/FormattedTableCell-CTIL_ueu.css +0 -1
- package/storybook-static/assets/LayoutPicker-C4AXII_3.js +0 -66
- package/storybook-static/assets/LayoutPicker.stories-dx03fSh0.js +0 -74
- package/storybook-static/assets/Slider-B9n25YEj.js +0 -1
- package/storybook-static/assets/SliderInput-Bv-wqB63.js +0 -2
- package/storybook-static/assets/Splitter-BxWa6cr0.js +0 -83
- package/storybook-static/assets/Splitter-D-LmmQad.css +0 -1
- package/storybook-static/assets/Splitter.stories-BoAHtDqQ.js +0 -39
- package/storybook-static/assets/iframe-0Ohsk5kI.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-column-interactions-DzEvVuXe.js","names":[],"sources":["../../src/table-column-interactions/TableColumnInteractions.module.scss","../../src/table-column-interactions/TableColumnResizeHandle.tsx","../../src/table-column-interactions/TableHeaderInteractionCell.tsx"],"sourcesContent":[".resizeHandle {\n\tcursor: col-resize;\n\ttouch-action: none;\n\tuser-select: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\twidth: 6px;\n\tz-index: 1;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground: var(--focus-ring);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--focus);\n\t\toutline-offset: calc(var(--focus-offset) * -1);\n\t}\n}\n","import { useRef, type KeyboardEvent as ReactKeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\";\n\nimport { DEFAULT_TABLE_COLUMN_MIN_WIDTH, normalizeTableColumnWidth } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./TableColumnInteractions.module.scss\";\n\nconst DEFAULT_KEYBOARD_RESIZE_STEP = 8;\n\nexport type TableColumnResizeHandleProps = {\n\tcolumnId: string;\n\tclassName?: string;\n\tminWidth?: number;\n\tkeyboardStep?: number;\n\tariaLabel?: string;\n\tgetStartWidth?: (columnId: string, element: HTMLElement) => number;\n\tonResize: (columnId: string, width: number) => void;\n\tonResizeEnd?: (columnId: string, width: number) => void;\n\tonReset?: (columnId: string) => void;\n};\n\nfunction resolveHeaderCellWidth(element: HTMLElement, minWidth: number): number {\n\tconst headerCell = element.closest(\"th\");\n\tconst width = headerCell?.getBoundingClientRect().width;\n\n\treturn normalizeTableColumnWidth(typeof width === \"number\" && Number.isFinite(width) ? width : minWidth, minWidth);\n}\n\nexport function TableColumnResizeHandle({\n\tcolumnId,\n\tclassName,\n\tminWidth,\n\tkeyboardStep = DEFAULT_KEYBOARD_RESIZE_STEP,\n\tariaLabel = \"Изменить ширину колонки\",\n\tgetStartWidth,\n\tonResize,\n\tonResizeEnd,\n\tonReset\n}: TableColumnResizeHandleProps) {\n\tconst resolvedMinWidth = minWidth ?? DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst startXRef = useRef(0);\n\tconst startWidthRef = useRef(0);\n\tconst lastWidthRef = useRef(0);\n\tconst activeRef = useRef(false);\n\tconst movedRef = useRef(false);\n\n\tconst resolveStartWidth = (element: HTMLElement) => {\n\t\tconst width = getStartWidth?.(columnId, element) ?? resolveHeaderCellWidth(element, resolvedMinWidth);\n\n\t\treturn normalizeTableColumnWidth(width, resolvedMinWidth);\n\t};\n\n\tconst handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (event.button !== 0 && event.pointerType === \"mouse\") return;\n\n\t\tactiveRef.current = true;\n\t\tmovedRef.current = false;\n\t\tstartXRef.current = event.clientX;\n\t\tstartWidthRef.current = resolveStartWidth(event.currentTarget);\n\t\tlastWidthRef.current = startWidthRef.current;\n\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tconst nextWidth = normalizeTableColumnWidth(startWidthRef.current + event.clientX - startXRef.current, resolvedMinWidth);\n\t\tlastWidthRef.current = nextWidth;\n\t\tmovedRef.current = true;\n\t\tonResize(columnId, nextWidth);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst finishPointerResize = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tactiveRef.current = false;\n\n\t\tif (movedRef.current) {\n\t\t\tonResizeEnd?.(columnId, lastWidthRef.current);\n\t\t}\n\n\t\ttry {\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId);\n\t\t} catch {\n\t\t\t// Pointer capture мог быть сброшен браузером при отмене жеста.\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.key === \"Home\") {\n\t\t\tonReset?.(columnId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst direction = event.key === \"ArrowRight\" ? 1 : -1;\n\t\tconst currentWidth = resolveStartWidth(event.currentTarget);\n\t\tconst nextWidth = normalizeTableColumnWidth(currentWidth + direction * keyboardStep, resolvedMinWidth);\n\t\tonResize(columnId, nextWidth);\n\t\tonResizeEnd?.(columnId, nextWidth);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"separator\"\n\t\t\taria-label={ariaLabel}\n\t\t\taria-orientation=\"vertical\"\n\t\t\ttabIndex={0}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerMove={handlePointerMove}\n\t\t\tonPointerUp={finishPointerResize}\n\t\t\tonPointerCancel={finishPointerResize}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDoubleClick={(event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonReset?.(columnId);\n\t\t\t}}\n\t\t\tclassName={cn(styles.resizeHandle, className)}\n\t\t/>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode } from \"react\";\n\nimport { type DraggableAttributes, type DraggableSyntheticListeners, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableColumnResizeHandle, type TableColumnResizeHandleProps } from \"./TableColumnResizeHandle\";\n\nexport type TableHeaderCellDragState = {\n\tattributes: DraggableAttributes;\n\tlisteners: DraggableSyntheticListeners;\n\tsetActivatorElement: (element: HTMLElement | null) => void;\n\tdisabled: boolean;\n\tisDragging: boolean;\n};\n\nexport type TableHeaderInteractionCellProps = Omit<ComponentPropsWithoutRef<\"th\">, \"children\" | \"id\"> & {\n\tcolumnId: UniqueIdentifier;\n\tchildren: ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode);\n\tdragDisabled?: boolean;\n\tdraggingClassName?: string;\n\tresizeHandle?: TableColumnResizeHandleProps;\n};\n\nfunction renderChildren(children: TableHeaderInteractionCellProps[\"children\"], dragState: TableHeaderCellDragState): ReactNode {\n\treturn typeof children === \"function\" ? children(dragState) : children;\n}\n\nexport function TableHeaderInteractionCell({\n\tcolumnId,\n\tchildren,\n\tdragDisabled = false,\n\tdraggingClassName,\n\tresizeHandle,\n\tclassName,\n\tstyle,\n\t...thProps\n}: TableHeaderInteractionCellProps) {\n\tconst { attributes, listeners, setActivatorNodeRef, setNodeRef, transform, /*transition,*/ isDragging, rect } = useSortable({\n\t\tid: columnId,\n\t\tdisabled: dragDisabled\n\t});\n\tconst lockedWidth = isDragging ? rect.current?.width : undefined;\n\tconst sortableStyle: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\t// transition,\n\t\tzIndex: isDragging ? \"calc(var(--z-header) + 1)\" : undefined,\n\t\t...(lockedWidth ? { width: lockedWidth, minWidth: lockedWidth } : {}),\n\t\t...style\n\t};\n\tconst dragState: TableHeaderCellDragState = {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetActivatorElement: setActivatorNodeRef,\n\t\tdisabled: dragDisabled,\n\t\tisDragging\n\t};\n\n\treturn (\n\t\t<th {...thProps} ref={setNodeRef} className={cn(className, isDragging && draggingClassName)} style={sortableStyle}>\n\t\t\t{renderChildren(children, dragState)}\n\n\t\t\t{resizeHandle ? <TableColumnResizeHandle {...resizeHandle} /> : null}\n\t\t</th>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-column-interactions-DzEvVuXe.js","names":[],"sources":["../../src/table-column-interactions/TableColumnInteractions.module.scss","../../src/table-column-interactions/TableColumnResizeHandle.tsx","../../src/table-column-interactions/TableHeaderInteractionCell.tsx"],"sourcesContent":[".resizeHandle {\n\tcursor: col-resize;\n\ttouch-action: none;\n\tuser-select: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\twidth: 6px;\n\tz-index: 1;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--focus-ring);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--focus);\n\t\toutline-offset: calc(var(--focus-offset) * -1);\n\t}\n}\n","import { useRef, type KeyboardEvent as ReactKeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\";\n\nimport { DEFAULT_TABLE_COLUMN_MIN_WIDTH, normalizeTableColumnWidth } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./TableColumnInteractions.module.scss\";\n\nconst DEFAULT_KEYBOARD_RESIZE_STEP = 8;\n\nexport type TableColumnResizeHandleProps = {\n\tcolumnId: string;\n\tclassName?: string;\n\tminWidth?: number;\n\tkeyboardStep?: number;\n\tariaLabel?: string;\n\tgetStartWidth?: (columnId: string, element: HTMLElement) => number;\n\tonResize: (columnId: string, width: number) => void;\n\tonResizeEnd?: (columnId: string, width: number) => void;\n\tonReset?: (columnId: string) => void;\n};\n\nfunction resolveHeaderCellWidth(element: HTMLElement, minWidth: number): number {\n\tconst headerCell = element.closest(\"th\");\n\tconst width = headerCell?.getBoundingClientRect().width;\n\n\treturn normalizeTableColumnWidth(typeof width === \"number\" && Number.isFinite(width) ? width : minWidth, minWidth);\n}\n\nexport function TableColumnResizeHandle({\n\tcolumnId,\n\tclassName,\n\tminWidth,\n\tkeyboardStep = DEFAULT_KEYBOARD_RESIZE_STEP,\n\tariaLabel = \"Изменить ширину колонки\",\n\tgetStartWidth,\n\tonResize,\n\tonResizeEnd,\n\tonReset\n}: TableColumnResizeHandleProps) {\n\tconst resolvedMinWidth = minWidth ?? DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst startXRef = useRef(0);\n\tconst startWidthRef = useRef(0);\n\tconst lastWidthRef = useRef(0);\n\tconst activeRef = useRef(false);\n\tconst movedRef = useRef(false);\n\n\tconst resolveStartWidth = (element: HTMLElement) => {\n\t\tconst width = getStartWidth?.(columnId, element) ?? resolveHeaderCellWidth(element, resolvedMinWidth);\n\n\t\treturn normalizeTableColumnWidth(width, resolvedMinWidth);\n\t};\n\n\tconst handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (event.button !== 0 && event.pointerType === \"mouse\") return;\n\n\t\tactiveRef.current = true;\n\t\tmovedRef.current = false;\n\t\tstartXRef.current = event.clientX;\n\t\tstartWidthRef.current = resolveStartWidth(event.currentTarget);\n\t\tlastWidthRef.current = startWidthRef.current;\n\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tconst nextWidth = normalizeTableColumnWidth(startWidthRef.current + event.clientX - startXRef.current, resolvedMinWidth);\n\t\tlastWidthRef.current = nextWidth;\n\t\tmovedRef.current = true;\n\t\tonResize(columnId, nextWidth);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst finishPointerResize = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tactiveRef.current = false;\n\n\t\tif (movedRef.current) {\n\t\t\tonResizeEnd?.(columnId, lastWidthRef.current);\n\t\t}\n\n\t\ttry {\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId);\n\t\t} catch {\n\t\t\t// Pointer capture мог быть сброшен браузером при отмене жеста.\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.key === \"Home\") {\n\t\t\tonReset?.(columnId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst direction = event.key === \"ArrowRight\" ? 1 : -1;\n\t\tconst currentWidth = resolveStartWidth(event.currentTarget);\n\t\tconst nextWidth = normalizeTableColumnWidth(currentWidth + direction * keyboardStep, resolvedMinWidth);\n\t\tonResize(columnId, nextWidth);\n\t\tonResizeEnd?.(columnId, nextWidth);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"separator\"\n\t\t\taria-label={ariaLabel}\n\t\t\taria-orientation=\"vertical\"\n\t\t\ttabIndex={0}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerMove={handlePointerMove}\n\t\t\tonPointerUp={finishPointerResize}\n\t\t\tonPointerCancel={finishPointerResize}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDoubleClick={(event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonReset?.(columnId);\n\t\t\t}}\n\t\t\tclassName={cn(styles.resizeHandle, className)}\n\t\t/>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode } from \"react\";\n\nimport { type DraggableAttributes, type DraggableSyntheticListeners, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableColumnResizeHandle, type TableColumnResizeHandleProps } from \"./TableColumnResizeHandle\";\n\nexport type TableHeaderCellDragState = {\n\tattributes: DraggableAttributes;\n\tlisteners: DraggableSyntheticListeners;\n\tsetActivatorElement: (element: HTMLElement | null) => void;\n\tdisabled: boolean;\n\tisDragging: boolean;\n};\n\nexport type TableHeaderInteractionCellProps = Omit<ComponentPropsWithoutRef<\"th\">, \"children\" | \"id\"> & {\n\tcolumnId: UniqueIdentifier;\n\tchildren: ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode);\n\tdragDisabled?: boolean;\n\tdraggingClassName?: string;\n\tresizeHandle?: TableColumnResizeHandleProps;\n};\n\nfunction renderChildren(children: TableHeaderInteractionCellProps[\"children\"], dragState: TableHeaderCellDragState): ReactNode {\n\treturn typeof children === \"function\" ? children(dragState) : children;\n}\n\nexport function TableHeaderInteractionCell({\n\tcolumnId,\n\tchildren,\n\tdragDisabled = false,\n\tdraggingClassName,\n\tresizeHandle,\n\tclassName,\n\tstyle,\n\t...thProps\n}: TableHeaderInteractionCellProps) {\n\tconst { attributes, listeners, setActivatorNodeRef, setNodeRef, transform, /*transition,*/ isDragging, rect } = useSortable({\n\t\tid: columnId,\n\t\tdisabled: dragDisabled\n\t});\n\tconst lockedWidth = isDragging ? rect.current?.width : undefined;\n\tconst sortableStyle: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\t// transition,\n\t\tzIndex: isDragging ? \"calc(var(--z-header) + 1)\" : undefined,\n\t\t...(lockedWidth ? { width: lockedWidth, minWidth: lockedWidth } : {}),\n\t\t...style\n\t};\n\tconst dragState: TableHeaderCellDragState = {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetActivatorElement: setActivatorNodeRef,\n\t\tdisabled: dragDisabled,\n\t\tisDragging\n\t};\n\n\treturn (\n\t\t<th {...thProps} ref={setNodeRef} className={cn(className, isDragging && draggingClassName)} style={sortableStyle}>\n\t\t\t{renderChildren(children, dragState)}\n\n\t\t\t{resizeHandle ? <TableColumnResizeHandle {...resizeHandle} /> : null}\n\t\t</th>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1009,8 +1009,10 @@ var y = {
|
|
|
1009
1009
|
preview: "koxYU-",
|
|
1010
1010
|
previewPlaceholder: "k8xLa2",
|
|
1011
1011
|
previewCompact: "_5pd3Bb"
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1012
|
+
};
|
|
1013
|
+
//#endregion
|
|
1014
|
+
//#region src/layout-picker/ui/LayoutPresetPreview.tsx
|
|
1015
|
+
function b({ preset: e, compact: t = !1 }) {
|
|
1014
1016
|
return /* @__PURE__ */ d("span", {
|
|
1015
1017
|
className: l(y.preview, t && y.previewCompact),
|
|
1016
1018
|
style: p(e),
|
|
@@ -1022,108 +1024,137 @@ function x({ preset: e, compact: t = !1 }) {
|
|
|
1022
1024
|
}, `${e.id}:${t.id}`))
|
|
1023
1025
|
});
|
|
1024
1026
|
}
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1027
|
+
//#endregion
|
|
1028
|
+
//#region src/layout-picker/ui/LayoutPicker.tsx
|
|
1029
|
+
var ee = "Выберите раскладку";
|
|
1030
|
+
function x({ id: p, label: m, description: g, value: _, onChange: v, presets: x = h, disabled: S, getPresetDisabled: C, placeholder: w = ee, showPlaceholder: T = !1, size: E, ariaLabel: D, className: O, triggerClassName: k, popupClassName: A, placement: j = "bottom-start", renderTrigger: M }) {
|
|
1031
|
+
let N = s(null), [P, te] = c(!1), F = x.findIndex((e) => e.id === _), I = F >= 0 ? x[F] : void 0, L = I?.label ?? w, { activeIndex: R, context: z, floatingStyles: B, getFloatingProps: V, setReference: H, setFloating: U, setOptionRef: W, close: G, openList: K, toggleOpen: q, selectOption: J, selectActiveOption: Y, handleReferenceKeyDown: X, handleFloatingKeyDown: Z, getOptionId: ne, getActiveOptionId: Q } = r({
|
|
1032
|
+
options: x,
|
|
1033
|
+
selectedIndex: F,
|
|
1034
|
+
open: P,
|
|
1035
|
+
onOpenChange: te,
|
|
1036
|
+
getOptionDisabled: C,
|
|
1032
1037
|
onSelect: (e) => v(e.id),
|
|
1033
|
-
disabled:
|
|
1034
|
-
placement:
|
|
1038
|
+
disabled: S,
|
|
1039
|
+
placement: j,
|
|
1035
1040
|
triggerMode: "display"
|
|
1036
1041
|
}), $ = a({
|
|
1037
1042
|
mode: "display",
|
|
1038
|
-
open:
|
|
1043
|
+
open: P,
|
|
1039
1044
|
currentQuery: "",
|
|
1040
|
-
hasDisplayValue:
|
|
1041
|
-
inputRef:
|
|
1042
|
-
openList:
|
|
1043
|
-
close:
|
|
1044
|
-
toggleOpen:
|
|
1045
|
-
}),
|
|
1046
|
-
|
|
1045
|
+
hasDisplayValue: I !== void 0,
|
|
1046
|
+
inputRef: N,
|
|
1047
|
+
openList: K,
|
|
1048
|
+
close: G,
|
|
1049
|
+
toggleOpen: q
|
|
1050
|
+
}), re = (e) => {
|
|
1051
|
+
N.current = e;
|
|
1047
1052
|
};
|
|
1048
1053
|
return /* @__PURE__ */ d(o, {
|
|
1049
1054
|
id: p,
|
|
1050
1055
|
label: m,
|
|
1051
1056
|
description: g,
|
|
1052
|
-
disabled:
|
|
1053
|
-
size:
|
|
1054
|
-
className:
|
|
1057
|
+
disabled: S,
|
|
1058
|
+
size: E,
|
|
1059
|
+
className: O,
|
|
1055
1060
|
children: ({ controlId: r, labelId: a, describedBy: o }) => {
|
|
1056
|
-
let s = `${r}-listbox
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1061
|
+
let s = `${r}-listbox`, c = {
|
|
1062
|
+
"aria-haspopup": "listbox",
|
|
1063
|
+
"aria-expanded": P,
|
|
1064
|
+
"aria-controls": P ? s : void 0,
|
|
1065
|
+
"aria-labelledby": a,
|
|
1066
|
+
"aria-describedby": o,
|
|
1067
|
+
"aria-activedescendant": P ? Q(s) : void 0,
|
|
1068
|
+
"aria-label": a ? void 0 : D ?? `Выбрать layout. Текущее значение: ${L}`
|
|
1069
|
+
}, p = M?.({
|
|
1070
|
+
open: P,
|
|
1071
|
+
selectedPreset: I,
|
|
1072
|
+
triggerLabel: L,
|
|
1073
|
+
triggerProps: {
|
|
1074
|
+
ref: H,
|
|
1075
|
+
id: r,
|
|
1076
|
+
type: "button",
|
|
1077
|
+
disabled: S,
|
|
1078
|
+
role: "combobox",
|
|
1079
|
+
...c,
|
|
1080
|
+
"data-ui": "layout-picker-trigger",
|
|
1081
|
+
className: k,
|
|
1082
|
+
onClick: () => {
|
|
1083
|
+
S || q();
|
|
1084
|
+
},
|
|
1085
|
+
onKeyDown: (e) => {
|
|
1086
|
+
X(e), !e.defaultPrevented && $.handleTriggerKeyDown({
|
|
1087
|
+
event: e,
|
|
1088
|
+
onActivateWhenOpen: Y,
|
|
1089
|
+
enableSpaceActivation: !0
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
});
|
|
1094
|
+
return /* @__PURE__ */ f(u, { children: [p ?? /* @__PURE__ */ d(i, {
|
|
1095
|
+
ref: re,
|
|
1096
|
+
rootRef: H,
|
|
1060
1097
|
id: r,
|
|
1061
1098
|
type: "button",
|
|
1062
|
-
disabled:
|
|
1063
|
-
open:
|
|
1064
|
-
optionCount:
|
|
1099
|
+
disabled: S,
|
|
1100
|
+
open: P,
|
|
1101
|
+
optionCount: x.length,
|
|
1065
1102
|
label: m,
|
|
1066
|
-
placeholder:
|
|
1103
|
+
placeholder: w,
|
|
1067
1104
|
readOnly: !0,
|
|
1068
1105
|
autoComplete: "off",
|
|
1069
1106
|
role: "combobox",
|
|
1070
|
-
value:
|
|
1071
|
-
selectedValue:
|
|
1072
|
-
preset:
|
|
1107
|
+
value: L,
|
|
1108
|
+
selectedValue: I ? /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(b, {
|
|
1109
|
+
preset: I,
|
|
1073
1110
|
compact: !0
|
|
1074
|
-
}),
|
|
1111
|
+
}), T ? /* @__PURE__ */ d("span", {
|
|
1075
1112
|
className: y.triggerText,
|
|
1076
1113
|
"data-ui": "layout-picker-selected-label",
|
|
1077
|
-
children:
|
|
1114
|
+
children: I.label
|
|
1078
1115
|
}) : null] }) : void 0,
|
|
1079
|
-
hasSelection:
|
|
1080
|
-
showSelectedValue:
|
|
1116
|
+
hasSelection: I !== void 0,
|
|
1117
|
+
showSelectedValue: I !== void 0,
|
|
1081
1118
|
onToggleMouseDown: $.handleToggleMouseDown,
|
|
1082
1119
|
onToggleClick: $.handleToggleClick,
|
|
1083
1120
|
openAriaLabel: "Открыть список layout",
|
|
1084
1121
|
closeAriaLabel: "Закрыть список layout",
|
|
1085
|
-
|
|
1086
|
-
"aria-expanded": M,
|
|
1087
|
-
"aria-controls": M ? s : void 0,
|
|
1088
|
-
"aria-labelledby": a,
|
|
1089
|
-
"aria-describedby": o,
|
|
1122
|
+
...c,
|
|
1090
1123
|
"aria-autocomplete": "none",
|
|
1091
|
-
"aria-activedescendant": M ? Q(s) : void 0,
|
|
1092
|
-
"aria-label": a ? void 0 : O ?? `Выбрать layout. Текущее значение: ${I}`,
|
|
1093
1124
|
"data-ui": "layout-picker-trigger",
|
|
1094
|
-
rootClassName:
|
|
1125
|
+
rootClassName: k,
|
|
1095
1126
|
onClick: $.handleTriggerClick,
|
|
1096
1127
|
onFocus: (e) => {
|
|
1097
1128
|
$.handleTriggerFocus(e.currentTarget);
|
|
1098
1129
|
},
|
|
1099
1130
|
onKeyDown: (e) => {
|
|
1100
|
-
|
|
1131
|
+
X(e), !e.defaultPrevented && $.handleTriggerKeyDown({
|
|
1101
1132
|
event: e,
|
|
1102
|
-
onActivateWhenOpen:
|
|
1133
|
+
onActivateWhenOpen: Y,
|
|
1103
1134
|
enableSpaceActivation: !0
|
|
1104
1135
|
});
|
|
1105
1136
|
}
|
|
1106
1137
|
}), /* @__PURE__ */ d(n, {
|
|
1107
|
-
open:
|
|
1108
|
-
context:
|
|
1109
|
-
floatingStyles:
|
|
1138
|
+
open: P,
|
|
1139
|
+
context: z,
|
|
1140
|
+
floatingStyles: B,
|
|
1110
1141
|
listId: s,
|
|
1111
1142
|
labelId: a,
|
|
1112
1143
|
descriptionId: o,
|
|
1113
1144
|
activeOptionId: Q(s),
|
|
1114
|
-
setFloating:
|
|
1115
|
-
getFloatingProps:
|
|
1116
|
-
onKeyDown:
|
|
1117
|
-
className: l(y.popup,
|
|
1145
|
+
setFloating: U,
|
|
1146
|
+
getFloatingProps: V,
|
|
1147
|
+
onKeyDown: Z,
|
|
1148
|
+
className: l(y.popup, A),
|
|
1118
1149
|
layoutClassName: y.popupLayout,
|
|
1119
1150
|
bodyClassName: y.popupBody,
|
|
1120
1151
|
children: /* @__PURE__ */ d("div", {
|
|
1121
1152
|
className: y.options,
|
|
1122
|
-
children:
|
|
1123
|
-
let i = r ===
|
|
1153
|
+
children: x.map((n, r) => {
|
|
1154
|
+
let i = r === F, a = r === R, o = C?.(n) ?? !1, c = ne(s, r);
|
|
1124
1155
|
return /* @__PURE__ */ d(t, {
|
|
1125
1156
|
id: c,
|
|
1126
|
-
ref: (e) =>
|
|
1157
|
+
ref: (e) => W(r, e),
|
|
1127
1158
|
role: "option",
|
|
1128
1159
|
"aria-selected": i,
|
|
1129
1160
|
"aria-disabled": o || void 0,
|
|
@@ -1138,10 +1169,10 @@ function S({ id: p, label: m, description: g, value: _, onChange: v, presets: S
|
|
|
1138
1169
|
tabIndex: -1,
|
|
1139
1170
|
disabled: o,
|
|
1140
1171
|
onMouseDown: (e) => e.preventDefault(),
|
|
1141
|
-
onClick: () =>
|
|
1172
|
+
onClick: () => J(n),
|
|
1142
1173
|
children: /* @__PURE__ */ d("span", {
|
|
1143
1174
|
className: y.optionPreviewWrap,
|
|
1144
|
-
children: /* @__PURE__ */ d(
|
|
1175
|
+
children: /* @__PURE__ */ d(b, { preset: n })
|
|
1145
1176
|
})
|
|
1146
1177
|
})
|
|
1147
1178
|
}, n.id);
|
|
@@ -1152,6 +1183,6 @@ function S({ id: p, label: m, description: g, value: _, onChange: v, presets: S
|
|
|
1152
1183
|
});
|
|
1153
1184
|
}
|
|
1154
1185
|
//#endregion
|
|
1155
|
-
export { h as DEFAULT_LAYOUT_PICKER_PRESETS,
|
|
1186
|
+
export { h as DEFAULT_LAYOUT_PICKER_PRESETS, x as LayoutPicker, g as getDefaultLayoutPickerPresetId, m as getLayoutCellStyle, p as getLayoutStyle, v as resolveLayoutCellCount, _ as resolveLayoutPreset };
|
|
1156
1187
|
|
|
1157
1188
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/layout-picker/lib/layout.ts","../../src/layout-picker/lib/presets.ts","../../src/layout-picker/ui/LayoutPicker.module.scss","../../src/layout-picker/ui/LayoutPicker.tsx"],"sourcesContent":["import { type CSSProperties } from \"react\";\n\nimport { type LayoutPickerPreset, type LayoutPickerPresetCell } from \"./types\";\n\n/**\n * Возвращает CSS Grid-стиль для схематичного layout-пресета.\n */\nexport function getLayoutStyle(preset: LayoutPickerPreset, rowMinHeightInEm?: number): CSSProperties {\n\treturn {\n\t\tgridTemplateColumns: `repeat(${preset.columns}, minmax(0, 1fr))`,\n\t\tgridTemplateRows: `repeat(${preset.rows}, minmax(${rowMinHeightInEm ?? 0}em, 1fr))`\n\t};\n}\n\n/**\n * Возвращает позиционирование ячейки внутри CSS Grid.\n */\nexport function getLayoutCellStyle(cell: LayoutPickerPresetCell): CSSProperties {\n\treturn {\n\t\tgridColumn: `${cell.column} / span ${cell.columnSpan ?? 1}`,\n\t\tgridRow: `${cell.row} / span ${cell.rowSpan ?? 1}`\n\t};\n}\n","import { type LayoutPickerPreset } from \"./types\";\n\n/**\n * Базовый набор layout-пресетов для первого среза выбора схемы.\n *\n * id формата:\n * - \"2x3\" — 2 строки, 3 колонки\n * - \"2x2-l\" — 2x2 с большой ячейкой слева\n * - \"3x2-b\" — 3x2 с широкой нижней ячейкой\n */\nexport const DEFAULT_LAYOUT_PICKER_PRESETS = [\n\t{\n\t\tid: \"1x1\",\n\t\tlabel: \"1x1\",\n\t\tcolumns: 1,\n\t\trows: 1,\n\t\tcells: [{ id: \"c11\", row: 1, column: 1 }]\n\t},\n\t{\n\t\tid: \"1x2\",\n\t\tlabel: \"1x2\",\n\t\tcolumns: 2,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"1x3\",\n\t\tlabel: \"1x3\",\n\t\tcolumns: 3,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x1\",\n\t\tlabel: \"2x1\",\n\t\tcolumns: 1,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2\",\n\t\tlabel: \"2x2\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x3\",\n\t\tlabel: \"2x3\",\n\t\tcolumns: 3,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x1\",\n\t\tlabel: \"3x1\",\n\t\tcolumns: 1,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2\",\n\t\tlabel: \"3x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3\",\n\t\tlabel: \"3x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x1\",\n\t\tlabel: \"4x1\",\n\t\tcolumns: 1,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2\",\n\t\tlabel: \"4x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3\",\n\t\tlabel: \"4x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"2x2-l\",\n\t\tlabel: \"Большая слева + две справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 2 },\n\t\t\t{ id: \"rt\", row: 1, column: 2 },\n\t\t\t{ id: \"rb\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-r\",\n\t\tlabel: \"Две слева + большая справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"lt\", row: 1, column: 1 },\n\t\t\t{ id: \"lb\", row: 2, column: 1 },\n\t\t\t{ id: \"right\", row: 1, column: 2, rowSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-t\",\n\t\tlabel: \"Широкая сверху + две снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 2, column: 1 },\n\t\t\t{ id: \"br\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-b\",\n\t\tlabel: \"Две сверху + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"bottom\", row: 2, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x2-t\",\n\t\tlabel: \"Широкая сверху + 2x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-b\",\n\t\tlabel: \"2x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-m\",\n\t\tlabel: \"Широкая по центру\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"middle\", row: 2, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 3, column: 1 },\n\t\t\t{ id: \"br\", row: 3, column: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x3-l\",\n\t\tlabel: \"Большая слева + 2x3 справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 3 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-r\",\n\t\tlabel: \"2x3 слева + большая справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"right\", row: 1, column: 3, rowSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-t\",\n\t\tlabel: \"Широкая сверху + 2x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-b\",\n\t\tlabel: \"2x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"4x2-t\",\n\t\tlabel: \"Широкая сверху + 3x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2-b\",\n\t\tlabel: \"3x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-t\",\n\t\tlabel: \"Широкая сверху + 3x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-b\",\n\t\tlabel: \"3x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 3 }\n\t\t]\n\t}\n] as const satisfies readonly LayoutPickerPreset[];\n\nexport type DefaultLayoutPickerPresetId = (typeof DEFAULT_LAYOUT_PICKER_PRESETS)[number][\"id\"];\n\nexport function getDefaultLayoutPickerPresetId(): DefaultLayoutPickerPresetId {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS[0].id;\n}\n\n/** Возвращает layout-пресет по id с fallback на дефолт chart-ракурса. */\nexport function resolveLayoutPreset(layoutId: string | undefined): LayoutPickerPreset {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId) ?? DEFAULT_LAYOUT_PICKER_PRESETS[0];\n}\n\nexport function resolveLayoutCellCount(layoutId: string): number {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId)?.cells.length ?? 1;\n}\n","@use \"@/styles/mixins\" as *;\n\n.triggerText {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.popup {\n\twidth: min(calc(100vw - var(--space-lg) * 2), 44em);\n\tmax-height: min(75vh, 34em);\n}\n\n.popupLayout {\n\tmax-height: inherit;\n}\n\n.popupBody {\n\toverflow: auto;\n\tpadding: var(--space-xs);\n}\n\n.options {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(min(100%, 5em), 1fr));\n\tgap: var(--space-sm);\n}\n\n.option {\n\tposition: relative;\n\tpadding: var(--space-sm);\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\t// background-color: var(--surface-1);\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-2);\n\t\tborder-color: var(--border-2);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: var(--disabled-opacity);\n\t}\n}\n\n.option[data-selected] {\n\tborder-color: var(--border-1);\n\tbackground-color: var(--surface-1);\n\n\t.previewCell {\n\t\tbackground-color: var(--accent-fill);\n\t\tborder: var(--border-width) solid var(--accent-border);\n\t}\n}\n\n.optionPreviewWrap {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.preview,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 3.5em;\n\n\twidth: var(--layout-picker-preview-size);\n\theight: calc(var(--layout-picker-preview-size) * 0.72);\n\tflex: 0 0 auto;\n}\n\n.preview {\n\tdisplay: grid;\n\tgap: calc(var(--border-width) * 2);\n}\n\n.previewCompact,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 1.75rem;\n}\n\n.previewCell {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--surface-1);\n\tborder: var(--border-width) solid var(--border-1);\n}\n\n.previewCompact {\n\t.previewCell {\n\t\tbackground-color: var(--brand-fill);\n\t\tborder: none;\n\t}\n}\n","import { useRef, useState } from \"react\";\n\nimport { type Placement } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { CustomOptionButton, Option } from \"../../option\";\nimport { PickerField, PickerPopup, PickerTrigger, usePickerFloatingListbox, usePickerTriggerController } from \"../../picker\";\nimport { type UiBaseProps } from \"../../types\";\nimport { DEFAULT_LAYOUT_PICKER_PRESETS, getLayoutCellStyle, getLayoutStyle, type LayoutPickerPreset } from \"../lib\";\n\nimport styles from \"./LayoutPicker.module.scss\";\n\nexport interface LayoutPickerProps extends UiBaseProps<string> {\n\tid?: string;\n\tpresets?: readonly LayoutPickerPreset[];\n\tgetPresetDisabled?: (preset: LayoutPickerPreset) => boolean;\n\t/**\n\t * Показывает рядом с превью переданный текст `placeholder`.\n\t * По умолчанию текст скрыт, поэтому trigger отображает только иконку раскладки.\n\t */\n\tshowPlaceholder?: boolean;\n\tariaLabel?: string;\n\tclassName?: string;\n\ttriggerClassName?: string;\n\tpopupClassName?: string;\n\tplacement?: Placement;\n}\n\nconst DEFAULT_PLACEHOLDER = \"Выберите раскладку\";\n\nfunction LayoutPresetPreview({ preset, compact = false }: { preset: LayoutPickerPreset; compact?: boolean }) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(styles.preview, compact && styles.previewCompact)}\n\t\t\tstyle={getLayoutStyle(preset)}\n\t\t\taria-hidden=\"true\"\n\t\t\tdata-ui=\"layout-picker-preview\">\n\t\t\t{preset.cells.map((cell) => (\n\t\t\t\t<span key={`${preset.id}:${cell.id}`} className={styles.previewCell} style={getLayoutCellStyle(cell)} />\n\t\t\t))}\n\t\t</span>\n\t);\n}\n\n/**\n * Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.\n */\nexport function LayoutPicker({\n\tid,\n\tlabel,\n\tdescription,\n\tvalue,\n\tonChange,\n\tpresets = DEFAULT_LAYOUT_PICKER_PRESETS,\n\tdisabled,\n\tgetPresetDisabled,\n\tplaceholder = DEFAULT_PLACEHOLDER,\n\tshowPlaceholder = false,\n\tsize,\n\tariaLabel,\n\tclassName,\n\ttriggerClassName,\n\tpopupClassName,\n\tplacement = \"bottom-start\"\n}: LayoutPickerProps) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst selectedIndex = presets.findIndex((preset) => preset.id === value);\n\tconst selectedPreset = selectedIndex >= 0 ? presets[selectedIndex] : undefined;\n\tconst triggerLabel = selectedPreset?.label ?? placeholder;\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: presets,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: setOpen,\n\t\tgetOptionDisabled: getPresetDisabled,\n\t\tonSelect: (preset) => onChange(preset.id),\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode: \"display\"\n\t});\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: \"display\",\n\t\topen,\n\t\tcurrentQuery: \"\",\n\t\thasDisplayValue: selectedPreset !== undefined,\n\t\tinputRef,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\n\treturn (\n\t\t<PickerField id={id} label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\toptionCount={presets.length}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tvalue={triggerLabel}\n\t\t\t\t\t\t\tselectedValue={\n\t\t\t\t\t\t\t\tselectedPreset ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={selectedPreset} compact />\n\t\t\t\t\t\t\t\t\t\t{showPlaceholder ? (\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.triggerText} data-ui=\"layout-picker-selected-label\">\n\t\t\t\t\t\t\t\t\t\t\t\t{selectedPreset.label}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thasSelection={selectedPreset !== undefined}\n\t\t\t\t\t\t\tshowSelectedValue={selectedPreset !== undefined}\n\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\topenAriaLabel=\"Открыть список layout\"\n\t\t\t\t\t\t\tcloseAriaLabel=\"Закрыть список layout\"\n\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\taria-label={!labelId ? (ariaLabel ?? `Выбрать layout. Текущее значение: ${triggerLabel}`) : undefined}\n\t\t\t\t\t\t\tdata-ui=\"layout-picker-trigger\"\n\t\t\t\t\t\t\trootClassName={triggerClassName}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\tenableSpaceActivation: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={getActiveOptionId(listId)}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(styles.popup, popupClassName)}\n\t\t\t\t\t\t\tlayoutClassName={styles.popupLayout}\n\t\t\t\t\t\t\tbodyClassName={styles.popupBody}>\n\t\t\t\t\t\t\t<div className={styles.options}>\n\t\t\t\t\t\t\t\t{presets.map((preset, index) => {\n\t\t\t\t\t\t\t\t\tconst selected = index === selectedIndex;\n\t\t\t\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\t\t\t\tconst presetDisabled = getPresetDisabled?.(preset) ?? false;\n\t\t\t\t\t\t\t\t\tconst optionId = getOptionId(listId, index);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Option\n\t\t\t\t\t\t\t\t\t\t\tkey={preset.id}\n\t\t\t\t\t\t\t\t\t\t\tid={optionId}\n\t\t\t\t\t\t\t\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={presetDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-label={preset.description ? `${preset.label}. ${preset.description}` : preset.label}\n\t\t\t\t\t\t\t\t\t\t\tclassName={styles.option}\n\t\t\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"layout-picker-option\"\n\t\t\t\t\t\t\t\t\t\t\tdata-selected={selected || undefined}>\n\t\t\t\t\t\t\t\t\t\t\t<CustomOptionButton\n\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectOption(preset)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionPreviewWrap}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={preset} />\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t\t\t\t\t\t\t</Option>\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</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/layout-picker/lib/layout.ts","../../src/layout-picker/lib/presets.ts","../../src/layout-picker/ui/LayoutPicker.module.scss","../../src/layout-picker/ui/LayoutPresetPreview.tsx","../../src/layout-picker/ui/LayoutPicker.tsx"],"sourcesContent":["import { type CSSProperties } from \"react\";\n\nimport { type LayoutPickerPreset, type LayoutPickerPresetCell } from \"./types\";\n\n/**\n * Возвращает CSS Grid-стиль для схематичного layout-пресета.\n */\nexport function getLayoutStyle(preset: LayoutPickerPreset, rowMinHeightInEm?: number): CSSProperties {\n\treturn {\n\t\tgridTemplateColumns: `repeat(${preset.columns}, minmax(0, 1fr))`,\n\t\tgridTemplateRows: `repeat(${preset.rows}, minmax(${rowMinHeightInEm ?? 0}em, 1fr))`\n\t};\n}\n\n/**\n * Возвращает позиционирование ячейки внутри CSS Grid.\n */\nexport function getLayoutCellStyle(cell: LayoutPickerPresetCell): CSSProperties {\n\treturn {\n\t\tgridColumn: `${cell.column} / span ${cell.columnSpan ?? 1}`,\n\t\tgridRow: `${cell.row} / span ${cell.rowSpan ?? 1}`\n\t};\n}\n","import { type LayoutPickerPreset } from \"./types\";\n\n/**\n * Базовый набор layout-пресетов для первого среза выбора схемы.\n *\n * id формата:\n * - \"2x3\" — 2 строки, 3 колонки\n * - \"2x2-l\" — 2x2 с большой ячейкой слева\n * - \"3x2-b\" — 3x2 с широкой нижней ячейкой\n */\nexport const DEFAULT_LAYOUT_PICKER_PRESETS = [\n\t{\n\t\tid: \"1x1\",\n\t\tlabel: \"1x1\",\n\t\tcolumns: 1,\n\t\trows: 1,\n\t\tcells: [{ id: \"c11\", row: 1, column: 1 }]\n\t},\n\t{\n\t\tid: \"1x2\",\n\t\tlabel: \"1x2\",\n\t\tcolumns: 2,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"1x3\",\n\t\tlabel: \"1x3\",\n\t\tcolumns: 3,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x1\",\n\t\tlabel: \"2x1\",\n\t\tcolumns: 1,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2\",\n\t\tlabel: \"2x2\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x3\",\n\t\tlabel: \"2x3\",\n\t\tcolumns: 3,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x1\",\n\t\tlabel: \"3x1\",\n\t\tcolumns: 1,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2\",\n\t\tlabel: \"3x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3\",\n\t\tlabel: \"3x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x1\",\n\t\tlabel: \"4x1\",\n\t\tcolumns: 1,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2\",\n\t\tlabel: \"4x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3\",\n\t\tlabel: \"4x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"2x2-l\",\n\t\tlabel: \"Большая слева + две справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 2 },\n\t\t\t{ id: \"rt\", row: 1, column: 2 },\n\t\t\t{ id: \"rb\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-r\",\n\t\tlabel: \"Две слева + большая справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"lt\", row: 1, column: 1 },\n\t\t\t{ id: \"lb\", row: 2, column: 1 },\n\t\t\t{ id: \"right\", row: 1, column: 2, rowSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-t\",\n\t\tlabel: \"Широкая сверху + две снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 2, column: 1 },\n\t\t\t{ id: \"br\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-b\",\n\t\tlabel: \"Две сверху + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"bottom\", row: 2, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x2-t\",\n\t\tlabel: \"Широкая сверху + 2x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-b\",\n\t\tlabel: \"2x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-m\",\n\t\tlabel: \"Широкая по центру\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"middle\", row: 2, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 3, column: 1 },\n\t\t\t{ id: \"br\", row: 3, column: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x3-l\",\n\t\tlabel: \"Большая слева + 2x3 справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 3 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-r\",\n\t\tlabel: \"2x3 слева + большая справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"right\", row: 1, column: 3, rowSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-t\",\n\t\tlabel: \"Широкая сверху + 2x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-b\",\n\t\tlabel: \"2x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"4x2-t\",\n\t\tlabel: \"Широкая сверху + 3x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2-b\",\n\t\tlabel: \"3x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-t\",\n\t\tlabel: \"Широкая сверху + 3x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-b\",\n\t\tlabel: \"3x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 3 }\n\t\t]\n\t}\n] as const satisfies readonly LayoutPickerPreset[];\n\nexport type DefaultLayoutPickerPresetId = (typeof DEFAULT_LAYOUT_PICKER_PRESETS)[number][\"id\"];\n\nexport function getDefaultLayoutPickerPresetId(): DefaultLayoutPickerPresetId {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS[0].id;\n}\n\n/** Возвращает layout-пресет по id с fallback на дефолт chart-ракурса. */\nexport function resolveLayoutPreset(layoutId: string | undefined): LayoutPickerPreset {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId) ?? DEFAULT_LAYOUT_PICKER_PRESETS[0];\n}\n\nexport function resolveLayoutCellCount(layoutId: string): number {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId)?.cells.length ?? 1;\n}\n","@use \"@/styles/mixins\" as *;\n\n.triggerText {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.popup {\n\twidth: min(calc(100vw - var(--space-lg) * 2), 44em);\n\tmax-height: min(75vh, 34em);\n}\n\n.popupLayout {\n\tmax-height: inherit;\n}\n\n.popupBody {\n\toverflow: auto;\n\tpadding: var(--space-xs);\n}\n\n.options {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(min(100%, 5em), 1fr));\n\tgap: var(--space-sm);\n}\n\n.option {\n\tposition: relative;\n\tpadding: var(--space-sm);\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\t// background-color: var(--surface-1);\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-2);\n\t\tborder-color: var(--border-2);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: var(--disabled-opacity);\n\t}\n}\n\n.option[data-selected] {\n\tborder-color: var(--border-1);\n\tbackground-color: var(--surface-1);\n\n\t.previewCell {\n\t\tbackground-color: var(--accent-fill);\n\t\tborder: var(--border-width) solid var(--accent-border);\n\t}\n}\n\n.optionPreviewWrap {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.preview,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 3.5em;\n\n\twidth: var(--layout-picker-preview-size);\n\theight: calc(var(--layout-picker-preview-size) * 0.72);\n\tflex: 0 0 auto;\n}\n\n.preview {\n\tdisplay: grid;\n\tgap: calc(var(--border-width) * 2);\n}\n\n.previewCompact,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 1.75rem;\n}\n\n.previewCell {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--surface-1);\n\tborder: var(--border-width) solid var(--border-1);\n}\n\n.previewCompact {\n\t.previewCell {\n\t\tbackground-color: var(--brand-fill);\n\t\tborder: none;\n\t}\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { getLayoutCellStyle, getLayoutStyle, type LayoutPickerPreset } from \"../lib\";\n\nimport styles from \"./LayoutPicker.module.scss\";\n\nexport type LayoutPresetPreviewProps = {\n\tpreset: LayoutPickerPreset;\n\tcompact?: boolean;\n};\n\n/** Схематичное, скрытое от accessibility tree превью layout-пресета. */\nexport function LayoutPresetPreview({ preset, compact = false }: LayoutPresetPreviewProps) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(styles.preview, compact && styles.previewCompact)}\n\t\t\tstyle={getLayoutStyle(preset)}\n\t\t\taria-hidden=\"true\"\n\t\t\tdata-ui=\"layout-picker-preview\">\n\t\t\t{preset.cells.map((cell) => (\n\t\t\t\t<span key={`${preset.id}:${cell.id}`} className={styles.previewCell} style={getLayoutCellStyle(cell)} />\n\t\t\t))}\n\t\t</span>\n\t);\n}\n","import { type ComponentPropsWithRef, type ReactElement, useRef, useState } from \"react\";\n\nimport { type Placement } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { CustomOptionButton, Option } from \"../../option\";\nimport { PickerField, PickerPopup, PickerTrigger, usePickerFloatingListbox, usePickerTriggerController } from \"../../picker\";\nimport { type UiBaseProps } from \"../../types\";\nimport { DEFAULT_LAYOUT_PICKER_PRESETS, type LayoutPickerPreset } from \"../lib\";\n\nimport styles from \"./LayoutPicker.module.scss\";\nimport { LayoutPresetPreview } from \"./LayoutPresetPreview\";\n\nexport type LayoutPickerTriggerProps = ComponentPropsWithRef<\"button\"> & {\n\t\"data-ui\": \"layout-picker-trigger\";\n};\n\nexport type LayoutPickerTriggerRenderState = Readonly<{\n\topen: boolean;\n\tselectedPreset?: LayoutPickerPreset;\n\ttriggerLabel: string;\n\t/**\n\t * Эти props нужно передать в корневую button кастомного trigger, чтобы\n\t * сохранить позиционирование popup, клавиатурное управление и ARIA-контракт.\n\t */\n\ttriggerProps: LayoutPickerTriggerProps;\n}>;\n\nexport interface LayoutPickerProps extends UiBaseProps<string> {\n\tid?: string;\n\tpresets?: readonly LayoutPickerPreset[];\n\tgetPresetDisabled?: (preset: LayoutPickerPreset) => boolean;\n\t/**\n\t * Показывает рядом с превью переданный текст `placeholder`.\n\t * По умолчанию текст скрыт, поэтому trigger отображает только иконку раскладки.\n\t */\n\tshowPlaceholder?: boolean;\n\tariaLabel?: string;\n\tclassName?: string;\n\ttriggerClassName?: string;\n\tpopupClassName?: string;\n\tplacement?: Placement;\n\t/** Заменяет стандартный input-like trigger, не меняя popup со списком пресетов. */\n\trenderTrigger?: (state: LayoutPickerTriggerRenderState) => ReactElement;\n}\n\nconst DEFAULT_PLACEHOLDER = \"Выберите раскладку\";\n\n/**\n * Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.\n */\nexport function LayoutPicker({\n\tid,\n\tlabel,\n\tdescription,\n\tvalue,\n\tonChange,\n\tpresets = DEFAULT_LAYOUT_PICKER_PRESETS,\n\tdisabled,\n\tgetPresetDisabled,\n\tplaceholder = DEFAULT_PLACEHOLDER,\n\tshowPlaceholder = false,\n\tsize,\n\tariaLabel,\n\tclassName,\n\ttriggerClassName,\n\tpopupClassName,\n\tplacement = \"bottom-start\",\n\trenderTrigger\n}: LayoutPickerProps) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst selectedIndex = presets.findIndex((preset) => preset.id === value);\n\tconst selectedPreset = selectedIndex >= 0 ? presets[selectedIndex] : undefined;\n\tconst triggerLabel = selectedPreset?.label ?? placeholder;\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: presets,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: setOpen,\n\t\tgetOptionDisabled: getPresetDisabled,\n\t\tonSelect: (preset) => onChange(preset.id),\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode: \"display\"\n\t});\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: \"display\",\n\t\topen,\n\t\tcurrentQuery: \"\",\n\t\thasDisplayValue: selectedPreset !== undefined,\n\t\tinputRef,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\n\treturn (\n\t\t<PickerField id={id} label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\t\t\t\tconst commonTriggerAria = {\n\t\t\t\t\t\"aria-haspopup\": \"listbox\" as const,\n\t\t\t\t\t\"aria-expanded\": open,\n\t\t\t\t\t\"aria-controls\": open ? listId : undefined,\n\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\"aria-describedby\": describedBy,\n\t\t\t\t\t\"aria-activedescendant\": open ? getActiveOptionId(listId) : undefined,\n\t\t\t\t\t\"aria-label\": !labelId ? (ariaLabel ?? `Выбрать layout. Текущее значение: ${triggerLabel}`) : undefined\n\t\t\t\t};\n\t\t\t\tconst customTrigger = renderTrigger?.({\n\t\t\t\t\topen,\n\t\t\t\t\tselectedPreset,\n\t\t\t\t\ttriggerLabel,\n\t\t\t\t\ttriggerProps: {\n\t\t\t\t\t\tref: setReference,\n\t\t\t\t\t\tid: controlId,\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\trole: \"combobox\",\n\t\t\t\t\t\t...commonTriggerAria,\n\t\t\t\t\t\t\"data-ui\": \"layout-picker-trigger\",\n\t\t\t\t\t\tclassName: triggerClassName,\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tif (!disabled) toggleOpen();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonKeyDown: (event) => {\n\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\tif (event.defaultPrevented) return;\n\n\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\tenableSpaceActivation: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{customTrigger ?? (\n\t\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\toptionCount={presets.length}\n\t\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\tvalue={triggerLabel}\n\t\t\t\t\t\t\t\tselectedValue={\n\t\t\t\t\t\t\t\t\tselectedPreset ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={selectedPreset} compact />\n\t\t\t\t\t\t\t\t\t\t\t{showPlaceholder ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.triggerText} data-ui=\"layout-picker-selected-label\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{selectedPreset.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thasSelection={selectedPreset !== undefined}\n\t\t\t\t\t\t\t\tshowSelectedValue={selectedPreset !== undefined}\n\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\t\topenAriaLabel=\"Открыть список layout\"\n\t\t\t\t\t\t\t\tcloseAriaLabel=\"Закрыть список layout\"\n\t\t\t\t\t\t\t\t{...commonTriggerAria}\n\t\t\t\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\t\t\t\tdata-ui=\"layout-picker-trigger\"\n\t\t\t\t\t\t\t\trootClassName={triggerClassName}\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: selectActiveOption,\n\t\t\t\t\t\t\t\t\t\tenableSpaceActivation: 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\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={getActiveOptionId(listId)}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(styles.popup, popupClassName)}\n\t\t\t\t\t\t\tlayoutClassName={styles.popupLayout}\n\t\t\t\t\t\t\tbodyClassName={styles.popupBody}>\n\t\t\t\t\t\t\t<div className={styles.options}>\n\t\t\t\t\t\t\t\t{presets.map((preset, index) => {\n\t\t\t\t\t\t\t\t\tconst selected = index === selectedIndex;\n\t\t\t\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\t\t\t\tconst presetDisabled = getPresetDisabled?.(preset) ?? false;\n\t\t\t\t\t\t\t\t\tconst optionId = getOptionId(listId, index);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Option\n\t\t\t\t\t\t\t\t\t\t\tkey={preset.id}\n\t\t\t\t\t\t\t\t\t\t\tid={optionId}\n\t\t\t\t\t\t\t\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={presetDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-label={preset.description ? `${preset.label}. ${preset.description}` : preset.label}\n\t\t\t\t\t\t\t\t\t\t\tclassName={styles.option}\n\t\t\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"layout-picker-option\"\n\t\t\t\t\t\t\t\t\t\t\tdata-selected={selected || undefined}>\n\t\t\t\t\t\t\t\t\t\t\t<CustomOptionButton\n\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectOption(preset)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionPreviewWrap}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={preset} />\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t\t\t\t\t\t\t</Option>\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</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef, type ReactElement } from "react";
|
|
1
2
|
import { type Placement } from "@floating-ui/react";
|
|
2
3
|
import { type UiBaseProps } from "../../types";
|
|
3
4
|
import { type LayoutPickerPreset } from "../lib";
|
|
5
|
+
export type LayoutPickerTriggerProps = ComponentPropsWithRef<"button"> & {
|
|
6
|
+
"data-ui": "layout-picker-trigger";
|
|
7
|
+
};
|
|
8
|
+
export type LayoutPickerTriggerRenderState = Readonly<{
|
|
9
|
+
open: boolean;
|
|
10
|
+
selectedPreset?: LayoutPickerPreset;
|
|
11
|
+
triggerLabel: string;
|
|
12
|
+
/**
|
|
13
|
+
* Эти props нужно передать в корневую button кастомного trigger, чтобы
|
|
14
|
+
* сохранить позиционирование popup, клавиатурное управление и ARIA-контракт.
|
|
15
|
+
*/
|
|
16
|
+
triggerProps: LayoutPickerTriggerProps;
|
|
17
|
+
}>;
|
|
4
18
|
export interface LayoutPickerProps extends UiBaseProps<string> {
|
|
5
19
|
id?: string;
|
|
6
20
|
presets?: readonly LayoutPickerPreset[];
|
|
@@ -15,9 +29,11 @@ export interface LayoutPickerProps extends UiBaseProps<string> {
|
|
|
15
29
|
triggerClassName?: string;
|
|
16
30
|
popupClassName?: string;
|
|
17
31
|
placement?: Placement;
|
|
32
|
+
/** Заменяет стандартный input-like trigger, не меняя popup со списком пресетов. */
|
|
33
|
+
renderTrigger?: (state: LayoutPickerTriggerRenderState) => ReactElement;
|
|
18
34
|
}
|
|
19
35
|
/**
|
|
20
36
|
* Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.
|
|
21
37
|
*/
|
|
22
|
-
export declare function LayoutPicker({ id, label, description, value, onChange, presets, disabled, getPresetDisabled, placeholder, showPlaceholder, size, ariaLabel, className, triggerClassName, popupClassName, placement }: LayoutPickerProps): import("react").JSX.Element;
|
|
38
|
+
export declare function LayoutPicker({ id, label, description, value, onChange, presets, disabled, getPresetDisabled, placeholder, showPlaceholder, size, ariaLabel, className, triggerClassName, popupClassName, placement, renderTrigger }: LayoutPickerProps): import("react").JSX.Element;
|
|
23
39
|
//# sourceMappingURL=LayoutPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutPicker.d.ts","sourceRoot":"","sources":["../../../src/layout-picker/ui/LayoutPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LayoutPicker.d.ts","sourceRoot":"","sources":["../../../src/layout-picker/ui/LayoutPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAoB,MAAM,OAAO,CAAC;AAExF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAKhF,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,GAAG;IACxE,SAAS,EAAE,uBAAuB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACrD,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,EAAE,wBAAwB,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAC7D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC;IAC5D;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mFAAmF;IACnF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,YAAY,CAAC;CACxE;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC5B,EAAE,EACF,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,OAAuC,EACvC,QAAQ,EACR,iBAAiB,EACjB,WAAiC,EACjC,eAAuB,EACvB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,SAA0B,EAC1B,aAAa,EACb,EAAE,iBAAiB,+BA8MnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type LayoutPickerPreset } from "../lib";
|
|
2
|
+
export type LayoutPresetPreviewProps = {
|
|
3
|
+
preset: LayoutPickerPreset;
|
|
4
|
+
compact?: boolean;
|
|
5
|
+
};
|
|
6
|
+
/** Схематичное, скрытое от accessibility tree превью layout-пресета. */
|
|
7
|
+
export declare function LayoutPresetPreview({ preset, compact }: LayoutPresetPreviewProps): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=LayoutPresetPreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutPresetPreview.d.ts","sourceRoot":"","sources":["../../../src/layout-picker/ui/LayoutPresetPreview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAIrF,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAe,EAAE,EAAE,wBAAwB,+BAYxF"}
|
|
@@ -6,9 +6,11 @@ export type SplitterProps = PropsWithChildren<{
|
|
|
6
6
|
initial?: number;
|
|
7
7
|
min?: number;
|
|
8
8
|
max?: number;
|
|
9
|
+
/** Сообщает итоговую долю первой панели после завершения drag или шага с клавиатуры. */
|
|
10
|
+
onChange?: (ratio: number) => void;
|
|
9
11
|
className?: string;
|
|
10
12
|
collapsedPane?: SplitterPane | null;
|
|
11
13
|
}>;
|
|
12
|
-
export declare function Splitter({ direction, initial, min, max, className, collapsedPane, children }: SplitterProps): string | number | bigint | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element;
|
|
14
|
+
export declare function Splitter({ direction, initial, min, max, onChange, className, collapsedPane, children }: SplitterProps): string | number | bigint | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element;
|
|
13
15
|
export {};
|
|
14
16
|
//# sourceMappingURL=Splitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Splitter.d.ts","sourceRoot":"","sources":["../../src/splitter/Splitter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,iBAAiB,EAEtB,KAAK,SAAS,EAQd,MAAM,OAAO,CAAC;AAMf,KAAK,iBAAiB,GAAG,UAAU,GAAG,YAAY,CAAC;AACnD,KAAK,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;IAC7C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Splitter.d.ts","sourceRoot":"","sources":["../../src/splitter/Splitter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,iBAAiB,EAEtB,KAAK,SAAS,EAQd,MAAM,OAAO,CAAC;AAMf,KAAK,iBAAiB,GAAG,UAAU,GAAG,YAAY,CAAC;AACnD,KAAK,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;IAC7C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC,CAAC,CAAC;AAmSH,wBAAgB,QAAQ,CAAC,EACxB,SAAsB,EACtB,OAAyB,EACzB,GAAiB,EACjB,GAAiB,EACjB,QAAQ,EACR,SAAS,EACT,aAAoB,EACpB,QAAQ,EACR,EAAE,aAAa,kSASf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type PropsWithChildren } from "react";
|
|
2
|
+
export type SplitterHeightContainerProps = PropsWithChildren<{
|
|
3
|
+
/** Controlled-высота области со Splitter в CSS-пикселях. */
|
|
4
|
+
height?: number;
|
|
5
|
+
/** Начальная высота для uncontrolled-режима в CSS-пикселях. */
|
|
6
|
+
defaultHeight?: number;
|
|
7
|
+
minHeight?: number;
|
|
8
|
+
maxHeight?: number;
|
|
9
|
+
/** Шаг изменения высоты с клавиатуры в CSS-пикселях. */
|
|
10
|
+
heightStep?: number;
|
|
11
|
+
/** Сообщает итоговую высоту после завершения drag или клавиатурного шага. */
|
|
12
|
+
onHeightChange?: (height: number) => void;
|
|
13
|
+
className?: string;
|
|
14
|
+
viewportClassName?: string;
|
|
15
|
+
separatorClassName?: string;
|
|
16
|
+
separatorAriaLabel?: string;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Опциональная внешняя композиция для Splitter: область панелей получает
|
|
20
|
+
* независимую высоту, а расположенный снизу separator изменяет весь viewport.
|
|
21
|
+
* Внутренние Splitter при этом продолжают управлять только своими пропорциями.
|
|
22
|
+
*/
|
|
23
|
+
export declare function SplitterHeightContainer({ height, defaultHeight, minHeight, maxHeight, heightStep, onHeightChange, className, viewportClassName, separatorClassName, separatorAriaLabel, children }: SplitterHeightContainerProps): import("react").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=SplitterHeightContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitterHeightContainer.d.ts","sourceRoot":"","sources":["../../src/splitter/SplitterHeightContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAS,MAAM,OAAO,CAAC;AAOtD,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAOH;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACvC,MAAM,EACN,aAA8B,EAC9B,SAA8B,EAC9B,SAA8B,EAC9B,UAAgC,EAChC,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,kBAAsD,EACtD,QAAQ,EACR,EAAE,4BAA4B,+BAuC9B"}
|
package/dist/splitter/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/splitter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/splitter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC"}
|