@ryuzaki13/react-foundation-ui 1.8.17 → 1.8.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced-search/index.js +4 -4
- package/dist/base-table/index.js +1 -1
- package/dist/chunks/{TextEditorLexicalClient-Ca89d-Db.js → TextEditorLexicalClient-jYDUbAcf.js} +2 -2
- package/dist/chunks/{TextEditorLexicalClient-Ca89d-Db.js.map → TextEditorLexicalClient-jYDUbAcf.js.map} +1 -1
- package/dist/chunks/{base-table-CXPasGQC.js → base-table-BuH1DvPd.js} +2 -2
- package/dist/chunks/{base-table-CXPasGQC.js.map → base-table-BuH1DvPd.js.map} +1 -1
- package/dist/chunks/{context-menu-CTJsMd8y.js → context-menu-CCAr_R-t.js} +2 -2
- package/dist/chunks/{context-menu-CTJsMd8y.js.map → context-menu-CCAr_R-t.js.map} +1 -1
- package/dist/chunks/{date-input-g6l1iDmf.js → date-input-DXCIZbyc.js} +2 -2
- package/dist/chunks/{date-input-g6l1iDmf.js.map → date-input-DXCIZbyc.js.map} +1 -1
- package/dist/chunks/{input-d08WN5FV.js → input-D1jOxm0t.js} +3 -2
- package/dist/chunks/input-D1jOxm0t.js.map +1 -0
- package/dist/chunks/{input-files-_NdSQM_3.js → input-files-CDGpJaUm.js} +2 -2
- package/dist/chunks/{input-files-_NdSQM_3.js.map → input-files-CDGpJaUm.js.map} +1 -1
- package/dist/chunks/{input-search-BjtTMoRu.js → input-search-Ci1ubGox.js} +2 -2
- package/dist/chunks/{input-search-BjtTMoRu.js.map → input-search-Ci1ubGox.js.map} +1 -1
- package/dist/chunks/{multi-select-m5Xl2yJZ.js → multi-select-D1JjZJfr.js} +2 -2
- package/dist/chunks/{multi-select-m5Xl2yJZ.js.map → multi-select-D1JjZJfr.js.map} +1 -1
- package/dist/chunks/{picker-DF_heUIT.js → picker-DO9HFqJV.js} +2 -2
- package/dist/chunks/picker-DO9HFqJV.js.map +1 -0
- package/dist/chunks/{select-C3tbPtgQ.js → select-3jk0ljU1.js} +3 -3
- package/dist/chunks/{select-C3tbPtgQ.js.map → select-3jk0ljU1.js.map} +1 -1
- package/dist/chunks/{table-Bhj60fyi.js → table-DLkfAmSZ.js} +2 -2
- package/dist/chunks/{table-Bhj60fyi.js.map → table-DLkfAmSZ.js.map} +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +1 -1
- package/dist/date-time-input/index.js +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/image/index.js +2 -2
- package/dist/input/Input.d.ts.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/picker/model/usePickerFloatingListbox.d.ts +1 -1
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +2 -2
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tag-input/index.js +1 -1
- package/dist/text-editor/index.js +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/tree-select/index.js +2 -2
- package/dist/tree-table/index.js +1 -1
- package/package.json +3 -3
- package/storybook-static/assets/{Badge-9ov2SQpw.js → Badge-CAM2jkFm.js} +6 -6
- package/storybook-static/assets/{Badge.stories-DyT1y7iJ.js → Badge.stories-DRjjmR32.js} +1 -1
- package/storybook-static/assets/{BadgeList-DsCC0K2u.js → BadgeList-D4Swhp3V.js} +1 -1
- package/storybook-static/assets/{Button-Ch-WQXxt.js → Button-1UZNz2k4.js} +1 -1
- package/storybook-static/assets/{Button-DrEpacN2.js → Button-4YB5_DwT.js} +6 -6
- package/storybook-static/assets/{Button.stories-Bt1ww23Y.js → Button.stories-B0sdwFqZ.js} +1 -1
- package/storybook-static/assets/{CalendarView-C2J0uWGf.js → CalendarView-sSyZ5jCR.js} +1 -1
- package/storybook-static/assets/{CheckBox-Dmed1k3Y.js → CheckBox-BdGaGy4_.js} +2 -2
- package/storybook-static/assets/{CheckBox-BBm7pBaK.js → CheckBox-Cpt5rjSg.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-Dy7pe9eU.js → CheckBox.stories-6d6-rkNo.js} +1 -1
- package/storybook-static/assets/Color-6AOWCN3U-sKBB2RBT.js +1 -0
- package/storybook-static/assets/{ContextMenu-9gl4i81Y.js → ContextMenu-B155_m2F.js} +1 -1
- package/storybook-static/assets/{ContextMenu-DbjrPPi1.js → ContextMenu-BLnt5p2W.js} +2 -2
- package/storybook-static/assets/{ContextMenu.stories-UxHdcdSM.js → ContextMenu.stories-B8sv4v3Q.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-qGFdzAlY.js → CustomOptionButton-hKfsqWNH.js} +1 -1
- package/storybook-static/assets/{DateInput-XANZLf8y.js → DateInput-DvIl6s-f.js} +2 -2
- package/storybook-static/assets/{DateInput-C3lNtiZJ.js → DateInput-XvSKmvqi.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-CPxMqlod.js → DateInput.stories-SU41oukh.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-S0q2x0q-.js → DateRangePresetSelect-BCLZcXdv.js} +2 -2
- package/storybook-static/assets/{DateRangePresetSelect-erSbZygb.js → DateRangePresetSelect-tz-3m9UI.js} +1 -1
- package/storybook-static/assets/DateRangePresetSelect.stories-D8zuTlHo.js +19 -0
- package/storybook-static/assets/{Detail-fBnBGZJ-.js → Detail-Ct95dA1k.js} +2 -2
- package/storybook-static/assets/{Detail.stories-BS83WXDS.js → Detail.stories-Chedt7EX.js} +1 -1
- package/storybook-static/assets/{Dialog-BkxPSokc.js → Dialog-BX3QZOnt.js} +1 -1
- package/storybook-static/assets/{Dialog-CUmLq_8l.js → Dialog-C7Duw0PA.js} +2 -2
- package/storybook-static/assets/Dialog.stories-J0w0R0Db.js +22 -0
- package/storybook-static/assets/{Disclosure-CoQrHJcx.js → Disclosure-BzlV54RK.js} +2 -2
- package/storybook-static/assets/Disclosure.stories-z7gnOr5h.js +23 -0
- package/storybook-static/assets/{DisclosureGroup-C76Vffsk.js → DisclosureGroup-c179TOi5.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-Dcd0Q4OT.js → DocsRenderer-JROSPFPF-Ba9N3QAD.js} +1 -1
- package/storybook-static/assets/{DropZone-D8ce83Dp.js → DropZone-D5X0oV8O.js} +1 -1
- package/storybook-static/assets/{DropZone-CDDUWBFm.js → DropZone-vxUU2p-k.js} +2 -2
- package/storybook-static/assets/DropZone.stories-iNXgESGM.js +26 -0
- package/storybook-static/assets/{DropdownMenu-BDIZKs1J.js → DropdownMenu-CJlpP3HB.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-BuioQ5dl.js → ExpandableActionPanel-CmkEByID.js} +1 -1
- package/storybook-static/assets/ExpandableActionPanel.stories-DmRLaVxn.js +9 -0
- package/storybook-static/assets/{Flex-B22MHXX7.js → Flex-tVAYZ-nU.js} +2 -2
- package/storybook-static/assets/{Flex.stories-kwnLelWl.js → Flex.stories-CVYDcbvw.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-Bp9Qypq9.js → FloatingPopover-DMTLPzR3.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-B6jdkIC4.js → FormattedTableCell-DP6-D86D.js} +1 -1
- package/storybook-static/assets/{Grid-DflESV2R.js → Grid-Vm-amT-a.js} +2 -2
- package/storybook-static/assets/{Grid.stories-CFoPPd64.js → Grid.stories-B0beH9CK.js} +1 -1
- package/storybook-static/assets/ImageCropper.stories-Dt-IA4EB.js +131 -0
- package/storybook-static/assets/{ImageRenderer-DIL2Vc1q.js → ImageRenderer-DudkQ-3G.js} +1 -1
- package/storybook-static/assets/ImageRenderer.stories-CNeSiXkj.js +34 -0
- package/storybook-static/assets/ImageView.stories-DMtpy--X.js +14 -0
- package/storybook-static/assets/{ImageViewer.stories-D0qPi2e4.js → ImageViewer.stories-BkoV0li4.js} +3 -3
- package/storybook-static/assets/{ImageViewerRuntime-DkHuWptv.js → ImageViewerRuntime-BLgQCsSL.js} +1 -1
- package/storybook-static/assets/Input-CYgnggvb.css +1 -0
- package/storybook-static/assets/{Input-yxWSYFnb.js → Input-MPCFEMQm.js} +2 -2
- package/storybook-static/assets/Input-WhTMStKL.js +3 -0
- package/storybook-static/assets/Input.stories-B50KKSiz.js +52 -0
- package/storybook-static/assets/{InputDateTime-DhZt9ZDV.js → InputDateTime-1zTFbNEF.js} +2 -2
- package/storybook-static/assets/{InputDateTime.stories-BUBjE1XK.js → InputDateTime.stories-B7W4BkU6.js} +1 -1
- package/storybook-static/assets/{InputFile-D9QY_9jH.js → InputFile-B3QB0SLD.js} +1 -1
- package/storybook-static/assets/{InputFile-7mZglfLi.js → InputFile-DYHuD6B8.js} +2 -2
- package/storybook-static/assets/InputFile.stories-B-hrCtm_.js +27 -0
- package/storybook-static/assets/{InputFiles-Bj0dCOF-.js → InputFiles-CPPAJxgC.js} +1 -1
- package/storybook-static/assets/{InputFiles-LUM6HpDW.js → InputFiles-Dpa2BiyZ.js} +2 -2
- package/storybook-static/assets/InputFiles.stories-1ocz2wNw.js +26 -0
- package/storybook-static/assets/{InputFilesList-CSR5cAWT.js → InputFilesList-D2Ro-1Hm.js} +1 -1
- package/storybook-static/assets/{InputImage-I4lZZZDP.js → InputImage-BDC2lyVo.js} +1 -1
- package/storybook-static/assets/{InputImage-DCXLCb31.js → InputImage-DPmkvGcl.js} +2 -2
- package/storybook-static/assets/InputImage.stories-D3hWZBtn.js +56 -0
- package/storybook-static/assets/{InteractiveComponents-CqglREgC.js → InteractiveComponents-Djz3CtkU.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-wY4MY2As.js → InteractiveComponents.stories-CJ2VWPLD.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DaT1HP0_.js → LayoutPicker-BFShZhhi.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DYwZvtzh.js → LayoutPicker-CMMEs83d.js} +3 -3
- package/storybook-static/assets/{LayoutPicker.stories-dsNYjmjt.js → LayoutPicker.stories-Cdb_UnBI.js} +1 -1
- package/storybook-static/assets/{Listbox-Bnd30LZ_.js → Listbox-B7nZijLJ.js} +2 -2
- package/storybook-static/assets/{Listbox-DA4aaUt0.js → Listbox-DM1vuGVD.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-xe6Yszg6.js → Listbox.stories-DTs-ANe9.js} +1 -1
- package/storybook-static/assets/{Modal-NJll9h9x.js → Modal-D0dkB7lh.js} +3 -3
- package/storybook-static/assets/{Modal.stories-B7N5aIgP.js → Modal.stories-BOh10Fkn.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-DA5QtvQ2.js → ModalManagerProvider-CEEmviJU.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CUqW5AMh.js → MultiSelect-CbrRNOEZ.js} +2 -2
- package/storybook-static/assets/{MultiSelect-giyYuz8c.js → MultiSelect-oJhMsKuC.js} +1 -1
- package/storybook-static/assets/MultiSelect.stories-mLWhd-au.js +55 -0
- package/storybook-static/assets/{NoData-DhKFosBa.js → NoData-C7Kj62Zk.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-DKsOqiZE.js → NotificationsHost-D_i7EsJA.js} +3 -3
- package/storybook-static/assets/{NotificationsHost.stories-CVsDqE_z.js → NotificationsHost.stories-5GPO8lQl.js} +2 -2
- package/storybook-static/assets/{ODataMultiSelect-TMnKV9KI.js → ODataMultiSelect-B6hKhD2q.js} +2 -2
- package/storybook-static/assets/{ODataMultiSelect.stories-CbxXeBSq.js → ODataMultiSelect.stories-BO7WaR9I.js} +2 -2
- package/storybook-static/assets/{ODataSelect-D3zaT9Bd.js → ODataSelect-BW8S-U91.js} +2 -2
- package/storybook-static/assets/{ODataSelect.stories-Djkb72yE.js → ODataSelect.stories-rVZ8RYIu.js} +2 -2
- package/storybook-static/assets/{ODataTreeMultiSelect-Bz7Pqr69.js → ODataTreeMultiSelect-BhvUurca.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-QtxQbfUh.js → ODataTreeMultiSelect.stories-CM8wiVsI.js} +2 -2
- package/storybook-static/assets/{ODataTreeSelect-C2dm8syR.js → ODataTreeSelect-B96PJWcL.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-HRX2qliv.js → ODataTreeSelect.stories-HHLJZrD8.js} +2 -2
- package/storybook-static/assets/{OneStepScroller-u3gW3CFu.js → OneStepScroller-DzrN3WVZ.js} +1 -1
- package/storybook-static/assets/{Option-CpsdTcBv.js → Option-BwWLsS-Q.js} +1 -1
- package/storybook-static/assets/{Option-CpAZkiB9.css → Option-DFJ-DfU8.css} +1 -1
- package/storybook-static/assets/{OptionButton-Cpc3pWQ6.js → OptionButton-CdYqQAwC.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-CWHJ86O3.js → PeriodSelect-CJejEx-e.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-C6OPxXw9.js → PeriodSelect-_GvgXTKk.js} +1 -1
- package/storybook-static/assets/PeriodSelect.stories-CGNmEIBG.js +50 -0
- package/storybook-static/assets/{PickerTriggerActions-C05_NlBv.js → PickerTriggerActions-apA_Ruie.js} +1 -1
- package/storybook-static/assets/{Popover-CI-lzd_Y.js → Popover-BYGM8Bjj.js} +2 -2
- package/storybook-static/assets/{Popover-Dp6v7TaU.js → Popover-CDeopGLJ.js} +1 -1
- package/storybook-static/assets/{Popover.stories-D7LLMGrG.js → Popover.stories-DTeZeyAB.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-DEXNHHFw.js → PresetRangeDateInput-BdFjz9Ed.js} +2 -2
- package/storybook-static/assets/{PresetRangeDateInput-jsBNunjm.js → PresetRangeDateInput-D3FBpZqV.js} +1 -1
- package/storybook-static/assets/PresetRangeDateInput.stories-B2HCz7Tw.js +3 -0
- package/storybook-static/assets/{PresetSelect-B0OvN78Z.js → PresetSelect-BgzVe_NB.js} +1 -1
- package/storybook-static/assets/{README-Bu_7En3k.js → README-1tFUbU_N.js} +1 -1
- package/storybook-static/assets/{README-D95iopvt.js → README-9flk-o3B.js} +1 -1
- package/storybook-static/assets/{README-z6nH2ckx.js → README-B5QVQmyU.js} +1 -1
- package/storybook-static/assets/{README-CsAEz_8x.js → README-B8dyxeZz.js} +9 -12
- package/storybook-static/assets/{README-CwzP17ME.js → README-BJEbnNWP.js} +5 -9
- package/storybook-static/assets/{README--JrkMrwi.js → README-BRnZl0of.js} +4 -4
- package/storybook-static/assets/{README-BQpq3lh7.js → README-BSrGqFaw.js} +1 -1
- package/storybook-static/assets/{README-CPsRBLe4.js → README-BTp9nnLv.js} +3 -3
- package/storybook-static/assets/{README-CZuXtApO.js → README-BUkpxX-E.js} +4 -4
- package/storybook-static/assets/{README-CuqoQyPO.js → README-Bht25HeR.js} +1 -1
- package/storybook-static/assets/{README-BLho4XLO.js → README-Br9h1slQ.js} +4 -4
- package/storybook-static/assets/{README-yZSX-OqC.js → README-BtPehMeb.js} +4 -8
- package/storybook-static/assets/{README-LsHbJAIM.js → README-Bv9s5Hlv.js} +4 -7
- package/storybook-static/assets/{README-CoWUGZ_l.js → README-C2rr_CMA.js} +1 -1
- package/storybook-static/assets/{README-BuAqAOQM.js → README-C8K3rQpu.js} +4 -4
- package/storybook-static/assets/{README-DBjNHk3o.js → README-CBhnA3Kz.js} +3 -3
- package/storybook-static/assets/{README-yrnG-A7C.js → README-C_uOxFAl.js} +3 -3
- package/storybook-static/assets/{README-BBZeaX_g.js → README-CeuRBAf6.js} +1 -1
- package/storybook-static/assets/{README-D8up0NHH.js → README-Chc7eGGc.js} +1 -1
- package/storybook-static/assets/{README-Cc1ZT-3z.js → README-Cl2jxLna.js} +5 -5
- package/storybook-static/assets/{README-CisRMHhh.js → README-CuYqzgi0.js} +1 -1
- package/storybook-static/assets/{README-CD5_64aC.js → README-Cuj7DFn9.js} +5 -8
- package/storybook-static/assets/{README-IjRO8QsY.js → README-CvrH-776.js} +1 -1
- package/storybook-static/assets/{README-DRmu-SFW.js → README-CxsAd0Iq.js} +1 -1
- package/storybook-static/assets/{README-CkJtDuAy.js → README-DGTIYOSH.js} +3 -6
- package/storybook-static/assets/{README-Cc_acRci.js → README-DHJwCm5f.js} +14 -14
- package/storybook-static/assets/{README-mw1aJmys.js → README-DLBEUtiL.js} +1 -1
- package/storybook-static/assets/{README-BWH3eVjB.js → README-DNDYDuQ4.js} +4 -8
- package/storybook-static/assets/{README-CkwN7vVC.js → README-DQSMXoRa.js} +3 -5
- package/storybook-static/assets/{README-k92LCArT.js → README-DSsqg62x.js} +4 -8
- package/storybook-static/assets/{README-Dfdjepn7.js → README-DYKVnI5h.js} +4 -8
- package/storybook-static/assets/{README-BkBUm6xw.js → README-DZmDqmSd.js} +12 -12
- package/storybook-static/assets/{README-Dmt6U3aU.js → README-DcJ05Rnh.js} +1 -1
- package/storybook-static/assets/{README-ChzloWz7.js → README-Dju2IqV_.js} +1 -1
- package/storybook-static/assets/{README-BKyKhTdP.js → README-DldTDL_-.js} +1 -1
- package/storybook-static/assets/{README-oaNW_-7c.js → README-Dq0P8Ach.js} +3 -7
- package/storybook-static/assets/{README-B80TRZff.js → README-GstpCBI6.js} +1 -1
- package/storybook-static/assets/{README-DBMe9cYi.js → README-HhDoM8Gq.js} +2 -2
- package/storybook-static/assets/{README-DVhchZZO.js → README-I0-Ly9-N.js} +4 -8
- package/storybook-static/assets/{README-PtCi8SvW.js → README-NwNz8xro.js} +1 -5
- package/storybook-static/assets/{README-BYSR0Cie.js → README-OGP9mnSD.js} +4 -4
- package/storybook-static/assets/{README-CiMCyRM7.js → README-Se6780nc.js} +1 -1
- package/storybook-static/assets/{README-BdToXIoX.js → README-VwNH_K60.js} +1 -1
- package/storybook-static/assets/{README-CXBr_CyQ.js → README-_aVIdcMd.js} +4 -4
- package/storybook-static/assets/{README-BaCtki1X.js → README-bhX-QiSo.js} +3 -3
- package/storybook-static/assets/{README-DjPdG1sn.js → README-eqGIA1ao.js} +4 -8
- package/storybook-static/assets/{README-D6gttVs5.js → README-fLJ5n8A8.js} +6 -9
- package/storybook-static/assets/{README-BuJyvn9e.js → README-g3WhSoX3.js} +3 -3
- package/storybook-static/assets/{README-DQGBcWhx.js → README-m0xvi4o1.js} +1 -1
- package/storybook-static/assets/{README-DnCNNxgo.js → README-mXAkjKF0.js} +1 -1
- package/storybook-static/assets/{README-l6UdMKGF.js → README-n3wmMhlD.js} +1 -4
- package/storybook-static/assets/{README-CYgh97f9.js → README-z2leBvSk.js} +3 -3
- package/storybook-static/assets/{RadioButton-Cjuz545O.js → RadioButton-DqEZ3dh2.js} +2 -2
- package/storybook-static/assets/{RadioButton-ASb4zRKF.js → RadioButton-JEqzXOJN.js} +1 -1
- package/storybook-static/assets/RadioButton.stories-CzIM9dix.js +32 -0
- package/storybook-static/assets/{RadioGroup-3QSU0_PH.js → RadioGroup-COIsrK0r.js} +2 -2
- package/storybook-static/assets/{RadioGroup-UOcxQ4n6.js → RadioGroup-D4EHkLTb.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-B9JWyRFi.js → RadioGroup.stories-BdAv58pJ.js} +1 -1
- package/storybook-static/assets/{Scrollable-BM7KKTaO.js → Scrollable-noVIQseX.js} +1 -1
- package/storybook-static/assets/{Select-CzipkH5g.js → Select-9v7A23y8.js} +2 -2
- package/storybook-static/assets/{Select-BIYQ3HYq.js → Select-DgPcfbEp.js} +1 -1
- package/storybook-static/assets/Select.stories-yIRnlqrF.js +69 -0
- package/storybook-static/assets/{SerializableSelect-aH37Oz_P.js → SerializableSelect-CnPwQtgN.js} +2 -2
- package/storybook-static/assets/{SerializableSelect.stories-Cb31hcHm.js → SerializableSelect.stories-9QxpRX-K.js} +2 -2
- package/storybook-static/assets/{SingleDateTimeInput-BKZ2j5XA.js → SingleDateTimeInput-CxKz7tUP.js} +2 -2
- package/storybook-static/assets/{SingleDateTimeInput-jcU1eYyD.js → SingleDateTimeInput-DBrfgnnn.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-D8facy2e.js → SingleDateTimeInput.stories-lOLyuR7U.js} +1 -1
- package/storybook-static/assets/{Slider-D5zW2B4x.js → Slider-Cn1YHOVt.js} +1 -1
- package/storybook-static/assets/{Slider-CdlSXT8S.js → Slider-KC0hs5nY.js} +3 -3
- package/storybook-static/assets/{Slider.stories-DJFDUw-L.js → Slider.stories-C-IjisOs.js} +1 -1
- package/storybook-static/assets/{SliderInput-DS33CaaK.js → SliderInput-BVDFbjAz.js} +3 -3
- package/storybook-static/assets/{SliderInput-BR8kdM0H.js → SliderInput-Bz4D-xc3.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-B_mObDwL.js → SliderInput.stories-SlhRnTWN.js} +1 -1
- package/storybook-static/assets/{Sortable-DWy-JKZS.js → Sortable-d-UOB6NI.js} +2 -2
- package/storybook-static/assets/{Sortable.stories-SPmHtcYM.js → Sortable.stories-DWywtUOf.js} +1 -1
- package/storybook-static/assets/{Splitter-HUb-YSZF.js → Splitter-t2bV_zrF.js} +4 -4
- package/storybook-static/assets/{Splitter.stories-Crzq96sd.js → Splitter.stories-CTTTfgXu.js} +1 -1
- package/storybook-static/assets/{StateSelect-BSjtYKZ-.js → StateSelect-CR5WR-IW.js} +2 -2
- package/storybook-static/assets/{StateSelect-BwlppuOd.js → StateSelect-CX7Xf-aX.js} +1 -1
- package/storybook-static/assets/StateSelect.stories-3KkvmQ80.js +59 -0
- package/storybook-static/assets/StringToggle.stories-D7r-Du4d.js +5 -0
- package/storybook-static/assets/{Switch-fLpDZ4qU.js → Switch-DB4EZ32N.js} +1 -1
- package/storybook-static/assets/{Switch-nA9xU7Pp.js → Switch-Deae3h9G.js} +2 -2
- package/storybook-static/assets/Switch.stories-CZxayDtX.js +15 -0
- package/storybook-static/assets/{Table-wK63zl6Q.js → Table-CrxyY7zt.js} +4 -4
- package/storybook-static/assets/{Table.stories-C0G_h1tN.js → Table.stories-Cwxd5T2K.js} +2 -2
- package/storybook-static/assets/{Tabs-D8KwnnA-.js → Tabs-L4LxDqx4.js} +3 -3
- package/storybook-static/assets/{Tabs.stories-CS6nCuni.js → Tabs.stories-C4XMXjqd.js} +2 -2
- package/storybook-static/assets/{TabsBox-DP0-ZqEC.js → TabsBox-Bnvm4jMi.js} +1 -1
- package/storybook-static/assets/{TagInput-D4lwVc3K.js → TagInput-DW0JzYQ3.js} +1 -1
- package/storybook-static/assets/TagInput.stories-zF7cV7Cp.js +18 -0
- package/storybook-static/assets/{Text-DG9QNJe0.js → Text-ByhnRSgp.js} +1 -1
- package/storybook-static/assets/{Textarea-D3-Th6DP.js → Textarea-BySrQxab.js} +2 -2
- package/storybook-static/assets/{Textarea-Dj6LQHvv.js → Textarea-WtjTIiyq.js} +1 -1
- package/storybook-static/assets/Textarea.stories-jFSqX_4h.js +17 -0
- package/storybook-static/assets/{TimePanel-BB4DBxJQ.js → TimePanel-B-rvi-xm.js} +1 -1
- package/storybook-static/assets/TimePanel.stories-BQJruT0g.js +14 -0
- package/storybook-static/assets/{Toggle-CZ6VsUj-.js → Toggle-BfRh792z.js} +2 -2
- package/storybook-static/assets/{Toggle-D6bWhfSd.js → Toggle-BkglFvBx.js} +1 -1
- package/storybook-static/assets/Toggle.stories-BonTJbH-.js +25 -0
- package/storybook-static/assets/{TreeMultiSelect-CHWAQAhE.js → TreeMultiSelect-7E1j6lHT.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BRvJJEY_.js → TreeMultiSelect-CKr7kx7s.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-BLkkWrbm.js → TreeMultiSelect.stories-DQ9N-EPu.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-COJUEQlF.js → TreePickerBase-DwoQyBMk.js} +1 -1
- package/storybook-static/assets/{TreeSelect-nFF1HBur.js → TreeSelect-BLc7zLho.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DRmtAxPM.js → TreeSelect-BP_YoVCu.js} +1 -1
- package/storybook-static/assets/TreeSelect.stories-CyurXsU_.js +32 -0
- package/storybook-static/assets/{TreeTable-BRWCFTXn.js → TreeTable-wfgjChnU.js} +3 -3
- package/storybook-static/assets/{TreeTable.stories-BqoNWDPG.js → TreeTable.stories-DUBR67SN.js} +2 -2
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-DQ4Qthn2.js → WithTooltip-CDUNV5IS-mFMh6Qcu.js} +2 -2
- package/storybook-static/assets/{blocks-BohMQTSj.js → blocks-DNj8uFSt.js} +3 -3
- package/storybook-static/assets/{check-D7ID2Deb.js → check-CS2caYIB.js} +1 -1
- package/storybook-static/assets/{chevron-down-DNkLBCIY.js → chevron-down-DXkNPvpX.js} +1 -1
- package/storybook-static/assets/{chevron-left-CdeAAF4x.js → chevron-left-5q-SFjrm.js} +1 -1
- package/storybook-static/assets/{chevron-right-BXx9VPR9.js → chevron-right-u6yLjLrs.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-DRxdZLYI.js → chunk-W22LQPXL-CfJGLIdy.js} +1 -1
- package/storybook-static/assets/{circle-alert-BRmexcKa.js → circle-alert-Cs1OuREv.js} +1 -1
- package/storybook-static/assets/circle-check-Cvppn-HO.js +1 -0
- package/storybook-static/assets/components-B6cPezpK.js +241 -0
- package/storybook-static/assets/{contextMenu-DsJ4tjOh.js → contextMenu-CX8Geuik.js} +1 -1
- package/storybook-static/assets/{defaultRenderers-DfmnIuod.js → defaultRenderers-Dinv2uRZ.js} +1 -1
- package/storybook-static/assets/{download-BM2GUoHT.js → download-DY_RFHLw.js} +1 -1
- package/storybook-static/assets/floating-ui.react-CCV40RlP.js +1 -0
- package/storybook-static/assets/{formatters-D33Uh3si-CxrG0jsB.js → formatters-D33Uh3si-Df97arf9.js} +1 -1
- package/storybook-static/assets/{foundationApi-B9hbYace.js → foundationApi-naPnCFLL.js} +3 -6
- package/storybook-static/assets/{foundationLib-CerWWVvG.js → foundationLib-CSxKMNQk.js} +1 -1
- package/storybook-static/assets/{hooks-DVzTVd_R.js → hooks-CK4me-dJ.js} +1 -1
- package/storybook-static/assets/{iframe-K-XGUe-D.js → iframe-YrfSEgEg.js} +203 -203
- package/storybook-static/assets/iframe-uYND_WUi.js +1 -0
- package/storybook-static/assets/{info-DuSCzhWe.js → info-BEkn6tJB.js} +1 -1
- package/storybook-static/assets/odata-j4p1dw3i.js +1 -0
- package/storybook-static/assets/odata-service-CWkHASdw-CXhFi03v.js +3 -0
- package/storybook-static/assets/{odataStoryFixtures-mZQcAsMK.js → odataStoryFixtures-B_1MKEB-.js} +1 -1
- package/storybook-static/assets/{react-18-D4o7zN8K.js → react-18-EmNFJX4V.js} +1 -1
- package/storybook-static/assets/react-BihcRTyZ.js +9 -0
- package/storybook-static/assets/{refresh-cw-CX2bab9x.js → refresh-cw-uKRX7BI0.js} +1 -1
- package/storybook-static/assets/{settings-2-BJfXo0yn.js → settings-2-DTKuqR8p.js} +1 -1
- package/storybook-static/assets/{sortable-BRu15Ztn.js → sortable-sVqTZjeF.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-Cj45F5T0.js → syntaxhighlighter-QEQV7K2Y-GFZ4bA4u.js} +1 -1
- package/storybook-static/assets/theming-BgT2grXK.js +39 -0
- package/storybook-static/assets/{trash-2-P9F6tNaQ.js → trash-2-C6QVfyTq.js} +1 -1
- package/storybook-static/assets/{triangle-alert-D3Dwx8eQ.js → triangle-alert-DKkTKSAW.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-B6VwzbOR.js → useODataSelectBase-BxPpoJje.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-DXyvta3A.js → useODataTreeData-Ct-ZR8pA.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-Doby770u.js → usePickerQuery-DJMG-4Gl.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-viUgSGjI.js → usePickerTriggerController-DeZhyi9h.js} +1 -1
- package/storybook-static/assets/{x-DIxXnpOQ.js → x-cU42PK2s.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/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +1 -1
- package/storybook-static/sb-manager/globals-runtime.js +5 -2
- package/storybook-static/sb-manager/runtime.js +1 -0
- package/dist/chunks/input-d08WN5FV.js.map +0 -1
- package/dist/chunks/picker-DF_heUIT.js.map +0 -1
- package/storybook-static/assets/Color-6AOWCN3U-DI-APVga.js +0 -1
- package/storybook-static/assets/DateRangePresetSelect.stories-OATiJF6J.js +0 -19
- package/storybook-static/assets/Dialog.stories-2NFJy7ry.js +0 -22
- package/storybook-static/assets/Disclosure.stories-D1XLmlV_.js +0 -23
- package/storybook-static/assets/DropZone.stories-Dm7AK-kr.js +0 -26
- package/storybook-static/assets/ExpandableActionPanel.stories-CJZPlJkO.js +0 -9
- package/storybook-static/assets/ImageCropper.stories-C-MdyLbo.js +0 -131
- package/storybook-static/assets/ImageRenderer.stories-C2_kDlXr.js +0 -34
- package/storybook-static/assets/ImageView.stories-DPiGO3Ky.js +0 -14
- package/storybook-static/assets/Input-BDeY_-Jr.js +0 -3
- package/storybook-static/assets/Input-Db2-9PJZ.css +0 -1
- package/storybook-static/assets/Input.stories-BdtZlToV.js +0 -52
- package/storybook-static/assets/InputFile.stories-CA3m-mhv.js +0 -27
- package/storybook-static/assets/InputFiles.stories-RP0bEium.js +0 -26
- package/storybook-static/assets/InputImage.stories-Yn37tywg.js +0 -56
- package/storybook-static/assets/MultiSelect.stories-DdUxajBC.js +0 -55
- package/storybook-static/assets/PeriodSelect.stories-B6rrRiik.js +0 -50
- package/storybook-static/assets/PresetRangeDateInput.stories-DnIcaxSx.js +0 -3
- package/storybook-static/assets/README-BPMguwxX.js +0 -101
- package/storybook-static/assets/RadioButton.stories-DMiFrv1f.js +0 -32
- package/storybook-static/assets/Select.stories-DFRMbFDX.js +0 -69
- package/storybook-static/assets/StateSelect.stories-Cz-LdiGm.js +0 -59
- package/storybook-static/assets/StringToggle.stories-CLQs9S-2.js +0 -5
- package/storybook-static/assets/Switch.stories-Cc7zwrXS.js +0 -15
- package/storybook-static/assets/TagInput.stories-KFzrqv4v.js +0 -18
- package/storybook-static/assets/Textarea.stories-qerXQk3F.js +0 -17
- package/storybook-static/assets/TimePanel.stories-CtaUQrxC.js +0 -14
- package/storybook-static/assets/Toggle.stories-DbO2-OJd.js +0 -25
- package/storybook-static/assets/TreeSelect.stories-DmkPem76.js +0 -32
- package/storybook-static/assets/circle-check-BRJ_YsFd.js +0 -1
- package/storybook-static/assets/components-Biok6rgP.js +0 -241
- package/storybook-static/assets/floating-ui.react-CBQlgAqp.js +0 -1
- package/storybook-static/assets/iframe-GtVf_5WZ.js +0 -1
- package/storybook-static/assets/odata-D7jdF0bG.js +0 -1
- package/storybook-static/assets/odata-service-CWkHASdw-DlmSiioz.js +0 -3
- package/storybook-static/assets/react-CtcbcJqm.js +0 -9
- package/storybook-static/assets/theming-Cvtrnj7n.js +0 -39
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-d08WN5FV.js","names":[],"sources":["../../src/input/Input.module.scss","../../src/input/lib/useInputFieldIds.ts","../../src/input/Input.tsx","../../src/input/InputErrorComponent.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.controlLayout {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.input {\n\theight: var(--control-height);\n\twidth: 100%;\n\tpadding: var(--space-xs) var(--space-sm);\n\tfont-size: var(--font-size-md);\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n\n\t--button-size: cacl(var(--control-height) - var(--border-width) * 2);\n}\n\n.inputNumber {\n\tappearance: textfield;\n\t-moz-appearance: textfield;\n\n\t&::-webkit-inner-spin-button,\n\t&::-webkit-outer-spin-button {\n\t\t-webkit-appearance: none;\n\t\tmargin: 0;\n\t}\n}\n\n.controlWithEndAdornment {\n\tpadding-right: calc(var(--input-end-adornment-width, var(--control-height)) + var(--space-sm));\n}\n\n.controlEndAdornment {\n\tposition: absolute;\n\theight: 100%;\n\ttop: 0;\n\tright: calc(var(--border-width) * 2);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tmax-width: calc(100% - var(--space-md));\n}\n\n.endAdornmentGroup {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n}\n\n.clearButton {\n\twidth: var(--button-size);\n\theight: var(--button-size);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder: none;\n\tborder-radius: var(--radius-sm);\n\n\tbackground: transparent;\n\tcolor: var(--content-2);\n\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\tbackground-color var(--transition-fast) ease;\n\n\t&:hover {\n\t\tcolor: var(--content-accent);\n\t}\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t}\n\n\t&:disabled {\n\t\tpointer-events: none;\n\t\topacity: var(--disabled-opacity);\n\t}\n}\n\n.error {\n\tposition: absolute;\n\tz-index: 11;\n\tbottom: calc(var(--space-xs) * -1);\n\tleft: 0;\n\tright: 0;\n\ttransform: translateY(100%);\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--status-error-on-fill);\n\tbackground: var(--status-error-fill);\n\tborder-radius: var(--radius-sm);\n\tpadding: var(--space-xs) var(--space-sm);\n\tbox-shadow: var(--shadow-sm);\n\topacity: 0.9;\n}\n","import { useId } from \"react\";\n\nexport interface UseInputFieldIdsOptions {\n\tid?: string;\n\thasLabel?: boolean;\n\thasDescription?: boolean;\n\thasError?: boolean;\n}\n\nexport interface InputFieldIds {\n\tcontrolId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\terrorId?: string;\n\tdescribedBy?: string;\n}\n\nexport function useInputFieldIds({ id: externalId, hasLabel, hasDescription, hasError }: UseInputFieldIdsOptions): InputFieldIds {\n\tconst autoId = useId();\n\tconst controlId = externalId ?? autoId;\n\tconst labelId = hasLabel ? `${controlId}-label` : undefined;\n\tconst descriptionId = hasDescription ? `${controlId}-description` : undefined;\n\tconst errorId = hasError ? `${controlId}-error` : undefined;\n\tconst describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined;\n\n\treturn {\n\t\tcontrolId,\n\t\tlabelId,\n\t\tdescriptionId,\n\t\terrorId,\n\t\tdescribedBy\n\t};\n}\n","import React, { CSSProperties, InputHTMLAttributes, ReactNode, useLayoutEffect, useRef, useState } from \"react\";\n\nimport { toFiniteNumber } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { XIcon } from \"lucide-react\";\n\nimport { UiBaseProps, UiSize } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Input.module.scss\";\nimport { useInputFieldIds } from \"./lib/useInputFieldIds\";\n\nexport interface InputUIProps extends Omit<UiBaseProps<never>, \"value\" | \"onChange\"> {\n\tclassName?: string;\n\terror?: string;\n\tcontrolId?: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\terrorId?: string;\n\trequired?: boolean;\n\tchildren: React.ReactNode;\n}\n\nexport interface InputControlRenderProps {\n\tcontrolClassName?: string;\n}\n\nexport interface InputControlProps {\n\tclassName?: string;\n\tendAdornment?: ReactNode;\n\tendAdornmentClassName?: string;\n\tendAdornmentWidth?: string;\n\tchildren: (props: InputControlRenderProps) => ReactNode;\n}\n\nexport interface InputClearButtonProps {\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tariaLabel?: string;\n}\n\nfunction InputLabel({ label, controlId, labelId }: { label: React.ReactNode; controlId?: string; labelId?: string }) {\n\treturn (\n\t\t<label id={labelId} htmlFor={controlId} className={uiStyles.uiLabel}>\n\t\t\t{label}\n\t\t</label>\n\t);\n}\n\nexport function InputLoadingFrame() {\n\treturn <div className={cn(uiStyles.uiInputControlFake, \"skeletonLine\")} />;\n}\n\nexport function InputUIFrame({\n\tlabel,\n\tdescription,\n\tsize,\n\tdisabled,\n\tisLoading,\n\tclassName\n}: Pick<InputUIProps, \"label\" | \"description\" | \"size\" | \"disabled\" | \"className\"> & { isLoading?: boolean }) {\n\tconst { controlId, labelId, descriptionId } = useInputFieldIds({\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description\n\t});\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, uiStyles.uiSizable, size && uiStyles[size as UiSize], uiStyles.disabled, className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t{label && <InputLabel label={label} controlId={controlId} labelId={labelId} />}\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<div className={cn(uiStyles.uiInputControlFake, isLoading && \"skeletonLine\")} />\n\t\t</div>\n\t);\n}\n\nexport function InputUILoading(props: Pick<InputUIProps, \"label\" | \"description\" | \"size\" | \"disabled\" | \"className\">) {\n\treturn <InputUIFrame {...props} isLoading />;\n}\n\n/**\n * Низкоуровневая оболочка поля ввода с общими элементами оформления.\n */\nexport function InputUI({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\terror,\n\tsize,\n\tcontrolId,\n\tlabelId,\n\tdescriptionId,\n\terrorId,\n\trequired,\n\tchildren\n}: InputUIProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tuiStyles.uiElement,\n\t\t\t\tuiStyles.uiSizable,\n\t\t\t\tsize && uiStyles[size as UiSize],\n\t\t\t\tdisabled && uiStyles.disabled,\n\t\t\t\trequired && uiStyles.required,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t{label && <InputLabel label={label} controlId={controlId} labelId={labelId} />}\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<div className={styles.controlLayout}>\n\t\t\t\t{children}\n\n\t\t\t\t{error && (\n\t\t\t\t\t<p id={errorId} className={styles.error} role=\"alert\">\n\t\t\t\t\t\t{error}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport function InputControl({ className, endAdornment, endAdornmentClassName, endAdornmentWidth, children }: InputControlProps) {\n\tconst hasEndAdornment = endAdornment !== undefined && endAdornment !== null;\n\tconst style =\n\t\thasEndAdornment && endAdornmentWidth ? ({ \"--input-end-adornment-width\": endAdornmentWidth } as CSSProperties) : undefined;\n\n\treturn (\n\t\t<div className={cn(styles.controlLayout, className)} style={style}>\n\t\t\t{children({ controlClassName: hasEndAdornment ? styles.controlWithEndAdornment : undefined })}\n\t\t\t{hasEndAdornment && <div className={cn(styles.controlEndAdornment, endAdornmentClassName)}>{endAdornment}</div>}\n\t\t</div>\n\t);\n}\n\nexport function InputClearButton({ onClick, disabled, className, ariaLabel = \"Очистить значение\" }: InputClearButtonProps) {\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tdisabled={disabled || !onClick}\n\t\t\tclassName={cn(styles.clearButton, className)}\n\t\t\tonClick={onClick}\n\t\t\taria-label={ariaLabel}>\n\t\t\t<XIcon />\n\t\t</button>\n\t);\n}\n\nfunction resolveEndAdornmentWidth(hasAdornment: boolean, hasClearAction: boolean, explicitWidth?: string) {\n\tif (explicitWidth) {\n\t\treturn explicitWidth;\n\t}\n\n\tif (hasAdornment && hasClearAction) {\n\t\treturn \"calc((var(--control-height) * 2) + var(--space-xs))\";\n\t}\n\n\tif (hasAdornment || hasClearAction) {\n\t\treturn \"var(--control-height)\";\n\t}\n\n\treturn undefined;\n}\n\nfunction createEndAdornment({ endAdornment, onClear, disabled }: { endAdornment?: ReactNode; onClear?: () => void; disabled?: boolean }) {\n\tif ((endAdornment === undefined || endAdornment === null) && !onClear) {\n\t\treturn undefined;\n\t}\n\n\treturn (\n\t\t<div className={styles.endAdornmentGroup}>\n\t\t\t{endAdornment}\n\t\t\t{onClear && <InputClearButton onClick={onClear} disabled={disabled} />}\n\t\t</div>\n\t);\n}\n\nexport interface BaseInputProps<T extends number | string | undefined, V = T>\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"value\" | \"type\" | \"defaultValue\" | \"onChange\">, UiBaseProps<T, V> {\n\tonClear?: () => void;\n\terror?: string;\n\tonClearError?: () => void;\n\tdefaultValue?: T;\n\tendAdornment?: ReactNode;\n\tendAdornmentClassName?: string;\n\tendAdornmentWidth?: string;\n}\n\nexport interface InputTextProps extends BaseInputProps<string> {\n\ttype?: \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\";\n\n\t/**\n\t * Регулярное выражение для валидации всего введённого значения.\n\t * При несоответствии поле подсвечивается как невалидное, но текст не удаляется.\n\t * Пример: `/^\\d*$/`\n\t */\n\tallowedPattern?: RegExp;\n}\n\n/**\n * Базовое текстовое поле ввода для строковых значений.\n */\nexport function InputText({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\tonClear,\n\terror,\n\tonClearError,\n\tonChange,\n\tvalue,\n\tsize,\n\tallowedPattern,\n\tendAdornment,\n\tendAdornmentClassName,\n\tendAdornmentWidth,\n\ttype = \"text\",\n\t...props\n}: InputTextProps) {\n\tconst [internalInvalid, setInternalInvalid] = useState(false);\n\n\tconst handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst newValue = e.target.value;\n\n\t\tif (allowedPattern !== undefined) {\n\t\t\tsetInternalInvalid(newValue !== \"\" && !allowedPattern.test(newValue));\n\t\t}\n\n\t\tonChange(newValue);\n\t\tif (error && onClearError) onClearError();\n\t};\n\n\tconst hasValue = Boolean(value && value.length > 0);\n\tconst visibleError = hasValue ? error : undefined;\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: props.id,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!visibleError\n\t});\n\tconst isInvalid = hasValue && (!!error || internalInvalid);\n\tconst resolvedEndAdornment = createEndAdornment({ endAdornment, onClear, disabled: disabled || !hasValue });\n\tconst hasCustomAdornment = endAdornment !== undefined && endAdornment !== null;\n\tconst resolvedEndAdornmentWidth = resolveEndAdornmentWidth(hasCustomAdornment, !!onClear, endAdornmentWidth);\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\trequired={props.required}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={visibleError}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<InputControl\n\t\t\t\tendAdornment={resolvedEndAdornment}\n\t\t\t\tendAdornmentClassName={endAdornmentClassName}\n\t\t\t\tendAdornmentWidth={resolvedEndAdornmentWidth}>\n\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\taria-invalid={isInvalid || undefined}\n\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\tdata-invalid={isInvalid ? \"\" : undefined}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input, controlClassName)}\n\t\t\t\t\t\tonChange={handleInput}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</InputControl>\n\t\t</InputUI>\n\t);\n}\n\n/**\n * Числовое поле ввода с нормализацией значения и защитой от промежуточного невалидного ввода.\n */\nexport function InputNumber({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\tonClear,\n\terror,\n\tonClearError,\n\tonChange,\n\tvalue,\n\tsize,\n\tendAdornment,\n\tendAdornmentClassName,\n\tendAdornmentWidth,\n\t...props\n}: BaseInputProps<number | undefined>) {\n\tconst inputProps = props as InputHTMLAttributes<HTMLInputElement>;\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: props.id,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst numberDraftRef = useRef<{ readonly value: number | undefined; readonly raw: string } | null>(null);\n\tconst externalRawValue = value !== undefined && typeof value === \"number\" && !isNaN(value) ? String(value) : \"\";\n\n\t/**\n\t * Числовой input хранит промежуточную строку в DOM, а controlled number остаётся\n\t * источником истины. Layout-effect синхронизирует именно внешнюю DOM-систему,\n\t * поэтому не создаёт каскадного React render и не ломает ввод неполных чисел.\n\t */\n\tuseLayoutEffect(() => {\n\t\tconst numberDraft = numberDraftRef.current;\n\t\tif (numberDraft && Object.is(numberDraft.value, value)) {\n\t\t\tif (inputRef.current && inputRef.current.value !== numberDraft.raw) {\n\t\t\t\tinputRef.current.value = numberDraft.raw;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tnumberDraftRef.current = null;\n\t\tif (inputRef.current && inputRef.current.value !== externalRawValue) {\n\t\t\tinputRef.current.value = externalRawValue;\n\t\t}\n\t}, [externalRawValue, value]);\n\n\tconst handleClear = onClear\n\t\t? () => {\n\t\t\t\tonClear();\n\t\t\t}\n\t\t: undefined;\n\n\tconst handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst raw = e.target.value;\n\n\t\tconst parsed = toFiniteNumber(raw); // ?? value ?? 0;\n\t\tnumberDraftRef.current = { value: parsed, raw };\n\n\t\tonChange(parsed);\n\t\tif (error && onClearError) onClearError();\n\t};\n\n\tconst resolvedEndAdornment = createEndAdornment({ endAdornment, onClear: handleClear, disabled });\n\tconst hasCustomAdornment = endAdornment !== undefined && endAdornment !== null;\n\tconst resolvedEndAdornmentWidth = resolveEndAdornmentWidth(hasCustomAdornment, !!handleClear, endAdornmentWidth);\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\trequired={props.required}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<InputControl\n\t\t\t\tendAdornment={resolvedEndAdornment}\n\t\t\t\tendAdornmentClassName={endAdornmentClassName}\n\t\t\t\tendAdornmentWidth={resolvedEndAdornmentWidth}>\n\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tinputMode=\"decimal\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tdefaultValue={externalRawValue}\n\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input, styles.inputNumber, controlClassName)}\n\t\t\t\t\t\tonChange={handleInput}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</InputControl>\n\t\t</InputUI>\n\t);\n}\n\n/**\n * Совместимый алиас для `InputText`.\n */\nexport const Input = InputText;\n","import styles from \"../ui.module.scss\";\n\ninterface InputErrorComponentProps {\n\ttext: string;\n}\n\nexport function InputErrorComponent({ text }: InputErrorComponentProps) {\n\treturn <div className={styles.uiErrorElement}>{text}</div>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;ACiBA,SAAgB,EAAiB,EAAE,IAAI,GAAY,aAAU,mBAAgB,eAAoD;CAChI,IAAM,IAAS,EAAM,GACf,IAAY,KAAc,GAC1B,IAAU,IAAW,GAAG,EAAU,UAAU,KAAA,GAC5C,IAAgB,IAAiB,GAAG,EAAU,gBAAgB,KAAA,GAC9D,IAAU,IAAW,GAAG,EAAU,UAAU,KAAA;CAGlD,OAAO;EACN;EACA;EACA;EACA;EACA,aAPmB,CAAC,GAAe,CAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CAQ1E;AACD;;;ACUA,SAAS,EAAW,EAAE,UAAO,cAAW,cAA6E;CACpH,OACC,kBAAC,SAAD;EAAO,IAAI;EAAS,SAAS;EAAW,WAAW,EAAS;EAC1D,UAAA;CACK,CAAA;AAET;AAEA,SAAgB,IAAoB;CACnC,OAAO,kBAAC,OAAD,EAAK,WAAW,EAAG,EAAS,oBAAoB,cAAc,EAAI,CAAA;AAC1E;AAEA,SAAgB,EAAa,EAC5B,UACA,gBACA,SACA,aACA,cACA,gBAC6G;CAC7G,IAAM,EAAE,cAAW,YAAS,qBAAkB,EAAiB;EAC9D,UAAU,KAAiC;EAC3C,gBAAgB,CAAC,CAAC;CACnB,CAAC;CAED,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,EAAS,WAAW,KAAQ,EAAS,IAAiB,EAAS,UAAU,CAAS;EACpH,iBAAe,KAAY,KAAA;EAF5B,UAAA;GAGE,KAAS,kBAAC,GAAD;IAAmB;IAAkB;IAAoB;GAAU,CAAA;GAC5E,KACA,kBAAC,KAAD;IAAG,IAAI;IAAe,WAAW,EAAS;IACxC,UAAA;GACC,CAAA;GAEJ,kBAAC,OAAD,EAAK,WAAW,EAAG,EAAS,oBAAoB,KAAa,cAAc,EAAI,CAAA;EAC3E;;AAEP;AAEA,SAAgB,EAAe,GAAwF;CACtH,OAAO,kBAAC,GAAD;EAAc,GAAI;EAAO,WAAA;CAAW,CAAA;AAC5C;AAKA,SAAgB,EAAQ,EACvB,UACA,gBACA,aACA,cACA,UACA,SACA,cACA,YACA,kBACA,YACA,aACA,eACgB;CAChB,OACC,kBAAC,OAAD;EACC,WAAW,EACV,EAAS,WACT,EAAS,WACT,KAAQ,EAAS,IACjB,KAAY,EAAS,UACrB,KAAY,EAAS,UACrB,CACD;EACA,iBAAe,KAAY,KAAA;EAT5B,UAAA;GAUE,KAAS,kBAAC,GAAD;IAAmB;IAAkB;IAAoB;GAAU,CAAA;GAC5E,KACA,kBAAC,KAAD;IAAG,IAAI;IAAe,WAAW,EAAS;IACxC,UAAA;GACC,CAAA;GAEJ,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAvB,UAAA,CACE,GAEA,KACA,kBAAC,KAAD;KAAG,IAAI;KAAS,WAAW,EAAO;KAAO,MAAK;KAC5C,UAAA;IACC,CAAA,CAEA;;EACD;;AAEP;AAEA,SAAgB,EAAa,EAAE,cAAW,iBAAc,0BAAuB,sBAAmB,eAA+B;CAChI,IAAM,IAAkB,KAA+C,MACjE,IACL,KAAmB,IAAqB,EAAE,+BAA+B,EAAkB,IAAsB,KAAA;CAElH,OACC,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,eAAe,CAAS;EAAU;EAA5D,UAAA,CACE,EAAS,EAAE,kBAAkB,IAAkB,EAAO,0BAA0B,KAAA,EAAU,CAAC,GAC3F,KAAmB,kBAAC,OAAD;GAAK,WAAW,EAAG,EAAO,qBAAqB,CAAqB;GAAI,UAAA;EAAkB,CAAA,CAC1G;;AAEP;AAEA,SAAgB,EAAiB,EAAE,YAAS,aAAU,cAAW,eAAY,uBAA8C;CAC1H,OACC,kBAAC,UAAD;EACC,MAAK;EACL,UAAU,KAAY,CAAC;EACvB,WAAW,EAAG,EAAO,aAAa,CAAS;EAClC;EACT,cAAY;EACZ,UAAA,kBAAC,GAAD,CAAQ,CAAA;CACD,CAAA;AAEV;AAEA,SAAS,EAAyB,GAAuB,GAAyB,GAAwB;CACzG,IAAI,GACH,OAAO;CAGR,IAAI,KAAgB,GACnB,OAAO;CAGR,IAAI,KAAgB,GACnB,OAAO;AAIT;AAEA,SAAS,EAAmB,EAAE,iBAAc,YAAS,eAAoF;CACxI,MAAK,KAA+C,QAAS,CAAC,IAI9D,OACC,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAvB,UAAA,CACE,GACA,KAAW,kBAAC,GAAD;GAAkB,SAAS;GAAmB;EAAW,CAAA,CACjE;;AAEP;AA2BA,SAAgB,EAAU,EACzB,UACA,gBACA,aACA,cACA,YACA,UACA,iBACA,aACA,UACA,SACA,mBACA,iBACA,0BACA,sBACA,UAAO,QACP,GAAG,KACe;CAClB,IAAM,CAAC,GAAiB,KAAsB,EAAS,EAAK,GAEtD,KAAe,MAA2C;EAC/D,IAAM,IAAW,EAAE,OAAO;EAO1B,AALI,MAAmB,KAAA,KACtB,EAAmB,MAAa,MAAM,CAAC,EAAe,KAAK,CAAQ,CAAC,GAGrE,EAAS,CAAQ,GACb,KAAS,KAAc,EAAa;CACzC,GAEM,IAAW,GAAQ,KAAS,EAAM,SAAS,IAC3C,IAAe,IAAW,IAAQ,KAAA,GAClC,EAAE,cAAW,YAAS,kBAAe,YAAS,mBAAgB,EAAiB;EACpF,IAAI,EAAM;EACV,UAAU,KAAiC;EAC3C,gBAAgB,CAAC,CAAC;EAClB,UAAU,CAAC,CAAC;CACb,CAAC,GACK,IAAY,MAAa,CAAC,CAAC,KAAS,IACpC,IAAuB,EAAmB;EAAE;EAAc;EAAS,UAAU,KAAY,CAAC;CAAS,CAAC,GAEpG,IAA4B,EADP,KAA+C,MACK,CAAC,CAAC,GAAS,CAAiB;CAE3G,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACV,UAAU,EAAM;EACL;EACL;EACN,OAAO;EACI;EACF;EACM;EACN;EACT,UAAA,kBAAC,GAAD;GACC,cAAc;GACS;GACvB,mBAAmB;GACjB,WAAA,EAAE,0BACH,kBAAC,SAAD;IACC,GAAI;IACJ,IAAI;IACE;IACI;IACH;IACP,gBAAc,KAAa,KAAA;IAC3B,mBAAiB;IACjB,oBAAkB;IAClB,gBAAc,IAAY,KAAK,KAAA;IAC/B,WAAW,EAAG,EAAS,gBAAgB,EAAO,OAAO,CAAgB;IACrE,UAAU;GACV,CAAA;EAEW,CAAA;CACN,CAAA;AAEX;AAKA,SAAgB,EAAY,EAC3B,UACA,gBACA,aACA,cACA,YACA,UACA,iBACA,aACA,UACA,SACA,iBACA,0BACA,sBACA,GAAG,KACmC;CACtC,IAAM,IAAa,GACb,EAAE,cAAW,YAAS,kBAAe,YAAS,mBAAgB,EAAiB;EACpF,IAAI,EAAM;EACV,UAAU,KAAiC;EAC3C,gBAAgB,CAAC,CAAC;EAClB,UAAU,CAAC,CAAC;CACb,CAAC,GAEK,IAAW,EAAgC,IAAI,GAC/C,IAAiB,EAA4E,IAAI,GACjG,IAAmB,MAAU,KAAA,KAAa,OAAO,KAAU,YAAY,CAAC,MAAM,CAAK,IAAI,OAAO,CAAK,IAAI;CAO7G,QAAsB;EACrB,IAAM,IAAc,EAAe;EACnC,IAAI,KAAe,OAAO,GAAG,EAAY,OAAO,CAAK,GAAG;GACvD,AAAI,EAAS,WAAW,EAAS,QAAQ,UAAU,EAAY,QAC9D,EAAS,QAAQ,QAAQ,EAAY;GAEtC;EACD;EAGA,AADA,EAAe,UAAU,MACrB,EAAS,WAAW,EAAS,QAAQ,UAAU,MAClD,EAAS,QAAQ,QAAQ;CAE3B,GAAG,CAAC,GAAkB,CAAK,CAAC;CAE5B,IAAM,IAAc,UACX;EACN,EAAQ;CACT,IACC,KAAA,GAEG,KAAe,MAA2C;EAC/D,IAAM,IAAM,EAAE,OAAO,OAEf,IAAS,EAAe,CAAG;EAIjC,AAHA,EAAe,UAAU;GAAE,OAAO;GAAQ;EAAI,GAE9C,EAAS,CAAM,GACX,KAAS,KAAc,EAAa;CACzC,GAEM,IAAuB,EAAmB;EAAE;EAAc,SAAS;EAAa;CAAS,CAAC,GAE1F,IAA4B,EADP,KAA+C,MACK,CAAC,CAAC,GAAa,CAAiB;CAE/G,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACV,UAAU,EAAM;EACL;EACL;EACC;EACI;EACF;EACM;EACN;EACT,UAAA,kBAAC,GAAD;GACC,cAAc;GACS;GACvB,mBAAmB;GACjB,WAAA,EAAE,0BACH,kBAAC,SAAD;IACC,GAAI;IACJ,KAAK;IACL,IAAI;IACJ,MAAK;IACL,WAAU;IACA;IACV,cAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,WAAW,EAAG,EAAS,gBAAgB,EAAO,OAAO,EAAO,aAAa,CAAgB;IACzF,UAAU;GACV,CAAA;EAEW,CAAA;CACN,CAAA;AAEX;AAKA,IAAa,IAAQ;;;AC/YrB,SAAgB,EAAoB,EAAE,WAAkC;CACvE,OAAO,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAiB,UAAA;CAAU,CAAA;AAC1D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"picker-DF_heUIT.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/PickerClearButton.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerSelectionToolbar.tsx","../../src/picker/PickerOptions.tsx","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/PickerPlaceholder.ts","../../src/picker/PickerPopup.tsx","../../src/picker/PickerSelectedToken.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/PickerTrigger.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n","import { type MouseEvent } from \"react\";\n\nimport { XIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ntype PickerClearButtonProps = {\n\tdisabled?: boolean;\n\tariaLabel?: string;\n\tonClear: () => void;\n};\n\n/** Единое действие очистки выбранного значения во всех clearable picker-компонентах. */\nexport function PickerClearButton({ disabled, ariaLabel = \"Очистить выбор\", onClear }: PickerClearButtonProps) {\n\tconst stopTriggerInteraction = (event: MouseEvent<HTMLButtonElement>) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tdisabled={disabled}\n\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\tdata-ui=\"picker-clear-button\"\n\t\t\tdata-action=\"clear-picker\"\n\t\t\tonMouseDown={stopTriggerInteraction}\n\t\t\tonClick={(event) => {\n\t\t\t\tstopTriggerInteraction(event);\n\t\t\t\tonClear();\n\t\t\t}}\n\t\t\taria-label={ariaLabel}>\n\t\t\t<XIcon />\n\t\t</button>\n\t);\n}\n","@use \"@/styles/mixins\" as *;\n\n.popupPositioner {\n\t--anchor-gap: var(--space-xs);\n\t--anchor-padding: var(--space-xs);\n\t--anchor-offset: 0;\n\n\tmin-width: 0;\n\tz-index: var(--z-dropdown);\n\tbox-shadow: var(--shadow-md);\n\toverflow: hidden;\n\tdisplay: grid;\n\tgrid-template-rows: minmax(0, 1fr);\n}\n\n.options {\n\t--input-width: min(100vw, var(--base-width, 15em));\n\n\tdisplay: grid;\n\tgrid-template-rows: minmax(0, 1fr);\n\twidth: 100%;\n\tmin-width: var(--input-width);\n\tmin-height: 0;\n\tmax-height: 75vh;\n\n\toverflow: hidden;\n\n\tpadding: var(--space-sm);\n\tbackground-color: var(--surface-0);\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\n\t&:empty {\n\t\tvisibility: hidden;\n\t}\n\n\t&[data-has-toolbar=\"true\"] {\n\t\tgrid-template-rows: auto minmax(0, 1fr);\n\t}\n}\n\n.optionsToolbar {\n\tdisplay: grid;\n\tgap: var(--space-xs);\n\tpadding: var(--space-xs);\n}\n\n.optionsBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--status-error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n\n\t&[data-has-overlay=\"true\"] input {\n\t\t--ui-color: transparent;\n\t\t--ui-color-hover: transparent;\n\t\t--ui-color-active: transparent;\n\n\t\tcolor: transparent;\n\t\tcaret-color: transparent;\n\t\t-webkit-text-fill-color: transparent;\n\t}\n}\n\n.triggerHasClear {\n\t--trigger-count: 2;\n\t// Резервирует в input место для кнопок очистки и открытия списка.\n\t--input-end-adornment-width: calc(var(--control-height) * var(--trigger-count) + var(--space-sm));\n}\n\n.selectedToken {\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) * var(--trigger-count, 1) + var(--space-sm)) 0 var(--space-sm);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tmin-width: 0;\n\tpointer-events: none;\n}\n\n.selectedTokenText {\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n}\n\n@include mobile {\n\t.options {\n\t\t--input-width: calc(100dvw - var(--space-xl));\n\t}\n}\n\n.selectionActionButton {\n\tpadding-block: var(--space-xs);\n\tborder-radius: var(--radius-sm);\n\n\t&:hover {\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n","import { type Ref } from \"react\";\n\nimport { Grid } from \"../grid\";\n\nimport styles from \"./Picker.module.scss\";\n\ntype PickerSelectionToolbarProps = {\n\tonSelectAll: () => void;\n\tonDeselectAll: () => void;\n\tselectAllButtonRef?: Ref<HTMLButtonElement>;\n};\n\n/**\n * Общая панель массовых действий для picker-компонентов с множественным выбором.\n * Компонент не знает формат значения и делегирует изменение владельцу selection-модели.\n */\nexport function PickerSelectionToolbar({ onSelectAll, onDeselectAll, selectAllButtonRef }: PickerSelectionToolbarProps) {\n\treturn (\n\t\t<Grid.Container gap=\"xs\" templateColumns=\"1fr 1fr\">\n\t\t\t<button\n\t\t\t\tref={selectAllButtonRef}\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectionActionButton}\n\t\t\t\tonClick={onSelectAll}\n\t\t\t\tdata-ui=\"picker-select-all\"\n\t\t\t\tdata-action=\"select-all\">\n\t\t\t\tВыбрать все\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectionActionButton}\n\t\t\t\tonClick={onDeselectAll}\n\t\t\t\tdata-ui=\"picker-deselect-all\"\n\t\t\t\tdata-action=\"deselect-all\">\n\t\t\t\tСнять выбор\n\t\t\t</button>\n\t\t</Grid.Container>\n\t);\n}\n","import { type HTMLAttributes, type ReactNode, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\nimport { PickerSelectionToolbar } from \"./PickerSelectionToolbar\";\n\nexport type PickerSelectionActions = {\n\tonSelectAll: () => void;\n\tonDeselectAll: () => void;\n\tselectAllButtonRef?: Ref<HTMLButtonElement>;\n};\n\nexport interface PickerOptionsProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n\trootRef?: Ref<HTMLDivElement>;\n\tchildren: ReactNode;\n\ttoolbar?: ReactNode | false;\n\tselectionActions?: PickerSelectionActions;\n\tlayoutClassName?: string;\n\tbodyClassName?: string;\n\tscrollable?: boolean;\n}\n\n/**\n * Единая оболочка списка опций для picker, listbox и menu. Если переданы\n * selectionActions, но не передан toolbar, компонент показывает стандартные\n * действия выбора и снятия выбора.\n */\nexport function PickerOptions({\n\trootRef,\n\tchildren,\n\ttoolbar,\n\tselectionActions,\n\tlayoutClassName,\n\tbodyClassName,\n\tscrollable = true,\n\tclassName,\n\t...props\n}: PickerOptionsProps) {\n\tconst resolvedToolbar = toolbar === undefined && selectionActions ? <PickerSelectionToolbar {...selectionActions} /> : toolbar || null;\n\n\treturn (\n\t\t<div\n\t\t\t{...props}\n\t\t\tref={rootRef}\n\t\t\tclassName={cn(styles.options, layoutClassName, className)}\n\t\t\tdata-ui=\"picker-options\"\n\t\t\tdata-has-toolbar={resolvedToolbar ? \"true\" : undefined}>\n\t\t\t{resolvedToolbar ? (\n\t\t\t\t<div className={styles.optionsToolbar}>\n\t\t\t\t\t{resolvedToolbar}\n\t\t\t\t\t<Separator />\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<div className={cn(styles.optionsBody, scrollable ? \"scrollable\" : \"overflowHidden\", bodyClassName)}>{children}</div>\n\t\t</div>\n\t);\n}\n","import { isValidElement, type ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node\n\t\t\t.map(extractPickerTextContent)\n\t\t\t.filter((value): value is string => Boolean(value))\n\t\t\t.map((value) => value.trim())\n\t\t\t.filter(Boolean);\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\tif (isValidElement<{ children?: ReactNode; searchText?: unknown }>(node)) {\n\t\tif (typeof node.props.searchText === \"string\") {\n\t\t\treturn node.props.searchText;\n\t\t}\n\n\t\treturn extractPickerTextContent(node.props.children);\n\t}\n\n\treturn undefined;\n}\n","import { type ReactNode } from \"react\";\n\nimport { extractPickerTextContent } from \"./model/extractPickerTextContent\";\n\ntype PickerPlaceholderParams = {\n\tplaceholder?: string;\n\tlabel?: ReactNode;\n\toptionCount: number;\n\tfallback?: string;\n};\n\n/**\n * Формирует единый текст placeholder для picker-компонентов и всегда показывает\n * актуальное количество доступных вариантов.\n */\nexport function getPickerPlaceholder({ placeholder, label, optionCount, fallback = \"Выберите значение\" }: PickerPlaceholderParams) {\n\tconst labelText = extractPickerTextContent(label);\n\tconst text = placeholder ?? labelText ?? fallback;\n\n\treturn `${text} <${optionCount}>`;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport styles from \"./Picker.module.scss\";\nimport { PickerOptions, type PickerSelectionActions } from \"./PickerOptions\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tpopupAriaLabel?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tariaMultiselectable?: boolean;\n\tpopupRole?: \"listbox\" | \"dialog\";\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tmaxWidth?: CSSProperties[\"maxWidth\"];\n\tlayoutClassName?: string;\n\tbodyClassName?: string;\n\ttoolbar?: ReactNode | false;\n\tselectionActions?: PickerSelectionActions;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tpopupAriaLabel,\n\tdescriptionId,\n\tactiveOptionId,\n\tariaMultiselectable,\n\tpopupRole = \"listbox\",\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tmaxWidth,\n\tlayoutClassName,\n\tbodyClassName,\n\ttoolbar,\n\tselectionActions,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={{ ...floatingStyles, maxWidth }}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\trole: popupRole,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-label\": labelId ? undefined : popupAriaLabel,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\t\"aria-multiselectable\": ariaMultiselectable || undefined,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName: styles.popupPositioner\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<PickerOptions\n\t\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t\t\tlayoutClassName={layoutClassName}\n\t\t\t\t\t\t\t\tbodyClassName={bodyClassName}\n\t\t\t\t\t\t\t\ttoolbar={toolbar}\n\t\t\t\t\t\t\t\tselectionActions={selectionActions}\n\t\t\t\t\t\t\t\tscrollable={false}>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</PickerOptions>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./Picker.module.scss\";\n\nexport interface PickerSelectedTokenProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n\tchildren: ReactNode;\n}\n\n/** Единое визуальное представление выбранного значения внутри picker-trigger. */\nexport function PickerSelectedToken({ children, className, ...props }: PickerSelectedTokenProps) {\n\treturn (\n\t\t<span {...props} className={cn(styles.selectedToken, className)} data-ui=\"picker-selected-token\">\n\t\t\t<span className={styles.selectedTokenText}>{children}</span>\n\t\t</span>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\t// loadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl, InputLoadingFrame } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\nexport interface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n\tisLoading?: boolean;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, isLoading, ...props }, ref) => {\n\t\tconst hasOverlay = overlay !== undefined && overlay !== null;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={rootRef}\n\t\t\t\tclassName={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}\n\t\t\t\tdata-has-overlay={hasOverlay || undefined}>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<InputLoadingFrame />\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</InputControl>\n\t\t\t\t\t\t{hasOverlay ? overlay : null}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","import { type ReactNode, type Ref } from \"react\";\n\nimport styles from \"./Picker.module.scss\";\nimport { PickerClearButton } from \"./PickerClearButton\";\nimport { getPickerPlaceholder } from \"./PickerPlaceholder\";\nimport { PickerSelectedToken } from \"./PickerSelectedToken\";\nimport { PickerTriggerActions } from \"./PickerTriggerActions\";\nimport { PickerTriggerInput, type PickerTriggerInputProps } from \"./PickerTriggerInput\";\n\nexport interface PickerTriggerProps extends Omit<PickerTriggerInputProps, \"placeholder\" | \"overlay\" | \"endAdornment\"> {\n\tref?: Ref<HTMLInputElement>;\n\topen: boolean;\n\toptionCount: number;\n\tplaceholder?: string;\n\tlabel?: ReactNode;\n\tplaceholderFallback?: string;\n\tselectedValue?: ReactNode;\n\thasSelection?: boolean;\n\tshowSelectedValue?: boolean;\n\tclearable?: boolean;\n\tonClear?: () => void;\n\tclearAriaLabel?: string;\n\tonToggleMouseDown?: PickerTriggerActionsProps[\"onToggleMouseDown\"];\n\tonToggleClick: PickerTriggerActionsProps[\"onToggleClick\"];\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\ntype PickerTriggerActionsProps = Parameters<typeof PickerTriggerActions>[0];\n\n/**\n * Общая композиция picker-trigger: input, выбранное значение, очистка и кнопка\n * открытия. Владельцы picker-моделей передают только состояние и обработчики.\n */\nexport function PickerTrigger({\n\tref,\n\topen,\n\toptionCount,\n\tplaceholder,\n\tlabel,\n\tplaceholderFallback,\n\tselectedValue,\n\thasSelection,\n\tshowSelectedValue = selectedValue !== undefined && selectedValue !== null,\n\tclearable = false,\n\tonClear,\n\tclearAriaLabel,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel,\n\tcloseAriaLabel,\n\tdisabled,\n\tinputClassName,\n\t...inputProps\n}: PickerTriggerProps) {\n\tconst hasSelectedValue = hasSelection ?? (selectedValue !== undefined && selectedValue !== null);\n\tconst canClear = clearable && hasSelectedValue && onClear !== undefined && !disabled;\n\n\treturn (\n\t\t<PickerTriggerInput\n\t\t\t{...inputProps}\n\t\t\tref={ref}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={\n\t\t\t\tshowSelectedValue ? undefined : getPickerPlaceholder({ placeholder, label, optionCount, fallback: placeholderFallback })\n\t\t\t}\n\t\t\tinputClassName={inputClassName}\n\t\t\trootClassName={clearable ? styles.triggerHasClear : undefined}\n\t\t\toverlay={showSelectedValue ? <PickerSelectedToken>{selectedValue}</PickerSelectedToken> : undefined}\n\t\t\tendAdornment={\n\t\t\t\t<PickerTriggerActions\n\t\t\t\t\topen={open}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonToggleMouseDown={onToggleMouseDown}\n\t\t\t\t\tonToggleClick={onToggleClick}\n\t\t\t\t\topenAriaLabel={openAriaLabel}\n\t\t\t\t\tcloseAriaLabel={closeAriaLabel}>\n\t\t\t\t\t{canClear ? <PickerClearButton ariaLabel={clearAriaLabel} onClear={onClear} /> : null}\n\t\t\t\t</PickerTriggerActions>\n\t\t\t}\n\t\t/>\n\t);\n}\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport {\n\ttype FloatingListboxPlacementStrategy,\n\ttype FloatingListboxSizeResolver,\n\tuseFloatingListbox\n} from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tplacementStrategy?: FloatingListboxPlacementStrategy;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n\tresolveFloatingSize?: FloatingListboxSizeResolver;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Управляет controlled/uncontrolled query и возвращает policy закрытия владельцу open-state.\n * Сброс выполняется самим владельцем в событии close, поэтому hook не зеркалит lifecycle через effect.\n */\nexport function usePickerQuery({ query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\"),\n\t\tresetQueryOnClose: resolvedResetOnClose\n\t};\n}\n","import { useEffect, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{a as r,o as i,s as a}from"./iframe-K-XGUe-D.js";import{r as o,t as s}from"./chunk-QQBDHPVZ-DC5n6Pix.js";import{a as c,u as l}from"./theming-Cvtrnj7n.js";import{I as u,W as d,d as f,n as p,o as m,x as h}from"./components-Biok6rgP.js";function ee(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}function g(){return(g=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function _(e,t){if(e==null)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(i[n]=e[n]);return i}function v(e){var t=(0,x.useRef)(e),n=(0,x.useRef)(function(e){t.current&&t.current(e)});return t.current=e,n.current}function y(e,t,n){var r=v(n),i=(0,x.useState)(function(){return e.toHsva(t)}),a=i[0],o=i[1],s=(0,x.useRef)({color:t,hsva:a});return(0,x.useEffect)(function(){if(!e.equal(t,s.current.color)){var n=e.toHsva(t);s.current={hsva:n,color:t},o(n)}},[t,e]),(0,x.useEffect)(function(){var t;U(a,s.current.hsva)||e.equal(t=e.fromHsva(a),s.current.color)||(s.current={hsva:a,color:t},r(t))},[a,e,r]),[a,(0,x.useCallback)(function(e){o(function(t){return Object.assign({},t,e)})},[])]}var b,x,S,C,w,T,E,D,O,k,te,ne,A,j,M,N,re,ie,P,ae,oe,se,ce,F,I,L,R,le,z,ue,B,V,H,U,W,de,fe,pe,me,G,K,he,ge,_e,ve,ye,be,xe,Se,Ce,we,Te,Ee,De,Oe,ke,Ae,je,Me,q,Ne,Pe,Fe,J,Ie,Le,Y,X,Re,ze,Be,Z,Ve,He,Q,Ue,$,We;function Ge(){return(Ge=t((()=>{o(),a(),b=e(n(),1),h(),d(),x=e(n(),1),c(),S=r({"../../../node_modules/color-name/index.js"(e,t){t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}}),C=r({"../../../node_modules/color-convert/conversions.js"(e,t){var n=S(),r={};for(let e of Object.keys(n))r[n[e]]=e;var i={rgb:{channels:3,labels:`rgb`},hsl:{channels:3,labels:`hsl`},hsv:{channels:3,labels:`hsv`},hwb:{channels:3,labels:`hwb`},cmyk:{channels:4,labels:`cmyk`},xyz:{channels:3,labels:`xyz`},lab:{channels:3,labels:`lab`},lch:{channels:3,labels:`lch`},hex:{channels:1,labels:[`hex`]},keyword:{channels:1,labels:[`keyword`]},ansi16:{channels:1,labels:[`ansi16`]},ansi256:{channels:1,labels:[`ansi256`]},hcg:{channels:3,labels:[`h`,`c`,`g`]},apple:{channels:3,labels:[`r16`,`g16`,`b16`]},gray:{channels:1,labels:[`gray`]}};t.exports=i;for(let e of Object.keys(i)){if(!(`channels`in i[e]))throw Error(`missing channels property: `+e);if(!(`labels`in i[e]))throw Error(`missing channel labels property: `+e);if(i[e].labels.length!==i[e].channels)throw Error(`channel and label counts mismatch: `+e);let{channels:t,labels:n}=i[e];delete i[e].channels,delete i[e].labels,Object.defineProperty(i[e],"channels",{value:t}),Object.defineProperty(i[e],"labels",{value:n})}i.rgb.hsl=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s,c;a===i?s=0:t===a?s=(n-r)/o:n===a?s=2+(r-t)/o:r===a&&(s=4+(t-n)/o),s=Math.min(s*60,360),s<0&&(s+=360);let l=(i+a)/2;return c=a===i?0:l<=.5?o/(a+i):o/(2-a-i),[s,c*100,l*100]},i.rgb.hsv=function(e){let t,n,r,i,a,o=e[0]/255,s=e[1]/255,c=e[2]/255,l=Math.max(o,s,c),u=l-Math.min(o,s,c),d=function(e){return(l-e)/6/u+1/2};return u===0?(i=0,a=0):(a=u/l,t=d(o),n=d(s),r=d(c),o===l?i=r-n:s===l?i=1/3+t-r:c===l&&(i=2/3+n-t),i<0?i+=1:i>1&&--i),[i*360,a*100,l*100]},i.rgb.hwb=function(e){let t=e[0],n=e[1],r=e[2],a=i.rgb.hsl(e)[0],o=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[a,o*100,r*100]},i.rgb.cmyk=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r),a=(1-t-i)/(1-i)||0,o=(1-n-i)/(1-i)||0,s=(1-r-i)/(1-i)||0;return[a*100,o*100,s*100,i*100]};function a(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}i.rgb.keyword=function(e){let t=r[e];if(t)return t;let i=1/0,o;for(let t of Object.keys(n)){let r=n[t],s=a(e,r);s<i&&(i=s,o=t)}return o},i.keyword.rgb=function(e){return n[e]},i.rgb.xyz=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let i=t*.4124+n*.3576+r*.1805,a=t*.2126+n*.7152+r*.0722,o=t*.0193+n*.1192+r*.9505;return[i*100,a*100,o*100]},i.rgb.lab=function(e){let t=i.rgb.xyz(e),n=t[0],r=t[1],a=t[2];return n/=95.047,r/=100,a/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,[116*r-16,500*(n-r),200*(r-a)]},i.hsl.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i,a,o;if(n===0)return o=r*255,[o,o,o];i=r<.5?r*(1+n):r+n-r*n;let s=2*r-i,c=[0,0,0];for(let e=0;e<3;e++)a=t+1/3*-(e-1),a<0&&a++,a>1&&a--,o=6*a<1?s+(i-s)*6*a:2*a<1?i:3*a<2?s+(i-s)*(2/3-a)*6:s,c[e]=o*255;return c},i.hsl.hsv=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=n,a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=a<=1?a:2-a;let o=(r+n)/2;return[t,(r===0?2*i/(a+i):2*n/(r+n))*100,o*100]},i.hsv.rgb=function(e){let t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),s=255*r*(1-n*a),c=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,c,o];case 1:return[s,r,o];case 2:return[o,r,c];case 3:return[o,s,r];case 4:return[c,o,r];case 5:return[r,o,s]}},i.hsv.hsl=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01),a,o;o=(2-n)*r;let s=(2-n)*i;return a=n*i,a/=s<=1?s:2-s,a||=0,o/=2,[t,a*100,o*100]},i.hwb.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i=n+r,a;i>1&&(n/=i,r/=i);let o=Math.floor(6*t),s=1-r;a=6*t-o,o&1&&(a=1-a);let c=n+a*(s-n),l,u,d;switch(o){default:case 6:case 0:l=s,u=c,d=n;break;case 1:l=c,u=s,d=n;break;case 2:l=n,u=s,d=c;break;case 3:l=n,u=c,d=s;break;case 4:l=c,u=n,d=s;break;case 5:l=s,u=n,d=c}return[l*255,u*255,d*255]},i.cmyk.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100,a=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,n*(1-i)+i),s=1-Math.min(1,r*(1-i)+i);return[a*255,o*255,s*255]},i.xyz.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i,a,o;return i=t*3.2406+n*-1.5372+r*-.4986,a=t*-.9689+n*1.8758+r*.0415,o=t*.0557+n*-.204+r*1.057,i=i>.0031308?1.055*i**(1/2.4)-.055:i*12.92,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,i=Math.min(Math.max(0,i),1),a=Math.min(Math.max(0,a),1),o=Math.min(Math.max(0,o),1),[i*255,a*255,o*255]},i.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];return t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,[116*n-16,500*(t-n),200*(n-r)]},i.lab.xyz=function(e){let t=e[0],n=e[1],r=e[2],i,a,o;a=(t+16)/116,i=n/500+a,o=a-r/200;let s=a**3,c=i**3,l=o**3;return a=s>.008856?s:(a-16/116)/7.787,i=c>.008856?c:(i-16/116)/7.787,o=l>.008856?l:(o-16/116)/7.787,i*=95.047,a*=100,o*=108.883,[i,a,o]},i.lab.lch=function(e){let t=e[0],n=e[1],r=e[2],i;return i=Math.atan2(r,n)*360/2/Math.PI,i<0&&(i+=360),[t,Math.sqrt(n*n+r*r),i]},i.lch.lab=function(e){let t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},i.rgb.ansi16=function(e,t=null){let[n,r,a]=e,o=t===null?i.rgb.hsv(e)[2]:t;if(o=Math.round(o/50),o===0)return 30;let s=30+(Math.round(a/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return o===2&&(s+=60),s},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){let t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},i.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let n=(~~(e>50)+1)*.5;return[(t&1)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},i.ansi256.rgb=function(e){if(e>=232){let t=(e-232)*10+8;return[t,t,t]}e-=16;let t;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},i.rgb.hex=function(e){let t=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return`000000`.substring(t.length)+t},i.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=n.split(``).map(e=>e+e).join(``));let r=parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},i.rgb.hcg=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=i-a,s,c;return s=o<1?a/(1-o):0,c=o<=0?0:i===t?(n-r)/o%6:i===n?2+(r-t)/o:4+(t-n)/o,c/=6,c%=1,[c*360,o*100,s*100]},i.hsl.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n),i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],r*100,i*100]},i.hsv.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},i.hcg.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];let i=[0,0,0],a=t%1*6,o=a%1,s=1-o,c=0;switch(Math.floor(a)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return c=(1-n)*r,[(n*i[0]+c)*255,(n*i[1]+c)*255,(n*i[2]+c)*255]},i.hcg.hsv=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],r*100,n*100]},i.hcg.hsl=function(e){let t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],r*100,n*100]},i.hcg.hwb=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],(n-t)*100,(1-n)*100]},i.hwb.hcg=function(e){let t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=function(e){return[0,0,e[0]]},i.gray.hsv=i.gray.hsl,i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return`000000`.substring(n.length)+n},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}}}),w=r({"../../../node_modules/color-convert/route.js"(e,t){var n=C();function r(){let e={},t=Object.keys(n);for(let n=t.length,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function i(e){let t=r(),i=[e];for(t[e].distance=0;i.length;){let e=i.pop(),r=Object.keys(n[e]);for(let n=r.length,a=0;a<n;a++){let n=r[a],o=t[n];o.distance===-1&&(o.distance=t[e].distance+1,o.parent=e,i.unshift(n))}}return t}function a(e,t){return function(n){return t(e(n))}}function o(e,t){let r=[t[e].parent,e],i=n[t[e].parent][e],o=t[e].parent;for(;t[o].parent;)r.unshift(t[o].parent),i=a(n[t[o].parent][o],i),o=t[o].parent;return i.conversion=r,i}t.exports=function(e){let t=i(e),n={},r=Object.keys(t);for(let e=r.length,i=0;i<e;i++){let e=r[i];t[e].parent!==null&&(n[e]=o(e,t))}return n}}}),T=r({"../../../node_modules/color-convert/index.js"(e,t){var n=C(),r=w(),i={},a=Object.keys(n);function o(e){let t=function(...t){let n=t[0];return n==null?n:(n.length>1&&(t=n),e(t))};return`conversion`in e&&(t.conversion=e.conversion),t}function s(e){let t=function(...t){let n=t[0];if(n==null)return n;n.length>1&&(t=n);let r=e(t);if(typeof r==`object`)for(let e=r.length,t=0;t<e;t++)r[t]=Math.round(r[t]);return r};return`conversion`in e&&(t.conversion=e.conversion),t}a.forEach(e=>{i[e]={},Object.defineProperty(i[e],"channels",{value:n[e].channels}),Object.defineProperty(i[e],"labels",{value:n[e].labels});let t=r(e);Object.keys(t).forEach(n=>{let r=t[n];i[e][n]=s(r),i[e][n].raw=o(r)})}),t.exports=i}}),E=i(T(),1),D=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e<t?t:e},O=function(e){return`touches`in e},k=function(e){return e&&e.ownerDocument.defaultView||self},te=function(e,t,n){var r=e.getBoundingClientRect(),i=O(t)?(function(e,t){for(var n=0;n<e.length;n++)if(e[n].identifier===t)return e[n];return e[0]})(t.touches,n):t;return{left:D((i.pageX-(r.left+k(e).pageXOffset))/r.width),top:D((i.pageY-(r.top+k(e).pageYOffset))/r.height)}},ne=function(e){!O(e)&&e.preventDefault()},A=x.memo(function(e){var t=e.onMove,n=e.onKey,r=_(e,[`onMove`,`onKey`]),i=(0,x.useRef)(null),a=v(t),o=v(n),s=(0,x.useRef)(null),c=(0,x.useRef)(!1),l=(0,x.useMemo)(function(){var e=function(e){ne(e),(O(e)?e.touches.length>0:e.buttons>0)&&i.current?a(te(i.current,e,s.current)):n(!1)},t=function(){return n(!1)};function n(n){var r=c.current,a=k(i.current),o=n?a.addEventListener:a.removeEventListener;o(r?`touchmove`:`mousemove`,e),o(r?`touchend`:`mouseup`,t)}return[function(e){var t=e.nativeEvent,r=i.current;if(r&&(ne(t),!(function(e,t){return t&&!O(e)})(t,c.current)&&r)){if(O(t)){c.current=!0;var o=t.changedTouches||[];o.length&&(s.current=o[0].identifier)}r.focus(),a(te(r,t,s.current)),n(!0)}},function(e){var t=e.which||e.keyCode;t<37||t>40||(e.preventDefault(),o({left:t===39?.05:t===37?-.05:0,top:t===40?.05:t===38?-.05:0}))},n]},[o,a]),u=l[0],d=l[1],f=l[2];return(0,x.useEffect)(function(){return f},[f]),x.createElement(`div`,g({},r,{onTouchStart:u,onMouseDown:u,className:`react-colorful__interactive`,ref:i,onKeyDown:d,tabIndex:0,role:`slider`}))}),j=function(e){return e.filter(Boolean).join(` `)},M=function(e){var t=e.color,n=e.left,r=e.top,i=r===void 0?.5:r,a=j([`react-colorful__pointer`,e.className]);return x.createElement(`div`,{className:a,style:{top:100*i+`%`,left:100*n+`%`}},x.createElement(`div`,{className:`react-colorful__pointer-fill`,style:{backgroundColor:t}}))},N=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=10**t),Math.round(n*e)/n},re={grad:.9,turn:360,rad:360/(2*Math.PI)},ie=function(e){return B(P(e))},P=function(e){return e[0]===`#`&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?N(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:e.length===8?N(parseInt(e.substring(6,8),16)/255,2):1}},ae=function(e,t){return t===void 0&&(t=`deg`),Number(e)*(re[t]||1)},oe=function(e){var t=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?se({h:ae(t[1],t[2]),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)}):{h:0,s:0,v:0,a:1}},se=function(e){var t=e.s,n=e.l;return{h:e.h,s:(t*=(n<50?n:100-n)/100)>0?2*t/(n+t)*100:0,v:n+t,a:e.a}},ce=function(e){return ue(R(e))},F=function(e){var t=e.s,n=e.v,r=e.a,i=(200-t)*n/100;return{h:N(e.h),s:N(i>0&&i<200?t*n/100/(i<=100?i:200-i)*100:0),l:N(i/2),a:N(r,2)}},I=function(e){var t=F(e);return`hsl(`+t.h+`, `+t.s+`%, `+t.l+`%)`},L=function(e){var t=F(e);return`hsla(`+t.h+`, `+t.s+`%, `+t.l+`%, `+t.a+`)`},R=function(e){var t=e.h,n=e.s,r=e.v,i=e.a;t=t/360*6,n/=100,r/=100;var a=Math.floor(t),o=r*(1-n),s=r*(1-(t-a)*n),c=r*(1-(1-t+a)*n),l=a%6;return{r:N(255*[r,s,o,o,c,r][l]),g:N(255*[c,r,r,s,o,o][l]),b:N(255*[o,o,c,r,r,s][l]),a:N(i,2)}},le=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?B({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}},z=function(e){var t=e.toString(16);return t.length<2?`0`+t:t},ue=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,a=i<1?z(N(255*i)):``;return`#`+z(t)+z(n)+z(r)+a},B=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,a=Math.max(t,n,r),o=a-Math.min(t,n,r),s=o?a===t?(n-r)/o:a===n?2+(r-t)/o:4+(t-n)/o:0;return{h:N(60*(s<0?s+6:s)),s:N(a?o/a*100:0),v:N(a/255*100),a:i}},V=x.memo(function(e){var t=e.hue,n=e.onChange,r=j([`react-colorful__hue`,e.className]);return x.createElement(`div`,{className:r},x.createElement(A,{onMove:function(e){n({h:360*e.left})},onKey:function(e){n({h:D(t+360*e.left,0,360)})},"aria-label":`Hue`,"aria-valuenow":N(t),"aria-valuemax":`360`,"aria-valuemin":`0`},x.createElement(M,{className:`react-colorful__hue-pointer`,left:t/360,color:I({h:t,s:100,v:100,a:1})})))}),H=x.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:I({h:t.h,s:100,v:100,a:1})};return x.createElement(`div`,{className:`react-colorful__saturation`,style:r},x.createElement(A,{onMove:function(e){n({s:100*e.left,v:100-100*e.top})},onKey:function(e){n({s:D(t.s+100*e.left,0,100),v:D(t.v-100*e.top,0,100)})},"aria-label":`Color`,"aria-valuetext":`Saturation `+N(t.s)+`%, Brightness `+N(t.v)+`%`},x.createElement(M,{className:`react-colorful__saturation-pointer`,top:1-t.v/100,left:t.s/100,color:I(t)})))}),U=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0},W=function(e,t){return e.replace(/\s/g,``)===t.replace(/\s/g,``)},de=function(e,t){return e.toLowerCase()===t.toLowerCase()||U(P(e),P(t))},pe=typeof window<`u`?x.useLayoutEffect:x.useEffect,me=function(){return fe||(typeof __webpack_nonce__<`u`?__webpack_nonce__:void 0)},G=new Map,K=function(e){pe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!G.has(t)){var n=t.createElement(`style`);n.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,G.set(t,n);var r=me();r&&n.setAttribute(`nonce`,r),t.head.appendChild(n)}},[])},he=function(e){var t=e.className,n=e.colorModel,r=e.color,i=r===void 0?n.defaultColor:r,a=e.onChange,o=_(e,[`className`,`colorModel`,`color`,`onChange`]),s=(0,x.useRef)(null);K(s);var c=y(n,i,a),l=c[0],u=c[1],d=j([`react-colorful`,t]);return x.createElement(`div`,g({},o,{ref:s,className:d}),x.createElement(H,{hsva:l,onChange:u}),x.createElement(V,{hue:l.h,onChange:u,className:`react-colorful__last-control`}))},ge={defaultColor:`000`,toHsva:ie,fromHsva:function(e){return ce({h:e.h,s:e.s,v:e.v,a:1})},equal:de},_e=function(e){return x.createElement(he,g({},e,{colorModel:ge}))},ve=function(e){var t=e.className,n=e.hsva,r=e.onChange,i={backgroundImage:`linear-gradient(90deg, `+L(Object.assign({},n,{a:0}))+`, `+L(Object.assign({},n,{a:1}))+`)`},a=j([`react-colorful__alpha`,t]),o=N(100*n.a);return x.createElement(`div`,{className:a},x.createElement(`div`,{className:`react-colorful__alpha-gradient`,style:i}),x.createElement(A,{onMove:function(e){r({a:e.left})},onKey:function(e){r({a:D(n.a+e.left)})},"aria-label":`Alpha`,"aria-valuetext":o+`%`,"aria-valuenow":o,"aria-valuemin":`0`,"aria-valuemax":`100`},x.createElement(M,{className:`react-colorful__alpha-pointer`,left:n.a,color:L(n)})))},ye=function(e){var t=e.className,n=e.colorModel,r=e.color,i=r===void 0?n.defaultColor:r,a=e.onChange,o=_(e,[`className`,`colorModel`,`color`,`onChange`]),s=(0,x.useRef)(null);K(s);var c=y(n,i,a),l=c[0],u=c[1],d=j([`react-colorful`,t]);return x.createElement(`div`,g({},o,{ref:s,className:d}),x.createElement(H,{hsva:l,onChange:u}),x.createElement(V,{hue:l.h,onChange:u}),x.createElement(ve,{hsva:l,onChange:u,className:`react-colorful__last-control`}))},be={defaultColor:`hsla(0, 0%, 0%, 1)`,toHsva:oe,fromHsva:L,equal:W},xe=function(e){return x.createElement(ye,g({},e,{colorModel:be}))},Se={defaultColor:`rgba(0, 0, 0, 1)`,toHsva:le,fromHsva:function(e){var t=R(e);return`rgba(`+t.r+`, `+t.g+`, `+t.b+`, `+t.a+`)`},equal:W},Ce=function(e){return x.createElement(ye,g({},e,{colorModel:Se}))},we=l.div({position:`relative`,maxWidth:250}),Te=l.div({width:200,margin:5,".react-colorful__saturation":{borderRadius:`4px 4px 0 0`},".react-colorful__hue":{boxShadow:`inset 0 0 0 1px rgb(0 0 0 / 5%)`},".react-colorful__last-control":{borderRadius:`0 0 4px 4px`}}),Ee=l.div({display:`grid`,gridTemplateColumns:`repeat(9, 16px)`,gap:6,padding:3,marginTop:5,width:200}),De=e=>`url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity="0.05" fill="${e?`white`:`black`}"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')`,Oe=l(p)(({value:e,selected:t,theme:n})=>({width:16,height:16,boxShadow:t?`${n.appBorderColor} 0 0 0 1px inset, ${n.textMutedColor}50 0 0 0 4px`:`${n.appBorderColor} 0 0 0 1px inset`,border:`none`,borderRadius:n.appBorderRadius,"&, &:hover":{background:`unset`,backgroundColor:`unset`,backgroundImage:`linear-gradient(${e}, ${e}), ${De(n.base===`dark`)}`}})),ke=l(m.Input)(({theme:e})=>({width:`100%`,paddingLeft:30,paddingRight:30,boxSizing:`border-box`,fontFamily:e.typography.fonts.base,'[aria-readonly="true"] > &':{background:e.base===`light`?e.color.lighter:`transparent`}})),Ae=l(Oe)(({disabled:e})=>({position:`absolute`,top:4,left:4,zIndex:1,cursor:e?`not-allowed`:`pointer`})),je=l(p)(({theme:e})=>({position:`absolute`,zIndex:1,top:6,right:7,width:20,height:20,padding:4,boxSizing:`border-box`,cursor:`pointer`,color:e.input.color})),Me=(e=>(e.RGB=`rgb`,e.HSL=`hsl`,e.HEX=`hex`,e))(Me||{}),q=Object.values(Me),Ne=/\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,Pe=/^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,Fe=/^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,J=/^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,Ie=/^\s*#?([0-9a-f]{3})\s*$/i,Le={hex:_e,rgb:Ce,hsl:xe},Y={hex:`transparent`,rgb:`rgba(0, 0, 0, 0)`,hsl:`hsla(0, 0%, 0%, 0)`},X=e=>{let t=e?.match(Ne);if(!t)return[0,0,0,1];let[,n,r,i,a=1]=t;return[n,r,i,a].map(Number)},Re=e=>{let[t,n,r,i]=X(e),[a,o,s]=E.default.rgb.hsl([t,n,r])||[0,0,0];return{valid:!0,value:e,keyword:E.default.rgb.keyword([t,n,r]),colorSpace:`rgb`,rgb:e,hsl:`hsla(${a}, ${o}%, ${s}%, ${i})`,hex:`#${E.default.rgb.hex([t,n,r]).toLowerCase()}`}},ze=e=>{let[t,n,r,i]=X(e),[a,o,s]=E.default.hsl.rgb([t,n,r])||[0,0,0];return{valid:!0,value:e,keyword:E.default.hsl.keyword([t,n,r]),colorSpace:`hsl`,rgb:`rgba(${a}, ${o}, ${s}, ${i})`,hsl:e,hex:`#${E.default.hsl.hex([t,n,r]).toLowerCase()}`}},Be=e=>{let t=e.replace(`#`,``),n=E.default.keyword.rgb(t)||E.default.hex.rgb(t),r=E.default.rgb.hsl(n),i=e;/[^#a-f0-9]/i.test(e)?i=t:J.test(e)&&(i=`#${t}`);let a=!0;if(i.startsWith(`#`))a=J.test(i);else try{E.default.keyword.hex(i)}catch{a=!1}return{valid:a,value:i,keyword:E.default.rgb.keyword(n),colorSpace:`hex`,rgb:`rgba(${n[0]}, ${n[1]}, ${n[2]}, 1)`,hsl:`hsla(${r[0]}, ${r[1]}%, ${r[2]}%, 1)`,hex:i}},Z=e=>{if(e)return Pe.test(e)?Re(e):Fe.test(e)?ze(e):Be(e)},Ve=(e,t,n)=>{if(!e||!t?.valid)return Y[n];if(n!==`hex`)return t?.[n]||Y[n];if(!t.hex.startsWith(`#`))try{return`#${E.default.keyword.hex(t.hex)}`}catch{return Y.hex}let r=t.hex.match(Ie);if(!r)return J.test(t.hex)?t.hex:Y.hex;let[i,a,o]=r[1].split(``);return`#${i}${i}${a}${a}${o}${o}`},He=(e,t)=>{let[n,r]=(0,b.useState)(e||``),[i,a]=(0,b.useState)(()=>Z(n)),[o,s]=(0,b.useState)(i?.colorSpace||`hex`);return(0,b.useEffect)(()=>{let t=e||``,n=Z(t);r(t),a(n),s(n?.colorSpace||`hex`)},[e]),{value:n,realValue:(0,b.useMemo)(()=>Ve(n,i,o).toLowerCase(),[n,i,o]),updateValue:(0,b.useCallback)(e=>{let n=Z(e),i=n?.value||e||``;r(i),i===``&&(a(void 0),t(void 0)),n&&(a(n),s(n.colorSpace),t(n.value))},[t]),color:i,colorSpace:o,cycleColorSpace:(0,b.useCallback)(()=>{let e=q[(q.indexOf(o)+1)%q.length];s(e);let n=i?.[e]||``;r(n),t(n)},[i,o,t])}},Q=e=>e.replace(/\s*/,``).toLowerCase(),Ue=(e,t,n,r=27)=>{let[i,a]=(0,b.useState)(t?.valid?[t]:[]);(0,b.useEffect)(()=>{t===void 0&&a([])},[t]);let o=(0,b.useMemo)(()=>{let t=(e||[]).map(e=>typeof e==`string`?Z(e):e.title?{...Z(e.color),keyword:e.title}:Z(e.color)).concat(i).filter(Boolean);if(r===0||r===1/0)return t;let n=Number.isInteger(r)&&r>0?r:27;return t.slice(-n)},[e,i,r]);return{presets:o,addPreset:(0,b.useCallback)(e=>{e?.valid&&(o.some(t=>t&&t[n]&&Q(t[n]||``)===Q(e[n]||``))||a(t=>t.concat(e)))},[n,o])}},$=({name:e,storyId:t,controlsId:n,value:r,onChange:i,onFocus:a,onBlur:o,presetColors:c,maxPresetColors:l,startOpen:d=!1,argType:p,required:m})=>{let{value:h,realValue:g,updateValue:_,color:v,colorSpace:y,cycleColorSpace:x}=He(r,(0,b.useCallback)(ee(i,200),[i])),{presets:S,addPreset:C}=Ue(c??[],v,y,l),w=Le[y],T=!!p?.table?.readonly,E=s(e,t,n);return b.createElement(we,null,b.createElement(`label`,{htmlFor:E,className:`sb-sr-only`},e),b.createElement(ke,{id:E,value:h,onChange:e=>_(e.target.value),onFocus:e=>e.target.select(),readOnly:T,"aria-required":m||void 0,placeholder:`Choose color...`}),b.createElement(f,{ariaLabel:`Color picker`,defaultVisible:d,visible:!T&&void 0,onVisibleChange:()=>v&&C(v),popover:b.createElement(Te,null,b.createElement(w,{color:g===`transparent`?`#000000`:g,onChange:_,onFocus:a,onBlur:o}),S.length>0&&b.createElement(Ee,null,S.map((e,t)=>b.createElement(Oe,{key:`${e?.value||t}-${t}`,variant:`ghost`,padding:`small`,size:`small`,ariaLabel:`Pick this color`,tooltip:e?.keyword||e?.value||``,value:e?.value||``,selected:!!(v&&e&&e[y]&&Q(e[y]||``)===Q(v[y])),onClick:()=>e&&_(e.value||``)}))))},b.createElement(Ae,{variant:`ghost`,padding:`small`,size:`small`,ariaLabel:`Open color picker`,value:g,style:{margin:4},disabled:T})),h?b.createElement(je,{variant:`ghost`,padding:`small`,size:`small`,ariaLabel:`Cycle through color spaces`,disabled:T,onClick:T?void 0:x},b.createElement(u,null)):null)},We=$})))()}Ge();export{$ as ColorControl,We as default};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-K-XGUe-D.js";import{n as r,t as i}from"./GridContainer-fKYgDsLl.js";import{r as a,t as o}from"./DateInput-C3lNtiZJ.js";import{a as s,i as c,l,n as u,t as d}from"./DateRangePresetSelect-erSbZygb.js";var f=t({Default:()=>v,__namedExportsOrder:()=>y,default:()=>_}),p,m,h,g,_,v,y;function b(){return(b=e((()=>{a(),r(),u(),s(),p=n(),{useArgs:m,useState:h}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:g}=__STORYBOOK_MODULE_TEST__,_={title:`Shared/UI/DateRangePresetSelect`,component:d,args:{label:`Пресет диапазона`,placeholder:`Выберите пресет`,value:`monthStartToToday`,onChange:g(),options:c,referenceDate:new Date(2026,2,10,12,0,0),onRangeChange:g(),disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок выбора пресета.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, который показывается до выбора пресета.`,control:`text`},value:{description:`ID активного пресета диапазона.`,control:`select`,options:c.map(e=>e.id)},onChange:{description:`Вызывается с ID выбранного пресета.`,control:!1},options:{description:`Кастомный каталог пресетов с функциями вычисления диапазона.`,control:!1},referenceDate:{description:`Опорная дата, относительно которой вычисляется диапазон пресета.`,control:`date`},onRangeChange:{description:`Вызывается с вычисленным диапазоном активного пресета.`,control:!1},disabled:{description:`Блокирует выбор пресета.`,control:`boolean`},size:{description:`Размер поля и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},v={render:function(e){let[,t]=m(),[n,r]=h(()=>l(e.value,e.referenceDate,e.options)?.range??null);return(0,p.jsxs)(i,{gap:`md`,children:[(0,p.jsx)(d,{...e,onChange:n=>{e.onChange(n),t({value:n})},onRangeChange:t=>{e.onRangeChange?.(t),r(t?.range??null)}}),(0,p.jsx)(o,{label:`Диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:n,onChange:r})]})}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: function Render(args) {
|
|
3
|
-
const [, updateArgs] = useArgs<DateRangePresetSelectProps>();
|
|
4
|
-
const [range, setRange] = useStorybookState<DateRangePresetChangePayload["range"] | null>(() => resolveDateRangePresetPayload(args.value, args.referenceDate, args.options)?.range ?? null);
|
|
5
|
-
return <GridContainer gap="md">
|
|
6
|
-
<DateRangePresetSelect {...args} onChange={value => {
|
|
7
|
-
args.onChange(value);
|
|
8
|
-
updateArgs({
|
|
9
|
-
value
|
|
10
|
-
});
|
|
11
|
-
}} onRangeChange={payload => {
|
|
12
|
-
args.onRangeChange?.(payload);
|
|
13
|
-
setRange(payload?.range ?? null);
|
|
14
|
-
}} />
|
|
15
|
-
|
|
16
|
-
<RangeDateInput label="Диапазон дат" placeholder="дд.мм.гггг - дд.мм.гггг" value={range} onChange={setRange} />
|
|
17
|
-
</GridContainer>;
|
|
18
|
-
}
|
|
19
|
-
}`,...v.parameters?.docs?.source},description:{story:`Демонстрирует связку выбора пресета и ручного диапазона дат.`,...v.parameters?.docs?.description}}},y=[`Default`]})))()}export{v as n,b as r,f as t};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-K-XGUe-D.js";import{n as r,t as i}from"./Button-Ch-WQXxt.js";import{n as a,t as o}from"./createControlledStoryRender-BouhvX-R.js";import{n as s,t as c}from"./Dialog-BkxPSokc.js";var l=t({Controlled:()=>h,Opened:()=>g,__namedExportsOrder:()=>_,default:()=>m});function u({args:e,updateArgs:t,children:n}){let r=()=>{e.onClose(),t({open:!1})};return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(i,{onClick:()=>t({open:!0}),children:`Открыть диалог`}),(0,f.jsx)(c,{...e,open:e.open,onClose:r,children:e.children??n(r)})]})}function d(e){return o((t,n)=>(0,f.jsx)(u,{args:t,updateArgs:n,children:e}))}var f,p,m,h,g,_;function v(){return(v=e((()=>{r(),a(),s(),f=n(),{fn:p}=__STORYBOOK_MODULE_TEST__,m={title:`Shared/UI/Dialog`,component:c,args:{title:`Подтверждение операции`,description:`Проверьте параметры перед выполнением действия.`,open:!1,onClose:p(),minWidth:360,children:null},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок диалогового окна.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},open:{description:`Управляет видимостью диалога.`,control:`boolean`},onClose:{description:`Вызывается при закрытии диалога.`,control:!1},minWidth:{description:`Минимальная ширина контейнера окна в CSS-единицах или пикселях.`,control:`text`},children:{description:`Контент внутри диалогового окна.`,control:!1}}},h={render:d(e=>(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`p`,{children:`Подтвердите выполнение действия.`}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,f.jsx)(i,{variant:`transparent`,onClick:e,children:`Отмена`}),(0,f.jsx)(i,{variant:`success`,onClick:e,children:`Подтвердить`})]})]}))},g={args:{open:!0},render:d(()=>(0,f.jsx)(`div`,{children:`Диалог изначально открыт для демонстрации верстки.`}))},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: createDialogStoryRender(close => <div>
|
|
3
|
-
<p>Подтвердите выполнение действия.</p>
|
|
4
|
-
<div style={{
|
|
5
|
-
display: "flex",
|
|
6
|
-
gap: 8,
|
|
7
|
-
justifyContent: "flex-end"
|
|
8
|
-
}}>
|
|
9
|
-
<Button variant="transparent" onClick={close}>
|
|
10
|
-
Отмена
|
|
11
|
-
</Button>
|
|
12
|
-
<Button variant="success" onClick={close}>
|
|
13
|
-
Подтвердить
|
|
14
|
-
</Button>
|
|
15
|
-
</div>
|
|
16
|
-
</div>)
|
|
17
|
-
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
18
|
-
args: {
|
|
19
|
-
open: true
|
|
20
|
-
},
|
|
21
|
-
render: createDialogStoryRender(() => <div>Диалог изначально открыт для демонстрации верстки.</div>)
|
|
22
|
-
}`,...g.parameters?.docs?.source}}},_=[`Controlled`,`Opened`]})))()}export{v as i,l as n,g as r,h as t};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{i as n,n as r,r as i,t as a}from"./DisclosureGroup-C76Vffsk.js";import{n as o}from"./iframe-K-XGUe-D.js";import{n as s,t as c}from"./Button-Ch-WQXxt.js";import{n as l,t as u}from"./createControlledStoryRender-BouhvX-R.js";var d=t({Basic:()=>g,Group:()=>v,HeaderActions:()=>_,__namedExportsOrder:()=>y,default:()=>p}),f,p,m,h,g,_,v,y;function b(){return(b=e((()=>{s(),l(),n(),r(),f=o(),p={title:`Shared/UI/Disclosure`,component:i,args:{label:`Раздел`,defaultOpen:!1,children:(0,f.jsx)(`p`,{children:`Содержимое панели раскрытия.`})},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок кнопки раскрытия.`,control:`text`},defaultOpen:{description:`Начальное состояние (открыт/закрыт). Изменение аргумента перемонтирует демонстрационный экземпляр.`,control:`boolean`},headerActions:{description:`Независимые действия в правой части заголовка.`,control:!1},children:{description:`Контент, который показывается в раскрытой панели.`,control:!1}}},m=u(e=>(0,f.jsx)(i,{...e},`disclosure-${String(e.defaultOpen)}`)),h=u(e=>(0,f.jsxs)(a,{children:[(0,f.jsx)(i,{...e},`search-${String(e.defaultOpen)}`),(0,f.jsx)(i,{label:`Сортировка`,children:(0,f.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,f.jsx)(`span`,{children:`Поле: Дата создания`}),(0,f.jsx)(`span`,{children:`Порядок: По убыванию`})]})}),(0,f.jsx)(i,{label:`Дополнительные фильтры`,children:(0,f.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,f.jsx)(`span`,{children:`Только активные`}),(0,f.jsx)(`span`,{children:`Без архивных записей`})]})})]})),g={render:m},_={args:{headerActions:(0,f.jsx)(c,{variant:`transparent`,onClick:()=>void 0,children:`Очистить`})},render:m},v={args:{label:`Параметры поиска`,defaultOpen:!0,children:(0,f.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,f.jsx)(`span`,{children:`Период: март 2026`}),(0,f.jsx)(`span`,{children:`Регион: Урал`})]})},render:h},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: renderDisclosureStory
|
|
3
|
-
}`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
|
|
4
|
-
args: {
|
|
5
|
-
headerActions: <Button variant="transparent" onClick={() => undefined}>
|
|
6
|
-
Очистить
|
|
7
|
-
</Button>
|
|
8
|
-
},
|
|
9
|
-
render: renderDisclosureStory
|
|
10
|
-
}`,..._.parameters?.docs?.source}}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
|
|
11
|
-
args: {
|
|
12
|
-
label: "Параметры поиска",
|
|
13
|
-
defaultOpen: true,
|
|
14
|
-
children: <div style={{
|
|
15
|
-
display: "grid",
|
|
16
|
-
gap: 8
|
|
17
|
-
}}>
|
|
18
|
-
<span>Период: март 2026</span>
|
|
19
|
-
<span>Регион: Урал</span>
|
|
20
|
-
</div>
|
|
21
|
-
},
|
|
22
|
-
render: renderDisclosureGroupStory
|
|
23
|
-
}`,...v.parameters?.docs?.source}}},y=[`Basic`,`HeaderActions`,`Group`]})))()}export{b as a,_ as i,d as n,v as r,g as t};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./DropZone-D8ce83Dp.js";import{i,n as a,r as o}from"./iframe-K-XGUe-D.js";import{n as s,t as c}from"./createControlledStoryRender-BouhvX-R.js";var l,u;function d(){return(d=e((()=>{i(),l=[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]],u=o(`cloud-upload`,l)})))()}var f=t({Basic:()=>_,Disabled:()=>y,SingleFile:()=>v,__namedExportsOrder:()=>b,default:()=>g});function p({showStatus:e=!1,children:t}={}){return c((n,i)=>(0,m.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,m.jsx)(r,{...n,onChange:e=>{n.onChange(e),i({value:e})},children:t??n.children}),e&&(0,m.jsx)(`div`,{style:{fontSize:14},children:n.value.length>0?`Получено файлов: ${n.value.length}`:`Перетащите файл(ы) в область выше`})]}))}var m,h,g,_,v,y,b;function x(){return(x=e((()=>{d(),s(),n(),m=a(),{fn:h}=__STORYBOOK_MODULE_TEST__,g={title:`Shared/UI/DropZone`,component:r,args:{value:[],onChange:h(),onChangeError:h(),multiple:!0,readMode:`data-url`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{value:{description:`Текущий массив успешно прочитанных файлов.`,control:!1},onChange:{description:`Вызывается с массивом успешно прочитанных файлов.`,control:!1},onChangeError:{description:`Вызывается при ошибке валидации или чтения файла.`,control:!1},accept:{description:`Допустимые расширения или MIME-типы для нативного input.`,control:`object`},allowedMime:{description:`Список допустимых MIME-типов для проверки.`,control:`object`},maxBytes:{description:`Максимальный размер одного файла в байтах.`,control:`number`},readMode:{description:`Режим чтения файлов: data-url или array-buffer.`,control:`inline-radio`,options:[`data-url`,`array-buffer`]},multiple:{description:`Разрешает принимать несколько файлов за один drop.`,control:`boolean`},disabled:{description:`Блокирует зону и обработку drop-событий.`,control:`boolean`},children:{description:`Кастомный контент внутри drop-зоны.`,control:!1}}},_={render:p({showStatus:!0})},v={render:p({children:(0,m.jsxs)(`div`,{style:{display:`grid`,placeItems:`center`,gap:6,minHeight:120},children:[(0,m.jsx)(u,{}),(0,m.jsx)(`span`,{children:`Перетащите один файл`})]})}),args:{multiple:!1}},y={render:p(),args:{disabled:!0,multiple:!0}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: createDropZoneStoryRender({
|
|
3
|
-
showStatus: true
|
|
4
|
-
})
|
|
5
|
-
}`,..._.parameters?.docs?.source}}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
|
|
6
|
-
render: createDropZoneStoryRender({
|
|
7
|
-
children: <div style={{
|
|
8
|
-
display: "grid",
|
|
9
|
-
placeItems: "center",
|
|
10
|
-
gap: 6,
|
|
11
|
-
minHeight: 120
|
|
12
|
-
}}>
|
|
13
|
-
<UploadCloudIcon />
|
|
14
|
-
<span>Перетащите один файл</span>
|
|
15
|
-
</div>
|
|
16
|
-
}),
|
|
17
|
-
args: {
|
|
18
|
-
multiple: false
|
|
19
|
-
}
|
|
20
|
-
}`,...v.parameters?.docs?.source}}},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
|
|
21
|
-
render: createDropZoneStoryRender(),
|
|
22
|
-
args: {
|
|
23
|
-
disabled: true,
|
|
24
|
-
multiple: true
|
|
25
|
-
}
|
|
26
|
-
}`,...y.parameters?.docs?.source}}},b=[`Basic`,`SingleFile`,`Disabled`]})))()}export{x as a,v as i,y as n,f as r,_ as t};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./check-D7ID2Deb.js";import{i as a,n as o,r as s,t as c}from"./ExpandableActionPanel-BuioQ5dl.js";import{n as l,t as u}from"./CheckBox-BBm7pBaK.js";import{n as d,t as f}from"./refresh-cw-CX2bab9x.js";import{n as p,t as m}from"./settings-2-BJfXo0yn.js";import{i as h,n as g,r as _}from"./iframe-K-XGUe-D.js";import{a as v,i as y}from"./utils-tg3ibbzi.js";import{n as b,t as x}from"./Button-Ch-WQXxt.js";import{n as S,t as C}from"./createControlledStoryRender-BouhvX-R.js";import{l as w,o as T}from"./Input-BDeY_-Jr.js";import{n as E,t as D}from"./Select-BIYQ3HYq.js";var O,k;function A(){return(A=e((()=>{h(),O=[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]],k=_(`search`,O)})))()}function j({label:e,className:t,labelClassName:n,labelStyle:r,labelMinWidth:i=`12em`,panelClassName:a,open:o,defaultOpen:l,...u}){let d={...r,minWidth:i},f=typeof e==`string`?e:void 0;return(0,M.jsxs)(`div`,{className:v(s.labeledPanel,t),"data-ui":`labeled-expandable-action-panel`,children:[(0,M.jsx)(`div`,{className:v(`flexEllipsis`,s.label,n),style:d,title:f,children:e}),(0,M.jsx)(c,{...u,open:o,defaultOpen:l,className:v(s.labeledActionPanel,a)})]})}var M;function N(){return(N=e((()=>{n(),y(),o(),a(),M=g(),j.__docgenInfo={description:"Раскрывающаяся панель действий с левым текстом, который сжимается через `flexEllipsis`.",methods:[],displayName:`LabeledExpandableActionPanel`,props:{label:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``},labelClassName:{required:!1,tsType:{name:`string`},description:``},labelStyle:{required:!1,tsType:{name:`ReactCSSProperties`,raw:`React.CSSProperties`},description:``},labelMinWidth:{required:!1,tsType:{name:`ReactCSSProperties["minWidth"]`,raw:`React.CSSProperties["minWidth"]`},description:``,defaultValue:{value:`"12em"`,computed:!1}},panelClassName:{required:!1,tsType:{name:`string`},description:``}},composes:[`Omit`]}})))()}var P=t({BasePanel:()=>W,Labeled:()=>U,__namedExportsOrder:()=>G,default:()=>z});function F(){let[e,t]=(0,I.useState)(``),[n,r]=(0,I.useState)(!1),[a,o]=(0,I.useState)(`Все`);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{style:{width:`calc(14em + var(--width-add))`},children:(0,L.jsx)(T,{placeholder:`Поиск`,value:e,onChange:t,endAdornment:(0,L.jsx)(k,{})})}),(0,L.jsx)(`div`,{style:{width:`calc(12em + var(--width-add))`},children:(0,L.jsx)(D,{placeholder:`Статус`,options:B,value:a,onChange:o,getOptionKey:e=>e,getOptionLabel:e=>e})}),(0,L.jsx)(u,{placeholder:`Только мои`,value:n,onChange:r,noWrap:!0}),(0,L.jsx)(x,{icon:(0,L.jsx)(f,{}),title:`Обновить`}),(0,L.jsx)(x,{icon:(0,L.jsx)(m,{}),title:`Настроить`}),(0,L.jsx)(x,{icon:(0,L.jsx)(i,{}),tone:`success`,appearance:`solid`,children:`Применить`})]})}var I,L,R,z,B,V,H,U,W,G;function K(){return(K=e((()=>{I=n(),r(),d(),A(),p(),b(),l(),S(),w(),E(),o(),N(),L=g(),{fn:R}=__STORYBOOK_MODULE_TEST__,z={title:`Shared/UI/ExpandableActionPanel`,component:j,args:{label:`Длинное название строки с результатами расчёта и параметрами отбора`,labelMinWidth:`18em`,open:!1,defaultOpen:!1,disabled:!1,onOpenChange:R(),expandLabel:`Раскрыть панель действий влево`,collapseLabel:`Свернуть панель действий`,panelLabel:`Действия панели`,smoothScroll:!1,children:null},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст или ReactNode слева от панели.`,control:`text`},labelMinWidth:{description:"Минимальная ширина `flexEllipsis`-текста.",control:`text`},labelClassName:{description:`Дополнительный CSS-класс области подписи.`,control:`text`},labelStyle:{description:`Inline-стили области подписи.`,control:`object`},panelClassName:{description:`Дополнительный CSS-класс внутренней ExpandableActionPanel.`,control:`text`},contentClassName:{description:`Дополнительный CSS-класс раскрываемого контейнера действий.`,control:`text`},toggleClassName:{description:`Дополнительный CSS-класс кнопки раскрытия.`,control:`text`},open:{description:`Контролируемое состояние раскрытия.`,control:`boolean`},defaultOpen:{description:`Начальное состояние раскрытия в uncontrolled-режиме.`,control:`boolean`},disabled:{description:`Блокирует кнопку раскрытия.`,control:`boolean`},onOpenChange:{description:`Вызывается при раскрытии или сворачивании панели.`,control:!1},expandLabel:{description:`Tooltip и доступное имя кнопки в закрытом состоянии.`,control:`text`},collapseLabel:{description:`Tooltip и доступное имя кнопки в раскрытом состоянии.`,control:`text`},panelLabel:{description:`Доступное имя раскрытой группы действий.`,control:`text`},itemSelector:{description:`CSS-селектор элементов для пошаговой прокрутки.`,control:`text`},scrollPadding:{description:`Отступ пошаговой прокрутки в пикселях.`,control:{type:`number`,min:0,step:1}},smoothScroll:{description:`Включает плавную пошаговую прокрутку.`,control:`boolean`},children:{description:`Набор действий внутри раскрываемой панели.`,control:!1}}},B=[`Все`,`Активные`,`Архив`],V=C((e,t)=>(0,L.jsx)(`div`,{style:{width:`min(100%, 920px)`},children:(0,L.jsx)(j,{...e,open:e.open,onOpenChange:n=>{e.onOpenChange?.(n),t({open:n})},children:e.children??(0,L.jsx)(F,{})})})),H=C((e,t)=>(0,L.jsx)(`div`,{style:{width:`min(100%, 720px)`,display:`flex`,justifyContent:`flex-end`},children:(0,L.jsx)(c,{...e,open:e.open,onOpenChange:n=>{e.onOpenChange?.(n),t({open:n})},children:e.children??(0,L.jsx)(F,{})})})),U={render:V},W={args:{open:!0,panelLabel:`Действия панели`},render:H},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: renderLabeledPanelStory
|
|
3
|
-
}`,...U.parameters?.docs?.source}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
|
|
4
|
-
args: {
|
|
5
|
-
open: true,
|
|
6
|
-
panelLabel: "Действия панели"
|
|
7
|
-
},
|
|
8
|
-
render: renderBasePanelStory
|
|
9
|
-
}`,...W.parameters?.docs?.source}}},G=[`Labeled`,`BasePanel`]})))()}export{U as n,K as r,P as t};
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t,t as n}from"./rolldown-runtime-DkW27tQK.js";import{t as r}from"./react-BZJXY1be.js";import{n as i}from"./iframe-K-XGUe-D.js";var a=n(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!b||parseFloat(b[1].replace(`_`,`.`))}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),o=n(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),s=n(((e,t)=>{var n=o(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),c=n(((e,t)=>{var n=a(),r=s(),i=10,o=40,c=800;function l(e){var t=0,n=0,r=0,a=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,a=n*i,`deltaY`in e&&(a=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||a)&&e.deltaMode&&(e.deltaMode==1?(r*=o,a*=o):(r*=c,a*=c)),r&&!t&&(t=r<1?-1:1),a&&!n&&(n=a<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:a}}l.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=l})),l=n(((e,t)=>{t.exports=c()}));function u(e){"@babel/helpers - typeof";return u=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?m(Object(n),!0).forEach(function(t){p(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function g(e,t,n,r,i,a=0){let{width:o,height:s}=O(e,t,a),c=Math.min(o,n),l=Math.min(s,r);return c>l*i?{width:l*i,height:l}:{width:c,height:c/i}}function _(e){return e.width>e.height?e.width/e.naturalWidth:e.height/e.naturalHeight}function v(e,t,n,r,i=0){let{width:a,height:o}=O(t.width,t.height,i);return{x:y(e.x,a,n.width,r),y:y(e.y,o,n.height,r)}}function y(e,t,n,r){let i=Math.abs(t*r/2-n/2);return k(e,-i,i)}function b(e,t){return Math.sqrt((e.y-t.y)**2+(e.x-t.x)**2)}function x(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function S(e,t,n,r,i,a=0,o=!0){let s=o?C:w,c=O(t.width,t.height,a),l=O(t.naturalWidth,t.naturalHeight,a),u={x:s(100,((c.width-n.width/i)/2-e.x/i)/c.width*100),y:s(100,((c.height-n.height/i)/2-e.y/i)/c.height*100),width:s(100,n.width/c.width*100/i),height:s(100,n.height/c.height*100/i)},d=Math.round(s(l.width,u.width*l.width/100)),f=Math.round(s(l.height,u.height*l.height/100)),p=l.width>=l.height*r?{width:Math.round(f*r),height:f}:{width:d,height:Math.round(d/r)};return{croppedAreaPercentages:u,croppedAreaPixels:h(h({},p),{},{x:Math.round(s(l.width-p.width,u.x*l.width/100)),y:Math.round(s(l.height-p.height,u.y*l.height/100))})}}function C(e,t){return Math.min(e,Math.max(0,t))}function w(e,t){return t}function T(e,t,n,r,i,a){let o=O(t.width,t.height,n),s=k(r.width/o.width*(100/e.width),i,a);return{crop:{x:s*o.width/2-r.width/2-o.width*s*(e.x/100),y:s*o.height/2-r.height/2-o.height*s*(e.y/100)},zoom:s}}function E(e,t,n){let r=_(t);return n.height>n.width?n.height/(e.height*r):n.width/(e.width*r)}function ee(e,t,n=0,r,i,a){let o=O(t.naturalWidth,t.naturalHeight,n),s=k(E(e,t,r),i,a),c=r.height>r.width?r.height/e.height:r.width/e.width;return{crop:{x:((o.width-e.width)/2-e.x)*c,y:((o.height-e.height)/2-e.y)*c},zoom:s}}function D(e,t){return{x:(t.x+e.x)/2,y:(t.y+e.y)/2}}function te(e){return e*Math.PI/180}function O(e,t,n){let r=te(n);return{width:Math.abs(Math.cos(r)*e)+Math.abs(Math.sin(r)*t),height:Math.abs(Math.sin(r)*e)+Math.abs(Math.cos(r)*t)}}function k(e,t,n){return Math.min(Math.max(e,t),n)}function A(...e){return e.filter(e=>typeof e==`string`&&e.length>0).join(` `).trim()}var j,M,N,P,F,I,L,R,z;function B(){return(B=t((()=>{j=e(r(),1),M=e(l(),1),N=`.reactEasyCrop_Container {
|
|
2
|
-
position: absolute;
|
|
3
|
-
top: 0;
|
|
4
|
-
left: 0;
|
|
5
|
-
right: 0;
|
|
6
|
-
bottom: 0;
|
|
7
|
-
overflow: hidden;
|
|
8
|
-
user-select: none;
|
|
9
|
-
touch-action: none;
|
|
10
|
-
cursor: move;
|
|
11
|
-
display: flex;
|
|
12
|
-
justify-content: center;
|
|
13
|
-
align-items: center;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.reactEasyCrop_Image,
|
|
17
|
-
.reactEasyCrop_Video {
|
|
18
|
-
will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */
|
|
19
|
-
max-width: unset; /* prevent global img/video reset rules from constraining the cropper media */
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.reactEasyCrop_Contain {
|
|
23
|
-
max-width: 100%;
|
|
24
|
-
max-height: 100%;
|
|
25
|
-
margin: auto;
|
|
26
|
-
position: absolute;
|
|
27
|
-
top: 0;
|
|
28
|
-
bottom: 0;
|
|
29
|
-
left: 0;
|
|
30
|
-
right: 0;
|
|
31
|
-
}
|
|
32
|
-
.reactEasyCrop_Cover_Horizontal {
|
|
33
|
-
width: 100%;
|
|
34
|
-
height: auto;
|
|
35
|
-
}
|
|
36
|
-
.reactEasyCrop_Cover_Vertical {
|
|
37
|
-
width: auto;
|
|
38
|
-
height: 100%;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.reactEasyCrop_CropArea {
|
|
42
|
-
position: absolute;
|
|
43
|
-
left: 50%;
|
|
44
|
-
top: 50%;
|
|
45
|
-
transform: translate(-50%, -50%);
|
|
46
|
-
border: 1px solid rgba(255, 255, 255, 0.5);
|
|
47
|
-
box-sizing: border-box;
|
|
48
|
-
box-shadow: 0 0 0 9999em;
|
|
49
|
-
color: rgba(0, 0, 0, 0.5);
|
|
50
|
-
overflow: hidden;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.reactEasyCrop_CropAreaRound {
|
|
54
|
-
border-radius: 50%;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.reactEasyCrop_CropAreaGrid::before {
|
|
58
|
-
content: ' ';
|
|
59
|
-
box-sizing: border-box;
|
|
60
|
-
position: absolute;
|
|
61
|
-
border: 1px solid rgba(255, 255, 255, 0.5);
|
|
62
|
-
top: 0;
|
|
63
|
-
bottom: 0;
|
|
64
|
-
left: 33.33%;
|
|
65
|
-
right: 33.33%;
|
|
66
|
-
border-top: 0;
|
|
67
|
-
border-bottom: 0;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.reactEasyCrop_CropAreaGrid::after {
|
|
71
|
-
content: ' ';
|
|
72
|
-
box-sizing: border-box;
|
|
73
|
-
position: absolute;
|
|
74
|
-
border: 1px solid rgba(255, 255, 255, 0.5);
|
|
75
|
-
top: 33.33%;
|
|
76
|
-
bottom: 33.33%;
|
|
77
|
-
left: 0;
|
|
78
|
-
right: 0;
|
|
79
|
-
border-left: 0;
|
|
80
|
-
border-right: 0;
|
|
81
|
-
}
|
|
82
|
-
`,P=250,F=1,I=3,L=1,R=class e extends j.Component{constructor(...t){super(...t),this.cropperRef=j.createRef(),this.imageRef=j.createRef(),this.videoRef=j.createRef(),this.containerPosition={x:0,y:0},this.containerRef=null,this.styleRef=null,this.containerRect=null,this.mediaSize={width:0,height:0,naturalWidth:0,naturalHeight:0},this.dragStartPosition={x:0,y:0},this.dragStartCrop={x:0,y:0},this.gestureZoomStart=0,this.gestureRotationStart=0,this.isTouching=!1,this.lastPinchDistance=0,this.lastPinchRotation=0,this.rafDragTimeout=null,this.rafPinchTimeout=null,this.wheelTimer=null,this.resizeEmitTimer=null,this.currentDoc=typeof document<`u`?document:null,this.currentWindow=typeof window<`u`?window:null,this.resizeObserver=null,this.previousCropSize=null,this.isInitialized=!1,this.dragInteractionSource=null,this.state={cropSize:null,hasWheelJustStarted:!1,mediaObjectFit:void 0},this.initResizeObserver=()=>{if(window.ResizeObserver===void 0||!this.containerRef)return;let e=!0;this.resizeObserver=new window.ResizeObserver(t=>{if(e){e=!1;return}this.computeSizes({isResizeTriggered:!0})}),this.resizeObserver.observe(this.containerRef)},this.onWindowResize=()=>{this.computeSizes({isResizeTriggered:!0})},this.preventZoomSafari=e=>e.preventDefault(),this.cleanEvents=()=>{this.currentDoc&&(this.currentDoc.removeEventListener(`mousemove`,this.onMouseMove),this.currentDoc.removeEventListener(`mouseup`,this.onDragStopped),this.currentDoc.removeEventListener(`touchmove`,this.onTouchMove),this.currentDoc.removeEventListener(`touchend`,this.onDragStopped),this.currentDoc.removeEventListener(`gesturechange`,this.onGestureChange),this.currentDoc.removeEventListener(`gestureend`,this.onGestureEnd),this.currentDoc.removeEventListener(`scroll`,this.onScroll))},this.clearScrollEvent=()=>{this.containerRef&&this.containerRef.removeEventListener(`wheel`,this.onWheel),this.wheelTimer&&clearTimeout(this.wheelTimer)},this.onMediaLoad=()=>{let e=this.computeSizes();e&&(this.previousCropSize=e,this.emitCropData(),this.setInitialCrop(e),this.isInitialized=!0),this.props.onMediaLoaded&&this.props.onMediaLoaded(this.mediaSize)},this.setInitialCrop=e=>{if(this.props.initialCroppedAreaPercentages){let{crop:t,zoom:n}=T(this.props.initialCroppedAreaPercentages,this.mediaSize,this.props.rotation,e,this.props.minZoom,this.props.maxZoom);this.props.onCropChange(t),this.props.onZoomChange&&this.props.onZoomChange(n)}else if(this.props.initialCroppedAreaPixels){let{crop:t,zoom:n}=ee(this.props.initialCroppedAreaPixels,this.mediaSize,this.props.rotation,e,this.props.minZoom,this.props.maxZoom);this.props.onCropChange(t),this.props.onZoomChange&&this.props.onZoomChange(n)}},this.computeSizes=({isResizeTriggered:e=!1}={})=>{let t=this.imageRef.current||this.videoRef.current;if(t&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect(),this.saveContainerPosition();let n=this.containerRect.width/this.containerRect.height,r=this.imageRef.current?.naturalWidth||this.videoRef.current?.videoWidth||0,i=this.imageRef.current?.naturalHeight||this.videoRef.current?.videoHeight||0,a=t.offsetWidth<r||t.offsetHeight<i,o=r/i,s;if(a)switch(this.state.mediaObjectFit){default:case`contain`:s=n>o?{width:this.containerRect.height*o,height:this.containerRect.height}:{width:this.containerRect.width,height:this.containerRect.width/o};break;case`horizontal-cover`:s={width:this.containerRect.width,height:this.containerRect.width/o};break;case`vertical-cover`:s={width:this.containerRect.height*o,height:this.containerRect.height};break}else s={width:t.offsetWidth,height:t.offsetHeight};this.mediaSize=h(h({},s),{},{naturalWidth:r,naturalHeight:i}),this.props.setMediaSize&&this.props.setMediaSize(this.mediaSize);let c=this.props.cropSize?this.props.cropSize:g(this.mediaSize.width,this.mediaSize.height,this.containerRect.width,this.containerRect.height,this.props.aspect,this.props.rotation);return(this.state.cropSize?.height!==c.height||this.state.cropSize?.width!==c.width)&&this.props.onCropSizeChange&&this.props.onCropSizeChange(c),this.setState({cropSize:c},()=>this.recomputeCropPosition({isResizeTriggered:e})),this.props.setCropSize&&this.props.setCropSize(c),c}},this.saveContainerPosition=()=>{if(this.containerRef){let e=this.containerRef.getBoundingClientRect();this.containerPosition={x:e.left,y:e.top}}},this.onMouseDown=t=>{this.currentDoc&&(t.preventDefault(),this.currentDoc.addEventListener(`mousemove`,this.onMouseMove),this.currentDoc.addEventListener(`mouseup`,this.onDragStopped),this.saveContainerPosition(),this.onDragStart(e.getMousePoint(t),`mouse`))},this.onMouseMove=t=>this.onDrag(e.getMousePoint(t)),this.onScroll=e=>{this.currentDoc&&(e.preventDefault(),this.saveContainerPosition())},this.onTouchStart=t=>{this.currentDoc&&(this.isTouching=!0,!(this.props.onTouchRequest&&!this.props.onTouchRequest(t))&&(this.currentDoc.addEventListener(`touchmove`,this.onTouchMove,{passive:!1}),this.currentDoc.addEventListener(`touchend`,this.onDragStopped),this.saveContainerPosition(),t.touches.length===2?this.onPinchStart(t):t.touches.length===1&&this.onDragStart(e.getTouchPoint(t.touches[0]),`touch`)))},this.onTouchMove=t=>{t.preventDefault(),t.touches.length===2?this.onPinchMove(t):t.touches.length===1&&this.onDrag(e.getTouchPoint(t.touches[0]))},this.onGestureStart=e=>{this.currentDoc&&(e.preventDefault(),this.currentDoc.addEventListener(`gesturechange`,this.onGestureChange),this.currentDoc.addEventListener(`gestureend`,this.onGestureEnd),this.gestureZoomStart=this.props.zoom,this.gestureRotationStart=this.props.rotation)},this.onGestureChange=t=>{if(t.preventDefault(),this.isTouching)return;let n=e.getMousePoint(t),r=this.gestureZoomStart-1+t.scale;if(this.setNewZoom(r,n,{shouldUpdatePosition:!0}),this.props.onRotationChange){let e=this.gestureRotationStart+t.rotation;this.props.onRotationChange(e)}},this.onGestureEnd=e=>{this.cleanEvents()},this.onDragStart=({x:e,y:t},n)=>{var r,i;this.dragStartPosition={x:e,y:t},this.dragStartCrop=h({},this.props.crop),this.dragInteractionSource=n,(r=(i=this.props).onInteractionStart)==null||r.call(i,{source:n})},this.onDrag=({x:e,y:t})=>{this.currentWindow&&(this.rafDragTimeout&&this.currentWindow.cancelAnimationFrame(this.rafDragTimeout),this.rafDragTimeout=this.currentWindow.requestAnimationFrame(()=>{if(!this.state.cropSize||e===void 0||t===void 0)return;let n=e-this.dragStartPosition.x,r=t-this.dragStartPosition.y,i={x:this.dragStartCrop.x+n,y:this.dragStartCrop.y+r},a=this.props.restrictPosition?v(i,this.mediaSize,this.state.cropSize,this.props.zoom,this.props.rotation):i;this.props.onCropChange(a)}))},this.onDragStopped=()=>{var e,t;this.isTouching=!1,this.cleanEvents(),this.emitCropData(),(e=(t=this.props).onInteractionEnd)==null||e.call(t,{source:this.dragInteractionSource??`mouse`}),this.dragInteractionSource=null},this.onWheel=t=>{if(!this.currentWindow||this.props.onWheelRequest&&!this.props.onWheelRequest(t))return;t.preventDefault();let n=e.getMousePoint(t),{pixelY:r}=(0,M.default)(t),i=this.props.zoom-r*this.props.zoomSpeed/200;this.setNewZoom(i,n,{shouldUpdatePosition:!0}),this.state.hasWheelJustStarted||this.setState({hasWheelJustStarted:!0},()=>{var e;return(e=this.props).onInteractionStart?.call(e,{source:`wheel`})}),this.wheelTimer&&clearTimeout(this.wheelTimer),this.wheelTimer=this.currentWindow.setTimeout(()=>this.setState({hasWheelJustStarted:!1},()=>{var e;return(e=this.props).onInteractionEnd?.call(e,{source:`wheel`})}),250)},this.getPointOnContainer=({x:e,y:t},n)=>{if(!this.containerRect)throw Error(`The Cropper is not mounted`);return{x:this.containerRect.width/2-(e-n.x),y:this.containerRect.height/2-(t-n.y)}},this.getPointOnMedia=({x:e,y:t})=>{let{crop:n,zoom:r}=this.props;return{x:(e+n.x)/r,y:(t+n.y)/r}},this.setNewZoom=(e,t,{shouldUpdatePosition:n=!0}={})=>{if(!this.state.cropSize||!this.props.onZoomChange)return;let r=k(e,this.props.minZoom,this.props.maxZoom);if(n){let e=this.getPointOnContainer(t,this.containerPosition),n=this.getPointOnMedia(e),i={x:n.x*r-e.x,y:n.y*r-e.y},a=this.props.restrictPosition?v(i,this.mediaSize,this.state.cropSize,r,this.props.rotation):i;this.props.onCropChange(a)}this.props.onZoomChange(r)},this.getCropData=()=>this.state.cropSize?S(this.props.restrictPosition?v(this.props.crop,this.mediaSize,this.state.cropSize,this.props.zoom,this.props.rotation):this.props.crop,this.mediaSize,this.state.cropSize,this.getAspect(),this.props.zoom,this.props.rotation,this.props.restrictPosition):null,this.emitCropData=()=>{this.resizeEmitTimer&&=(clearTimeout(this.resizeEmitTimer),null);let e=this.getCropData();if(!e)return;let{croppedAreaPercentages:t,croppedAreaPixels:n}=e;this.props.onCropComplete&&this.props.onCropComplete(t,n),this.props.onCropAreaChange&&this.props.onCropAreaChange(t,n)},this.emitCropAreaChange=()=>{let e=this.getCropData();if(!e)return;let{croppedAreaPercentages:t,croppedAreaPixels:n}=e;this.props.onCropAreaChange&&this.props.onCropAreaChange(t,n)},this.recomputeCropPosition=({isResizeTriggered:e=!1}={})=>{if(!this.state.cropSize)return;let t=this.props.crop;if(this.isInitialized&&this.previousCropSize?.width&&this.previousCropSize?.height&&(Math.abs(this.previousCropSize.width-this.state.cropSize.width)>1e-6||Math.abs(this.previousCropSize.height-this.state.cropSize.height)>1e-6)){let e=this.state.cropSize.width/this.previousCropSize.width,n=this.state.cropSize.height/this.previousCropSize.height;t={x:this.props.crop.x*e,y:this.props.crop.y*n}}let n=this.props.restrictPosition?v(t,this.mediaSize,this.state.cropSize,this.props.zoom,this.props.rotation):t;this.previousCropSize=this.state.cropSize,this.props.onCropChange(n),e?this.debouncedEmitCropData():this.emitCropData()},this.debouncedEmitCropData=()=>{this.currentWindow&&(this.resizeEmitTimer&&clearTimeout(this.resizeEmitTimer),this.resizeEmitTimer=this.currentWindow.setTimeout(()=>{this.emitCropData()},P))},this.onKeyDown=e=>{let{crop:t,onCropChange:n,keyboardStep:r,zoom:i,rotation:a}=this.props,o=r;if(!this.state.cropSize)return;e.shiftKey&&(o*=.2);let s=h({},t);switch(e.key){case`ArrowUp`:s.y-=o,e.preventDefault();break;case`ArrowDown`:s.y+=o,e.preventDefault();break;case`ArrowLeft`:s.x-=o,e.preventDefault();break;case`ArrowRight`:s.x+=o,e.preventDefault();break;default:return}if(this.props.restrictPosition&&(s=v(s,this.mediaSize,this.state.cropSize,i,a)),!e.repeat){var c,l;(c=(l=this.props).onInteractionStart)==null||c.call(l,{source:`keyboard`})}n(s)},this.onKeyUp=e=>{var t,n;switch(e.key){case`ArrowUp`:case`ArrowDown`:case`ArrowLeft`:case`ArrowRight`:e.preventDefault();break;default:return}this.emitCropData(),(t=(n=this.props).onInteractionEnd)==null||t.call(n,{source:`keyboard`})}}componentDidMount(){!this.currentDoc||!this.currentWindow||(this.containerRef&&(this.containerRef.ownerDocument&&(this.currentDoc=this.containerRef.ownerDocument),this.currentDoc.defaultView&&(this.currentWindow=this.currentDoc.defaultView),this.initResizeObserver(),window.ResizeObserver===void 0&&this.currentWindow.addEventListener(`resize`,this.onWindowResize),this.props.zoomWithScroll&&this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}),this.containerRef.addEventListener(`gesturestart`,this.onGestureStart)),this.currentDoc.addEventListener(`scroll`,this.onScroll),this.props.disableAutomaticStylesInjection||(this.styleRef=this.currentDoc.createElement(`style`),this.styleRef.setAttribute(`type`,`text/css`),this.props.nonce&&this.styleRef.setAttribute(`nonce`,this.props.nonce),this.styleRef.innerHTML=N,this.currentDoc.head.appendChild(this.styleRef)),this.imageRef.current&&this.imageRef.current.complete&&this.onMediaLoad(),this.props.setImageRef&&this.props.setImageRef(this.imageRef),this.props.setVideoRef&&this.props.setVideoRef(this.videoRef),this.props.setCropperRef&&this.props.setCropperRef(this.cropperRef))}componentWillUnmount(){var e;if(!(!this.currentDoc||!this.currentWindow)){if(window.ResizeObserver===void 0&&this.currentWindow.removeEventListener(`resize`,this.onWindowResize),(e=this.resizeObserver)==null||e.disconnect(),this.resizeEmitTimer&&clearTimeout(this.resizeEmitTimer),this.containerRef&&this.containerRef.removeEventListener(`gesturestart`,this.preventZoomSafari),this.styleRef){var t;(t=this.styleRef.parentNode)==null||t.removeChild(this.styleRef)}this.cleanEvents(),this.props.zoomWithScroll&&this.clearScrollEvent()}}componentDidUpdate(e){if(e.rotation===this.props.rotation?e.aspect===this.props.aspect&&e.objectFit===this.props.objectFit?e.zoom===this.props.zoom?e.cropSize?.height!==this.props.cropSize?.height||e.cropSize?.width!==this.props.cropSize?.width?this.computeSizes():(e.crop?.x!==this.props.crop?.x||e.crop?.y!==this.props.crop?.y)&&this.emitCropAreaChange():this.recomputeCropPosition():this.computeSizes():(this.computeSizes(),this.recomputeCropPosition()),e.zoomWithScroll!==this.props.zoomWithScroll&&this.containerRef&&(this.props.zoomWithScroll?this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}):this.clearScrollEvent()),e.video!==this.props.video){var t;(t=this.videoRef.current)==null||t.load()}let n=this.getObjectFit();n!==this.state.mediaObjectFit&&this.setState({mediaObjectFit:n},this.computeSizes)}getAspect(){let{cropSize:e,aspect:t}=this.props;return e?e.width/e.height:t}getObjectFit(){if(this.props.objectFit===`cover`){if((this.imageRef.current||this.videoRef.current)&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect();let e=this.containerRect.width/this.containerRect.height;return(this.imageRef.current?.naturalWidth||this.videoRef.current?.videoWidth||0)/(this.imageRef.current?.naturalHeight||this.videoRef.current?.videoHeight||0)<e?`horizontal-cover`:`vertical-cover`}return`horizontal-cover`}return this.props.objectFit}onPinchStart(t){let n=e.getTouchPoint(t.touches[0]),r=e.getTouchPoint(t.touches[1]);this.lastPinchDistance=b(n,r),this.lastPinchRotation=x(n,r),this.onDragStart(D(n,r),`touch`)}onPinchMove(t){if(!this.currentDoc||!this.currentWindow)return;let n=e.getTouchPoint(t.touches[0]),r=e.getTouchPoint(t.touches[1]),i=D(n,r);this.onDrag(i),this.rafPinchTimeout&&this.currentWindow.cancelAnimationFrame(this.rafPinchTimeout),this.rafPinchTimeout=this.currentWindow.requestAnimationFrame(()=>{let e=b(n,r),t=this.props.zoom*(e/this.lastPinchDistance);this.setNewZoom(t,i,{shouldUpdatePosition:!1}),this.lastPinchDistance=e;let a=x(n,r),o=this.props.rotation+(a-this.lastPinchRotation);this.props.onRotationChange&&this.props.onRotationChange(o),this.lastPinchRotation=a})}render(){let{image:e,video:t,mediaProps:n,cropperProps:r,transform:i,crop:{x:a,y:o},rotation:s,zoom:c,cropShape:l,showGrid:u,roundCropAreaPixels:d,style:{containerStyle:f,cropAreaStyle:p,mediaStyle:m},classes:{containerClassName:g,cropAreaClassName:_,mediaClassName:v}}=this.props,y=this.state.mediaObjectFit??this.getObjectFit();return j.createElement(`div`,{onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,ref:e=>this.containerRef=e,"data-testid":`container`,style:f,className:A(`reactEasyCrop_Container`,g)},e?j.createElement(`img`,h(h({alt:``,className:A(`reactEasyCrop_Image`,y===`contain`&&`reactEasyCrop_Contain`,y===`horizontal-cover`&&`reactEasyCrop_Cover_Horizontal`,y===`vertical-cover`&&`reactEasyCrop_Cover_Vertical`,v)},n),{},{src:e,ref:this.imageRef,style:h(h({},m),{},{transform:i||`translate(${a}px, ${o}px) rotate(${s}deg) scale(${c})`}),onLoad:this.onMediaLoad})):t&&j.createElement(`video`,h(h({autoPlay:!0,playsInline:!0,loop:!0,muted:!0,className:A(`reactEasyCrop_Video`,y===`contain`&&`reactEasyCrop_Contain`,y===`horizontal-cover`&&`reactEasyCrop_Cover_Horizontal`,y===`vertical-cover`&&`reactEasyCrop_Cover_Vertical`,v)},n),{},{ref:this.videoRef,onLoadedMetadata:this.onMediaLoad,style:h(h({},m),{},{transform:i||`translate(${a}px, ${o}px) rotate(${s}deg) scale(${c})`}),controls:!1}),(Array.isArray(t)?t:[{src:t}]).map(e=>j.createElement(`source`,h({key:e.src},e)))),this.state.cropSize&&j.createElement(`div`,h({ref:this.cropperRef,style:h(h({},p),{},{width:d?Math.round(this.state.cropSize.width):this.state.cropSize.width,height:d?Math.round(this.state.cropSize.height):this.state.cropSize.height}),tabIndex:0,onKeyDown:this.onKeyDown,onKeyUp:this.onKeyUp,"data-testid":`cropper`,className:A(`reactEasyCrop_CropArea`,l===`round`&&`reactEasyCrop_CropAreaRound`,u&&`reactEasyCrop_CropAreaGrid`,_)},r)))}},R.defaultProps={zoom:1,rotation:0,aspect:4/3,maxZoom:I,minZoom:F,cropShape:`rect`,objectFit:`contain`,showGrid:!0,style:{},classes:{},mediaProps:{},cropperProps:{},zoomSpeed:1,restrictPosition:!0,zoomWithScroll:!0,keyboardStep:L},R.getMousePoint=e=>({x:Number(e.clientX),y:Number(e.clientY)}),R.getTouchPoint=e=>({x:Number(e.clientX),y:Number(e.clientY)}),z=R})))()}function V({image:e,aspect:t=16/9,width:n=`100%`,className:r,style:i,crop:a,defaultCrop:o=W,zoom:s,defaultZoom:c=1,minZoom:l=1,maxZoom:u=3,zoomSpeed:d=.1,objectFit:f=`contain`,disabled:p=!1,onCropChange:m,onZoomChange:h,onCropComplete:g}){let[_,v]=(0,H.useState)(o),[y,b]=(0,H.useState)(c),x=a??_,S=s??y,C=(0,H.useCallback)(e=>{p||(a===void 0&&v(e),m?.(e))},[a,p,m]),w=(0,H.useCallback)(e=>{p||(s===void 0&&b(e),h?.(e))},[p,h,s]),T=(0,H.useCallback)((e,t)=>{p||g?.(t,e)},[p,g]);return(0,U.jsx)(`div`,{className:r,style:{position:`relative`,width:n,aspectRatio:t,pointerEvents:p?`none`:void 0,...i},children:(0,U.jsx)(z,{image:e,crop:x,zoom:S,aspect:t,minZoom:l,maxZoom:u,zoomSpeed:d,objectFit:f,onCropChange:C,onZoomChange:w,onCropComplete:T,cropperProps:{"aria-disabled":p||void 0}})})}var H,U,W;function G(){return(G=t((()=>{H=r(),B(),U=i(),W={x:0,y:0},V.__docgenInfo={description:`Управляемая или автономная область обрезки изображения.
|
|
83
|
-
Числовой aspect задаётся вызывающим кодом и не связан с назначением изображения.`,methods:[],displayName:`ImageCropper`,props:{image:{required:!0,tsType:{name:`string`},description:``},aspect:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`16 / 9`,computed:!1}},width:{required:!1,tsType:{name:`CSSProperties["width"]`,raw:`CSSProperties["width"]`},description:``,defaultValue:{value:`"100%"`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},crop:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
|
|
84
|
-
x: number;
|
|
85
|
-
y: number;
|
|
86
|
-
}`,signature:{properties:[{key:`x`,value:{name:`number`,required:!0}},{key:`y`,value:{name:`number`,required:!0}}]}},description:``},defaultCrop:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
|
|
87
|
-
x: number;
|
|
88
|
-
y: number;
|
|
89
|
-
}`,signature:{properties:[{key:`x`,value:{name:`number`,required:!0}},{key:`y`,value:{name:`number`,required:!0}}]}},description:``,defaultValue:{value:`{ x: 0, y: 0 }`,computed:!1}},zoom:{required:!1,tsType:{name:`number`},description:``},defaultZoom:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`1`,computed:!1}},minZoom:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`1`,computed:!1}},maxZoom:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`3`,computed:!1}},zoomSpeed:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`0.1`,computed:!1}},objectFit:{required:!1,tsType:{name:`union`,raw:`"contain" | "cover" | "horizontal-cover" | "vertical-cover"`,elements:[{name:`literal`,value:`"contain"`},{name:`literal`,value:`"cover"`},{name:`literal`,value:`"horizontal-cover"`},{name:`literal`,value:`"vertical-cover"`}]},description:``,defaultValue:{value:`"contain"`,computed:!1}},disabled:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},onCropChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(crop: ImageCropPoint) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
|
|
90
|
-
x: number;
|
|
91
|
-
y: number;
|
|
92
|
-
}`,signature:{properties:[{key:`x`,value:{name:`number`,required:!0}},{key:`y`,value:{name:`number`,required:!0}}]}},name:`crop`}],return:{name:`void`}}},description:``},onZoomChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(zoom: number) => void`,signature:{arguments:[{type:{name:`number`},name:`zoom`}],return:{name:`void`}}},description:``},onCropComplete:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(croppedAreaPixels: ImageCropArea, croppedAreaPercentages: ImageCropArea) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
|
|
93
|
-
x: number;
|
|
94
|
-
y: number;
|
|
95
|
-
width: number;
|
|
96
|
-
height: number;
|
|
97
|
-
}`,signature:{properties:[{key:`x`,value:{name:`number`,required:!0}},{key:`y`,value:{name:`number`,required:!0}},{key:`width`,value:{name:`number`,required:!0}},{key:`height`,value:{name:`number`,required:!0}}]}},name:`croppedAreaPixels`},{type:{name:`signature`,type:`object`,raw:`{
|
|
98
|
-
x: number;
|
|
99
|
-
y: number;
|
|
100
|
-
width: number;
|
|
101
|
-
height: number;
|
|
102
|
-
}`,signature:{properties:[{key:`x`,value:{name:`number`,required:!0}},{key:`y`,value:{name:`number`,required:!0}},{key:`width`,value:{name:`number`,required:!0}},{key:`height`,value:{name:`number`,required:!0}}]}},name:`croppedAreaPercentages`}],return:{name:`void`}}},description:``}}}})))()}var K,q,J,Y,X,Z,Q;function $(){return($=t((()=>{G(),K=i(),{useArgs:q}=__STORYBOOK_MODULE_PREVIEW_API__,J={title:`Shared/UI/Image/ImageCropper`,component:V,args:{image:`https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=1600&q=80`,aspect:16/9},parameters:{layout:`padded`},argTypes:{image:{description:`URL исходного изображения.`,control:`text`},aspect:{description:`Соотношение сторон области обрезки.`,control:`number`},width:{description:`Ширина контейнера cropper.`,control:`text`},crop:{description:`Контролируемое смещение изображения.`,control:!1},defaultCrop:{description:`Начальное смещение в uncontrolled-режиме.`,control:!1},zoom:{description:`Контролируемый масштаб изображения.`,control:{type:`number`,min:1,step:.1}},defaultZoom:{description:`Начальный масштаб в uncontrolled-режиме.`,control:{type:`number`,min:1,step:.1}},minZoom:{description:`Минимально доступный масштаб.`,control:{type:`number`,min:1,step:.1}},maxZoom:{description:`Максимально доступный масштаб.`,control:{type:`number`,min:1,step:.1}},zoomSpeed:{description:`Шаг изменения масштаба.`,control:{type:`number`,min:.01,step:.01}},objectFit:{description:`Способ начального вписывания изображения.`,control:`select`,options:[`contain`,`cover`,`horizontal-cover`,`vertical-cover`]},disabled:{description:`Блокирует перемещение и масштабирование.`,control:`boolean`},onCropChange:{description:`Вызывается при перемещении области обрезки.`,control:!1},onZoomChange:{description:`Вызывается при изменении масштаба.`,control:!1},onCropComplete:{description:`Вызывается после завершения изменения crop.`,control:!1}}},Y={},X={render:function(e){let[,t]=q();return(0,K.jsx)(V,{...e,crop:e.crop??{x:0,y:0},zoom:e.zoom??1,onCropChange:n=>{e.onCropChange?.(n),t({crop:n})},onZoomChange:n=>{e.onZoomChange?.(n),t({zoom:n})}})},args:{crop:{x:0,y:0},zoom:1}},Z={args:{aspect:1}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{}`,...Y.parameters?.docs?.source}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
103
|
-
render: function Render(args) {
|
|
104
|
-
const [, updateArgs] = useArgs<ImageCropperProps>();
|
|
105
|
-
return <ImageCropper {...args} crop={args.crop ?? {
|
|
106
|
-
x: 0,
|
|
107
|
-
y: 0
|
|
108
|
-
}} zoom={args.zoom ?? 1} onCropChange={crop => {
|
|
109
|
-
args.onCropChange?.(crop);
|
|
110
|
-
updateArgs({
|
|
111
|
-
crop
|
|
112
|
-
});
|
|
113
|
-
}} onZoomChange={zoom => {
|
|
114
|
-
args.onZoomChange?.(zoom);
|
|
115
|
-
updateArgs({
|
|
116
|
-
zoom
|
|
117
|
-
});
|
|
118
|
-
}} />;
|
|
119
|
-
},
|
|
120
|
-
args: {
|
|
121
|
-
crop: {
|
|
122
|
-
x: 0,
|
|
123
|
-
y: 0
|
|
124
|
-
},
|
|
125
|
-
zoom: 1
|
|
126
|
-
}
|
|
127
|
-
}`,...X.parameters?.docs?.source}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
128
|
-
args: {
|
|
129
|
-
aspect: 1
|
|
130
|
-
}
|
|
131
|
-
}`,...Z.parameters?.docs?.source}}},Q=[`Uncontrolled`,`Controlled`,`Square`]})))()}$();export{X as Controlled,Z as Square,Y as Uncontrolled,Q as __namedExportsOrder,J as default};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-K-XGUe-D.js";import{n,t as r}from"./ImageRenderer-DIL2Vc1q.js";var i,a,o,s,c,l,u;function d(){return(d=e((()=>{n(),i=t(),{useArgs:a}=__STORYBOOK_MODULE_PREVIEW_API__,o={title:`Shared/UI/Image/ImageRenderer`,component:r,args:{src:`https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=1600&q=80`,alt:`Горный пейзаж`},parameters:{layout:`padded`},argTypes:{src:{description:`URL основного изображения.`,control:`text`},sources:{description:`Дополнительные responsive picture-источники.`,control:!1},layout:{description:`Режим расположения изображения внутри контейнера.`,control:`inline-radio`,options:[`cover`,`contain`,`intrinsic`]},alt:{description:`Альтернативный текст изображения.`,control:`text`},role:{description:`Семантическая роль тега изображения.`,control:`text`},ariaLabel:{description:`Явное доступное имя изображения.`,control:`text`},caption:{description:`Подпись изображения в режиме figure.`,control:`text`},fallback:{description:`Кастомный placeholder до загрузки.`,control:!1},useFigure:{description:`Оборачивает изображение в figure/figcaption.`,control:`boolean`},aspectRatio:{description:`Соотношение сторон контейнера.`,control:`text`},width:{description:`Ширина контейнера.`,control:`text`},height:{description:`Высота контейнера.`,control:`text`},intrinsicWidth:{description:`Исходная ширина изображения.`,control:`number`},intrinsicHeight:{description:`Исходная высота изображения.`,control:`number`},wrapperStyle:{description:`Inline-стили контейнера изображения.`,control:!1}}},s={render:function(){let[e]=a();return(0,i.jsx)(r,{...e})},args:{layout:`cover`,width:`min(100%, 48rem)`,height:`24rem`}},c={render:function(){let[e]=a();return(0,i.jsx)(r,{...e})},args:{layout:`contain`,width:`min(100%, 48rem)`,height:`24rem`,wrapperStyle:{background:`var(--surface-1)`}}},l={render:function(){let[e]=a();return(0,i.jsx)(r,{...e})},args:{layout:`intrinsic`,intrinsicWidth:1600,intrinsicHeight:1067}},s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
render: function Render() {
|
|
3
|
-
const [args] = useArgs<ImageRendererProps>();
|
|
4
|
-
return <ImageRenderer {...args} />;
|
|
5
|
-
},
|
|
6
|
-
args: {
|
|
7
|
-
layout: "cover",
|
|
8
|
-
width: "min(100%, 48rem)",
|
|
9
|
-
height: "24rem"
|
|
10
|
-
}
|
|
11
|
-
}`,...s.parameters?.docs?.source}}},c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
|
|
12
|
-
render: function Render() {
|
|
13
|
-
const [args] = useArgs<ImageRendererProps>();
|
|
14
|
-
return <ImageRenderer {...args} />;
|
|
15
|
-
},
|
|
16
|
-
args: {
|
|
17
|
-
layout: "contain",
|
|
18
|
-
width: "min(100%, 48rem)",
|
|
19
|
-
height: "24rem",
|
|
20
|
-
wrapperStyle: {
|
|
21
|
-
background: "var(--surface-1)"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}`,...c.parameters?.docs?.source}}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
|
|
25
|
-
render: function Render() {
|
|
26
|
-
const [args] = useArgs<ImageRendererProps>();
|
|
27
|
-
return <ImageRenderer {...args} />;
|
|
28
|
-
},
|
|
29
|
-
args: {
|
|
30
|
-
layout: "intrinsic",
|
|
31
|
-
intrinsicWidth: 1600,
|
|
32
|
-
intrinsicHeight: 1067
|
|
33
|
-
}
|
|
34
|
-
}`,...l.parameters?.docs?.source}}},u=[`FixedCover`,`FixedContain`,`IntrinsicFullWidth`]})))()}d();export{c as FixedContain,s as FixedCover,l as IntrinsicFullWidth,u as __namedExportsOrder,o as default};
|