@techzyapp/ui-library 1.0.43 → 1.0.44
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/README.md +15 -14
- package/dist/{Accordion-B4vdZXIu.cjs → Accordion-CFyeLfPT.cjs} +2 -2
- package/dist/{Accordion-B4vdZXIu.cjs.map → Accordion-CFyeLfPT.cjs.map} +1 -1
- package/dist/{Accordion-DhFZ25KV.js → Accordion-DOrTQJB9.js} +2 -2
- package/dist/{Accordion-DhFZ25KV.js.map → Accordion-DOrTQJB9.js.map} +1 -1
- package/dist/{AdminRoot-BLHvXCvL.js → AdminRoot-9KE3ll-D.js} +8 -8
- package/dist/{AdminRoot-BLHvXCvL.js.map → AdminRoot-9KE3ll-D.js.map} +1 -1
- package/dist/{AdminRoot-D_g_TW30.cjs → AdminRoot-BMzHo0n7.cjs} +2 -2
- package/dist/{AdminRoot-D_g_TW30.cjs.map → AdminRoot-BMzHo0n7.cjs.map} +1 -1
- package/dist/Alert-BFfzpPNd.js +70 -0
- package/dist/{Alert-D5E1PLkV.js.map → Alert-BFfzpPNd.js.map} +1 -1
- package/dist/Alert-DS8TzpIS.cjs +2 -0
- package/dist/{Alert-B4XZDk16.cjs.map → Alert-DS8TzpIS.cjs.map} +1 -1
- package/dist/{AuthLayout-q8pbCGdt.js → AuthLayout-BI1wLuDl.js} +2 -2
- package/dist/{AuthLayout-q8pbCGdt.js.map → AuthLayout-BI1wLuDl.js.map} +1 -1
- package/dist/{AuthLayout-exuNQicH.cjs → AuthLayout-Bzlsvicf.cjs} +2 -2
- package/dist/{AuthLayout-exuNQicH.cjs.map → AuthLayout-Bzlsvicf.cjs.map} +1 -1
- package/dist/{Avatar-l48Ice6t.cjs → Avatar-BBqX1732.cjs} +2 -2
- package/dist/{Avatar-l48Ice6t.cjs.map → Avatar-BBqX1732.cjs.map} +1 -1
- package/dist/{Avatar-ClcmN0ba.js → Avatar-CaYyv5wk.js} +2 -2
- package/dist/{Avatar-ClcmN0ba.js.map → Avatar-CaYyv5wk.js.map} +1 -1
- package/dist/{AvatarGroup-l-KV3wdl.js → AvatarGroup-6fhm-van.js} +2 -2
- package/dist/{AvatarGroup-l-KV3wdl.js.map → AvatarGroup-6fhm-van.js.map} +1 -1
- package/dist/{AvatarGroup-CuvFX4di.cjs → AvatarGroup-DrkzAt1-.cjs} +2 -2
- package/dist/{AvatarGroup-CuvFX4di.cjs.map → AvatarGroup-DrkzAt1-.cjs.map} +1 -1
- package/dist/Breadcrumbs-CloqFpp1.js +34 -0
- package/dist/{Breadcrumbs-M31xyok8.js.map → Breadcrumbs-CloqFpp1.js.map} +1 -1
- package/dist/Breadcrumbs-N2-sZWW5.cjs +2 -0
- package/dist/{Breadcrumbs-DSUxcp6u.cjs.map → Breadcrumbs-N2-sZWW5.cjs.map} +1 -1
- package/dist/Button-5LQtDA9d.js +72 -0
- package/dist/{Button-CtADzomU.js.map → Button-5LQtDA9d.js.map} +1 -1
- package/dist/Button-Bxztlybi.cjs +2 -0
- package/dist/{Button-Q_5uA-zc.cjs.map → Button-Bxztlybi.cjs.map} +1 -1
- package/dist/{Calendar-CHLCv2s9.js → Calendar-BIKo_aus.js} +5 -5
- package/dist/{Calendar-CHLCv2s9.js.map → Calendar-BIKo_aus.js.map} +1 -1
- package/dist/{Calendar-BbbtMsZs.cjs → Calendar-CsBgaKZ-.cjs} +2 -2
- package/dist/{Calendar-BbbtMsZs.cjs.map → Calendar-CsBgaKZ-.cjs.map} +1 -1
- package/dist/{Card-CntRsQfm.cjs → Card-Csn3FaMl.cjs} +2 -2
- package/dist/{Card-CntRsQfm.cjs.map → Card-Csn3FaMl.cjs.map} +1 -1
- package/dist/{Card-Br9IB0yM.js → Card-DMwQ7rMk.js} +4 -4
- package/dist/{Card-Br9IB0yM.js.map → Card-DMwQ7rMk.js.map} +1 -1
- package/dist/Chip-BdCZ44I8.cjs +2 -0
- package/dist/{Chip-CrBizrvG.cjs.map → Chip-BdCZ44I8.cjs.map} +1 -1
- package/dist/Chip-C7IkFuM1.js +92 -0
- package/dist/{Chip-DYZ5w7VM.js.map → Chip-C7IkFuM1.js.map} +1 -1
- package/dist/ChoiceCardGroup-Cj_YFj6C.cjs +2 -0
- package/dist/{ChoiceCardGroup-C7Eengyd.cjs.map → ChoiceCardGroup-Cj_YFj6C.cjs.map} +1 -1
- package/dist/ChoiceCardGroup-D37XREKV.js +180 -0
- package/dist/{ChoiceCardGroup-q0yN-TeQ.js.map → ChoiceCardGroup-D37XREKV.js.map} +1 -1
- package/dist/CodeBlock-BnXxxqAW.cjs +2 -0
- package/dist/{CodeBlock-DW4uaZXM.cjs.map → CodeBlock-BnXxxqAW.cjs.map} +1 -1
- package/dist/CodeBlock-C10JN6DR.js +96 -0
- package/dist/{CodeBlock-B6Eqc4HR.js.map → CodeBlock-C10JN6DR.js.map} +1 -1
- package/dist/{ColorPicker-nhWd_nOW.cjs → ColorPicker-CVddGc-n.cjs} +2 -2
- package/dist/{ColorPicker-nhWd_nOW.cjs.map → ColorPicker-CVddGc-n.cjs.map} +1 -1
- package/dist/{ColorPicker-GsKIqJu8.js → ColorPicker-z8_-77LO.js} +3 -3
- package/dist/{ColorPicker-GsKIqJu8.js.map → ColorPicker-z8_-77LO.js.map} +1 -1
- package/dist/{ColorPickerPanel-BeAu83S6.cjs → ColorPickerPanel-DJY6-EqO.cjs} +2 -2
- package/dist/{ColorPickerPanel-BeAu83S6.cjs.map → ColorPickerPanel-DJY6-EqO.cjs.map} +1 -1
- package/dist/{ColorPickerPanel-BEcZePcT.js → ColorPickerPanel-y4A2LLLf.js} +3 -3
- package/dist/{ColorPickerPanel-BEcZePcT.js.map → ColorPickerPanel-y4A2LLLf.js.map} +1 -1
- package/dist/{ColorRamp-C-zRPhHj.cjs → ColorRamp-DvRsdOWy.cjs} +2 -2
- package/dist/{ColorRamp-C-zRPhHj.cjs.map → ColorRamp-DvRsdOWy.cjs.map} +1 -1
- package/dist/{ColorRamp-CeNgd8wF.js → ColorRamp-Dvit8yoP.js} +2 -2
- package/dist/{ColorRamp-CeNgd8wF.js.map → ColorRamp-Dvit8yoP.js.map} +1 -1
- package/dist/{ConfigProvider-Dqfu7UBU.js → ConfigProvider-CYgmMH4j.js} +2 -2
- package/dist/{ConfigProvider-Dqfu7UBU.js.map → ConfigProvider-CYgmMH4j.js.map} +1 -1
- package/dist/{ConfigProvider-Ci9Q2HLF.cjs → ConfigProvider-Cf-awvZs.cjs} +2 -2
- package/dist/{ConfigProvider-Ci9Q2HLF.cjs.map → ConfigProvider-Cf-awvZs.cjs.map} +1 -1
- package/dist/{CopyButton-Chr7SP5i.cjs → CopyButton-BOp7waEt.cjs} +2 -2
- package/dist/{CopyButton-Chr7SP5i.cjs.map → CopyButton-BOp7waEt.cjs.map} +1 -1
- package/dist/{CopyButton-Bidt2Vgp.js → CopyButton-_iMBE4q_.js} +4 -4
- package/dist/{CopyButton-Bidt2Vgp.js.map → CopyButton-_iMBE4q_.js.map} +1 -1
- package/dist/DashedButton-BX8hfY1x.cjs +2 -0
- package/dist/{DashedButton-Dw7xHgIp.cjs.map → DashedButton-BX8hfY1x.cjs.map} +1 -1
- package/dist/DashedButton-wcmXTYBw.js +58 -0
- package/dist/{DashedButton-csz6Jt_K.js.map → DashedButton-wcmXTYBw.js.map} +1 -1
- package/dist/{DatePicker-4rb34nPR.cjs → DatePicker-UQwpH-rw.cjs} +2 -2
- package/dist/{DatePicker-4rb34nPR.cjs.map → DatePicker-UQwpH-rw.cjs.map} +1 -1
- package/dist/{DatePicker-D7ZMOhWn.js → DatePicker-X5hZVSW6.js} +6 -6
- package/dist/{DatePicker-D7ZMOhWn.js.map → DatePicker-X5hZVSW6.js.map} +1 -1
- package/dist/DatePicker.module-BaQyKOUM.cjs +2 -0
- package/dist/{DatePicker.module-BDtTsg8M.cjs.map → DatePicker.module-BaQyKOUM.cjs.map} +1 -1
- package/dist/DatePicker.module-DoywSvLu.js +138 -0
- package/dist/{DatePicker.module-CMMQyEhG.js.map → DatePicker.module-DoywSvLu.js.map} +1 -1
- package/dist/{DateTimePicker-gDxM2CGy.js → DateTimePicker-Ch1kUHEb.js} +9 -9
- package/dist/{DateTimePicker-gDxM2CGy.js.map → DateTimePicker-Ch1kUHEb.js.map} +1 -1
- package/dist/{DateTimePicker-CVFzKzyA.cjs → DateTimePicker-ClTZGMON.cjs} +2 -2
- package/dist/{DateTimePicker-CVFzKzyA.cjs.map → DateTimePicker-ClTZGMON.cjs.map} +1 -1
- package/dist/{DescriptionList-Die3lRBW.js → DescriptionList-Cque-iYk.js} +69 -69
- package/dist/{DescriptionList-Die3lRBW.js.map → DescriptionList-Cque-iYk.js.map} +1 -1
- package/dist/DescriptionList-IVAvgpEL.cjs +2 -0
- package/dist/{DescriptionList-BBvfABps.cjs.map → DescriptionList-IVAvgpEL.cjs.map} +1 -1
- package/dist/Dropdown-C_y9_dVn.cjs +2 -0
- package/dist/Dropdown-C_y9_dVn.cjs.map +1 -0
- package/dist/Dropdown-D-D_Z1Jo.js +154 -0
- package/dist/Dropdown-D-D_Z1Jo.js.map +1 -0
- package/dist/{EmptyState-D5EKQjX1.cjs → EmptyState-C84B-E8a.cjs} +2 -2
- package/dist/{EmptyState-D5EKQjX1.cjs.map → EmptyState-C84B-E8a.cjs.map} +1 -1
- package/dist/{EmptyState-DRgER10x.js → EmptyState-Yts_p-jZ.js} +3 -3
- package/dist/{EmptyState-DRgER10x.js.map → EmptyState-Yts_p-jZ.js.map} +1 -1
- package/dist/{ErrorBoundary-CLfE2NjU.js → ErrorBoundary-BgMOPle0.js} +3 -3
- package/dist/{ErrorBoundary-CLfE2NjU.js.map → ErrorBoundary-BgMOPle0.js.map} +1 -1
- package/dist/{ErrorBoundary-DVcGWZd8.cjs → ErrorBoundary-DtYswKp3.cjs} +2 -2
- package/dist/{ErrorBoundary-DVcGWZd8.cjs.map → ErrorBoundary-DtYswKp3.cjs.map} +1 -1
- package/dist/{ErrorState-DJDQbHZY.cjs → ErrorState-Aa8LVjkl.cjs} +2 -2
- package/dist/{ErrorState-DJDQbHZY.cjs.map → ErrorState-Aa8LVjkl.cjs.map} +1 -1
- package/dist/{ErrorState-Dqw0AvmB.js → ErrorState-BE9Rcmht.js} +8 -8
- package/dist/{ErrorState-Dqw0AvmB.js.map → ErrorState-BE9Rcmht.js.map} +1 -1
- package/dist/FileCard-Chfx0QdF.cjs +2 -0
- package/dist/{FileCard-BqMproT9.cjs.map → FileCard-Chfx0QdF.cjs.map} +1 -1
- package/dist/{FileCard-kVnjcSlk.js → FileCard-m3i_8yKR.js} +33 -33
- package/dist/{FileCard-kVnjcSlk.js.map → FileCard-m3i_8yKR.js.map} +1 -1
- package/dist/FileUploader-B27Y4rak.js +706 -0
- package/dist/FileUploader-B27Y4rak.js.map +1 -0
- package/dist/FileUploader-DkvFO0N_.cjs +2 -0
- package/dist/FileUploader-DkvFO0N_.cjs.map +1 -0
- package/dist/{Flag-B1ZvZVXi.cjs → Flag-BvZB3295.cjs} +2 -2
- package/dist/{Flag-B1ZvZVXi.cjs.map → Flag-BvZB3295.cjs.map} +1 -1
- package/dist/{Flag-BEIqYQZg.js → Flag-C1HwnZXJ.js} +2 -2
- package/dist/{Flag-BEIqYQZg.js.map → Flag-C1HwnZXJ.js.map} +1 -1
- package/dist/{FullscreenToggle-BuQonKW8.js → FullscreenToggle-B4ynXdCP.js} +4 -4
- package/dist/{FullscreenToggle-BuQonKW8.js.map → FullscreenToggle-B4ynXdCP.js.map} +1 -1
- package/dist/{FullscreenToggle-CWlOXLss.cjs → FullscreenToggle-CEFZQ5OC.cjs} +2 -2
- package/dist/{FullscreenToggle-CWlOXLss.cjs.map → FullscreenToggle-CEFZQ5OC.cjs.map} +1 -1
- package/dist/Icon-B7DJn8Tw.js +5418 -0
- package/dist/Icon-B7DJn8Tw.js.map +1 -0
- package/dist/Icon-CBg21lKA.cjs +2 -0
- package/dist/Icon-CBg21lKA.cjs.map +1 -0
- package/dist/IconButton-EaExCXRq.js +68 -0
- package/dist/{IconButton-BoURJOUD.js.map → IconButton-EaExCXRq.js.map} +1 -1
- package/dist/IconButton-wW1o4HHw.cjs +2 -0
- package/dist/{IconButton-CiDPeKM4.cjs.map → IconButton-wW1o4HHw.cjs.map} +1 -1
- package/dist/ImageEditor-DTFQZ6ON.js +2709 -0
- package/dist/ImageEditor-DTFQZ6ON.js.map +1 -0
- package/dist/ImageEditor-D_HKfDbx.cjs +60 -0
- package/dist/ImageEditor-D_HKfDbx.cjs.map +1 -0
- package/dist/Link-BZjolIAF.js +48 -0
- package/dist/{Link-BQlvsu9V.js.map → Link-BZjolIAF.js.map} +1 -1
- package/dist/Link-CtttVM6w.cjs +2 -0
- package/dist/{Link-GZT51mKx.cjs.map → Link-CtttVM6w.cjs.map} +1 -1
- package/dist/{List-CKoNx21F.cjs → List-CLUXeaXS.cjs} +2 -2
- package/dist/{List-CKoNx21F.cjs.map → List-CLUXeaXS.cjs.map} +1 -1
- package/dist/{List-2Y3ktTcF.js → List-DS91CZUt.js} +2 -2
- package/dist/{List-2Y3ktTcF.js.map → List-DS91CZUt.js.map} +1 -1
- package/dist/ListItem-CguNjf-u.cjs +2 -0
- package/dist/{ListItem-DkCYXucd.cjs.map → ListItem-CguNjf-u.cjs.map} +1 -1
- package/dist/ListItem-Ezmdk7q-.js +76 -0
- package/dist/{ListItem-2Lr5_NRY.js.map → ListItem-Ezmdk7q-.js.map} +1 -1
- package/dist/{Loader-CAmRn8Oj.cjs → Loader-DNR2_YHm.cjs} +2 -2
- package/dist/{Loader-CAmRn8Oj.cjs.map → Loader-DNR2_YHm.cjs.map} +1 -1
- package/dist/{Loader-CnTuddK7.js → Loader-D_Foo6Hj.js} +2 -2
- package/dist/{Loader-CnTuddK7.js.map → Loader-D_Foo6Hj.js.map} +1 -1
- package/dist/{LocationPicker-BwQ6ULMF.cjs → LocationPicker-CdO37PKg.cjs} +2 -2
- package/dist/{LocationPicker-BwQ6ULMF.cjs.map → LocationPicker-CdO37PKg.cjs.map} +1 -1
- package/dist/{LocationPicker-Cns3fkYI.js → LocationPicker-DGbnbTW9.js} +8 -8
- package/dist/{LocationPicker-Cns3fkYI.js.map → LocationPicker-DGbnbTW9.js.map} +1 -1
- package/dist/Modal-1rIBMvKH.js +154 -0
- package/dist/Modal-1rIBMvKH.js.map +1 -0
- package/dist/Modal-Du-uVpYw.cjs +2 -0
- package/dist/Modal-Du-uVpYw.cjs.map +1 -0
- package/dist/MultiSelect-BoqunsM9.js +219 -0
- package/dist/{MultiSelect-svEVZNbp.js.map → MultiSelect-BoqunsM9.js.map} +1 -1
- package/dist/MultiSelect-lAAaD0uL.cjs +2 -0
- package/dist/{MultiSelect-DJ6tRseY.cjs.map → MultiSelect-lAAaD0uL.cjs.map} +1 -1
- package/dist/{NumberField-sokUuuBR.cjs → NumberField-CyUA6eob.cjs} +2 -2
- package/dist/{NumberField-sokUuuBR.cjs.map → NumberField-CyUA6eob.cjs.map} +1 -1
- package/dist/{NumberField-9ekoB1wS.js → NumberField-DHFGNQjZ.js} +4 -4
- package/dist/{NumberField-9ekoB1wS.js.map → NumberField-DHFGNQjZ.js.map} +1 -1
- package/dist/OtpField-CIy5OtXI.cjs +2 -0
- package/dist/{OtpField-DlkGju72.cjs.map → OtpField-CIy5OtXI.cjs.map} +1 -1
- package/dist/{OtpField-DA7zJwy9.js → OtpField-pL9nj4AW.js} +61 -61
- package/dist/{OtpField-DA7zJwy9.js.map → OtpField-pL9nj4AW.js.map} +1 -1
- package/dist/Overlay-CywFQfjm.cjs +2 -0
- package/dist/Overlay-CywFQfjm.cjs.map +1 -0
- package/dist/Overlay-DiL0ZARH.js +60 -0
- package/dist/Overlay-DiL0ZARH.js.map +1 -0
- package/dist/{PageError-vD8Dpfns.js → PageError-C5SO0mVJ.js} +5 -5
- package/dist/{PageError-vD8Dpfns.js.map → PageError-C5SO0mVJ.js.map} +1 -1
- package/dist/{PageError-DUN5PzDF.cjs → PageError-DbokLmOY.cjs} +2 -2
- package/dist/{PageError-DUN5PzDF.cjs.map → PageError-DbokLmOY.cjs.map} +1 -1
- package/dist/{PageLayout-BesuKuX6.cjs → PageLayout-B7ZDiNq8.cjs} +2 -2
- package/dist/{PageLayout-BesuKuX6.cjs.map → PageLayout-B7ZDiNq8.cjs.map} +1 -1
- package/dist/{PageLayout-CdObvxt7.js → PageLayout-Du-D6Pd4.js} +5 -5
- package/dist/{PageLayout-CdObvxt7.js.map → PageLayout-Du-D6Pd4.js.map} +1 -1
- package/dist/{PageNotFound-Cc5eZ6w3.js → PageNotFound-DSkoMfed.js} +5 -5
- package/dist/{PageNotFound-Cc5eZ6w3.js.map → PageNotFound-DSkoMfed.js.map} +1 -1
- package/dist/{PageNotFound-CfOAhmJ-.cjs → PageNotFound-DfNwdtgJ.cjs} +2 -2
- package/dist/{PageNotFound-CfOAhmJ-.cjs.map → PageNotFound-DfNwdtgJ.cjs.map} +1 -1
- package/dist/Pagination-BH8ACaAC.js +139 -0
- package/dist/{Pagination-CX0S1RrF.js.map → Pagination-BH8ACaAC.js.map} +1 -1
- package/dist/Pagination-DO2Os4an.cjs +2 -0
- package/dist/{Pagination-CAD9_Nr_.cjs.map → Pagination-DO2Os4an.cjs.map} +1 -1
- package/dist/{PaletteField-CVIwl2nV.js → PaletteField-BFb0PQ-S.js} +3 -3
- package/dist/{PaletteField-CVIwl2nV.js.map → PaletteField-BFb0PQ-S.js.map} +1 -1
- package/dist/{PaletteField-CpiEkXcB.cjs → PaletteField-BfvcJvGM.cjs} +2 -2
- package/dist/{PaletteField-CpiEkXcB.cjs.map → PaletteField-BfvcJvGM.cjs.map} +1 -1
- package/dist/PhoneField-C-wOm7g5.cjs +2 -0
- package/dist/{PhoneField-Dlnnv4DU.cjs.map → PhoneField-C-wOm7g5.cjs.map} +1 -1
- package/dist/{PhoneField-xHLTU-o5.js → PhoneField-DFhGWgbK.js} +106 -106
- package/dist/{PhoneField-xHLTU-o5.js.map → PhoneField-DFhGWgbK.js.map} +1 -1
- package/dist/{Popconfirm-Chlm_M5T.cjs → Popconfirm-_53vtMI0.cjs} +2 -2
- package/dist/{Popconfirm-Chlm_M5T.cjs.map → Popconfirm-_53vtMI0.cjs.map} +1 -1
- package/dist/{Popconfirm-DIlygJY8.js → Popconfirm-o5da44ra.js} +4 -4
- package/dist/{Popconfirm-DIlygJY8.js.map → Popconfirm-o5da44ra.js.map} +1 -1
- package/dist/{Progress-DqvKmyQW.cjs → Progress-BSinoQ8t.cjs} +2 -2
- package/dist/{Progress-DqvKmyQW.cjs.map → Progress-BSinoQ8t.cjs.map} +1 -1
- package/dist/{Progress-BAEhawtj.js → Progress-CHzNwegP.js} +2 -2
- package/dist/{Progress-BAEhawtj.js.map → Progress-CHzNwegP.js.map} +1 -1
- package/dist/{QrCode-D7BTYcW2.js → QrCode-C3hAfNP6.js} +2 -2
- package/dist/{QrCode-D7BTYcW2.js.map → QrCode-C3hAfNP6.js.map} +1 -1
- package/dist/{QrCode-Dqsk49vX.cjs → QrCode-tNNnsbHM.cjs} +2 -2
- package/dist/{QrCode-Dqsk49vX.cjs.map → QrCode-tNNnsbHM.cjs.map} +1 -1
- package/dist/{RemoveDialog-CQIm9GTH.js → RemoveDialog-CXy-PY-G.js} +6 -6
- package/dist/{RemoveDialog-CQIm9GTH.js.map → RemoveDialog-CXy-PY-G.js.map} +1 -1
- package/dist/{RemoveDialog-DZ-EqIfS.cjs → RemoveDialog-Hi_gV-8A.cjs} +2 -2
- package/dist/{RemoveDialog-DZ-EqIfS.cjs.map → RemoveDialog-Hi_gV-8A.cjs.map} +1 -1
- package/dist/RichTextEditor-BhVE1q4U.cjs +2 -0
- package/dist/RichTextEditor-BhVE1q4U.cjs.map +1 -0
- package/dist/RichTextEditor-DQz9jGD3.js +1011 -0
- package/dist/RichTextEditor-DQz9jGD3.js.map +1 -0
- package/dist/{RootLayout-Cl98ghy1.js → RootLayout-CjT5uHlt.js} +21 -21
- package/dist/{RootLayout-Cl98ghy1.js.map → RootLayout-CjT5uHlt.js.map} +1 -1
- package/dist/{RootLayout-s_Q_kSoS.cjs → RootLayout-iSGY4MsS.cjs} +2 -2
- package/dist/{RootLayout-s_Q_kSoS.cjs.map → RootLayout-iSGY4MsS.cjs.map} +1 -1
- package/dist/Select-DVoL547R.cjs +2 -0
- package/dist/{Select-BrjXCXtl.cjs.map → Select-DVoL547R.cjs.map} +1 -1
- package/dist/{Select-CG8UJL9R.js → Select-DuLDLnnb.js} +47 -47
- package/dist/{Select-CG8UJL9R.js.map → Select-DuLDLnnb.js.map} +1 -1
- package/dist/Sidebar-DRQo4zAF.cjs +2 -0
- package/dist/{Sidebar-DLlqHvQJ.cjs.map → Sidebar-DRQo4zAF.cjs.map} +1 -1
- package/dist/{Sidebar-CbPr34jd.js → Sidebar-DvQmuBNK.js} +59 -59
- package/dist/{Sidebar-CbPr34jd.js.map → Sidebar-DvQmuBNK.js.map} +1 -1
- package/dist/{Slider-B5iG-HSw.js → Slider-D-QjclQJ.js} +2 -2
- package/dist/{Slider-B5iG-HSw.js.map → Slider-D-QjclQJ.js.map} +1 -1
- package/dist/{Slider-DTnui01g.cjs → Slider-DxnCQRSH.cjs} +2 -2
- package/dist/{Slider-DTnui01g.cjs.map → Slider-DxnCQRSH.cjs.map} +1 -1
- package/dist/{SpeedDial-i5kxikmt.cjs → SpeedDial-37OMwj9C.cjs} +2 -2
- package/dist/{SpeedDial-i5kxikmt.cjs.map → SpeedDial-37OMwj9C.cjs.map} +1 -1
- package/dist/{SpeedDial-Be3SHkzw.js → SpeedDial-BBQ9y6lm.js} +3 -3
- package/dist/{SpeedDial-Be3SHkzw.js.map → SpeedDial-BBQ9y6lm.js.map} +1 -1
- package/dist/Stepper-CU5Y0kfj.js +168 -0
- package/dist/{Stepper-BDQt-oVG.js.map → Stepper-CU5Y0kfj.js.map} +1 -1
- package/dist/Stepper-WqkfGPnQ.cjs +2 -0
- package/dist/{Stepper-e8qBsKYW.cjs.map → Stepper-WqkfGPnQ.cjs.map} +1 -1
- package/dist/{SwatchPicker-0gnOvv7U.cjs → SwatchPicker-DCjE0T80.cjs} +2 -2
- package/dist/{SwatchPicker-0gnOvv7U.cjs.map → SwatchPicker-DCjE0T80.cjs.map} +1 -1
- package/dist/{SwatchPicker-BZHRELA-.js → SwatchPicker-DS4WY2eM.js} +2 -2
- package/dist/{SwatchPicker-BZHRELA-.js.map → SwatchPicker-DS4WY2eM.js.map} +1 -1
- package/dist/{Table-ChdM_vyi.js → Table-BECUUZtf.js} +346 -346
- package/dist/Table-BECUUZtf.js.map +1 -0
- package/dist/Table-BnlvrRMr.cjs +2 -0
- package/dist/Table-BnlvrRMr.cjs.map +1 -0
- package/dist/Tabs-BXAHddi7.js +193 -0
- package/dist/{Tabs-BxZrgozI.js.map → Tabs-BXAHddi7.js.map} +1 -1
- package/dist/Tabs-DiL1vNW3.cjs +2 -0
- package/dist/{Tabs-C4kB1yfG.cjs.map → Tabs-DiL1vNW3.cjs.map} +1 -1
- package/dist/{TagsField-Bg5BcQU-.cjs → TagsField-BsV_6dff.cjs} +2 -2
- package/dist/{TagsField-Bg5BcQU-.cjs.map → TagsField-BsV_6dff.cjs.map} +1 -1
- package/dist/{TagsField-DWlIt7XO.js → TagsField-C1SgykAj.js} +5 -5
- package/dist/{TagsField-DWlIt7XO.js.map → TagsField-C1SgykAj.js.map} +1 -1
- package/dist/{TextField-B-xqoDZR.cjs → TextField-DUv689u2.cjs} +2 -2
- package/dist/{TextField-B-xqoDZR.cjs.map → TextField-DUv689u2.cjs.map} +1 -1
- package/dist/{TextField-Dwx5GPxz.js → TextField-oZI7thoU.js} +4 -4
- package/dist/{TextField-Dwx5GPxz.js.map → TextField-oZI7thoU.js.map} +1 -1
- package/dist/{ThemeToggle-CK2USfgx.js → ThemeToggle-5uHCUsX7.js} +4 -4
- package/dist/{ThemeToggle-CK2USfgx.js.map → ThemeToggle-5uHCUsX7.js.map} +1 -1
- package/dist/{ThemeToggle-DFgv1bsh.cjs → ThemeToggle-xn3roH0u.cjs} +2 -2
- package/dist/{ThemeToggle-DFgv1bsh.cjs.map → ThemeToggle-xn3roH0u.cjs.map} +1 -1
- package/dist/TimeColumns-By23LHZw.cjs +2 -0
- package/dist/{TimeColumns-B8KTj-tc.cjs.map → TimeColumns-By23LHZw.cjs.map} +1 -1
- package/dist/TimeColumns-lO33mhX7.js +147 -0
- package/dist/{TimeColumns-BWcuu3l7.js.map → TimeColumns-lO33mhX7.js.map} +1 -1
- package/dist/{TimePicker-DjL15hz1.cjs → TimePicker-BHFNH8LR.cjs} +2 -2
- package/dist/{TimePicker-DjL15hz1.cjs.map → TimePicker-BHFNH8LR.cjs.map} +1 -1
- package/dist/{TimePicker-YMVHevpZ.js → TimePicker-Dl5p833O.js} +7 -7
- package/dist/{TimePicker-YMVHevpZ.js.map → TimePicker-Dl5p833O.js.map} +1 -1
- package/dist/Timeline-DOojNvLG.cjs +2 -0
- package/dist/Timeline-DOojNvLG.cjs.map +1 -0
- package/dist/Timeline-Dg03dwTN.js +87 -0
- package/dist/Timeline-Dg03dwTN.js.map +1 -0
- package/dist/{Toaster-pHN2pxrU.js → Toaster-BPBFZiTr.js} +3 -3
- package/dist/{Toaster-pHN2pxrU.js.map → Toaster-BPBFZiTr.js.map} +1 -1
- package/dist/{Toaster-9hZ5MuW7.cjs → Toaster-D4T89N1S.cjs} +2 -2
- package/dist/{Toaster-9hZ5MuW7.cjs.map → Toaster-D4T89N1S.cjs.map} +1 -1
- package/dist/ToggleButtonGroup-CGNRLxjg.cjs +2 -0
- package/dist/{ToggleButtonGroup-Ci_DFvdt.cjs.map → ToggleButtonGroup-CGNRLxjg.cjs.map} +1 -1
- package/dist/{ToggleButtonGroup-Mdskkjdh.js → ToggleButtonGroup-K6ZcrTZT.js} +37 -37
- package/dist/{ToggleButtonGroup-Mdskkjdh.js.map → ToggleButtonGroup-K6ZcrTZT.js.map} +1 -1
- package/dist/{TranslatedFields-BpWU5ZcG.js → TranslatedFields-Clsr84XC.js} +5 -5
- package/dist/{TranslatedFields-BpWU5ZcG.js.map → TranslatedFields-Clsr84XC.js.map} +1 -1
- package/dist/{TranslatedFields-SvS37hab.cjs → TranslatedFields-LdeJeHEp.cjs} +2 -2
- package/dist/{TranslatedFields-SvS37hab.cjs.map → TranslatedFields-LdeJeHEp.cjs.map} +1 -1
- package/dist/{UserCard-VPaexedS.cjs → UserCard-CQOiWppq.cjs} +2 -2
- package/dist/{UserCard-VPaexedS.cjs.map → UserCard-CQOiWppq.cjs.map} +1 -1
- package/dist/{UserCard-cmZrMvwL.js → UserCard-Cr75RwZb.js} +5 -5
- package/dist/{UserCard-cmZrMvwL.js.map → UserCard-Cr75RwZb.js.map} +1 -1
- package/dist/chunks/icons/{25-knEB8mSp.js → 25-BMMPtr_E.js} +4 -5
- package/dist/chunks/icons/{25-Dho_3EHD.cjs → 25-uATZNfXE.cjs} +1 -1
- package/dist/chunks/icons/{2b-CQJdcF1h.js → 2b-Brkug4c-.js} +10 -11
- package/dist/chunks/icons/{2b-C2_97u16.cjs → 2b-CIVRGp1R.cjs} +1 -1
- package/dist/chunks/icons/57-BLoIUlhF.js +27 -0
- package/dist/chunks/icons/57-D4zLdDZ1.cjs +1 -0
- package/dist/chunks/icons/{75-DqLkMUyj.cjs → 75-C2eJ2Tvr.cjs} +1 -1
- package/dist/chunks/icons/{75-D5RQw6IJ.js → 75-D16WojvG.js} +6 -7
- package/dist/chunks/icons/{7c-DpnA_JOJ.js → 7c-0j5Sno5_.js} +6 -7
- package/dist/chunks/icons/{7c-DEaFwltT.cjs → 7c-LUfAyp72.cjs} +1 -1
- package/dist/chunks/icons/8a-BJ_LOjmW.js +26 -0
- package/dist/chunks/icons/8a-CYkhOibI.cjs +1 -0
- package/dist/chunks/icons/97-Bx7FkkGJ.js +12 -0
- package/dist/chunks/icons/97-D7pUHrOX.cjs +1 -0
- package/dist/chunks/icons/{b7-BtHkI92Y.js → b7-DmmkevXf.js} +17 -18
- package/dist/chunks/icons/{b7-B-dB5jrV.cjs → b7-rI1GpsxW.cjs} +1 -1
- package/dist/chunks/icons/b8-De0yKEKv.js +28 -0
- package/dist/chunks/icons/b8-eR814BVJ.cjs +1 -0
- package/dist/chunks/icons/{b9-Bw942fE3.js → b9-CJO6ZdSw.js} +10 -11
- package/dist/chunks/icons/{b9-Be-J4RIp.cjs → b9-DZdWz9qg.cjs} +1 -1
- package/dist/chunks/icons/d5-BAPeb6B0.cjs +1 -0
- package/dist/chunks/icons/d5-BJJanOLe.js +21 -0
- package/dist/chunks/icons/d8--vRkIVal.js +19 -0
- package/dist/chunks/icons/d8-BfMys92X.cjs +1 -0
- package/dist/chunks/icons/dd-CARhkHmU.js +21 -0
- package/dist/chunks/icons/dd-D61yllMP.cjs +1 -0
- package/dist/components/Accordion/index.cjs +1 -1
- package/dist/components/Accordion/index.js +1 -1
- package/dist/components/Alert/index.cjs +1 -1
- package/dist/components/Alert/index.js +1 -1
- package/dist/components/AuthLayout/index.cjs +1 -1
- package/dist/components/AuthLayout/index.js +1 -1
- package/dist/components/Avatar/index.cjs +1 -1
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Breadcrumbs/index.cjs +1 -1
- package/dist/components/Breadcrumbs/index.js +1 -1
- package/dist/components/Button/index.cjs +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/ChoiceCard/index.cjs +1 -1
- package/dist/components/ChoiceCard/index.js +1 -1
- package/dist/components/CodeBlock/index.cjs +1 -1
- package/dist/components/CodeBlock/index.js +1 -1
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/ColorRamp/index.cjs +1 -1
- package/dist/components/ColorRamp/index.js +1 -1
- package/dist/components/CopyButton/index.cjs +1 -1
- package/dist/components/CopyButton/index.js +1 -1
- package/dist/components/DashedButton/index.cjs +1 -1
- package/dist/components/DashedButton/index.js +1 -1
- package/dist/components/DatePicker/index.cjs +1 -1
- package/dist/components/DatePicker/index.js +1 -1
- package/dist/components/DateTimePicker/index.cjs +1 -1
- package/dist/components/DateTimePicker/index.js +1 -1
- package/dist/components/DescriptionList/index.cjs +1 -1
- package/dist/components/DescriptionList/index.js +1 -1
- package/dist/components/Dropdown/index.cjs +1 -1
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/EmptyState/index.cjs +1 -1
- package/dist/components/EmptyState/index.js +1 -1
- package/dist/components/ErrorState/index.cjs +1 -1
- package/dist/components/ErrorState/index.js +2 -2
- package/dist/components/FileCard/index.cjs +1 -1
- package/dist/components/FileCard/index.js +1 -1
- package/dist/components/FileUploader/FileUploader.d.cts +33 -5
- package/dist/components/FileUploader/FileUploader.d.ts +33 -5
- package/dist/components/FileUploader/FileUploaderEditDialog.d.cts +8 -18
- package/dist/components/FileUploader/FileUploaderEditDialog.d.ts +8 -18
- package/dist/components/FileUploader/index.cjs +1 -1
- package/dist/components/FileUploader/index.js +1 -1
- package/dist/components/Flag/index.cjs +1 -1
- package/dist/components/Flag/index.js +1 -1
- package/dist/components/FullscreenToggle/index.cjs +1 -1
- package/dist/components/FullscreenToggle/index.js +1 -1
- package/dist/components/Icon/index.cjs +1 -1
- package/dist/components/Icon/index.js +1 -1
- package/dist/components/IconButton/index.cjs +1 -1
- package/dist/components/IconButton/index.js +1 -1
- package/dist/components/ImageEditor/CropShapeMenu.d.cts +17 -0
- package/dist/components/ImageEditor/CropShapeMenu.d.ts +17 -0
- package/dist/components/ImageEditor/EditorStage.d.cts +27 -0
- package/dist/components/ImageEditor/EditorStage.d.ts +27 -0
- package/dist/components/ImageEditor/FilterStrip.d.cts +14 -0
- package/dist/components/ImageEditor/FilterStrip.d.ts +14 -0
- package/dist/components/ImageEditor/ImageEditor.d.cts +30 -0
- package/dist/components/ImageEditor/ImageEditor.d.ts +30 -0
- package/dist/components/ImageEditor/ResizePanel.d.cts +19 -0
- package/dist/components/ImageEditor/ResizePanel.d.ts +19 -0
- package/dist/components/ImageEditor/RulerSlider.d.cts +37 -0
- package/dist/components/ImageEditor/RulerSlider.d.ts +37 -0
- package/dist/components/ImageEditor/core/affine.d.cts +11 -0
- package/dist/components/ImageEditor/core/affine.d.ts +11 -0
- package/dist/components/ImageEditor/core/editor.d.cts +69 -0
- package/dist/components/ImageEditor/core/editor.d.ts +69 -0
- package/dist/components/ImageEditor/core/geometry.d.cts +112 -0
- package/dist/components/ImageEditor/core/geometry.d.ts +112 -0
- package/dist/components/ImageEditor/core/load.d.cts +26 -0
- package/dist/components/ImageEditor/core/load.d.ts +26 -0
- package/dist/components/ImageEditor/core/matrix.d.cts +55 -0
- package/dist/components/ImageEditor/core/matrix.d.ts +55 -0
- package/dist/components/ImageEditor/core/pixels.d.cts +24 -0
- package/dist/components/ImageEditor/core/pixels.d.ts +24 -0
- package/dist/components/ImageEditor/core/redact.d.cts +37 -0
- package/dist/components/ImageEditor/core/redact.d.ts +37 -0
- package/dist/components/ImageEditor/core/render.d.cts +19 -0
- package/dist/components/ImageEditor/core/render.d.ts +19 -0
- package/dist/components/ImageEditor/core/scene.d.cts +47 -0
- package/dist/components/ImageEditor/core/scene.d.ts +47 -0
- package/dist/components/ImageEditor/core/spring.d.cts +17 -0
- package/dist/components/ImageEditor/core/spring.d.ts +17 -0
- package/dist/components/ImageEditor/core/types.d.cts +104 -0
- package/dist/components/ImageEditor/core/types.d.ts +104 -0
- package/dist/components/ImageEditor/core/webgl.d.cts +55 -0
- package/dist/components/ImageEditor/core/webgl.d.ts +55 -0
- package/dist/components/ImageEditor/index.cjs +2 -0
- package/dist/components/ImageEditor/index.cjs.map +1 -0
- package/dist/components/ImageEditor/index.d.cts +6 -0
- package/dist/components/ImageEditor/index.d.ts +6 -0
- package/dist/components/ImageEditor/index.js +9 -0
- package/dist/components/ImageEditor/index.js.map +1 -0
- package/dist/components/Link/index.cjs +1 -1
- package/dist/components/Link/index.js +1 -1
- package/dist/components/List/index.cjs +1 -1
- package/dist/components/List/index.js +2 -2
- package/dist/components/Loader/index.cjs +1 -1
- package/dist/components/Loader/index.js +1 -1
- package/dist/components/LocationPicker/index.cjs +1 -1
- package/dist/components/LocationPicker/index.js +1 -1
- package/dist/components/Modal/index.cjs +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/MultiSelect/index.cjs +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/NumberField/index.cjs +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OtpField/index.cjs +1 -1
- package/dist/components/OtpField/index.js +1 -1
- package/dist/components/PageError/index.cjs +1 -1
- package/dist/components/PageError/index.js +1 -1
- package/dist/components/PageLayout/index.cjs +1 -1
- package/dist/components/PageLayout/index.js +1 -1
- package/dist/components/PageNotFound/index.cjs +1 -1
- package/dist/components/PageNotFound/index.js +1 -1
- package/dist/components/Pagination/index.cjs +1 -1
- package/dist/components/Pagination/index.js +1 -1
- package/dist/components/PaletteField/index.cjs +1 -1
- package/dist/components/PaletteField/index.js +1 -1
- package/dist/components/PhoneField/index.cjs +1 -1
- package/dist/components/PhoneField/index.js +1 -1
- package/dist/components/Popconfirm/index.cjs +1 -1
- package/dist/components/Popconfirm/index.js +1 -1
- package/dist/components/Progress/index.cjs +1 -1
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/QrCode/index.cjs +1 -1
- package/dist/components/QrCode/index.js +1 -1
- package/dist/components/RemoveDialog/index.cjs +1 -1
- package/dist/components/RemoveDialog/index.js +1 -1
- package/dist/components/RichTextEditor/RichTextEditor.d.cts +3 -2
- package/dist/components/RichTextEditor/RichTextEditor.d.ts +3 -2
- package/dist/components/RichTextEditor/index.cjs +1 -1
- package/dist/components/RichTextEditor/index.js +1 -1
- package/dist/components/RichTextEditor/nodes/ImageNode.d.cts +8 -5
- package/dist/components/RichTextEditor/nodes/ImageNode.d.ts +8 -5
- package/dist/components/RichTextEditor/nodes/VideoNode.d.cts +4 -4
- package/dist/components/RichTextEditor/nodes/VideoNode.d.ts +4 -4
- package/dist/components/RootLayout/index.cjs +1 -1
- package/dist/components/RootLayout/index.js +1 -1
- package/dist/components/Select/index.cjs +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/Sidebar/index.cjs +1 -1
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/components/Slider/index.cjs +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/SpeedDial/index.cjs +1 -1
- package/dist/components/SpeedDial/index.js +1 -1
- package/dist/components/Stepper/index.cjs +1 -1
- package/dist/components/Stepper/index.js +1 -1
- package/dist/components/SwatchPicker/index.cjs +1 -1
- package/dist/components/SwatchPicker/index.js +1 -1
- package/dist/components/Table/index.cjs +1 -1
- package/dist/components/Table/index.js +1 -1
- package/dist/components/Tabs/index.cjs +1 -1
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/TagsField/index.cjs +1 -1
- package/dist/components/TagsField/index.js +1 -1
- package/dist/components/TextField/index.cjs +1 -1
- package/dist/components/TextField/index.js +1 -1
- package/dist/components/ThemeToggle/index.cjs +1 -1
- package/dist/components/ThemeToggle/index.js +1 -1
- package/dist/components/TimePicker/index.cjs +1 -1
- package/dist/components/TimePicker/index.js +1 -1
- package/dist/components/Timeline/Timeline.d.cts +16 -4
- package/dist/components/Timeline/Timeline.d.ts +16 -4
- package/dist/components/Timeline/TimelineItem.d.cts +12 -6
- package/dist/components/Timeline/TimelineItem.d.ts +12 -6
- package/dist/components/Timeline/index.cjs +1 -1
- package/dist/components/Timeline/index.d.cts +1 -1
- package/dist/components/Timeline/index.d.ts +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Timeline/timelineContext.d.cts +3 -2
- package/dist/components/Timeline/timelineContext.d.ts +3 -2
- package/dist/components/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/ToggleButton/index.cjs +1 -1
- package/dist/components/ToggleButton/index.js +1 -1
- package/dist/components/TranslatedFields/index.cjs +1 -1
- package/dist/components/TranslatedFields/index.js +1 -1
- package/dist/components/UserCard/index.cjs +1 -1
- package/dist/components/UserCard/index.js +1 -1
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/entries/app.cjs +1 -1
- package/dist/entries/app.js +1 -1
- package/dist/entries/components.cjs +1 -1
- package/dist/entries/components.js +164 -159
- package/dist/entries/components.js.map +1 -1
- package/dist/entries/i18n.cjs +1 -1
- package/dist/entries/i18n.js +2 -2
- package/dist/entries/icons.cjs +1 -1
- package/dist/entries/icons.js +1 -1
- package/dist/entries/theme.cjs +1 -1
- package/dist/entries/theme.js +1 -1
- package/dist/i18n/messages.d.cts +61 -4
- package/dist/i18n/messages.d.ts +61 -4
- package/dist/icons/names.d.cts +3 -3
- package/dist/icons/names.d.ts +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +161 -156
- package/dist/index.js.map +1 -1
- package/dist/{messages-BiRLMy1E.js → messages-BZYBZ3GR.js} +101 -44
- package/dist/messages-BZYBZ3GR.js.map +1 -0
- package/dist/{messages-C_fRRCg6.cjs → messages-CTHjpVJq.cjs} +9 -9
- package/dist/messages-CTHjpVJq.cjs.map +1 -0
- package/dist/{useHomeTo-DdmOGy09.js → useHomeTo-Biyc-Un8.js} +2 -2
- package/dist/{useHomeTo-DdmOGy09.js.map → useHomeTo-Biyc-Un8.js.map} +1 -1
- package/dist/{useHomeTo-HCkVzGTu.cjs → useHomeTo-D7wcH6aw.cjs} +2 -2
- package/dist/{useHomeTo-HCkVzGTu.cjs.map → useHomeTo-D7wcH6aw.cjs.map} +1 -1
- package/dist/{useOptionMenu-BqCj10_a.cjs → useOptionMenu-B40OOVsO.cjs} +2 -2
- package/dist/{useOptionMenu-BqCj10_a.cjs.map → useOptionMenu-B40OOVsO.cjs.map} +1 -1
- package/dist/{useOptionMenu-EiyIkC3E.js → useOptionMenu-BTt8t9SM.js} +6 -6
- package/dist/{useOptionMenu-EiyIkC3E.js.map → useOptionMenu-BTt8t9SM.js.map} +1 -1
- package/package.json +1 -6
- package/dist/Alert-B4XZDk16.cjs +0 -2
- package/dist/Alert-D5E1PLkV.js +0 -70
- package/dist/Breadcrumbs-DSUxcp6u.cjs +0 -2
- package/dist/Breadcrumbs-M31xyok8.js +0 -34
- package/dist/Button-CtADzomU.js +0 -72
- package/dist/Button-Q_5uA-zc.cjs +0 -2
- package/dist/Chip-CrBizrvG.cjs +0 -2
- package/dist/Chip-DYZ5w7VM.js +0 -92
- package/dist/ChoiceCardGroup-C7Eengyd.cjs +0 -2
- package/dist/ChoiceCardGroup-q0yN-TeQ.js +0 -180
- package/dist/CodeBlock-B6Eqc4HR.js +0 -96
- package/dist/CodeBlock-DW4uaZXM.cjs +0 -2
- package/dist/DashedButton-Dw7xHgIp.cjs +0 -2
- package/dist/DashedButton-csz6Jt_K.js +0 -58
- package/dist/DatePicker.module-BDtTsg8M.cjs +0 -2
- package/dist/DatePicker.module-CMMQyEhG.js +0 -138
- package/dist/DescriptionList-BBvfABps.cjs +0 -2
- package/dist/Dropdown-CMjURWYd.cjs +0 -2
- package/dist/Dropdown-CMjURWYd.cjs.map +0 -1
- package/dist/Dropdown-CnDBlB02.js +0 -146
- package/dist/Dropdown-CnDBlB02.js.map +0 -1
- package/dist/FileCard-BqMproT9.cjs +0 -2
- package/dist/FileUploader-BimFH5d8.cjs +0 -2
- package/dist/FileUploader-BimFH5d8.cjs.map +0 -1
- package/dist/FileUploader-LJIMh5_b.js +0 -707
- package/dist/FileUploader-LJIMh5_b.js.map +0 -1
- package/dist/Icon-B6lz-V0A.cjs +0 -2
- package/dist/Icon-B6lz-V0A.cjs.map +0 -1
- package/dist/Icon-D5TxgfCc.js +0 -5404
- package/dist/Icon-D5TxgfCc.js.map +0 -1
- package/dist/IconButton-BoURJOUD.js +0 -68
- package/dist/IconButton-CiDPeKM4.cjs +0 -2
- package/dist/Link-BQlvsu9V.js +0 -48
- package/dist/Link-GZT51mKx.cjs +0 -2
- package/dist/ListItem-2Lr5_NRY.js +0 -76
- package/dist/ListItem-DkCYXucd.cjs +0 -2
- package/dist/Modal-CYcVOzID.js +0 -206
- package/dist/Modal-CYcVOzID.js.map +0 -1
- package/dist/Modal-DwY3jGHE.cjs +0 -2
- package/dist/Modal-DwY3jGHE.cjs.map +0 -1
- package/dist/MultiSelect-DJ6tRseY.cjs +0 -2
- package/dist/MultiSelect-svEVZNbp.js +0 -219
- package/dist/OtpField-DlkGju72.cjs +0 -2
- package/dist/Pagination-CAD9_Nr_.cjs +0 -2
- package/dist/Pagination-CX0S1RrF.js +0 -139
- package/dist/PhoneField-Dlnnv4DU.cjs +0 -2
- package/dist/RichTextEditor-Ba1G_qXu.cjs +0 -2
- package/dist/RichTextEditor-Ba1G_qXu.cjs.map +0 -1
- package/dist/RichTextEditor-CJcbxQ6H.js +0 -916
- package/dist/RichTextEditor-CJcbxQ6H.js.map +0 -1
- package/dist/Select-BrjXCXtl.cjs +0 -2
- package/dist/Sidebar-DLlqHvQJ.cjs +0 -2
- package/dist/Stepper-BDQt-oVG.js +0 -168
- package/dist/Stepper-e8qBsKYW.cjs +0 -2
- package/dist/Table-C14fRX1U.cjs +0 -2
- package/dist/Table-C14fRX1U.cjs.map +0 -1
- package/dist/Table-ChdM_vyi.js.map +0 -1
- package/dist/Tabs-BxZrgozI.js +0 -193
- package/dist/Tabs-C4kB1yfG.cjs +0 -2
- package/dist/TimeColumns-B8KTj-tc.cjs +0 -2
- package/dist/TimeColumns-BWcuu3l7.js +0 -147
- package/dist/Timeline-Cb1krSlo.js +0 -70
- package/dist/Timeline-Cb1krSlo.js.map +0 -1
- package/dist/Timeline-CmluHBIT.cjs +0 -2
- package/dist/Timeline-CmluHBIT.cjs.map +0 -1
- package/dist/ToggleButtonGroup-Ci_DFvdt.cjs +0 -2
- package/dist/chunks/icons/57-Bxh2lSz-.cjs +0 -1
- package/dist/chunks/icons/57-CkmrDM9A.js +0 -28
- package/dist/chunks/icons/8a-CThAqelS.js +0 -27
- package/dist/chunks/icons/8a-DRBAtpxY.cjs +0 -1
- package/dist/chunks/icons/97-J9NBhX2o.js +0 -14
- package/dist/chunks/icons/97-r2YXIQ_T.cjs +0 -1
- package/dist/chunks/icons/b8-CyIivk3C.cjs +0 -1
- package/dist/chunks/icons/b8-DcK0w8WM.js +0 -29
- package/dist/chunks/icons/d5-3fWtNlXW.js +0 -20
- package/dist/chunks/icons/d5-CoG_Hfw9.cjs +0 -1
- package/dist/chunks/icons/d8-DsebfeMy.cjs +0 -1
- package/dist/chunks/icons/d8-DtOvDDrr.js +0 -20
- package/dist/chunks/icons/dd-BXVES9Ib.js +0 -22
- package/dist/chunks/icons/dd-beaqCKss.cjs +0 -1
- package/dist/messages-BiRLMy1E.js.map +0 -1
- package/dist/messages-C_fRRCg6.cjs.map +0 -1
|
@@ -0,0 +1,2709 @@
|
|
|
1
|
+
import { jsxs as B, jsx as w, Fragment as he } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as Ke, useRef as O, useState as Q, useEffect as q, useLayoutEffect as ue, useMemo as mn, useImperativeHandle as fn, useSyncExternalStore as pn, useCallback as gn } from "react";
|
|
3
|
+
import { clsx as K } from "clsx";
|
|
4
|
+
import { B as Me } from "./Button-5LQtDA9d.js";
|
|
5
|
+
import { b as et } from "./Icon-B7DJn8Tw.js";
|
|
6
|
+
import { I as Et } from "./IconButton-EaExCXRq.js";
|
|
7
|
+
import { L as _n } from "./Loader-D_Foo6Hj.js";
|
|
8
|
+
import { O as bn } from "./Overlay-DiL0ZARH.js";
|
|
9
|
+
import { g as wn, a as re } from "./ConfigProvider-CYgmMH4j.js";
|
|
10
|
+
import { D as vn } from "./Dropdown-D-D_Z1Jo.js";
|
|
11
|
+
import { L as Ue } from "./ListItem-Ezmdk7q-.js";
|
|
12
|
+
const Se = [
|
|
13
|
+
1,
|
|
14
|
+
0,
|
|
15
|
+
0,
|
|
16
|
+
0,
|
|
17
|
+
0,
|
|
18
|
+
0,
|
|
19
|
+
1,
|
|
20
|
+
0,
|
|
21
|
+
0,
|
|
22
|
+
0,
|
|
23
|
+
0,
|
|
24
|
+
0,
|
|
25
|
+
1,
|
|
26
|
+
0,
|
|
27
|
+
0,
|
|
28
|
+
0,
|
|
29
|
+
0,
|
|
30
|
+
0,
|
|
31
|
+
1,
|
|
32
|
+
0
|
|
33
|
+
], de = 0.2126, me = 0.7152, fe = 0.0722;
|
|
34
|
+
function xn(t, e) {
|
|
35
|
+
const n = new Array(20);
|
|
36
|
+
for (let i = 0; i < 4; i++)
|
|
37
|
+
for (let o = 0; o < 5; o++) {
|
|
38
|
+
let r = 0;
|
|
39
|
+
for (let a = 0; a < 4; a++) r += t[i * 5 + a] * e[a * 5 + o];
|
|
40
|
+
o === 4 && (r += t[i * 5 + 4]), n[i * 5 + o] = r;
|
|
41
|
+
}
|
|
42
|
+
return n;
|
|
43
|
+
}
|
|
44
|
+
function ot(...t) {
|
|
45
|
+
return t.reduce((e, n) => xn(n, e), Se);
|
|
46
|
+
}
|
|
47
|
+
function Mn(t) {
|
|
48
|
+
return !t || t.every((e, n) => Math.abs(e - Se[n]) < 1e-6);
|
|
49
|
+
}
|
|
50
|
+
const He = (t) => [
|
|
51
|
+
1,
|
|
52
|
+
0,
|
|
53
|
+
0,
|
|
54
|
+
0,
|
|
55
|
+
t,
|
|
56
|
+
0,
|
|
57
|
+
1,
|
|
58
|
+
0,
|
|
59
|
+
0,
|
|
60
|
+
t,
|
|
61
|
+
0,
|
|
62
|
+
0,
|
|
63
|
+
1,
|
|
64
|
+
0,
|
|
65
|
+
t,
|
|
66
|
+
0,
|
|
67
|
+
0,
|
|
68
|
+
0,
|
|
69
|
+
1,
|
|
70
|
+
0
|
|
71
|
+
], vt = (t) => {
|
|
72
|
+
const e = 0.5 * (1 - t);
|
|
73
|
+
return [t, 0, 0, 0, e, 0, t, 0, 0, e, 0, 0, t, 0, e, 0, 0, 0, 1, 0];
|
|
74
|
+
}, St = (t) => {
|
|
75
|
+
const e = 1 - t;
|
|
76
|
+
return [
|
|
77
|
+
de * e + t,
|
|
78
|
+
me * e,
|
|
79
|
+
fe * e,
|
|
80
|
+
0,
|
|
81
|
+
0,
|
|
82
|
+
de * e,
|
|
83
|
+
me * e + t,
|
|
84
|
+
fe * e,
|
|
85
|
+
0,
|
|
86
|
+
0,
|
|
87
|
+
de * e,
|
|
88
|
+
me * e,
|
|
89
|
+
fe * e + t,
|
|
90
|
+
0,
|
|
91
|
+
0,
|
|
92
|
+
0,
|
|
93
|
+
0,
|
|
94
|
+
0,
|
|
95
|
+
1,
|
|
96
|
+
0
|
|
97
|
+
];
|
|
98
|
+
}, Ct = (t, e, n, i = 0, o = 0, r = 0) => [
|
|
99
|
+
t,
|
|
100
|
+
0,
|
|
101
|
+
0,
|
|
102
|
+
0,
|
|
103
|
+
i,
|
|
104
|
+
0,
|
|
105
|
+
e,
|
|
106
|
+
0,
|
|
107
|
+
0,
|
|
108
|
+
o,
|
|
109
|
+
0,
|
|
110
|
+
0,
|
|
111
|
+
n,
|
|
112
|
+
0,
|
|
113
|
+
r,
|
|
114
|
+
0,
|
|
115
|
+
0,
|
|
116
|
+
0,
|
|
117
|
+
1,
|
|
118
|
+
0
|
|
119
|
+
], pe = (t, e) => {
|
|
120
|
+
const n = e - t;
|
|
121
|
+
return [n, 0, 0, 0, t, 0, n, 0, 0, t, 0, 0, n, 0, t, 0, 0, 0, 1, 0];
|
|
122
|
+
}, Fe = [
|
|
123
|
+
0.393,
|
|
124
|
+
0.769,
|
|
125
|
+
0.189,
|
|
126
|
+
0,
|
|
127
|
+
0,
|
|
128
|
+
0.349,
|
|
129
|
+
0.686,
|
|
130
|
+
0.168,
|
|
131
|
+
0,
|
|
132
|
+
0,
|
|
133
|
+
0.272,
|
|
134
|
+
0.534,
|
|
135
|
+
0.131,
|
|
136
|
+
0,
|
|
137
|
+
0,
|
|
138
|
+
0,
|
|
139
|
+
0,
|
|
140
|
+
0,
|
|
141
|
+
1,
|
|
142
|
+
0
|
|
143
|
+
], ye = [
|
|
144
|
+
["default"],
|
|
145
|
+
["chrome", "fade", "cold", "warm", "pastel"],
|
|
146
|
+
["mono", "noir", "stark", "wash"],
|
|
147
|
+
["sepia", "rust", "blues", "color"]
|
|
148
|
+
], Ut = St(0), Ce = {
|
|
149
|
+
default: null,
|
|
150
|
+
// more contrast + saturation
|
|
151
|
+
chrome: ot(St(1.3), vt(1.15)),
|
|
152
|
+
// lifted blacks, softer whites, desaturated
|
|
153
|
+
fade: ot(St(0.7), pe(0.12, 0.92)),
|
|
154
|
+
// a blue shift
|
|
155
|
+
cold: ot(Ct(0.9, 0.98, 1.12, 0, 0.01, 0.03), vt(1.04)),
|
|
156
|
+
// a red / yellow shift
|
|
157
|
+
warm: ot(Ct(1.1, 1.03, 0.86, 0.03, 0.01, 0), vt(1.04)),
|
|
158
|
+
// brightened + desaturated
|
|
159
|
+
pastel: ot(St(0.6), pe(0.16, 1)),
|
|
160
|
+
// luminance grayscale
|
|
161
|
+
mono: Ut,
|
|
162
|
+
// high-contrast grayscale
|
|
163
|
+
noir: ot(Ut, vt(1.45), He(-0.04)),
|
|
164
|
+
// very high-contrast grayscale
|
|
165
|
+
stark: ot(Ut, vt(2.1)),
|
|
166
|
+
// low-contrast, bright grayscale
|
|
167
|
+
wash: ot(Ut, pe(0.22, 0.98)),
|
|
168
|
+
sepia: Fe,
|
|
169
|
+
// a warm, strong sepia
|
|
170
|
+
rust: ot(Fe, Ct(1.12, 0.9, 0.7), vt(1.12)),
|
|
171
|
+
// blue-tinted monochrome
|
|
172
|
+
blues: ot(Ut, Ct(0.72, 0.88, 1.08, 0, 0.02, 0.08)),
|
|
173
|
+
// boosted, vivid color
|
|
174
|
+
color: ot(St(1.65), vt(1.06))
|
|
175
|
+
}, yn = [
|
|
176
|
+
"brightness",
|
|
177
|
+
"contrast",
|
|
178
|
+
"saturation",
|
|
179
|
+
"exposure",
|
|
180
|
+
"temperature",
|
|
181
|
+
"gamma",
|
|
182
|
+
"clarity",
|
|
183
|
+
"vignette"
|
|
184
|
+
], Qe = {
|
|
185
|
+
brightness: 0,
|
|
186
|
+
contrast: 0,
|
|
187
|
+
saturation: 0,
|
|
188
|
+
exposure: 0,
|
|
189
|
+
temperature: 0,
|
|
190
|
+
gamma: 0,
|
|
191
|
+
clarity: 0,
|
|
192
|
+
vignette: 0
|
|
193
|
+
}, ut = {
|
|
194
|
+
/** additive: −0.25…+0.25 */
|
|
195
|
+
brightness: (t) => t / 100 * 0.25,
|
|
196
|
+
/** multiply around the midpoint: 0.5…1.5 */
|
|
197
|
+
contrast: (t) => 1 + t / 100 * 0.5,
|
|
198
|
+
/** 0 (grayscale)…2 */
|
|
199
|
+
saturation: (t) => 1 + t / 100,
|
|
200
|
+
/** multiply: 0.5…1.5 */
|
|
201
|
+
exposure: (t) => 1 + t / 100 * 0.5,
|
|
202
|
+
/** −1…1, shifts R and B in opposite directions */
|
|
203
|
+
temperature: (t) => t / 100,
|
|
204
|
+
/** exponent 0.5…1.5 (applied as x^(1/γ), so positive brightens the midtones) */
|
|
205
|
+
gamma: (t) => 1 + t / 100 * 0.5,
|
|
206
|
+
/** −1…1 local-contrast amount (negative softens) */
|
|
207
|
+
clarity: (t) => t / 100,
|
|
208
|
+
/** −1…1 (positive darkens the edges, negative lightens them) */
|
|
209
|
+
vignette: (t) => t / 100
|
|
210
|
+
};
|
|
211
|
+
function En(t) {
|
|
212
|
+
const e = ut.temperature(t.temperature);
|
|
213
|
+
return ot(
|
|
214
|
+
Ct(
|
|
215
|
+
ut.exposure(t.exposure),
|
|
216
|
+
ut.exposure(t.exposure),
|
|
217
|
+
ut.exposure(t.exposure)
|
|
218
|
+
),
|
|
219
|
+
He(ut.brightness(t.brightness)),
|
|
220
|
+
vt(ut.contrast(t.contrast)),
|
|
221
|
+
St(ut.saturation(t.saturation)),
|
|
222
|
+
Ct(1 + 0.12 * e, 1 + 0.02 * e, 1 - 0.12 * e)
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
function Tn(t, e) {
|
|
226
|
+
return ot(t ?? Se, En(e));
|
|
227
|
+
}
|
|
228
|
+
const ee = Math.PI / 2, Ze = 1e-6, ie = ([t, e], n) => {
|
|
229
|
+
const i = Math.cos(n), o = Math.sin(n);
|
|
230
|
+
return [t * i - e * o, t * o + e * i];
|
|
231
|
+
};
|
|
232
|
+
function Je(t, e, n) {
|
|
233
|
+
const i = Math.abs(Math.cos(n)), o = Math.abs(Math.sin(n));
|
|
234
|
+
return [t / 2 * i + e / 2 * o, t / 2 * o + e / 2 * i];
|
|
235
|
+
}
|
|
236
|
+
const Vt = (t) => [
|
|
237
|
+
t.x + t.width / 2,
|
|
238
|
+
t.y + t.height / 2
|
|
239
|
+
];
|
|
240
|
+
function oe(t, e, n, i) {
|
|
241
|
+
const [o, r] = Je(t, e, n);
|
|
242
|
+
return Math.max(2 * o / i.width, 2 * r / i.height);
|
|
243
|
+
}
|
|
244
|
+
function $t(t, e) {
|
|
245
|
+
const [n, i] = Vt(t.crop), [o, r] = ie([n - e.width / 2, i - e.height / 2], -t.rotation);
|
|
246
|
+
return [o / t.scale, r / t.scale];
|
|
247
|
+
}
|
|
248
|
+
function Gt([t, e], n, i, o, r, a) {
|
|
249
|
+
const [s, _] = Je(n, i, o), c = Math.max(0, a.width / 2 - s / r), M = Math.max(0, a.height / 2 - _ / r);
|
|
250
|
+
return [Math.min(c, Math.max(-c, t)), Math.min(M, Math.max(-M, e))];
|
|
251
|
+
}
|
|
252
|
+
function jt(t, e, n, i, o, r) {
|
|
253
|
+
const [a, s] = ie([t[0] * o, t[1] * o], i), _ = r.width / 2 + a, c = r.height / 2 + s;
|
|
254
|
+
return { x: _ - e / 2, y: c - n / 2, width: e, height: n };
|
|
255
|
+
}
|
|
256
|
+
function In(t, e, n, i) {
|
|
257
|
+
const o = [
|
|
258
|
+
[t.x, t.y],
|
|
259
|
+
[t.x + t.width, t.y],
|
|
260
|
+
[t.x, t.y + t.height],
|
|
261
|
+
[t.x + t.width, t.y + t.height]
|
|
262
|
+
], r = 1e-6 * Math.max(i.width, i.height);
|
|
263
|
+
return o.every(([a, s]) => {
|
|
264
|
+
const [_, c] = ie([a - i.width / 2, s - i.height / 2], -e);
|
|
265
|
+
return Math.abs(_ / n) <= i.width / 2 + r / n && Math.abs(c / n) <= i.height / 2 + r / n;
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
function An(t, e) {
|
|
269
|
+
const { width: n, height: i } = t.crop, o = Math.max(t.scale, oe(n, i, t.rotation, e)), r = Gt($t({ ...t, scale: o }, e), n, i, t.rotation, o, e);
|
|
270
|
+
return { ...t, scale: o, crop: jt(r, n, i, t.rotation, o, e) };
|
|
271
|
+
}
|
|
272
|
+
function kt(t) {
|
|
273
|
+
return {
|
|
274
|
+
width: Math.max(1, Math.round(t.crop.width / t.scale)),
|
|
275
|
+
height: Math.max(1, Math.round(t.crop.height / t.scale))
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function Rt(t) {
|
|
279
|
+
const e = kt(t);
|
|
280
|
+
return t.resize ? {
|
|
281
|
+
width: Math.max(1, Math.min(e.width, Math.round(t.resize.width))),
|
|
282
|
+
height: Math.max(1, Math.min(e.height, Math.round(t.resize.height)))
|
|
283
|
+
} : e;
|
|
284
|
+
}
|
|
285
|
+
function Xt(t) {
|
|
286
|
+
const { crop: e } = t, n = t.resize;
|
|
287
|
+
if (!n) return e;
|
|
288
|
+
const i = n.width / n.height, o = e.width / e.height;
|
|
289
|
+
if (Math.abs(o - i) < 1e-9 * Math.max(o, i)) return e;
|
|
290
|
+
if (o > i) {
|
|
291
|
+
const a = e.height * i;
|
|
292
|
+
return { ...e, x: e.x + (e.width - a) / 2, width: a };
|
|
293
|
+
}
|
|
294
|
+
const r = e.width / i;
|
|
295
|
+
return { ...e, y: e.y + (e.height - r) / 2, height: r };
|
|
296
|
+
}
|
|
297
|
+
function Sn(t, e) {
|
|
298
|
+
if (!e) return { ...t, resize: null };
|
|
299
|
+
const n = kt(t), i = Math.max(1, Math.min(n.width, Math.round(e.width))), o = Math.max(1, Math.min(n.height, Math.round(e.height))), r = Math.round(i * n.height / n.width) === o || Math.round(o * n.width / n.height) === i;
|
|
300
|
+
let a = t;
|
|
301
|
+
if (!r) {
|
|
302
|
+
const c = Xt({ ...t, resize: { width: i, height: o } });
|
|
303
|
+
a = { ...t, crop: c, cropRatio: null };
|
|
304
|
+
}
|
|
305
|
+
const s = kt(a), _ = i >= s.width && o >= s.height ? null : { width: Math.min(i, s.width), height: Math.min(o, s.height) };
|
|
306
|
+
return { ...a, resize: _ };
|
|
307
|
+
}
|
|
308
|
+
function Cn(t, e) {
|
|
309
|
+
const n = e.resize;
|
|
310
|
+
if (!n) return n;
|
|
311
|
+
const i = kt(t), o = kt(e);
|
|
312
|
+
if (i.width === o.width && i.height === o.height) return n;
|
|
313
|
+
const r = Math.max(
|
|
314
|
+
1,
|
|
315
|
+
Math.min(o.width, Math.round(n.width * o.width / i.width))
|
|
316
|
+
), a = Math.max(
|
|
317
|
+
1,
|
|
318
|
+
Math.min(o.height, Math.round(n.height * o.height / i.height))
|
|
319
|
+
);
|
|
320
|
+
return r === o.width && a === o.height ? null : { width: r, height: a };
|
|
321
|
+
}
|
|
322
|
+
function Rn(t, e) {
|
|
323
|
+
let n = t.width, i = t.height;
|
|
324
|
+
return e && e > 0 && (n / i > e ? n = i * e : i = n / e), { x: (t.width - n) / 2, y: (t.height - i) / 2, width: n, height: i };
|
|
325
|
+
}
|
|
326
|
+
function Ln(t, e) {
|
|
327
|
+
return {
|
|
328
|
+
crop: Rn(t, e),
|
|
329
|
+
cropRatio: e && e > 0 ? e : null,
|
|
330
|
+
resize: null,
|
|
331
|
+
rotation: 0,
|
|
332
|
+
flipX: !1,
|
|
333
|
+
flipY: !1,
|
|
334
|
+
scale: 1,
|
|
335
|
+
filter: null,
|
|
336
|
+
colorMatrix: null,
|
|
337
|
+
finetune: { ...Qe },
|
|
338
|
+
redact: { effect: "blur", amount: 0 }
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
function ge(t, e) {
|
|
342
|
+
const n = (Math.round(t / ee) % 4 + 4) % 4, i = e ?? n * ee;
|
|
343
|
+
let o = t - i;
|
|
344
|
+
return o = Math.atan2(Math.sin(o), Math.cos(o)), { quarter: Ee(i), fine: o };
|
|
345
|
+
}
|
|
346
|
+
const Ee = (t) => {
|
|
347
|
+
const e = t % (2 * Math.PI), n = e < 0 ? e + 2 * Math.PI : e;
|
|
348
|
+
return Math.abs(n - 2 * Math.PI) < Ze ? 0 : n;
|
|
349
|
+
};
|
|
350
|
+
function Oe(t, e, n) {
|
|
351
|
+
const { width: i, height: o } = t.crop, r = $t(t, n), a = Math.max(t.scale, oe(i, o, e, n)), s = Gt(r, i, o, e, a, n);
|
|
352
|
+
return { ...t, rotation: e, scale: a, crop: jt(s, i, o, e, a, n) };
|
|
353
|
+
}
|
|
354
|
+
function kn(t, e) {
|
|
355
|
+
const [n, i] = Vt(t.crop), o = e.width / 2, r = e.height / 2, [a, s] = ie([n - o, i - r], -ee), _ = t.crop.height, c = t.crop.width;
|
|
356
|
+
return {
|
|
357
|
+
...t,
|
|
358
|
+
rotation: t.rotation - ee,
|
|
359
|
+
crop: { x: o + a - _ / 2, y: r + s - c / 2, width: _, height: c },
|
|
360
|
+
cropRatio: t.cropRatio ? 1 / t.cropRatio : t.cropRatio
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
function Nn(t, e) {
|
|
364
|
+
return {
|
|
365
|
+
...t,
|
|
366
|
+
rotation: -t.rotation,
|
|
367
|
+
flipX: !t.flipX,
|
|
368
|
+
crop: { ...t.crop, x: e.width - t.crop.x - t.crop.width }
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
function Jt(t, e) {
|
|
372
|
+
return t.scale / oe(t.crop.width, t.crop.height, t.rotation, e);
|
|
373
|
+
}
|
|
374
|
+
const Bt = 5;
|
|
375
|
+
function Yt(t, e, n) {
|
|
376
|
+
const { width: i, height: o } = t.crop, r = $t(t, n), a = oe(i, o, t.rotation, n) * Math.min(Bt, Math.max(1, e)), s = Gt(r, i, o, t.rotation, a, n);
|
|
377
|
+
return { ...t, scale: a, crop: jt(s, i, o, t.rotation, a, n) };
|
|
378
|
+
}
|
|
379
|
+
function Pn(t, e, n, i) {
|
|
380
|
+
const { width: o, height: r } = t.crop, a = { ...t, crop: { ...t.crop, x: t.crop.x + e, y: t.crop.y + n } }, s = Gt($t(a, i), o, r, t.rotation, t.scale, i);
|
|
381
|
+
return { ...t, crop: jt(s, o, r, t.rotation, t.scale, i) };
|
|
382
|
+
}
|
|
383
|
+
function zn(t, e, n) {
|
|
384
|
+
if (!e || e <= 0) return { ...t, cropRatio: null };
|
|
385
|
+
const i = Math.abs(Math.cos(t.rotation)), o = Math.abs(Math.sin(t.rotation)), r = Math.min(
|
|
386
|
+
n.width * t.scale / (e * i + o),
|
|
387
|
+
n.height * t.scale / (e * o + i)
|
|
388
|
+
), a = r * e, s = Gt($t(t, n), a, r, t.rotation, t.scale, n);
|
|
389
|
+
return {
|
|
390
|
+
...t,
|
|
391
|
+
cropRatio: e,
|
|
392
|
+
crop: jt(s, a, r, t.rotation, t.scale, n)
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
function Dn(t, e, n, i, o, { aspectRatio: r, minSize: a }) {
|
|
396
|
+
const s = t.crop;
|
|
397
|
+
let _ = s.x, c = s.y, M = s.x + s.width, d = s.y + s.height;
|
|
398
|
+
const T = e.includes("n"), f = e.includes("s"), A = e.includes("w"), S = e.includes("e");
|
|
399
|
+
if (T && (c = Math.min(c + i, d - a)), f && (d = Math.max(d + i, c + a)), A && (_ = Math.min(_ + n, M - a)), S && (M = Math.max(M + n, _ + a)), r && r > 0) {
|
|
400
|
+
let v = M - _, N = d - c;
|
|
401
|
+
if ((T || f) && (A || S))
|
|
402
|
+
v / N > r ? N = v / r : v = N * r, A ? _ = M - v : M = _ + v, T ? c = d - N : d = c + N;
|
|
403
|
+
else if (T || f) {
|
|
404
|
+
v = N * r;
|
|
405
|
+
const G = s.x + s.width / 2;
|
|
406
|
+
_ = G - v / 2, M = G + v / 2;
|
|
407
|
+
} else {
|
|
408
|
+
N = v / r;
|
|
409
|
+
const G = s.y + s.height / 2;
|
|
410
|
+
c = G - N / 2, d = G + N / 2;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
const y = { x: _, y: c, width: M - _, height: d - c }, x = (v) => In(v, t.rotation, t.scale, o);
|
|
414
|
+
if (x(y)) return { ...t, crop: y };
|
|
415
|
+
if (!(!(r && r > 0) && (T || f) && (A || S))) return { ...t, crop: Ft(s, y, x) };
|
|
416
|
+
const C = (v) => ({ ...v, x: _, width: M - _ }), u = (v) => ({ ...v, y: c, height: d - c }), R = Ft(Ft(s, C(s), x), u, x), m = Ft(Ft(s, u(s), x), C, x), E = (v) => Math.abs(v.x - y.x) + Math.abs(v.y - y.y) + Math.abs(v.width - y.width) + Math.abs(v.height - y.height);
|
|
417
|
+
return { ...t, crop: E(R) <= E(m) ? R : m };
|
|
418
|
+
}
|
|
419
|
+
function Ft(t, e, n) {
|
|
420
|
+
const i = typeof e == "function" ? e(t) : e;
|
|
421
|
+
if (n(i)) return i;
|
|
422
|
+
let o = 0, r = 1;
|
|
423
|
+
for (let a = 0; a < 24; a++) {
|
|
424
|
+
const s = (o + r) / 2;
|
|
425
|
+
n(Xe(t, i, s)) ? o = s : r = s;
|
|
426
|
+
}
|
|
427
|
+
return Xe(t, i, o);
|
|
428
|
+
}
|
|
429
|
+
const Xe = (t, e, n) => ({
|
|
430
|
+
x: t.x + (e.x - t.x) * n,
|
|
431
|
+
y: t.y + (e.y - t.y) * n,
|
|
432
|
+
width: t.width + (e.width - t.width) * n,
|
|
433
|
+
height: t.height + (e.height - t.height) * n
|
|
434
|
+
});
|
|
435
|
+
function Be(t, e) {
|
|
436
|
+
const n = {
|
|
437
|
+
...t.crop,
|
|
438
|
+
width: Math.max(1, t.crop.width),
|
|
439
|
+
height: Math.max(1, t.crop.height)
|
|
440
|
+
};
|
|
441
|
+
return An({ ...t, crop: n, scale: Math.max(Ze, t.scale || 1) }, e);
|
|
442
|
+
}
|
|
443
|
+
const tn = 0.85, Un = (t, e, n) => {
|
|
444
|
+
const i = Math.min(1, Math.max(0, (n - t) / (e - t)));
|
|
445
|
+
return i * i * (3 - 2 * i);
|
|
446
|
+
}, Fn = (t, e) => Un(0.3, 1, Math.hypot(t, e) / Math.SQRT2);
|
|
447
|
+
function Re(t, e, n, i, o, r) {
|
|
448
|
+
const a = i.matrix, s = 1 / i.gamma, _ = Math.abs(i.gamma - 1) > 1e-4, c = Math.abs(i.clarity) > 1e-4 && !!o, M = Math.abs(i.vignette) > 1e-4 && !!r;
|
|
449
|
+
for (let d = 0; d < n; d++)
|
|
450
|
+
for (let T = 0; T < e; T++) {
|
|
451
|
+
const f = (d * e + T) * 4, A = t[f + 3] / 255;
|
|
452
|
+
if (A === 0) continue;
|
|
453
|
+
const S = t[f] / 255, y = t[f + 1] / 255, x = t[f + 2] / 255;
|
|
454
|
+
let l = a[0] * S + a[1] * y + a[2] * x + a[3] * A + a[4], C = a[5] * S + a[6] * y + a[7] * x + a[8] * A + a[9], u = a[10] * S + a[11] * y + a[12] * x + a[13] * A + a[14];
|
|
455
|
+
if (c) {
|
|
456
|
+
const R = o[f] / 255, m = o[f + 1] / 255, E = o[f + 2] / 255, v = o[f + 3] / 255, N = a[0] * R + a[1] * m + a[2] * E + a[3] * v + a[4], j = a[5] * R + a[6] * m + a[7] * E + a[8] * v + a[9], G = a[10] * R + a[11] * m + a[12] * E + a[13] * v + a[14];
|
|
457
|
+
l += i.clarity * (l - N), C += i.clarity * (C - j), u += i.clarity * (u - G);
|
|
458
|
+
}
|
|
459
|
+
if (_ && (l = Math.pow(Math.max(0, l), s), C = Math.pow(Math.max(0, C), s), u = Math.pow(Math.max(0, u), s)), M) {
|
|
460
|
+
const R = T + 0.5, m = d + 0.5, E = r[0] * R + r[1] * m + r[2], v = r[3] * R + r[4] * m + r[5], N = Fn(E, v) * tn * Math.abs(i.vignette);
|
|
461
|
+
i.vignette > 0 ? (l *= 1 - N, C *= 1 - N, u *= 1 - N) : (l += (1 - l) * N, C += (1 - C) * N, u += (1 - u) * N);
|
|
462
|
+
}
|
|
463
|
+
t[f] = l * 255, t[f + 1] = C * 255, t[f + 2] = u * 255;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
function Le(t, e, n, i) {
|
|
467
|
+
const o = Math.max(1, Math.round(i)), r = new Uint8ClampedArray(t), a = new Uint8ClampedArray(t.length);
|
|
468
|
+
for (let _ = 0; _ < 3; _++)
|
|
469
|
+
s(r, a, e, n, o, !0), s(a, r, e, n, o, !1);
|
|
470
|
+
return r;
|
|
471
|
+
function s(_, c, M, d, T, f) {
|
|
472
|
+
const A = f ? d : M, S = f ? M : d, y = f ? 4 : M * 4, x = T * 2 + 1;
|
|
473
|
+
for (let l = 0; l < A; l++) {
|
|
474
|
+
const C = f ? l * M * 4 : l * 4;
|
|
475
|
+
for (let u = 0; u < 4; u++) {
|
|
476
|
+
let R = 0;
|
|
477
|
+
for (let m = -T; m <= T; m++) {
|
|
478
|
+
const E = Math.min(S - 1, Math.max(0, m));
|
|
479
|
+
R += _[C + E * y + u];
|
|
480
|
+
}
|
|
481
|
+
for (let m = 0; m < S; m++) {
|
|
482
|
+
c[C + m * y + u] = R / x;
|
|
483
|
+
const E = Math.max(0, m - T), v = Math.min(S - 1, m + T + 1);
|
|
484
|
+
R += _[C + v * y + u] - _[C + E * y + u];
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const ke = 0.012, en = (t, e) => {
|
|
491
|
+
const n = document.createElement("canvas");
|
|
492
|
+
return n.width = Math.max(1, Math.round(t)), n.height = Math.max(1, Math.round(e)), n;
|
|
493
|
+
};
|
|
494
|
+
async function Ye(t) {
|
|
495
|
+
if (typeof createImageBitmap == "function")
|
|
496
|
+
try {
|
|
497
|
+
return await createImageBitmap(t, { imageOrientation: "from-image" });
|
|
498
|
+
} catch {
|
|
499
|
+
}
|
|
500
|
+
const e = URL.createObjectURL(t);
|
|
501
|
+
try {
|
|
502
|
+
return await nn(e, !1);
|
|
503
|
+
} finally {
|
|
504
|
+
URL.revokeObjectURL(e);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
function nn(t, e) {
|
|
508
|
+
return new Promise((n, i) => {
|
|
509
|
+
const o = new Image();
|
|
510
|
+
e && (o.crossOrigin = "anonymous"), o.decoding = "async", o.onload = () => n(o), o.onerror = () => i(new Error(`Could not load image: ${t.slice(0, 80)}`)), o.src = t;
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
const On = (t) => t instanceof HTMLImageElement ? { width: t.naturalWidth, height: t.naturalHeight } : { width: t.width, height: t.height };
|
|
514
|
+
async function Xn(t) {
|
|
515
|
+
let e, n = "";
|
|
516
|
+
if (typeof t == "string")
|
|
517
|
+
try {
|
|
518
|
+
const r = await fetch(t);
|
|
519
|
+
if (!r.ok) throw new Error(String(r.status));
|
|
520
|
+
const a = await r.blob();
|
|
521
|
+
n = a.type, e = await Ye(a);
|
|
522
|
+
} catch {
|
|
523
|
+
e = await nn(t, !t.startsWith("data:") && !t.startsWith("blob:"));
|
|
524
|
+
const r = /^data:([^;,]+)/.exec(t) ?? /\.(png|jpe?g|webp|gif|avif)(?:[?#]|$)/i.exec(t);
|
|
525
|
+
r && (n = r[1].includes("/") ? r[1] : `image/${r[1].toLowerCase().replace("jpg", "jpeg")}`);
|
|
526
|
+
}
|
|
527
|
+
else
|
|
528
|
+
n = t.type, e = await Ye(t);
|
|
529
|
+
const { width: i, height: o } = On(e);
|
|
530
|
+
if (!i || !o) throw new Error("The image has no size");
|
|
531
|
+
return { image: e, width: i, height: o, type: n };
|
|
532
|
+
}
|
|
533
|
+
function te(t, e, n, i) {
|
|
534
|
+
const o = Math.min(1, i / Math.max(e, n));
|
|
535
|
+
if (o >= 1) return { canvas: t, width: e, height: n };
|
|
536
|
+
const r = en(e * o, n * o), a = r.getContext("2d");
|
|
537
|
+
return a && (a.imageSmoothingQuality = "high", a.drawImage(t, 0, 0, r.width, r.height)), { canvas: r, width: r.width, height: r.height };
|
|
538
|
+
}
|
|
539
|
+
function rn(t, e, n, i, o = 384) {
|
|
540
|
+
const r = Math.min(1, o / Math.max(e, n)), a = en(e * r, n * r), s = a.getContext("2d", { willReadFrequently: !0 });
|
|
541
|
+
if (!s) return a;
|
|
542
|
+
s.drawImage(t, 0, 0, a.width, a.height);
|
|
543
|
+
try {
|
|
544
|
+
const _ = s.getImageData(0, 0, a.width, a.height);
|
|
545
|
+
_.data.set(Le(_.data, a.width, a.height, Math.max(1, i * r))), s.putImageData(_, 0, 0);
|
|
546
|
+
} catch {
|
|
547
|
+
}
|
|
548
|
+
return a;
|
|
549
|
+
}
|
|
550
|
+
function Bn(t, e) {
|
|
551
|
+
return t || (["image/jpeg", "image/png", "image/webp"].includes(e) ? e : "image/png");
|
|
552
|
+
}
|
|
553
|
+
const Yn = [1, 0, 0, 0, 1, 0], st = (t, e) => [1, 0, t, 0, 1, e], nt = (t, e = t) => [t, 0, 0, 0, e, 0], on = (t) => {
|
|
554
|
+
const e = Math.cos(t), n = Math.sin(t);
|
|
555
|
+
return [e, -n, 0, n, e, 0];
|
|
556
|
+
};
|
|
557
|
+
function Vn(t, e) {
|
|
558
|
+
return [
|
|
559
|
+
t[0] * e[0] + t[1] * e[3],
|
|
560
|
+
t[0] * e[1] + t[1] * e[4],
|
|
561
|
+
t[0] * e[2] + t[1] * e[5] + t[2],
|
|
562
|
+
t[3] * e[0] + t[4] * e[3],
|
|
563
|
+
t[3] * e[1] + t[4] * e[4],
|
|
564
|
+
t[3] * e[2] + t[4] * e[5] + t[5]
|
|
565
|
+
];
|
|
566
|
+
}
|
|
567
|
+
const at = (...t) => t.reduce((e, n) => Vn(n, e), Yn);
|
|
568
|
+
function Lt([t, e, n, i, o, r]) {
|
|
569
|
+
const a = t * o - e * i, s = Math.abs(a) < 1e-12 ? 1e12 : 1 / a;
|
|
570
|
+
return [o * s, -e * s, (e * r - n * o) * s, -i * s, t * s, (n * i - t * r) * s];
|
|
571
|
+
}
|
|
572
|
+
const ne = ([t, e, n, i, o, r], a, s) => [
|
|
573
|
+
t * a + e * s + n,
|
|
574
|
+
i * a + o * s + r
|
|
575
|
+
], $n = { blur: 0.015, pixelate: 0.05 };
|
|
576
|
+
function Te(t, e) {
|
|
577
|
+
var o, r;
|
|
578
|
+
const n = ((o = t.redact) == null ? void 0 : o.effect) ?? "blur";
|
|
579
|
+
return Math.max(0, Math.min(100, ((r = t.redact) == null ? void 0 : r.amount) ?? 0)) / 100 * ($n[n] ?? 0) * Math.max(e.width, e.height);
|
|
580
|
+
}
|
|
581
|
+
function an(t, e) {
|
|
582
|
+
const n = Math.max(1e-6, e);
|
|
583
|
+
return {
|
|
584
|
+
cols: Math.max(1, Math.round(t.width / n)),
|
|
585
|
+
rows: Math.max(1, Math.round(t.height / n))
|
|
586
|
+
};
|
|
587
|
+
}
|
|
588
|
+
const Gn = 4, ae = (t, e) => {
|
|
589
|
+
const n = document.createElement("canvas");
|
|
590
|
+
return n.width = Math.max(1, Math.round(t)), n.height = Math.max(1, Math.round(e)), n;
|
|
591
|
+
};
|
|
592
|
+
function sn(t, e, n, i, o) {
|
|
593
|
+
const r = Math.min(1, Gn / Math.max(1, i), o / Math.max(e, n)), a = ae(e * r, n * r), s = a.getContext("2d", { willReadFrequently: !0 });
|
|
594
|
+
if (!s) return a;
|
|
595
|
+
s.imageSmoothingQuality = "high", s.drawImage(t, 0, 0, a.width, a.height);
|
|
596
|
+
try {
|
|
597
|
+
const _ = s.getImageData(0, 0, a.width, a.height);
|
|
598
|
+
_.data.set(Le(_.data, a.width, a.height, Math.max(1, i * r))), s.putImageData(_, 0, 0);
|
|
599
|
+
} catch {
|
|
600
|
+
}
|
|
601
|
+
return a;
|
|
602
|
+
}
|
|
603
|
+
function jn(t, e, n, i) {
|
|
604
|
+
const o = ae(e, n), r = o.getContext("2d");
|
|
605
|
+
return r && (r.imageSmoothingQuality = "high", r.drawImage(sn(t, e, n, i, 1024), 0, 0, e, n)), o;
|
|
606
|
+
}
|
|
607
|
+
function cn(t, e, n) {
|
|
608
|
+
const i = ae(e, n), o = i.getContext("2d"), r = t.getContext("2d");
|
|
609
|
+
!o || !r || (o.imageSmoothingQuality = "high", o.drawImage(t, 0, 0, i.width, i.height), r.save(), r.setTransform(1, 0, 0, 1, 0, 0), r.globalCompositeOperation = "copy", r.imageSmoothingEnabled = !1, r.drawImage(i, 0, 0, t.width, t.height), r.restore());
|
|
610
|
+
}
|
|
611
|
+
function qn(t, e, n, i) {
|
|
612
|
+
const o = ae(e, n), r = o.getContext("2d");
|
|
613
|
+
return r && (r.drawImage(t, 0, 0, e, n), cn(
|
|
614
|
+
o,
|
|
615
|
+
Math.max(1, Math.round(e / Math.max(2, i))),
|
|
616
|
+
Math.max(1, Math.round(n / Math.max(2, i)))
|
|
617
|
+
)), o;
|
|
618
|
+
}
|
|
619
|
+
const ln = (t) => t.area ? [t.area.x + t.area.width / 2, t.area.y + t.area.height / 2] : [t.width / 2, t.height / 2];
|
|
620
|
+
function Ne(t, e) {
|
|
621
|
+
const n = e.width / 2, i = e.height / 2;
|
|
622
|
+
return at(
|
|
623
|
+
st(-n, -i),
|
|
624
|
+
nt(t.flipX ? -1 : 1, t.flipY ? -1 : 1),
|
|
625
|
+
on(t.rotation),
|
|
626
|
+
nt(t.scale),
|
|
627
|
+
st(n, i)
|
|
628
|
+
);
|
|
629
|
+
}
|
|
630
|
+
function hn(t, e) {
|
|
631
|
+
const n = Math.abs(t.flip) < 0.02 ? 0.02 * Math.sign(t.flip || 1) : t.flip, [i, o] = ln(e);
|
|
632
|
+
return at(
|
|
633
|
+
st(-t.center[0], -t.center[1]),
|
|
634
|
+
on(t.rotation),
|
|
635
|
+
nt(t.scale * n, t.scale),
|
|
636
|
+
st(i, o)
|
|
637
|
+
);
|
|
638
|
+
}
|
|
639
|
+
function Wn(t) {
|
|
640
|
+
const [e, n] = Vt(t);
|
|
641
|
+
return at(st(-e, -n), nt(2 / t.width, 2 / t.height));
|
|
642
|
+
}
|
|
643
|
+
function Kn(t, e, n, i) {
|
|
644
|
+
const o = at(nt(1 / i.dpr), Lt(hn(n, i))), r = at(
|
|
645
|
+
o,
|
|
646
|
+
Lt(Ne(t, e)),
|
|
647
|
+
nt(1 / e.width, 1 / e.height)
|
|
648
|
+
);
|
|
649
|
+
return { toUV: r, toBlurUV: r, toCrop: at(o, Wn(t.crop)) };
|
|
650
|
+
}
|
|
651
|
+
function Ve(t, e, n) {
|
|
652
|
+
const i = Math.max(1, e.width - n * 2), o = Math.max(1, e.height - n * 2);
|
|
653
|
+
return {
|
|
654
|
+
center: Vt(t),
|
|
655
|
+
scale: Math.min(i / t.width, o / t.height),
|
|
656
|
+
rotation: 0,
|
|
657
|
+
flip: 1
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
const Hn = `
|
|
661
|
+
attribute vec2 a_pos;
|
|
662
|
+
void main() { gl_Position = vec4(a_pos, 0.0, 1.0); }
|
|
663
|
+
`, Qn = `
|
|
664
|
+
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
665
|
+
precision highp float;
|
|
666
|
+
#else
|
|
667
|
+
precision mediump float;
|
|
668
|
+
#endif
|
|
669
|
+
uniform sampler2D u_image;
|
|
670
|
+
uniform sampler2D u_blur;
|
|
671
|
+
uniform vec2 u_size;
|
|
672
|
+
uniform vec3 u_uvX; uniform vec3 u_uvY;
|
|
673
|
+
uniform vec3 u_blurX; uniform vec3 u_blurY;
|
|
674
|
+
uniform vec3 u_cropX; uniform vec3 u_cropY;
|
|
675
|
+
uniform bool u_clip;
|
|
676
|
+
uniform float u_dim;
|
|
677
|
+
uniform vec3 u_dimColor;
|
|
678
|
+
uniform mat4 u_cm; uniform vec4 u_co;
|
|
679
|
+
uniform float u_gamma; uniform float u_clarity; uniform float u_vignette;
|
|
680
|
+
uniform vec2 u_pixel; uniform vec3 u_cuvX; uniform vec3 u_cuvY;
|
|
681
|
+
|
|
682
|
+
vec3 grade(vec4 c) { return (u_cm * c + u_co).rgb; }
|
|
683
|
+
|
|
684
|
+
void main() {
|
|
685
|
+
vec3 px = vec3(gl_FragCoord.x, u_size.y - gl_FragCoord.y, 1.0);
|
|
686
|
+
vec2 cn = vec2(dot(u_cropX, px), dot(u_cropY, px));
|
|
687
|
+
if (u_clip && (abs(cn.x) > 1.0 || abs(cn.y) > 1.0)) { gl_FragColor = vec4(0.0); return; }
|
|
688
|
+
vec2 uv = vec2(dot(u_uvX, px), dot(u_uvY, px));
|
|
689
|
+
vec2 buv = vec2(dot(u_blurX, px), dot(u_blurY, px));
|
|
690
|
+
if (u_pixel.x > 0.0) {
|
|
691
|
+
// the center of this pixel's block (whole blocks across the crop; the edge pixel stays in the last)
|
|
692
|
+
vec2 cell = 2.0 / u_pixel;
|
|
693
|
+
vec2 idx = floor((cn + 1.0) / cell);
|
|
694
|
+
if (abs(cn.x) <= 1.0) idx.x = min(idx.x, u_pixel.x - 1.0);
|
|
695
|
+
if (abs(cn.y) <= 1.0) idx.y = min(idx.y, u_pixel.y - 1.0);
|
|
696
|
+
cn = (idx + 0.5) * cell - 1.0;
|
|
697
|
+
vec3 q = vec3(cn, 1.0);
|
|
698
|
+
uv = vec2(dot(u_cuvX, q), dot(u_cuvY, q));
|
|
699
|
+
buv = uv;
|
|
700
|
+
}
|
|
701
|
+
if (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0) { gl_FragColor = vec4(0.0); return; }
|
|
702
|
+
vec4 c = texture2D(u_image, uv);
|
|
703
|
+
if (c.a <= 0.0) { gl_FragColor = vec4(0.0); return; }
|
|
704
|
+
vec3 rgb = grade(c);
|
|
705
|
+
if (u_clarity != 0.0) {
|
|
706
|
+
vec4 bl = texture2D(u_blur, buv);
|
|
707
|
+
rgb += u_clarity * (rgb - grade(bl));
|
|
708
|
+
}
|
|
709
|
+
if (u_gamma != 1.0) rgb = pow(max(rgb, 0.0), vec3(1.0 / u_gamma));
|
|
710
|
+
if (u_vignette != 0.0) {
|
|
711
|
+
float f = smoothstep(0.3, 1.0, length(cn) / 1.41421356) * ${tn.toFixed(2)} * abs(u_vignette);
|
|
712
|
+
rgb = u_vignette > 0.0 ? rgb * (1.0 - f) : rgb + (1.0 - rgb) * f;
|
|
713
|
+
}
|
|
714
|
+
rgb = clamp(rgb, 0.0, 1.0);
|
|
715
|
+
if (abs(cn.x) > 1.0 || abs(cn.y) > 1.0) rgb = mix(u_dimColor, rgb, u_dim);
|
|
716
|
+
gl_FragColor = vec4(rgb * c.a, c.a);
|
|
717
|
+
}
|
|
718
|
+
`;
|
|
719
|
+
class se {
|
|
720
|
+
constructor(e, n) {
|
|
721
|
+
this.loc = {}, this.canvas = e, this.gl = n, this.maxTextureSize = n.getParameter(n.MAX_TEXTURE_SIZE), this.program = this.link(), n.useProgram(this.program);
|
|
722
|
+
const i = n.createBuffer();
|
|
723
|
+
n.bindBuffer(n.ARRAY_BUFFER, i), n.bufferData(n.ARRAY_BUFFER, new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]), n.STATIC_DRAW);
|
|
724
|
+
const o = n.getAttribLocation(this.program, "a_pos");
|
|
725
|
+
n.enableVertexAttribArray(o), n.vertexAttribPointer(o, 2, n.FLOAT, !1, 0, 0);
|
|
726
|
+
for (const r of [
|
|
727
|
+
"u_image",
|
|
728
|
+
"u_blur",
|
|
729
|
+
"u_size",
|
|
730
|
+
"u_uvX",
|
|
731
|
+
"u_uvY",
|
|
732
|
+
"u_blurX",
|
|
733
|
+
"u_blurY",
|
|
734
|
+
"u_cropX",
|
|
735
|
+
"u_cropY",
|
|
736
|
+
"u_clip",
|
|
737
|
+
"u_dim",
|
|
738
|
+
"u_dimColor",
|
|
739
|
+
"u_cm",
|
|
740
|
+
"u_co",
|
|
741
|
+
"u_gamma",
|
|
742
|
+
"u_clarity",
|
|
743
|
+
"u_vignette",
|
|
744
|
+
"u_pixel",
|
|
745
|
+
"u_cuvX",
|
|
746
|
+
"u_cuvY"
|
|
747
|
+
])
|
|
748
|
+
this.loc[r] = n.getUniformLocation(this.program, r);
|
|
749
|
+
this.image = this.texture(), this.blur = this.texture(), n.uniform1i(this.loc.u_image, 0), n.uniform1i(this.loc.u_blur, 1);
|
|
750
|
+
}
|
|
751
|
+
/** Create a renderer on `canvas`, or `null` when WebGL is unavailable. */
|
|
752
|
+
static create(e) {
|
|
753
|
+
try {
|
|
754
|
+
const n = {
|
|
755
|
+
premultipliedAlpha: !0,
|
|
756
|
+
alpha: !0,
|
|
757
|
+
antialias: !1,
|
|
758
|
+
preserveDrawingBuffer: !0
|
|
759
|
+
}, i = e.getContext("webgl2", n) ?? e.getContext("webgl", n);
|
|
760
|
+
return i ? new se(e, i) : null;
|
|
761
|
+
} catch {
|
|
762
|
+
return null;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
link() {
|
|
766
|
+
const e = this.gl, n = (o, r) => {
|
|
767
|
+
const a = e.createShader(o);
|
|
768
|
+
if (e.shaderSource(a, r), e.compileShader(a), !e.getShaderParameter(a, e.COMPILE_STATUS))
|
|
769
|
+
throw new Error(e.getShaderInfoLog(a) ?? "shader compile failed");
|
|
770
|
+
return a;
|
|
771
|
+
}, i = e.createProgram();
|
|
772
|
+
if (e.attachShader(i, n(e.VERTEX_SHADER, Hn)), e.attachShader(i, n(e.FRAGMENT_SHADER, Qn)), e.linkProgram(i), !e.getProgramParameter(i, e.LINK_STATUS))
|
|
773
|
+
throw new Error(e.getProgramInfoLog(i) ?? "program link failed");
|
|
774
|
+
return i;
|
|
775
|
+
}
|
|
776
|
+
texture() {
|
|
777
|
+
const e = this.gl, n = e.createTexture();
|
|
778
|
+
return e.bindTexture(e.TEXTURE_2D, n), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.LINEAR), n;
|
|
779
|
+
}
|
|
780
|
+
upload(e, n, i, o) {
|
|
781
|
+
const r = this.gl;
|
|
782
|
+
r.activeTexture(r.TEXTURE0 + e), r.bindTexture(r.TEXTURE_2D, n), r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), r.texImage2D(r.TEXTURE_2D, 0, r.RGBA, r.RGBA, r.UNSIGNED_BYTE, i);
|
|
783
|
+
const a = typeof WebGL2RenderingContext < "u" && r instanceof WebGL2RenderingContext;
|
|
784
|
+
o && a ? (r.generateMipmap(r.TEXTURE_2D), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, r.LINEAR_MIPMAP_LINEAR)) : r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, r.LINEAR);
|
|
785
|
+
}
|
|
786
|
+
/** Upload the image (and its blurred copy for clarity). */
|
|
787
|
+
setImage(e, n, i = !0) {
|
|
788
|
+
this.upload(0, this.image, e, i), this.upload(1, this.blur, n, !1);
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* Swap just the image texture (e.g. for a coarser copy) — the blurred copy stays. `mipmap: false` for
|
|
792
|
+
* a pixelation's texture: its blocks sample one point each, and mip levels would seam their borders.
|
|
793
|
+
*/
|
|
794
|
+
setSource(e, n = !0) {
|
|
795
|
+
this.upload(0, this.image, e, n);
|
|
796
|
+
}
|
|
797
|
+
/** Draw one frame at the canvas's current pixel size. */
|
|
798
|
+
render(e) {
|
|
799
|
+
const n = this.gl, { width: i, height: o } = this.canvas;
|
|
800
|
+
n.viewport(0, 0, i, o), n.clearColor(0, 0, 0, 0), n.clear(n.COLOR_BUFFER_BIT), n.uniform2f(this.loc.u_size, i, o);
|
|
801
|
+
const r = (f, A, S) => {
|
|
802
|
+
n.uniform3f(this.loc[A], f[0], f[1], f[2]), n.uniform3f(this.loc[S], f[3], f[4], f[5]);
|
|
803
|
+
};
|
|
804
|
+
r(e.toUV, "u_uvX", "u_uvY"), r(e.toBlurUV, "u_blurX", "u_blurY"), r(e.toCrop, "u_cropX", "u_cropY"), n.uniform1i(this.loc.u_clip, e.clip ? 1 : 0), n.uniform1f(this.loc.u_dim, e.dim ?? 1);
|
|
805
|
+
const [a, s, _] = e.dimColor ?? [0, 0, 0];
|
|
806
|
+
n.uniform3f(this.loc.u_dimColor, a, s, _);
|
|
807
|
+
const c = e.matrix, M = new Float32Array(16);
|
|
808
|
+
for (let f = 0; f < 4; f++)
|
|
809
|
+
for (let A = 0; A < 4; A++) M[A * 4 + f] = c[f * 5 + A];
|
|
810
|
+
n.uniformMatrix4fv(this.loc.u_cm, !1, M), n.uniform4f(this.loc.u_co, c[4], c[9], c[14], c[19]), n.uniform1f(this.loc.u_gamma, e.gamma), n.uniform1f(this.loc.u_clarity, e.clarity), n.uniform1f(this.loc.u_vignette, e.vignette);
|
|
811
|
+
const [d, T] = e.pixel ?? [0, 0];
|
|
812
|
+
n.uniform2f(this.loc.u_pixel, d, T), e.pixel && e.cropToUV && r(e.cropToUV, "u_cuvX", "u_cuvY"), n.drawArrays(n.TRIANGLE_STRIP, 0, 4);
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Release the GPU resources. `loseContext` also drops the context itself (a throwaway export canvas —
|
|
816
|
+
* browsers cap live contexts); a canvas that will be drawn on again keeps it.
|
|
817
|
+
*/
|
|
818
|
+
dispose(e = !0) {
|
|
819
|
+
var i;
|
|
820
|
+
const n = this.gl;
|
|
821
|
+
n.deleteTexture(this.image), n.deleteTexture(this.blur), n.deleteProgram(this.program), e && ((i = n.getExtension("WEBGL_lose_context")) == null || i.loseContext());
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
function Pe(t, e = t.colorMatrix) {
|
|
825
|
+
const n = t.finetune;
|
|
826
|
+
return {
|
|
827
|
+
matrix: Tn(e, n),
|
|
828
|
+
gamma: ut.gamma(n.gamma),
|
|
829
|
+
clarity: ut.clarity(n.clarity),
|
|
830
|
+
vignette: ut.vignette(n.vignette)
|
|
831
|
+
};
|
|
832
|
+
}
|
|
833
|
+
const un = (t) => !Mn(t.matrix) || t.gamma !== 1 || t.clarity !== 0 || t.vignette !== 0, ze = (t, e) => {
|
|
834
|
+
const n = document.createElement("canvas");
|
|
835
|
+
return n.width = Math.max(1, Math.round(t)), n.height = Math.max(1, Math.round(e)), n;
|
|
836
|
+
};
|
|
837
|
+
function Zn(t, e, n, i, o, r) {
|
|
838
|
+
const a = t.getContext("2d", { willReadFrequently: !0 });
|
|
839
|
+
if (!a) return;
|
|
840
|
+
const { width: s, height: _ } = t;
|
|
841
|
+
a.setTransform(1, 0, 0, 1, 0, 0), a.clearRect(0, 0, s, _);
|
|
842
|
+
const c = (d, T, f, A) => {
|
|
843
|
+
const S = at(nt(1 / f.width, 1 / f.height), Lt(A));
|
|
844
|
+
if (d.save(), r.clip) {
|
|
845
|
+
const y = Lt(r.toCrop);
|
|
846
|
+
d.beginPath(), [
|
|
847
|
+
[-1, -1],
|
|
848
|
+
[1, -1],
|
|
849
|
+
[1, 1],
|
|
850
|
+
[-1, 1]
|
|
851
|
+
].forEach(([x, l], C) => {
|
|
852
|
+
const [u, R] = ne(y, x, l);
|
|
853
|
+
C === 0 ? d.moveTo(u, R) : d.lineTo(u, R);
|
|
854
|
+
}), d.closePath(), d.clip();
|
|
855
|
+
}
|
|
856
|
+
d.setTransform(S[0], S[3], S[1], S[4], S[2], S[5]), d.imageSmoothingQuality = "high", d.drawImage(T, 0, 0, f.width, f.height), d.restore();
|
|
857
|
+
};
|
|
858
|
+
if (c(a, e, n, r.toUV), un(r) && M(), r.dim != null && r.dim < 1) {
|
|
859
|
+
const d = Lt(r.toCrop);
|
|
860
|
+
a.save(), a.globalCompositeOperation = "source-atop", a.beginPath(), a.rect(0, 0, s, _), [
|
|
861
|
+
[-1, -1],
|
|
862
|
+
[1, -1],
|
|
863
|
+
[1, 1],
|
|
864
|
+
[-1, 1]
|
|
865
|
+
].forEach(([S, y], x) => {
|
|
866
|
+
const [l, C] = ne(d, S, y);
|
|
867
|
+
x === 0 ? a.moveTo(l, C) : a.lineTo(l, C);
|
|
868
|
+
}), a.closePath();
|
|
869
|
+
const [T, f, A] = (r.dimColor ?? [0, 0, 0]).map((S) => Math.round(S * 255));
|
|
870
|
+
a.fillStyle = `rgba(${T}, ${f}, ${A}, ${1 - r.dim})`, a.fill("evenodd"), a.restore();
|
|
871
|
+
}
|
|
872
|
+
function M() {
|
|
873
|
+
if (a)
|
|
874
|
+
try {
|
|
875
|
+
const d = a.getImageData(0, 0, s, _);
|
|
876
|
+
let T = null;
|
|
877
|
+
if (r.clarity !== 0) {
|
|
878
|
+
const A = ze(s, _).getContext("2d", { willReadFrequently: !0 });
|
|
879
|
+
A && (c(A, i, o, r.toBlurUV), T = A.getImageData(0, 0, s, _).data);
|
|
880
|
+
}
|
|
881
|
+
Re(d.data, s, _, r, T, r.toCrop), a.putImageData(d, 0, 0);
|
|
882
|
+
} catch {
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
const Jn = 16384, tr = 16384 * 16384, er = (t, e, n) => new Promise((i, o) => {
|
|
887
|
+
try {
|
|
888
|
+
t.toBlob(
|
|
889
|
+
(r) => r ? i(r) : o(new Error("Encoding failed")),
|
|
890
|
+
e,
|
|
891
|
+
n
|
|
892
|
+
);
|
|
893
|
+
} catch (r) {
|
|
894
|
+
o(r);
|
|
895
|
+
}
|
|
896
|
+
});
|
|
897
|
+
async function nr(t, e, n, i, o) {
|
|
898
|
+
var x;
|
|
899
|
+
const r = Rt(n), a = Xt(n), s = Math.min(
|
|
900
|
+
1,
|
|
901
|
+
Jn / Math.max(r.width, r.height),
|
|
902
|
+
Math.sqrt(tr / (r.width * r.height))
|
|
903
|
+
), _ = Math.max(1, Math.round(r.width * s)), c = Math.max(1, Math.round(r.height * s)), M = ze(_, c), d = M.getContext("2d");
|
|
904
|
+
if (!d) throw new Error("Canvas 2D is unavailable");
|
|
905
|
+
const T = at(
|
|
906
|
+
Ne(n, e),
|
|
907
|
+
st(-a.x, -a.y),
|
|
908
|
+
nt(_ / a.width, c / a.height)
|
|
909
|
+
);
|
|
910
|
+
i === "image/jpeg" && (d.fillStyle = "#fff", d.fillRect(0, 0, _, c)), d.setTransform(T[0], T[3], T[1], T[4], T[2], T[5]), d.imageSmoothingEnabled = !0, d.imageSmoothingQuality = "high";
|
|
911
|
+
const f = Te(n, e), A = (x = n.redact) == null ? void 0 : x.effect, S = f > 0 && A === "blur" ? jn(t, e.width, e.height, f) : t;
|
|
912
|
+
d.drawImage(S, 0, 0, e.width, e.height), d.setTransform(1, 0, 0, 1, 0, 0);
|
|
913
|
+
const y = Pe(n);
|
|
914
|
+
if (un(y)) {
|
|
915
|
+
const l = ke * Math.max(e.width, e.height) * (_ / a.width) * n.scale, C = rn(M, _, c, l);
|
|
916
|
+
rr(M, C, y);
|
|
917
|
+
}
|
|
918
|
+
if (f > 0 && A === "pixelate") {
|
|
919
|
+
const { cols: l, rows: C } = an(a, f * n.scale);
|
|
920
|
+
cn(M, l, C);
|
|
921
|
+
}
|
|
922
|
+
return er(M, i, o);
|
|
923
|
+
}
|
|
924
|
+
function rr(t, e, n) {
|
|
925
|
+
const { width: i, height: o } = t, r = t.getContext("2d", { willReadFrequently: !0 }), a = document.createElement("canvas"), s = se.create(a), _ = s ? Math.min(2048, s.maxTextureSize) : 1024, c = ze(_, _), M = c.getContext("2d", { willReadFrequently: !0 });
|
|
926
|
+
try {
|
|
927
|
+
for (let d = 0; d < o; d += _)
|
|
928
|
+
for (let T = 0; T < i; T += _) {
|
|
929
|
+
const f = Math.min(_, i - T), A = Math.min(_, o - d), S = at(st(T, d), nt(2 / i, 2 / o), st(-1, -1)), y = at(st(T, d), nt(1 / i, 1 / o));
|
|
930
|
+
if (s)
|
|
931
|
+
c.width = f, c.height = A, M.clearRect(0, 0, f, A), M.drawImage(t, T, d, f, A, 0, 0, f, A), a.width = f, a.height = A, s.setImage(c, e, !1), s.render({ ...n, toUV: nt(1 / f, 1 / A), toBlurUV: y, toCrop: S, clip: !1 }), r.clearRect(T, d, f, A), r.drawImage(a, T, d);
|
|
932
|
+
else {
|
|
933
|
+
const x = r.getImageData(T, d, f, A);
|
|
934
|
+
let l = null;
|
|
935
|
+
n.clarity !== 0 && (c.width = f, c.height = A, M.drawImage(
|
|
936
|
+
e,
|
|
937
|
+
T / i * e.width,
|
|
938
|
+
d / o * e.height,
|
|
939
|
+
f / i * e.width,
|
|
940
|
+
A / o * e.height,
|
|
941
|
+
0,
|
|
942
|
+
0,
|
|
943
|
+
f,
|
|
944
|
+
A
|
|
945
|
+
), l = M.getImageData(0, 0, f, A).data), Re(x.data, f, A, n, l, S), r.putImageData(x, T, d);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
} finally {
|
|
949
|
+
s == null || s.dispose();
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
const ir = 50, _e = (t, e) => JSON.stringify(t) === JSON.stringify(e), or = (t, e) => t === e || !!t && !!e && t.width === e.width && t.height === e.height, _t = (t) => JSON.parse(JSON.stringify(t));
|
|
953
|
+
class dn {
|
|
954
|
+
constructor() {
|
|
955
|
+
this.snapshot = {
|
|
956
|
+
status: "idle",
|
|
957
|
+
error: null,
|
|
958
|
+
state: null,
|
|
959
|
+
ui: { util: "crop", cropTab: "rotation", finetuneTab: "brightness", resizeLocked: !0 },
|
|
960
|
+
size: null,
|
|
961
|
+
canUndo: !1,
|
|
962
|
+
canRedo: !1,
|
|
963
|
+
canRevert: !1
|
|
964
|
+
}, this.storeListeners = /* @__PURE__ */ new Set(), this.events = /* @__PURE__ */ new Map(), this.history = [], this.index = -1, this.initial = null, this.loaded = null, this.options = null, this.openToken = 0, this.subscribe = (e) => (this.storeListeners.add(e), () => {
|
|
965
|
+
this.storeListeners.delete(e);
|
|
966
|
+
}), this.getSnapshot = () => this.snapshot;
|
|
967
|
+
}
|
|
968
|
+
patch(e) {
|
|
969
|
+
const n = e.state !== void 0 ? e.state : this.snapshot.state;
|
|
970
|
+
this.snapshot = {
|
|
971
|
+
...this.snapshot,
|
|
972
|
+
...e,
|
|
973
|
+
canUndo: this.index > 0,
|
|
974
|
+
canRedo: this.index < this.history.length - 1,
|
|
975
|
+
canRevert: !!n && !!this.initial && !_e(n, this.initial)
|
|
976
|
+
}, this.storeListeners.forEach((i) => i());
|
|
977
|
+
}
|
|
978
|
+
on(e, n) {
|
|
979
|
+
let i = this.events.get(e);
|
|
980
|
+
return i || this.events.set(e, i = /* @__PURE__ */ new Set()), i.add(n), () => {
|
|
981
|
+
i.delete(n);
|
|
982
|
+
};
|
|
983
|
+
}
|
|
984
|
+
emit(e, n) {
|
|
985
|
+
var i;
|
|
986
|
+
(i = this.events.get(e)) == null || i.forEach((o) => o(n));
|
|
987
|
+
}
|
|
988
|
+
// ── lifecycle ────────────────────────────────────────────────────────────────────────────────
|
|
989
|
+
/** The loaded image (full resolution) — for renderers. */
|
|
990
|
+
get image() {
|
|
991
|
+
return this.loaded;
|
|
992
|
+
}
|
|
993
|
+
/** The `open()` options. */
|
|
994
|
+
get openOptions() {
|
|
995
|
+
return this.options;
|
|
996
|
+
}
|
|
997
|
+
async open(e) {
|
|
998
|
+
const n = ++this.openToken;
|
|
999
|
+
this.options = e, this.history = [], this.index = -1, this.initial = null, this.loaded = null, this.patch({
|
|
1000
|
+
status: "loading",
|
|
1001
|
+
error: null,
|
|
1002
|
+
state: null,
|
|
1003
|
+
size: null,
|
|
1004
|
+
ui: { ...this.snapshot.ui, util: e.util ?? "crop" }
|
|
1005
|
+
});
|
|
1006
|
+
try {
|
|
1007
|
+
const i = await Xn(e.src);
|
|
1008
|
+
if (n !== this.openToken) return;
|
|
1009
|
+
this.loaded = i;
|
|
1010
|
+
const o = { width: i.width, height: i.height }, r = Ln(o, e.cropAspectRatio), a = e.initialState ?? {}, s = {
|
|
1011
|
+
...r,
|
|
1012
|
+
...a,
|
|
1013
|
+
crop: { ...r.crop, ...a.crop },
|
|
1014
|
+
finetune: { ...Qe, ...a.finetune },
|
|
1015
|
+
redact: { ...r.redact, ...a.redact }
|
|
1016
|
+
};
|
|
1017
|
+
s.filter && s.filter !== "default" && !s.colorMatrix && (s.colorMatrix = Ce[s.filter] ?? null);
|
|
1018
|
+
const _ = Be(s, o);
|
|
1019
|
+
this.initial = Be(r, o), this.history = [_t(_)], this.index = 0, this.patch({ status: "ready", state: _, size: o }), this.emit("load", { size: o });
|
|
1020
|
+
} catch (i) {
|
|
1021
|
+
if (n !== this.openToken) return;
|
|
1022
|
+
throw this.patch({ status: "error", error: i }), i;
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
close() {
|
|
1026
|
+
var n;
|
|
1027
|
+
this.openToken++;
|
|
1028
|
+
const e = (n = this.loaded) == null ? void 0 : n.image;
|
|
1029
|
+
e && "close" in e && typeof e.close == "function" && e.close(), this.loaded = null, this.emit("close");
|
|
1030
|
+
}
|
|
1031
|
+
// ── state ────────────────────────────────────────────────────────────────────────────────────
|
|
1032
|
+
getState() {
|
|
1033
|
+
if (!this.snapshot.state) throw new Error("No image is open");
|
|
1034
|
+
return _t(this.snapshot.state);
|
|
1035
|
+
}
|
|
1036
|
+
/** Replace part of the state and commit it (one undo step). */
|
|
1037
|
+
setState(e) {
|
|
1038
|
+
this.preview(e), this.commit();
|
|
1039
|
+
}
|
|
1040
|
+
/** Apply a live (uncommitted) change — e.g. while dragging. Call `commit()` when the interaction ends. */
|
|
1041
|
+
preview(e) {
|
|
1042
|
+
const n = this.snapshot.state, i = this.snapshot.size;
|
|
1043
|
+
if (!n || !i) return;
|
|
1044
|
+
const o = { ...n, ...e }, r = this.index >= 0 ? this.history[this.index] : n;
|
|
1045
|
+
"resize" in e && !or(e.resize ?? null, r.resize) || (o.resize = Cn(r, { ...o, resize: r.resize })), this.patch({ state: o });
|
|
1046
|
+
}
|
|
1047
|
+
/** Push the current state onto the history (if it changed) and emit `update`. */
|
|
1048
|
+
commit() {
|
|
1049
|
+
const e = this.snapshot.state;
|
|
1050
|
+
e && (this.index >= 0 && _e(e, this.history[this.index]) || (this.history = this.history.slice(0, this.index + 1), this.history.push(_t(e)), this.history.length > ir && this.history.shift(), this.index = this.history.length - 1, this.patch({}), this.emit("update", _t(e))));
|
|
1051
|
+
}
|
|
1052
|
+
undo() {
|
|
1053
|
+
this.index <= 0 || (this.index--, this.patch({ state: _t(this.history[this.index]) }), this.emit("undo", this.getState()), this.emit("update", this.getState()));
|
|
1054
|
+
}
|
|
1055
|
+
redo() {
|
|
1056
|
+
this.index >= this.history.length - 1 || (this.index++, this.patch({ state: _t(this.history[this.index]) }), this.emit("redo", this.getState()), this.emit("update", this.getState()));
|
|
1057
|
+
}
|
|
1058
|
+
/**
|
|
1059
|
+
* Back to the original image — every edit dropped, including the ones an `initialState` re-opened with.
|
|
1060
|
+
* It's one history step, so Undo brings the edits back.
|
|
1061
|
+
*/
|
|
1062
|
+
revert() {
|
|
1063
|
+
const e = this.snapshot.state;
|
|
1064
|
+
!this.initial || !e || _e(e, this.initial) || (this.patch({ state: _t(this.initial) }), this.commit(), this.emit("revert", this.getState()));
|
|
1065
|
+
}
|
|
1066
|
+
setUi(e) {
|
|
1067
|
+
e.util && e.util !== this.snapshot.ui.util && this.commit(), this.patch({ ui: { ...this.snapshot.ui, ...e } });
|
|
1068
|
+
}
|
|
1069
|
+
/** Render the current state at full resolution. */
|
|
1070
|
+
async process() {
|
|
1071
|
+
var a, s;
|
|
1072
|
+
const e = this.loaded, n = this.snapshot.state;
|
|
1073
|
+
if (!e || !n) throw new Error("No image is open");
|
|
1074
|
+
const i = Bn((a = this.options) == null ? void 0 : a.outputType, e.type), r = { dest: await nr(
|
|
1075
|
+
e.image,
|
|
1076
|
+
{ width: e.width, height: e.height },
|
|
1077
|
+
n,
|
|
1078
|
+
i,
|
|
1079
|
+
((s = this.options) == null ? void 0 : s.outputQuality) ?? 0.92
|
|
1080
|
+
), imageState: _t(n) };
|
|
1081
|
+
return this.emit("process", r), r;
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
const po = () => new dn(), ar = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
1085
|
+
function $e(t, e, n, { stiffness: i = 240, damping: o = 30 } = {}, r) {
|
|
1086
|
+
if (ar() || typeof requestAnimationFrame != "function") {
|
|
1087
|
+
n(e), r == null || r();
|
|
1088
|
+
const S = (() => {
|
|
1089
|
+
});
|
|
1090
|
+
return S.retarget = (y) => n(y), S;
|
|
1091
|
+
}
|
|
1092
|
+
const a = [...e], s = [...t], _ = t.map(() => 0), c = t.map((S, y) => Math.max(1e-5, Math.abs(a[y] - S) * 1e-3));
|
|
1093
|
+
let M = performance.now(), d = 0, T = !1;
|
|
1094
|
+
const f = (S) => {
|
|
1095
|
+
if (T) return;
|
|
1096
|
+
let y = Math.min(0.064, (S - M) / 1e3);
|
|
1097
|
+
for (M = S; y > 0; ) {
|
|
1098
|
+
const l = Math.min(y, 0.008333333333333333);
|
|
1099
|
+
for (let C = 0; C < s.length; C++) {
|
|
1100
|
+
const u = -i * (s[C] - a[C]) - o * _[C];
|
|
1101
|
+
_[C] += u * l, s[C] += _[C] * l;
|
|
1102
|
+
}
|
|
1103
|
+
y -= l;
|
|
1104
|
+
}
|
|
1105
|
+
if (s.every(
|
|
1106
|
+
(l, C) => Math.abs(l - a[C]) < c[C] && Math.abs(_[C]) < c[C] * 10
|
|
1107
|
+
)) {
|
|
1108
|
+
n(a), r == null || r();
|
|
1109
|
+
return;
|
|
1110
|
+
}
|
|
1111
|
+
n([...s]), d = requestAnimationFrame(f);
|
|
1112
|
+
};
|
|
1113
|
+
d = requestAnimationFrame(f);
|
|
1114
|
+
const A = (() => {
|
|
1115
|
+
T = !0, cancelAnimationFrame(d);
|
|
1116
|
+
});
|
|
1117
|
+
return A.retarget = (S) => {
|
|
1118
|
+
for (let y = 0; y < a.length; y++)
|
|
1119
|
+
a[y] = S[y], c[y] = Math.max(c[y], 1e-5);
|
|
1120
|
+
}, A;
|
|
1121
|
+
}
|
|
1122
|
+
const sr = "_overlay_2796b_6", cr = "_editor_2796b_11", lr = "_header_2796b_61", hr = "_headerStart_2796b_70", ur = "_headerCenter_2796b_74", dr = "_headerEnd_2796b_79", mr = "_group_2796b_84", fr = "_zoomLabel_2796b_97", pr = "_done_2796b_105", gr = "_closeIcon_2796b_116", _r = "_groupDivider_2796b_120", br = "_main_2796b_148", wr = "_nav_2796b_159", vr = "_stage_2796b_160", xr = "_toolbar_2796b_161", Mr = "_canvasArea_2796b_162", yr = "_footer_2796b_163", Er = "_footerInner_2796b_164", Tr = "_navList_2796b_169", Ir = "_toolbarRow_2796b_170", Ar = "_tool_2796b_161", Sr = "_toolActive_2796b_217", Cr = "_shapeSlot_2796b_263", Rr = "_shapePreview_2796b_270", Lr = "_shapeCustom_2796b_276", kr = "_shapeOrientation_2796b_281", Nr = "_orientButton_2796b_290", Pr = "_orientActive_2796b_313", zr = "_viewport_2796b_330", Dr = "_viewportCrop_2796b_339", Ur = "_viewportPannable_2796b_342", Fr = "_canvas_2796b_162", Or = "_scene_2796b_355", Xr = "_cropBox_2796b_362", Br = "_grid_2796b_369", Yr = "_cropInteracting_2796b_398", Vr = "_sizeBadge_2796b_404", $r = "_sizeBadgeActive_2796b_430", Gr = "_sizeTimes_2796b_433", jr = "_sizeUnit_2796b_434", qr = "_handle_2796b_444", Wr = "_handle_nw_2796b_448", Kr = "_handle_ne_2796b_449", Hr = "_handle_sw_2796b_450", Qr = "_handle_se_2796b_451", Zr = "_handle_n_2796b_448", Jr = "_handle_s_2796b_450", ti = "_handle_w_2796b_511", ei = "_handle_e_2796b_512", ni = "_status_2796b_527", ri = "_toastError_2796b_538", ii = "_tabs_2796b_571", oi = "_tab_2796b_571", ai = "_tabActive_2796b_606", si = "_tabDot_2796b_617", ci = "_resizePanel_2796b_628", li = "_resizeFields_2796b_634", hi = "_dimField_2796b_640", ui = "_dimLabel_2796b_658", di = "_dimLabelShort_2796b_662", mi = "_dimInput_2796b_665", fi = "_dimUnit_2796b_681", pi = "_lockButton_2796b_686", gi = "_lockActive_2796b_703", _i = "_strip_2796b_715", bi = "_fadeStart_2796b_730", wi = "_fadeEnd_2796b_734", vi = "_stripGroup_2796b_754", xi = "_filterTile_2796b_759", Mi = "_filterThumb_2796b_773", yi = "_filterActive_2796b_804", Ei = "_filterLabel_2796b_814", Ti = "_fadeIn_2796b_819", Ii = "_toolbarIconOnPhone_2796b_861", Ai = "_toolbarLabel_2796b_873", Si = "_dimLabelFull_2796b_882", Ci = "_toolLabel_2796b_918", b = {
|
|
1123
|
+
overlay: sr,
|
|
1124
|
+
editor: cr,
|
|
1125
|
+
header: lr,
|
|
1126
|
+
headerStart: hr,
|
|
1127
|
+
headerCenter: ur,
|
|
1128
|
+
headerEnd: dr,
|
|
1129
|
+
group: mr,
|
|
1130
|
+
zoomLabel: fr,
|
|
1131
|
+
done: pr,
|
|
1132
|
+
closeIcon: gr,
|
|
1133
|
+
groupDivider: _r,
|
|
1134
|
+
main: br,
|
|
1135
|
+
nav: wr,
|
|
1136
|
+
stage: vr,
|
|
1137
|
+
toolbar: xr,
|
|
1138
|
+
canvasArea: Mr,
|
|
1139
|
+
footer: yr,
|
|
1140
|
+
footerInner: Er,
|
|
1141
|
+
navList: Tr,
|
|
1142
|
+
toolbarRow: Ir,
|
|
1143
|
+
tool: Ar,
|
|
1144
|
+
toolActive: Sr,
|
|
1145
|
+
shapeSlot: Cr,
|
|
1146
|
+
shapePreview: Rr,
|
|
1147
|
+
shapeCustom: Lr,
|
|
1148
|
+
shapeOrientation: kr,
|
|
1149
|
+
orientButton: Nr,
|
|
1150
|
+
orientActive: Pr,
|
|
1151
|
+
viewport: zr,
|
|
1152
|
+
viewportCrop: Dr,
|
|
1153
|
+
viewportPannable: Ur,
|
|
1154
|
+
canvas: Fr,
|
|
1155
|
+
scene: Or,
|
|
1156
|
+
cropBox: Xr,
|
|
1157
|
+
grid: Br,
|
|
1158
|
+
cropInteracting: Yr,
|
|
1159
|
+
sizeBadge: Vr,
|
|
1160
|
+
"tz-ie-fade": "_tz-ie-fade_2796b_1",
|
|
1161
|
+
sizeBadgeActive: $r,
|
|
1162
|
+
sizeTimes: Gr,
|
|
1163
|
+
sizeUnit: jr,
|
|
1164
|
+
handle: qr,
|
|
1165
|
+
handle_nw: Wr,
|
|
1166
|
+
handle_ne: Kr,
|
|
1167
|
+
handle_sw: Hr,
|
|
1168
|
+
handle_se: Qr,
|
|
1169
|
+
handle_n: Zr,
|
|
1170
|
+
handle_s: Jr,
|
|
1171
|
+
handle_w: ti,
|
|
1172
|
+
handle_e: ei,
|
|
1173
|
+
status: ni,
|
|
1174
|
+
toastError: ri,
|
|
1175
|
+
tabs: ii,
|
|
1176
|
+
tab: oi,
|
|
1177
|
+
tabActive: ai,
|
|
1178
|
+
tabDot: si,
|
|
1179
|
+
resizePanel: ci,
|
|
1180
|
+
resizeFields: li,
|
|
1181
|
+
dimField: hi,
|
|
1182
|
+
dimLabel: ui,
|
|
1183
|
+
dimLabelShort: di,
|
|
1184
|
+
dimInput: mi,
|
|
1185
|
+
dimUnit: fi,
|
|
1186
|
+
lockButton: pi,
|
|
1187
|
+
lockActive: gi,
|
|
1188
|
+
strip: _i,
|
|
1189
|
+
fadeStart: bi,
|
|
1190
|
+
fadeEnd: wi,
|
|
1191
|
+
stripGroup: vi,
|
|
1192
|
+
filterTile: xi,
|
|
1193
|
+
filterThumb: Mi,
|
|
1194
|
+
filterActive: yi,
|
|
1195
|
+
filterLabel: Ei,
|
|
1196
|
+
fadeIn: Ti,
|
|
1197
|
+
toolbarIconOnPhone: Ii,
|
|
1198
|
+
toolbarLabel: Ai,
|
|
1199
|
+
dimLabelFull: Si,
|
|
1200
|
+
toolLabel: Ci
|
|
1201
|
+
}, Ri = 24, Li = 12, Ge = 4096, ki = 768, je = 0.35;
|
|
1202
|
+
function Ni(t) {
|
|
1203
|
+
const e = t ? getComputedStyle(t).getPropertyValue("--tz-color-background-rgb") : "", [n, i, o] = e.split(",").map((r) => Number(r.trim()) / 255);
|
|
1204
|
+
return [n, i, o].every((r) => Number.isFinite(r)) ? [n, i, o] : [0, 0, 0];
|
|
1205
|
+
}
|
|
1206
|
+
const Pi = 40, zi = ["nw", "ne", "sw", "se", "n", "s", "w", "e"], Ot = (t) => [t.center[0], t.center[1], Math.log(t.scale), t.rotation, t.flip], Di = (t) => ({
|
|
1207
|
+
center: [t[0], t[1]],
|
|
1208
|
+
scale: Math.exp(t[2]),
|
|
1209
|
+
rotation: t[3],
|
|
1210
|
+
flip: t[4]
|
|
1211
|
+
}), Ui = Ke(function({ core: e, snapshot: n, cropAspectRatio: i, viewZoom: o, onViewZoom: r, onZoomReport: a, areaRef: s }, _) {
|
|
1212
|
+
const { state: c, size: M, ui: d } = n, T = wn(), f = d.util, A = O(null), S = O(null), [y, x] = Q(null), [l, C] = Q(null), u = O(null);
|
|
1213
|
+
u.current = l;
|
|
1214
|
+
const [R, m] = Q([0, 0]), [E, v] = Q(!1), [N, j] = Q(0), G = O(!1), W = O(null), V = O(null), ct = O(null), Z = O(/* @__PURE__ */ new Map()), dt = O(void 0);
|
|
1215
|
+
q(() => {
|
|
1216
|
+
const g = A.current;
|
|
1217
|
+
if (!g) return;
|
|
1218
|
+
const p = () => {
|
|
1219
|
+
var F;
|
|
1220
|
+
const D = g.getBoundingClientRect(), Y = (F = s == null ? void 0 : s.current) == null ? void 0 : F.getBoundingClientRect();
|
|
1221
|
+
x({
|
|
1222
|
+
width: D.width,
|
|
1223
|
+
height: D.height,
|
|
1224
|
+
dpr: window.devicePixelRatio || 1,
|
|
1225
|
+
// horizontally the area is mirrored to the wider side, so the crop sits in the middle of the
|
|
1226
|
+
// screen (not of the space right of the tool menu); vertically it's the space between the bars
|
|
1227
|
+
area: Y ? Fi(D, Y) : void 0
|
|
1228
|
+
});
|
|
1229
|
+
};
|
|
1230
|
+
if (p(), k.current = p, typeof ResizeObserver > "u") return;
|
|
1231
|
+
const P = new ResizeObserver(p);
|
|
1232
|
+
return P.observe(g), s != null && s.current && P.observe(s.current), () => P.disconnect();
|
|
1233
|
+
}, [s]);
|
|
1234
|
+
const k = O(null);
|
|
1235
|
+
ue(() => {
|
|
1236
|
+
var g;
|
|
1237
|
+
(g = k.current) == null || g.call(k);
|
|
1238
|
+
}, [f, n.status]);
|
|
1239
|
+
const z = n.status === "ready" ? e.image : null, [L, $] = Q(null);
|
|
1240
|
+
q(() => {
|
|
1241
|
+
const g = S.current;
|
|
1242
|
+
if (!z || !g) return;
|
|
1243
|
+
const p = se.create(g), P = Math.min(Ge, (p == null ? void 0 : p.maxTextureSize) ?? Ge), D = te(z.image, z.width, z.height, P), Y = ke * Math.max(z.width, z.height) * (D.width / z.width), F = rn(D.canvas, D.width, D.height, Y);
|
|
1244
|
+
return p == null || p.setImage(D.canvas, F), $({ gl: p, tex: D, blur: F }), () => {
|
|
1245
|
+
p == null || p.dispose(!1), $(null);
|
|
1246
|
+
};
|
|
1247
|
+
}, [z]);
|
|
1248
|
+
const H = c && M ? Rt(c).width * c.scale / Xt(c).width : 1, mt = M ? Math.max(1, Math.round(M.width * H)) : 0, lt = (c == null ? void 0 : c.redact.effect) ?? "blur", xt = (c == null ? void 0 : c.redact.amount) ?? 0, [J, rt] = Q(null);
|
|
1249
|
+
q(() => {
|
|
1250
|
+
if (!L || !M) {
|
|
1251
|
+
rt(null);
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
const g = requestAnimationFrame(() => {
|
|
1255
|
+
let p = { ...L.tex, mipmap: !0, pixelate: !1 };
|
|
1256
|
+
mt < p.width && (p = {
|
|
1257
|
+
...te(
|
|
1258
|
+
p.canvas,
|
|
1259
|
+
p.width,
|
|
1260
|
+
p.height,
|
|
1261
|
+
Math.max(1, Math.round(Math.max(M.width, M.height) * H))
|
|
1262
|
+
),
|
|
1263
|
+
mipmap: !0,
|
|
1264
|
+
pixelate: !1
|
|
1265
|
+
});
|
|
1266
|
+
const P = Te({ redact: { effect: lt, amount: xt } }, M);
|
|
1267
|
+
if (P <= 0) return rt(p);
|
|
1268
|
+
const D = P * (p.width / M.width);
|
|
1269
|
+
if (lt === "blur") {
|
|
1270
|
+
const F = sn(p.canvas, p.width, p.height, D, ki);
|
|
1271
|
+
return rt({
|
|
1272
|
+
canvas: F,
|
|
1273
|
+
width: F.width,
|
|
1274
|
+
height: F.height,
|
|
1275
|
+
mipmap: !0,
|
|
1276
|
+
pixelate: !1
|
|
1277
|
+
});
|
|
1278
|
+
}
|
|
1279
|
+
if (!L.gl) {
|
|
1280
|
+
const F = qn(p.canvas, p.width, p.height, D);
|
|
1281
|
+
return rt({
|
|
1282
|
+
canvas: F,
|
|
1283
|
+
width: F.width,
|
|
1284
|
+
height: F.height,
|
|
1285
|
+
mipmap: !1,
|
|
1286
|
+
pixelate: !1
|
|
1287
|
+
});
|
|
1288
|
+
}
|
|
1289
|
+
const Y = te(
|
|
1290
|
+
p.canvas,
|
|
1291
|
+
p.width,
|
|
1292
|
+
p.height,
|
|
1293
|
+
Math.max(p.width, p.height) / Math.max(1, D)
|
|
1294
|
+
);
|
|
1295
|
+
rt({ ...Y, mipmap: !1, pixelate: !0 });
|
|
1296
|
+
});
|
|
1297
|
+
return () => cancelAnimationFrame(g);
|
|
1298
|
+
}, [L, mt, lt, xt]), ue(() => {
|
|
1299
|
+
L != null && L.gl && J && L.gl.setSource(J.canvas, J.mipmap);
|
|
1300
|
+
}, [L, J]);
|
|
1301
|
+
const tt = mn(() => {
|
|
1302
|
+
if (!c || !y) return null;
|
|
1303
|
+
const g = y.area ?? y;
|
|
1304
|
+
if (f === "crop") return Ve(c.crop, g, Math.min(Ri, g.width * 0.06));
|
|
1305
|
+
const p = Xt(c), P = Ve(p, g, Li), D = c.resize ? { ...P, scale: Math.min(P.scale, Rt(c).width / p.width) } : P;
|
|
1306
|
+
if (o == null) return D;
|
|
1307
|
+
const Y = o / c.scale, F = Math.max(0, p.width / 2 - g.width / 2 / Y), it = Math.max(0, p.height / 2 - g.height / 2 / Y), ht = Math.max(-F, Math.min(F, R[0])), yt = Math.max(-it, Math.min(it, R[1]));
|
|
1308
|
+
return { ...D, scale: Y, center: [D.center[0] + ht, D.center[1] + yt] };
|
|
1309
|
+
}, [c, y, f, o, R, N]), qt = O(f), It = O(!1), Mt = O({
|
|
1310
|
+
stage: y,
|
|
1311
|
+
state: c
|
|
1312
|
+
}), Nt = (g, p) => {
|
|
1313
|
+
var P;
|
|
1314
|
+
(P = V.current) == null || P.call(V), It.current = !0, V.current = $e(
|
|
1315
|
+
Ot(g),
|
|
1316
|
+
Ot(p),
|
|
1317
|
+
(D) => C(Di(D)),
|
|
1318
|
+
void 0,
|
|
1319
|
+
() => {
|
|
1320
|
+
It.current = !1;
|
|
1321
|
+
}
|
|
1322
|
+
);
|
|
1323
|
+
}, [ft, ce] = Q(f === "crop" ? je : 0), Wt = O(ft);
|
|
1324
|
+
Wt.current = ft, q(() => {
|
|
1325
|
+
const g = f === "crop" ? je : 0;
|
|
1326
|
+
return $e([Wt.current], [g], ([p]) => ce(Math.max(0, p)));
|
|
1327
|
+
}, [f]), ue(() => {
|
|
1328
|
+
var it, ht, yt, De;
|
|
1329
|
+
if (!tt) return;
|
|
1330
|
+
qt.current !== f && (qt.current = f, u.current && !W.current && (W.current = "jump"));
|
|
1331
|
+
const g = y !== Mt.current.stage && c === Mt.current.state, p = (it = Mt.current.state) == null ? void 0 : it.resize, P = f === "resize" && (((ht = c == null ? void 0 : c.resize) == null ? void 0 : ht.width) !== (p == null ? void 0 : p.width) || ((yt = c == null ? void 0 : c.resize) == null ? void 0 : yt.height) !== (p == null ? void 0 : p.height)), D = Mt.current.target, Y = !!D && Ot(D).every((Dt, le) => Math.abs(Dt - Ot(tt)[le]) < 1e-9);
|
|
1332
|
+
Mt.current = { stage: y, state: c, target: tt };
|
|
1333
|
+
const F = W.current;
|
|
1334
|
+
if (F) {
|
|
1335
|
+
W.current = null;
|
|
1336
|
+
const Dt = u.current ?? tt, le = F === "rotate" ? { center: tt.center, scale: Dt.scale, rotation: Math.PI / 2, flip: 1 } : F === "flip" ? { center: tt.center, scale: Dt.scale, rotation: 0, flip: -1 } : Dt;
|
|
1337
|
+
Nt(le, tt);
|
|
1338
|
+
return;
|
|
1339
|
+
}
|
|
1340
|
+
if ((g || P || Y) && It.current && V.current) {
|
|
1341
|
+
V.current.retarget(Ot(tt));
|
|
1342
|
+
return;
|
|
1343
|
+
}
|
|
1344
|
+
if (P && u.current && !G.current) {
|
|
1345
|
+
Nt(u.current, tt);
|
|
1346
|
+
return;
|
|
1347
|
+
}
|
|
1348
|
+
G.current || ((De = V.current) == null || De.call(V), V.current = null, It.current = !1, C(tt));
|
|
1349
|
+
}, [tt]), q(() => () => {
|
|
1350
|
+
var g;
|
|
1351
|
+
return (g = V.current) == null ? void 0 : g.call(V);
|
|
1352
|
+
}, []), q(() => {
|
|
1353
|
+
l && c && a(l.scale * c.scale);
|
|
1354
|
+
}, [l, c, a]), q(() => {
|
|
1355
|
+
const g = S.current;
|
|
1356
|
+
if (!g || !y) return;
|
|
1357
|
+
const p = Math.max(1, Math.round(y.width * y.dpr)), P = Math.max(1, Math.round(y.height * y.dpr));
|
|
1358
|
+
g.width !== p && (g.width = p), g.height !== P && (g.height = P);
|
|
1359
|
+
}, [y]), q(() => {
|
|
1360
|
+
if (!L || !J || !c || !M || !l || !y) return;
|
|
1361
|
+
const g = f === "crop" ? c : { ...c, crop: Xt(c) }, p = Kn(g, M, l, y), P = J.pixelate ? Te(c, M) : 0, D = P > 0 ? {
|
|
1362
|
+
pixel: ((F) => [F.cols, F.rows])(
|
|
1363
|
+
an(g.crop, P * c.scale)
|
|
1364
|
+
),
|
|
1365
|
+
cropToUV: at(Lt(p.toCrop), p.toUV)
|
|
1366
|
+
} : null, Y = requestAnimationFrame(() => {
|
|
1367
|
+
const F = {
|
|
1368
|
+
...Pe(c),
|
|
1369
|
+
...p,
|
|
1370
|
+
...D,
|
|
1371
|
+
// the image around the crop: dimmed in the Crop view, gone (faded into the background) in the
|
|
1372
|
+
// others — `surround` springs between the two on a tool switch
|
|
1373
|
+
clip: ft <= 1e-3,
|
|
1374
|
+
dim: ft,
|
|
1375
|
+
dimColor: Ni(A.current)
|
|
1376
|
+
};
|
|
1377
|
+
L.gl ? L.gl.render(F) : S.current && Zn(S.current, J.canvas, J, L.blur, L.blur, F);
|
|
1378
|
+
});
|
|
1379
|
+
return () => cancelAnimationFrame(Y);
|
|
1380
|
+
}, [L, J, c, M, l, y, ft, T, f]), fn(_, () => ({
|
|
1381
|
+
transition(g) {
|
|
1382
|
+
W.current = g;
|
|
1383
|
+
}
|
|
1384
|
+
}));
|
|
1385
|
+
const pt = (l == null ? void 0 : l.scale) ?? 1, Kt = O(r);
|
|
1386
|
+
Kt.current = r;
|
|
1387
|
+
const Pt = () => {
|
|
1388
|
+
const [g, p] = [...Z.current.values()];
|
|
1389
|
+
return g && p ? Math.hypot(g.x - p.x, g.y - p.y) : 0;
|
|
1390
|
+
}, gt = (g) => {
|
|
1391
|
+
var P, D;
|
|
1392
|
+
if (!c || !M || g.pointerType === "mouse" && g.button !== 0 || g.target.closest("button")) return;
|
|
1393
|
+
if (g.currentTarget.setPointerCapture(g.pointerId), Z.current.set(g.pointerId, { x: g.clientX, y: g.clientY }), (P = V.current) == null || P.call(V), Z.current.size === 2) {
|
|
1394
|
+
ct.current = {
|
|
1395
|
+
kind: "pinch",
|
|
1396
|
+
dist: Pt(),
|
|
1397
|
+
base: c,
|
|
1398
|
+
zoom: Jt(c, M),
|
|
1399
|
+
viewZoom: ((l == null ? void 0 : l.scale) ?? 1) * c.scale
|
|
1400
|
+
};
|
|
1401
|
+
return;
|
|
1402
|
+
}
|
|
1403
|
+
const p = (D = g.target.closest("[data-handle]")) == null ? void 0 : D.dataset.handle;
|
|
1404
|
+
f === "crop" ? (ct.current = p ? { kind: "resize", id: g.pointerId, x: g.clientX, y: g.clientY, base: c, handle: p } : { kind: "pan", id: g.pointerId, x: g.clientX, y: g.clientY, base: c }, p && (G.current = !0), v(!0)) : o != null && (ct.current = { kind: "viewPan", id: g.pointerId, x: g.clientX, y: g.clientY, pan: R });
|
|
1405
|
+
}, zt = (g) => {
|
|
1406
|
+
if (!Z.current.has(g.pointerId) || !M) return;
|
|
1407
|
+
Z.current.set(g.pointerId, { x: g.clientX, y: g.clientY });
|
|
1408
|
+
const p = ct.current;
|
|
1409
|
+
if (!p) return;
|
|
1410
|
+
if (p.kind === "pinch") {
|
|
1411
|
+
const Y = Pt() / Math.max(1, p.dist);
|
|
1412
|
+
f === "crop" ? e.preview(Yt(p.base, Math.min(Bt, p.zoom * Y), M)) : r(be(p.viewZoom * Y));
|
|
1413
|
+
return;
|
|
1414
|
+
}
|
|
1415
|
+
if (p.id !== g.pointerId) return;
|
|
1416
|
+
const P = (g.clientX - p.x) / pt, D = (g.clientY - p.y) / pt;
|
|
1417
|
+
if (p.kind === "pan") e.preview(Pn(p.base, -P, -D, M));
|
|
1418
|
+
else if (p.kind === "resize") {
|
|
1419
|
+
const Y = p.base.crop, it = i || p.base.cropRatio || g.shiftKey ? Y.width / Y.height : null;
|
|
1420
|
+
e.preview(
|
|
1421
|
+
Dn(p.base, p.handle, P, D, M, {
|
|
1422
|
+
aspectRatio: it,
|
|
1423
|
+
minSize: Math.max(p.base.scale, Pi / pt)
|
|
1424
|
+
})
|
|
1425
|
+
);
|
|
1426
|
+
} else p.kind === "viewPan" && m([p.pan[0] - P, p.pan[1] - D]);
|
|
1427
|
+
}, Ht = (g) => {
|
|
1428
|
+
if (!Z.current.has(g.pointerId)) return;
|
|
1429
|
+
Z.current.delete(g.pointerId);
|
|
1430
|
+
const p = ct.current;
|
|
1431
|
+
if (p) {
|
|
1432
|
+
if (p.kind === "pinch") {
|
|
1433
|
+
Z.current.size === 0 && (ct.current = null, f === "crop" && e.commit());
|
|
1434
|
+
return;
|
|
1435
|
+
}
|
|
1436
|
+
p.id === g.pointerId && (ct.current = null, v(!1), p.kind === "resize" ? (G.current = !1, W.current = "jump", e.commit(), j((P) => P + 1)) : p.kind === "pan" && e.commit());
|
|
1437
|
+
}
|
|
1438
|
+
}, h = (g) => {
|
|
1439
|
+
if (!c || !M) return;
|
|
1440
|
+
const p = g.ctrlKey || g.metaKey;
|
|
1441
|
+
if (!(p && I.current)) {
|
|
1442
|
+
if (f === "crop") {
|
|
1443
|
+
const P = Math.exp(-g.deltaY * (p ? 0.01 : 2e-3));
|
|
1444
|
+
e.preview(Yt(c, Math.min(Bt, Jt(c, M) * P), M)), clearTimeout(dt.current), dt.current = setTimeout(() => e.commit(), 250);
|
|
1445
|
+
return;
|
|
1446
|
+
}
|
|
1447
|
+
if (p) {
|
|
1448
|
+
const P = ((l == null ? void 0 : l.scale) ?? 1) * c.scale;
|
|
1449
|
+
r(be(P * Math.exp(-g.deltaY * 0.01)));
|
|
1450
|
+
} else o != null && m(([P, D]) => [P + g.deltaX / pt, D + g.deltaY / pt]);
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
q(() => () => clearTimeout(dt.current), []);
|
|
1454
|
+
const I = O(null), U = O({ state: c, size: M, util: f, view: l });
|
|
1455
|
+
U.current = { state: c, size: M, util: f, view: l }, q(() => {
|
|
1456
|
+
const g = A.current;
|
|
1457
|
+
if (!g) return;
|
|
1458
|
+
const p = (Y) => {
|
|
1459
|
+
const { state: F, size: it, view: ht } = U.current;
|
|
1460
|
+
Y.preventDefault(), !(!F || !it || Z.current.size > 0) && (I.current = { base: F, zoom: Jt(F, it), viewZoom: ((ht == null ? void 0 : ht.scale) ?? 1) * F.scale });
|
|
1461
|
+
}, P = (Y) => {
|
|
1462
|
+
const F = I.current, { size: it, util: ht } = U.current;
|
|
1463
|
+
if (!F || !it) return;
|
|
1464
|
+
Y.preventDefault();
|
|
1465
|
+
const yt = Y.scale || 1;
|
|
1466
|
+
ht === "crop" ? e.preview(Yt(F.base, Math.min(Bt, F.zoom * yt), it)) : Kt.current(be(F.viewZoom * yt));
|
|
1467
|
+
}, D = (Y) => {
|
|
1468
|
+
I.current && (Y.preventDefault(), I.current = null, U.current.util === "crop" && e.commit());
|
|
1469
|
+
};
|
|
1470
|
+
return g.addEventListener("gesturestart", p), g.addEventListener("gesturechange", P), g.addEventListener("gestureend", D), () => {
|
|
1471
|
+
g.removeEventListener("gesturestart", p), g.removeEventListener("gesturechange", P), g.removeEventListener("gestureend", D);
|
|
1472
|
+
};
|
|
1473
|
+
}, [e]);
|
|
1474
|
+
let X = null;
|
|
1475
|
+
if (f === "crop" && c && y && l) {
|
|
1476
|
+
const g = hn({ ...l, rotation: 0, flip: 1 }, y), [p, P] = ne(g, c.crop.x, c.crop.y), [D, Y] = ne(
|
|
1477
|
+
g,
|
|
1478
|
+
c.crop.x + c.crop.width,
|
|
1479
|
+
c.crop.y + c.crop.height
|
|
1480
|
+
);
|
|
1481
|
+
X = { left: p, top: P, width: D - p, height: Y - P };
|
|
1482
|
+
}
|
|
1483
|
+
const At = l && y ? {
|
|
1484
|
+
transform: `scaleX(${l.flip}) rotate(${l.rotation}rad)`,
|
|
1485
|
+
transformOrigin: ln(y).map((g) => `${g}px`).join(" ")
|
|
1486
|
+
} : void 0;
|
|
1487
|
+
return /* @__PURE__ */ B(
|
|
1488
|
+
"div",
|
|
1489
|
+
{
|
|
1490
|
+
ref: A,
|
|
1491
|
+
className: K(
|
|
1492
|
+
b.viewport,
|
|
1493
|
+
f === "crop" ? b.viewportCrop : o != null && b.viewportPannable
|
|
1494
|
+
),
|
|
1495
|
+
"data-part": "viewport",
|
|
1496
|
+
onPointerDown: gt,
|
|
1497
|
+
onPointerMove: zt,
|
|
1498
|
+
onPointerUp: Ht,
|
|
1499
|
+
onPointerCancel: Ht,
|
|
1500
|
+
onWheel: h,
|
|
1501
|
+
children: [
|
|
1502
|
+
/* @__PURE__ */ w("canvas", { ref: S, className: b.canvas, "data-part": "canvas" }),
|
|
1503
|
+
X && /* @__PURE__ */ w("div", { className: K(b.scene, b.fadeIn), style: At, children: /* @__PURE__ */ B(
|
|
1504
|
+
"div",
|
|
1505
|
+
{
|
|
1506
|
+
className: K(b.cropBox, E && b.cropInteracting),
|
|
1507
|
+
style: X,
|
|
1508
|
+
"data-part": "crop",
|
|
1509
|
+
children: [
|
|
1510
|
+
/* @__PURE__ */ w("span", { className: b.grid, "aria-hidden": "true" }),
|
|
1511
|
+
zi.map((g) => /* @__PURE__ */ w(
|
|
1512
|
+
"span",
|
|
1513
|
+
{
|
|
1514
|
+
className: K(b.handle, b[`handle_${g}`]),
|
|
1515
|
+
"data-handle": g,
|
|
1516
|
+
"aria-hidden": "true"
|
|
1517
|
+
},
|
|
1518
|
+
g
|
|
1519
|
+
))
|
|
1520
|
+
]
|
|
1521
|
+
}
|
|
1522
|
+
) }),
|
|
1523
|
+
X && c && l && l.rotation === 0 && l.flip === 1 && /* @__PURE__ */ B(
|
|
1524
|
+
"div",
|
|
1525
|
+
{
|
|
1526
|
+
className: K(b.sizeBadge, E && b.sizeBadgeActive),
|
|
1527
|
+
style: {
|
|
1528
|
+
left: X.left + X.width / 2,
|
|
1529
|
+
top: X.top + X.height
|
|
1530
|
+
},
|
|
1531
|
+
"data-part": "size",
|
|
1532
|
+
children: [
|
|
1533
|
+
Rt(c).width,
|
|
1534
|
+
/* @__PURE__ */ w("span", { className: b.sizeTimes, children: "×" }),
|
|
1535
|
+
Rt(c).height,
|
|
1536
|
+
/* @__PURE__ */ w("span", { className: b.sizeUnit, children: "px" })
|
|
1537
|
+
]
|
|
1538
|
+
}
|
|
1539
|
+
)
|
|
1540
|
+
]
|
|
1541
|
+
}
|
|
1542
|
+
);
|
|
1543
|
+
});
|
|
1544
|
+
function Fi(t, e) {
|
|
1545
|
+
const n = Math.max(0, e.left - t.left, t.right - e.right);
|
|
1546
|
+
return {
|
|
1547
|
+
x: n,
|
|
1548
|
+
y: e.top - t.top,
|
|
1549
|
+
width: Math.max(1, t.width - n * 2),
|
|
1550
|
+
height: e.height
|
|
1551
|
+
};
|
|
1552
|
+
}
|
|
1553
|
+
const Ie = 0.02, Ae = 8, be = (t) => Math.min(Ae, Math.max(Ie, t)), Oi = [
|
|
1554
|
+
{ label: "1:1", ratio: 1 },
|
|
1555
|
+
{ label: "2:1", ratio: 2 },
|
|
1556
|
+
{ label: "3:2", ratio: 3 / 2 },
|
|
1557
|
+
{ label: "4:3", ratio: 4 / 3 },
|
|
1558
|
+
{ label: "5:4", ratio: 5 / 4 },
|
|
1559
|
+
{ label: "16:10", ratio: 16 / 10 },
|
|
1560
|
+
{ label: "16:9", ratio: 16 / 9 }
|
|
1561
|
+
], Qt = (t, e) => Math.abs(t - e) < 1e-3, Xi = (t) => t.split(":").reverse().join(":");
|
|
1562
|
+
function qe({ ratio: t }) {
|
|
1563
|
+
const n = t == null || t >= 1 ? 16 : Math.max(6, 16 * t), i = t == null || t <= 1 ? 16 : Math.max(6, 16 / t);
|
|
1564
|
+
return /* @__PURE__ */ w("span", { className: b.shapeSlot, children: /* @__PURE__ */ w(
|
|
1565
|
+
"span",
|
|
1566
|
+
{
|
|
1567
|
+
className: K(b.shapePreview, t == null && b.shapeCustom),
|
|
1568
|
+
style: { width: n, height: i }
|
|
1569
|
+
}
|
|
1570
|
+
) });
|
|
1571
|
+
}
|
|
1572
|
+
function Bi({ ratio: t, options: e, onChange: n }) {
|
|
1573
|
+
const i = re(), [o, r] = Q(!1), [a, s] = Q(!1), _ = t != null && !Qt(t, 1) ? t < 1 : a, c = (d) => {
|
|
1574
|
+
n(d), r(!1);
|
|
1575
|
+
}, M = (d) => {
|
|
1576
|
+
s(d), t != null && !Qt(t, 1) && t < 1 !== d && n(1 / t);
|
|
1577
|
+
};
|
|
1578
|
+
return /* @__PURE__ */ B(
|
|
1579
|
+
vn,
|
|
1580
|
+
{
|
|
1581
|
+
open: o,
|
|
1582
|
+
onOpenChange: r,
|
|
1583
|
+
closeOnSelect: !1,
|
|
1584
|
+
placement: "bottom-start",
|
|
1585
|
+
size: "sm",
|
|
1586
|
+
trigger: /* @__PURE__ */ w(
|
|
1587
|
+
Me,
|
|
1588
|
+
{
|
|
1589
|
+
variant: "text",
|
|
1590
|
+
color: "primary",
|
|
1591
|
+
size: "sm",
|
|
1592
|
+
startIcon: /* @__PURE__ */ w(et, { name: "MaximizeFormat" }),
|
|
1593
|
+
title: i("imageEditor.cropShape"),
|
|
1594
|
+
"aria-label": i("imageEditor.cropShape"),
|
|
1595
|
+
className: b.toolbarIconOnPhone,
|
|
1596
|
+
children: /* @__PURE__ */ w("span", { className: b.toolbarLabel, children: i("imageEditor.cropShape") })
|
|
1597
|
+
}
|
|
1598
|
+
),
|
|
1599
|
+
children: [
|
|
1600
|
+
/* @__PURE__ */ w(
|
|
1601
|
+
"div",
|
|
1602
|
+
{
|
|
1603
|
+
className: b.shapeOrientation,
|
|
1604
|
+
role: "group",
|
|
1605
|
+
"aria-label": i("imageEditor.orientation"),
|
|
1606
|
+
children: [!1, !0].map((d) => /* @__PURE__ */ w(
|
|
1607
|
+
"button",
|
|
1608
|
+
{
|
|
1609
|
+
type: "button",
|
|
1610
|
+
className: K(b.orientButton, _ === d && b.orientActive),
|
|
1611
|
+
"aria-pressed": _ === d,
|
|
1612
|
+
"aria-label": i(d ? "imageEditor.portrait" : "imageEditor.landscape"),
|
|
1613
|
+
title: i(d ? "imageEditor.portrait" : "imageEditor.landscape"),
|
|
1614
|
+
onClick: () => M(d),
|
|
1615
|
+
children: /* @__PURE__ */ w(et, { name: d ? "Mobile" : "Monitor", size: "sm" })
|
|
1616
|
+
},
|
|
1617
|
+
String(d)
|
|
1618
|
+
))
|
|
1619
|
+
}
|
|
1620
|
+
),
|
|
1621
|
+
/* @__PURE__ */ w(
|
|
1622
|
+
Ue,
|
|
1623
|
+
{
|
|
1624
|
+
icon: /* @__PURE__ */ w(qe, { ratio: null }),
|
|
1625
|
+
clickable: !0,
|
|
1626
|
+
selected: t == null,
|
|
1627
|
+
onClick: () => c(null),
|
|
1628
|
+
children: i("imageEditor.custom")
|
|
1629
|
+
}
|
|
1630
|
+
),
|
|
1631
|
+
e.map((d) => {
|
|
1632
|
+
const T = _ ? 1 / d.ratio : d.ratio;
|
|
1633
|
+
return /* @__PURE__ */ w(
|
|
1634
|
+
Ue,
|
|
1635
|
+
{
|
|
1636
|
+
icon: /* @__PURE__ */ w(qe, { ratio: T }),
|
|
1637
|
+
clickable: !0,
|
|
1638
|
+
selected: t != null && Qt(t, T),
|
|
1639
|
+
onClick: () => c(T),
|
|
1640
|
+
children: _ && !Qt(d.ratio, 1) ? Xi(d.label) : d.label
|
|
1641
|
+
},
|
|
1642
|
+
d.label
|
|
1643
|
+
);
|
|
1644
|
+
})
|
|
1645
|
+
]
|
|
1646
|
+
}
|
|
1647
|
+
);
|
|
1648
|
+
}
|
|
1649
|
+
const Yi = 52;
|
|
1650
|
+
function Vi(t, e, n) {
|
|
1651
|
+
const i = Math.min(2, typeof window < "u" && window.devicePixelRatio || 1), o = Math.round(Yi * i), r = document.createElement("canvas");
|
|
1652
|
+
r.width = r.height = o;
|
|
1653
|
+
const a = r.getContext("2d", { willReadFrequently: !0 });
|
|
1654
|
+
if (!a) return null;
|
|
1655
|
+
const { crop: s } = n, _ = o / Math.min(s.width, s.height), [c, M] = Vt(s), d = at(
|
|
1656
|
+
Ne(n, e),
|
|
1657
|
+
st(-c, -M),
|
|
1658
|
+
nt(_),
|
|
1659
|
+
st(o / 2, o / 2)
|
|
1660
|
+
);
|
|
1661
|
+
a.setTransform(d[0], d[3], d[1], d[4], d[2], d[5]), a.imageSmoothingQuality = "high", a.drawImage(t, 0, 0, e.width, e.height), a.setTransform(1, 0, 0, 1, 0, 0);
|
|
1662
|
+
let T;
|
|
1663
|
+
try {
|
|
1664
|
+
T = a.getImageData(0, 0, o, o);
|
|
1665
|
+
} catch {
|
|
1666
|
+
return null;
|
|
1667
|
+
}
|
|
1668
|
+
const f = ke * Math.max(e.width, e.height) * n.scale * _, A = n.finetune.clarity ? Le(T.data, o, o, f) : null, S = at(
|
|
1669
|
+
st(-o / 2, -o / 2),
|
|
1670
|
+
nt(1 / _),
|
|
1671
|
+
nt(2 / s.width, 2 / s.height)
|
|
1672
|
+
), y = {};
|
|
1673
|
+
for (const x of ye.flat()) {
|
|
1674
|
+
const l = new ImageData(new Uint8ClampedArray(T.data), o, o);
|
|
1675
|
+
Re(l.data, o, o, Pe(n, Ce[x]), A, S), a.putImageData(l, 0, 0), y[x] = r.toDataURL();
|
|
1676
|
+
}
|
|
1677
|
+
return y;
|
|
1678
|
+
}
|
|
1679
|
+
function $i({ image: t, size: e, state: n, onSelect: i }) {
|
|
1680
|
+
var R;
|
|
1681
|
+
const o = re(), r = O(null), [a, s] = Q({}), [_, c] = Q({ start: !1, end: !1 }), M = n.filter ?? "default", d = O(null);
|
|
1682
|
+
((R = d.current) == null ? void 0 : R.image) !== t && (d.current = { image: t, source: te(t, e.width, e.height, 512).canvas });
|
|
1683
|
+
const T = JSON.stringify([
|
|
1684
|
+
n.crop,
|
|
1685
|
+
n.rotation,
|
|
1686
|
+
n.flipX,
|
|
1687
|
+
n.flipY,
|
|
1688
|
+
n.scale,
|
|
1689
|
+
n.finetune
|
|
1690
|
+
]);
|
|
1691
|
+
q(() => {
|
|
1692
|
+
const m = setTimeout(() => {
|
|
1693
|
+
var N;
|
|
1694
|
+
const E = (N = d.current) == null ? void 0 : N.source;
|
|
1695
|
+
if (!E) return;
|
|
1696
|
+
const v = Vi(E, e, n);
|
|
1697
|
+
v && s(v);
|
|
1698
|
+
}, 120);
|
|
1699
|
+
return () => clearTimeout(m);
|
|
1700
|
+
}, [T, t]);
|
|
1701
|
+
const f = () => {
|
|
1702
|
+
const m = r.current;
|
|
1703
|
+
m && c({
|
|
1704
|
+
start: m.scrollLeft > 2,
|
|
1705
|
+
end: m.scrollLeft + m.clientWidth < m.scrollWidth - 2
|
|
1706
|
+
});
|
|
1707
|
+
};
|
|
1708
|
+
q(() => {
|
|
1709
|
+
f();
|
|
1710
|
+
const m = r.current;
|
|
1711
|
+
if (!m || typeof ResizeObserver > "u") return;
|
|
1712
|
+
const E = new ResizeObserver(f);
|
|
1713
|
+
return E.observe(m), () => E.disconnect();
|
|
1714
|
+
}, []), q(() => {
|
|
1715
|
+
var m, E, v;
|
|
1716
|
+
(v = (E = (m = r.current) == null ? void 0 : m.querySelector(`[data-filter="${M}"]`)) == null ? void 0 : E.scrollIntoView) == null || v.call(E, { block: "nearest", inline: "nearest", behavior: "smooth" });
|
|
1717
|
+
}, [M]), q(() => {
|
|
1718
|
+
const m = r.current;
|
|
1719
|
+
if (!m) return;
|
|
1720
|
+
const E = (v) => {
|
|
1721
|
+
Math.abs(v.deltaY) <= Math.abs(v.deltaX) || (v.preventDefault(), m.scrollLeft += v.deltaY);
|
|
1722
|
+
};
|
|
1723
|
+
return m.addEventListener("wheel", E, { passive: !1 }), () => m.removeEventListener("wheel", E);
|
|
1724
|
+
}, []);
|
|
1725
|
+
const A = O(
|
|
1726
|
+
null
|
|
1727
|
+
), S = O(0), y = (m) => {
|
|
1728
|
+
if (m.pointerType !== "mouse" || m.button !== 0) return;
|
|
1729
|
+
cancelAnimationFrame(S.current);
|
|
1730
|
+
const E = r.current;
|
|
1731
|
+
A.current = { x: m.clientX, left: E.scrollLeft, v: 0, t: performance.now(), moved: !1 };
|
|
1732
|
+
}, x = (m) => {
|
|
1733
|
+
const E = A.current;
|
|
1734
|
+
if (!E) return;
|
|
1735
|
+
const v = r.current, N = m.clientX - E.x;
|
|
1736
|
+
if (Math.abs(N) > 4 && !E.moved && (E.moved = !0, v.setPointerCapture(m.pointerId)), !E.moved) return;
|
|
1737
|
+
const j = performance.now(), G = E.left - N;
|
|
1738
|
+
E.v = (v.scrollLeft - G) / Math.max(1, j - E.t), E.t = j, v.scrollLeft = G;
|
|
1739
|
+
}, l = () => {
|
|
1740
|
+
const m = A.current;
|
|
1741
|
+
if (A.current = null, !(m != null && m.moved)) return;
|
|
1742
|
+
const E = r.current;
|
|
1743
|
+
let v = -m.v, N = performance.now();
|
|
1744
|
+
const j = (W) => {
|
|
1745
|
+
const V = W - N;
|
|
1746
|
+
N = W, E.scrollLeft += v * V, v *= Math.pow(0.995, V), Math.abs(v) > 0.02 && (S.current = requestAnimationFrame(j));
|
|
1747
|
+
};
|
|
1748
|
+
S.current = requestAnimationFrame(j);
|
|
1749
|
+
const G = (W) => {
|
|
1750
|
+
W.stopPropagation(), W.preventDefault();
|
|
1751
|
+
};
|
|
1752
|
+
E.addEventListener("click", G, { capture: !0, once: !0 }), setTimeout(() => E.removeEventListener("click", G, { capture: !0 }), 0);
|
|
1753
|
+
};
|
|
1754
|
+
q(() => () => cancelAnimationFrame(S.current), []);
|
|
1755
|
+
const C = ye.flat(), u = (m) => {
|
|
1756
|
+
var N, j;
|
|
1757
|
+
if (m.key !== "ArrowLeft" && m.key !== "ArrowRight") return;
|
|
1758
|
+
const E = C.indexOf(m.target.dataset.filter);
|
|
1759
|
+
if (E === -1) return;
|
|
1760
|
+
m.preventDefault();
|
|
1761
|
+
const v = C[Math.min(C.length - 1, Math.max(0, E + (m.key === "ArrowRight" ? 1 : -1)))];
|
|
1762
|
+
(j = (N = r.current) == null ? void 0 : N.querySelector(`[data-filter="${v}"]`)) == null || j.focus();
|
|
1763
|
+
};
|
|
1764
|
+
return /* @__PURE__ */ w(
|
|
1765
|
+
"div",
|
|
1766
|
+
{
|
|
1767
|
+
ref: r,
|
|
1768
|
+
className: K(b.strip, _.start && b.fadeStart, _.end && b.fadeEnd),
|
|
1769
|
+
"data-part": "filters",
|
|
1770
|
+
role: "group",
|
|
1771
|
+
"aria-label": o("imageEditor.filters"),
|
|
1772
|
+
onScroll: f,
|
|
1773
|
+
onPointerDown: y,
|
|
1774
|
+
onPointerMove: x,
|
|
1775
|
+
onPointerUp: l,
|
|
1776
|
+
onPointerCancel: l,
|
|
1777
|
+
onKeyDown: u,
|
|
1778
|
+
children: ye.map((m, E) => /* @__PURE__ */ w("div", { className: b.stripGroup, children: m.map((v) => /* @__PURE__ */ B(
|
|
1779
|
+
"button",
|
|
1780
|
+
{
|
|
1781
|
+
type: "button",
|
|
1782
|
+
className: K(b.filterTile, v === M && b.filterActive),
|
|
1783
|
+
"data-filter": v,
|
|
1784
|
+
"aria-pressed": v === M,
|
|
1785
|
+
onClick: () => i(v),
|
|
1786
|
+
children: [
|
|
1787
|
+
/* @__PURE__ */ w("span", { className: b.filterThumb, children: a[v] && /* @__PURE__ */ w("img", { src: a[v], alt: "", draggable: !1 }) }),
|
|
1788
|
+
/* @__PURE__ */ w("span", { className: b.filterLabel, children: o(`imageEditor.filter.${v}`) })
|
|
1789
|
+
]
|
|
1790
|
+
},
|
|
1791
|
+
v
|
|
1792
|
+
)) }, E))
|
|
1793
|
+
}
|
|
1794
|
+
);
|
|
1795
|
+
}
|
|
1796
|
+
const Gi = [1, 0.75, 0.5, 0.25], bt = (t, e) => Math.max(1, Math.min(e, Math.round(t)));
|
|
1797
|
+
function ji({
|
|
1798
|
+
max: t,
|
|
1799
|
+
value: e,
|
|
1800
|
+
locked: n,
|
|
1801
|
+
onLockedChange: i,
|
|
1802
|
+
onInput: o,
|
|
1803
|
+
onChange: r
|
|
1804
|
+
}) {
|
|
1805
|
+
const a = re(), s = e, [_, c] = Q({ w: String(s.width), h: String(s.height) });
|
|
1806
|
+
q(() => {
|
|
1807
|
+
c({ w: String(s.width), h: String(s.height) });
|
|
1808
|
+
}, [s.width, s.height]);
|
|
1809
|
+
const d = Math.round(s.width * t.height / t.width) === s.height || Math.round(s.height * t.width / t.height) === s.width ? t.width / t.height : s.width / s.height, T = O(null), f = T.current ?? d, A = (u, R) => {
|
|
1810
|
+
const m = Number(R);
|
|
1811
|
+
if (!R || !Number.isFinite(m) || m <= 0) return null;
|
|
1812
|
+
if (u === "w") {
|
|
1813
|
+
let N = bt(m, t.width);
|
|
1814
|
+
if (!n) return { width: N, height: s.height };
|
|
1815
|
+
const j = bt(N / f, t.height);
|
|
1816
|
+
return j < N / f - 0.5 && (N = bt(j * f, t.width)), { width: N, height: j };
|
|
1817
|
+
}
|
|
1818
|
+
let E = bt(m, t.height);
|
|
1819
|
+
if (!n) return { width: s.width, height: E };
|
|
1820
|
+
const v = bt(E * f, t.width);
|
|
1821
|
+
return v < E * f - 0.5 && (E = bt(v / f, t.height)), { width: v, height: E };
|
|
1822
|
+
}, S = (u) => u.width === t.width && u.height === t.height ? null : u, y = (u, R) => {
|
|
1823
|
+
const m = R.replace(/[^\d]/g, ""), E = A(u, m);
|
|
1824
|
+
c(
|
|
1825
|
+
(v) => E ? {
|
|
1826
|
+
w: u === "w" ? m : String(E.width),
|
|
1827
|
+
h: u === "h" ? m : String(E.height)
|
|
1828
|
+
} : { ...v, [u]: m }
|
|
1829
|
+
), E && o(S(E));
|
|
1830
|
+
}, x = () => {
|
|
1831
|
+
const u = Number(_.w), R = Number(_.h);
|
|
1832
|
+
let m = s;
|
|
1833
|
+
u > 0 && R > 0 && (m = n ? A("w", _.w) ?? s : { width: bt(u, t.width), height: bt(R, t.height) }), c({ w: String(m.width), h: String(m.height) }), r(S(m));
|
|
1834
|
+
}, l = (u, R) => {
|
|
1835
|
+
if (u.key === "Enter") {
|
|
1836
|
+
u.preventDefault(), x();
|
|
1837
|
+
return;
|
|
1838
|
+
}
|
|
1839
|
+
if (u.key !== "ArrowUp" && u.key !== "ArrowDown") return;
|
|
1840
|
+
u.preventDefault();
|
|
1841
|
+
const m = (u.shiftKey ? 10 : 1) * (u.key === "ArrowUp" ? 1 : -1), E = R === "w" ? s.width : s.height, v = A(R, String(E + m));
|
|
1842
|
+
v && (c({ w: String(v.width), h: String(v.height) }), r(S(v)));
|
|
1843
|
+
}, C = (u) => s.width === Math.max(1, Math.round(t.width * u)) && s.height === Math.max(1, Math.round(t.height * u));
|
|
1844
|
+
return /* @__PURE__ */ B("div", { className: b.resizePanel, "data-part": "resize", children: [
|
|
1845
|
+
/* @__PURE__ */ B("div", { className: b.resizeFields, children: [
|
|
1846
|
+
/* @__PURE__ */ B("label", { className: b.dimField, children: [
|
|
1847
|
+
/* @__PURE__ */ B("span", { className: b.dimLabel, children: [
|
|
1848
|
+
/* @__PURE__ */ w("span", { className: b.dimLabelFull, children: a("imageEditor.width") }),
|
|
1849
|
+
/* @__PURE__ */ w("span", { className: b.dimLabelShort, "aria-hidden": "true", children: a("imageEditor.width").charAt(0) })
|
|
1850
|
+
] }),
|
|
1851
|
+
/* @__PURE__ */ w(
|
|
1852
|
+
"input",
|
|
1853
|
+
{
|
|
1854
|
+
className: b.dimInput,
|
|
1855
|
+
inputMode: "numeric",
|
|
1856
|
+
value: _.w,
|
|
1857
|
+
"aria-label": a("imageEditor.width"),
|
|
1858
|
+
onChange: (u) => y("w", u.target.value),
|
|
1859
|
+
onBlur: () => {
|
|
1860
|
+
x(), T.current = null;
|
|
1861
|
+
},
|
|
1862
|
+
onKeyDown: (u) => l(u, "w"),
|
|
1863
|
+
onFocus: (u) => {
|
|
1864
|
+
T.current = d, u.target.select();
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
),
|
|
1868
|
+
/* @__PURE__ */ w("span", { className: b.dimUnit, children: "px" })
|
|
1869
|
+
] }),
|
|
1870
|
+
/* @__PURE__ */ w(
|
|
1871
|
+
"button",
|
|
1872
|
+
{
|
|
1873
|
+
type: "button",
|
|
1874
|
+
className: K(b.lockButton, n && b.lockActive),
|
|
1875
|
+
"aria-pressed": n,
|
|
1876
|
+
"aria-label": a("imageEditor.lockRatio"),
|
|
1877
|
+
title: a("imageEditor.lockRatio"),
|
|
1878
|
+
onClick: () => i(!n),
|
|
1879
|
+
children: /* @__PURE__ */ w(et, { name: n ? "Unlock" : "LockSlash", size: "sm" })
|
|
1880
|
+
}
|
|
1881
|
+
),
|
|
1882
|
+
/* @__PURE__ */ B("label", { className: b.dimField, children: [
|
|
1883
|
+
/* @__PURE__ */ B("span", { className: b.dimLabel, children: [
|
|
1884
|
+
/* @__PURE__ */ w("span", { className: b.dimLabelFull, children: a("imageEditor.height") }),
|
|
1885
|
+
/* @__PURE__ */ w("span", { className: b.dimLabelShort, "aria-hidden": "true", children: a("imageEditor.height").charAt(0) })
|
|
1886
|
+
] }),
|
|
1887
|
+
/* @__PURE__ */ w(
|
|
1888
|
+
"input",
|
|
1889
|
+
{
|
|
1890
|
+
className: b.dimInput,
|
|
1891
|
+
inputMode: "numeric",
|
|
1892
|
+
value: _.h,
|
|
1893
|
+
"aria-label": a("imageEditor.height"),
|
|
1894
|
+
onChange: (u) => y("h", u.target.value),
|
|
1895
|
+
onBlur: () => {
|
|
1896
|
+
x(), T.current = null;
|
|
1897
|
+
},
|
|
1898
|
+
onKeyDown: (u) => l(u, "h"),
|
|
1899
|
+
onFocus: (u) => {
|
|
1900
|
+
T.current = d, u.target.select();
|
|
1901
|
+
}
|
|
1902
|
+
}
|
|
1903
|
+
),
|
|
1904
|
+
/* @__PURE__ */ w("span", { className: b.dimUnit, children: "px" })
|
|
1905
|
+
] })
|
|
1906
|
+
] }),
|
|
1907
|
+
/* @__PURE__ */ w(
|
|
1908
|
+
"div",
|
|
1909
|
+
{
|
|
1910
|
+
className: b.tabs,
|
|
1911
|
+
role: "group",
|
|
1912
|
+
"aria-label": a("imageEditor.resize"),
|
|
1913
|
+
"data-part": "tabs",
|
|
1914
|
+
children: Gi.map((u) => /* @__PURE__ */ w(
|
|
1915
|
+
"button",
|
|
1916
|
+
{
|
|
1917
|
+
type: "button",
|
|
1918
|
+
"aria-pressed": C(u),
|
|
1919
|
+
className: K(b.tab, C(u) && b.tabActive),
|
|
1920
|
+
onClick: () => r(
|
|
1921
|
+
S({
|
|
1922
|
+
width: Math.max(1, Math.round(t.width * u)),
|
|
1923
|
+
height: Math.max(1, Math.round(t.height * u))
|
|
1924
|
+
})
|
|
1925
|
+
),
|
|
1926
|
+
children: u === 1 ? a("imageEditor.original") : `${Math.round(u * 100)}%`
|
|
1927
|
+
},
|
|
1928
|
+
u
|
|
1929
|
+
))
|
|
1930
|
+
}
|
|
1931
|
+
)
|
|
1932
|
+
] });
|
|
1933
|
+
}
|
|
1934
|
+
const qi = "_ruler_j6c34_4", Wi = "_viewport_j6c34_21", Ki = "_value_j6c34_26", Hi = "_track_j6c34_50", Qi = "_tick_j6c34_57", Zi = "_major_j6c34_66", Ji = "_origin_j6c34_73", to = "_indicator_j6c34_78", wt = {
|
|
1935
|
+
ruler: qi,
|
|
1936
|
+
viewport: Wi,
|
|
1937
|
+
value: Ki,
|
|
1938
|
+
track: Hi,
|
|
1939
|
+
tick: Qi,
|
|
1940
|
+
major: Zi,
|
|
1941
|
+
origin: Ji,
|
|
1942
|
+
indicator: to
|
|
1943
|
+
}, we = 9;
|
|
1944
|
+
function Zt({
|
|
1945
|
+
min: t,
|
|
1946
|
+
max: e,
|
|
1947
|
+
value: n,
|
|
1948
|
+
step: i = 1,
|
|
1949
|
+
keyStep: o = 1,
|
|
1950
|
+
snapPoints: r = [0],
|
|
1951
|
+
snapThreshold: a = (e - t) * 0.02,
|
|
1952
|
+
tickStep: s = (e - t) / 20,
|
|
1953
|
+
majorEvery: _ = 5,
|
|
1954
|
+
resetValue: c = 0,
|
|
1955
|
+
format: M = (S) => String(Math.round(S)),
|
|
1956
|
+
onInput: d,
|
|
1957
|
+
onChange: T,
|
|
1958
|
+
"aria-label": f,
|
|
1959
|
+
className: A
|
|
1960
|
+
}) {
|
|
1961
|
+
const S = we / s, y = O(null), x = O(0), l = O(void 0), C = O(n);
|
|
1962
|
+
C.current = n;
|
|
1963
|
+
const u = O(!1), R = O(T);
|
|
1964
|
+
R.current = T;
|
|
1965
|
+
const m = (k) => {
|
|
1966
|
+
u.current = !1, T(k);
|
|
1967
|
+
};
|
|
1968
|
+
q(
|
|
1969
|
+
() => () => {
|
|
1970
|
+
cancelAnimationFrame(x.current), clearTimeout(l.current), u.current && (u.current = !1, R.current(C.current));
|
|
1971
|
+
},
|
|
1972
|
+
[]
|
|
1973
|
+
);
|
|
1974
|
+
const E = (k, z = !0) => {
|
|
1975
|
+
let L = Math.min(e, Math.max(t, k));
|
|
1976
|
+
if (L = Math.round(L / i) * i, z) {
|
|
1977
|
+
for (const $ of r)
|
|
1978
|
+
if (Math.abs(L - $) <= a) {
|
|
1979
|
+
L = $;
|
|
1980
|
+
break;
|
|
1981
|
+
}
|
|
1982
|
+
}
|
|
1983
|
+
return Number(L.toFixed(6));
|
|
1984
|
+
}, v = (k) => {
|
|
1985
|
+
k !== C.current && (C.current = k, u.current = !0, d(k));
|
|
1986
|
+
}, N = (k) => {
|
|
1987
|
+
k.button === 0 && (cancelAnimationFrame(x.current), k.currentTarget.setPointerCapture(k.pointerId), y.current = {
|
|
1988
|
+
id: k.pointerId,
|
|
1989
|
+
startX: k.clientX,
|
|
1990
|
+
startValue: n,
|
|
1991
|
+
lastX: k.clientX,
|
|
1992
|
+
lastT: performance.now(),
|
|
1993
|
+
velocity: 0,
|
|
1994
|
+
moved: !1
|
|
1995
|
+
});
|
|
1996
|
+
}, j = (k) => {
|
|
1997
|
+
const z = y.current;
|
|
1998
|
+
if (!z || z.id !== k.pointerId) return;
|
|
1999
|
+
const L = performance.now(), $ = Math.max(1, L - z.lastT);
|
|
2000
|
+
z.velocity = 0.7 * (-(k.clientX - z.lastX) / S / $) + 0.3 * z.velocity, z.lastX = k.clientX, z.lastT = L, Math.abs(k.clientX - z.startX) > 2 && (z.moved = !0), v(E(z.startValue - (k.clientX - z.startX) / S));
|
|
2001
|
+
}, G = (k) => {
|
|
2002
|
+
const z = y.current;
|
|
2003
|
+
if (!z || z.id !== k.pointerId) return;
|
|
2004
|
+
y.current = null;
|
|
2005
|
+
let L = C.current;
|
|
2006
|
+
const $ = (e - t) / 1500;
|
|
2007
|
+
let H = performance.now() - z.lastT < 80 ? Math.max(-$, Math.min($, z.velocity)) : 0;
|
|
2008
|
+
if (!z.moved || Math.abs(H) < $ / 20) return m(E(L));
|
|
2009
|
+
let mt = performance.now();
|
|
2010
|
+
const lt = (xt) => {
|
|
2011
|
+
const J = Math.min(32, Math.max(0, xt - mt));
|
|
2012
|
+
mt = xt, L += H * J, H *= Math.pow(0.99, J);
|
|
2013
|
+
const rt = E(L, Math.abs(H) < $ / 6);
|
|
2014
|
+
if (v(rt), Math.abs(H) < $ / 40 || rt <= t || rt >= e) return m(rt);
|
|
2015
|
+
x.current = requestAnimationFrame(lt);
|
|
2016
|
+
};
|
|
2017
|
+
x.current = requestAnimationFrame(lt);
|
|
2018
|
+
}, W = (k) => {
|
|
2019
|
+
const z = Math.abs(k.deltaX) > Math.abs(k.deltaY) ? k.deltaX : k.deltaY;
|
|
2020
|
+
if (!z) return;
|
|
2021
|
+
const L = E(C.current + z / S / 2);
|
|
2022
|
+
v(L), clearTimeout(l.current), l.current = setTimeout(() => m(C.current), 220);
|
|
2023
|
+
}, V = (k) => {
|
|
2024
|
+
const z = k.shiftKey ? 10 : 1;
|
|
2025
|
+
let L = null;
|
|
2026
|
+
const $ = C.current;
|
|
2027
|
+
if (k.key === "ArrowRight" || k.key === "ArrowUp" ? L = $ + o * z : k.key === "ArrowLeft" || k.key === "ArrowDown" ? L = $ - o * z : k.key === "Home" ? L = t : k.key === "End" && (L = e), L == null) return;
|
|
2028
|
+
k.preventDefault();
|
|
2029
|
+
const H = E(L, !1);
|
|
2030
|
+
v(H), m(H);
|
|
2031
|
+
}, ct = () => {
|
|
2032
|
+
cancelAnimationFrame(x.current);
|
|
2033
|
+
const k = E(c, !1);
|
|
2034
|
+
v(k), m(k);
|
|
2035
|
+
}, Z = Math.floor((e - t) / s), dt = M(n);
|
|
2036
|
+
return /* @__PURE__ */ B(
|
|
2037
|
+
"div",
|
|
2038
|
+
{
|
|
2039
|
+
role: "slider",
|
|
2040
|
+
tabIndex: 0,
|
|
2041
|
+
"aria-label": f,
|
|
2042
|
+
"aria-valuemin": t,
|
|
2043
|
+
"aria-valuemax": e,
|
|
2044
|
+
"aria-valuenow": n,
|
|
2045
|
+
"aria-valuetext": dt,
|
|
2046
|
+
"aria-orientation": "horizontal",
|
|
2047
|
+
className: K(wt.ruler, A),
|
|
2048
|
+
"data-part": "ruler",
|
|
2049
|
+
onPointerDown: N,
|
|
2050
|
+
onPointerMove: j,
|
|
2051
|
+
onPointerUp: G,
|
|
2052
|
+
onPointerCancel: G,
|
|
2053
|
+
onWheel: W,
|
|
2054
|
+
onKeyDown: V,
|
|
2055
|
+
onDoubleClick: ct,
|
|
2056
|
+
children: [
|
|
2057
|
+
/* @__PURE__ */ w("span", { className: wt.value, "aria-hidden": "true", children: dt }),
|
|
2058
|
+
/* @__PURE__ */ B("span", { className: wt.viewport, "aria-hidden": "true", children: [
|
|
2059
|
+
/* @__PURE__ */ w(
|
|
2060
|
+
"span",
|
|
2061
|
+
{
|
|
2062
|
+
className: wt.track,
|
|
2063
|
+
style: {
|
|
2064
|
+
width: Z * we,
|
|
2065
|
+
transform: `translateX(${-(n - t) * S}px)`
|
|
2066
|
+
},
|
|
2067
|
+
children: Array.from({ length: Z + 1 }, (k, z) => {
|
|
2068
|
+
const L = t + z * s;
|
|
2069
|
+
return /* @__PURE__ */ w(
|
|
2070
|
+
"span",
|
|
2071
|
+
{
|
|
2072
|
+
className: K(
|
|
2073
|
+
wt.tick,
|
|
2074
|
+
z % _ === 0 && wt.major,
|
|
2075
|
+
Math.abs(L - c) < 1e-9 && wt.origin
|
|
2076
|
+
),
|
|
2077
|
+
style: { left: z * we }
|
|
2078
|
+
},
|
|
2079
|
+
z
|
|
2080
|
+
);
|
|
2081
|
+
})
|
|
2082
|
+
}
|
|
2083
|
+
),
|
|
2084
|
+
/* @__PURE__ */ w("span", { className: wt.indicator })
|
|
2085
|
+
] })
|
|
2086
|
+
]
|
|
2087
|
+
}
|
|
2088
|
+
);
|
|
2089
|
+
}
|
|
2090
|
+
const Tt = [
|
|
2091
|
+
{ id: "crop", icon: "Crop" },
|
|
2092
|
+
{ id: "filter", icon: "Colorfilter" },
|
|
2093
|
+
{ id: "finetune", icon: "Brush" },
|
|
2094
|
+
{ id: "redact", icon: "Blur" },
|
|
2095
|
+
{ id: "resize", icon: "Maximize3" }
|
|
2096
|
+
], eo = ["blur", "pixelate"], We = [0.05, 0.1, 0.15, 0.2, 0.25, 0.33, 0.5, 0.67, 0.75, 1, 1.5, 2, 3, 4, 6, 8], no = 'a[href]:not([tabindex="-1"]), button:not(:disabled):not([tabindex="-1"]), input:not(:disabled):not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])', ve = Math.PI / 180, go = Ke(function({
|
|
2097
|
+
open: e,
|
|
2098
|
+
src: n,
|
|
2099
|
+
initialState: i,
|
|
2100
|
+
util: o = "crop",
|
|
2101
|
+
cropAspectRatio: r,
|
|
2102
|
+
cropRatioOptions: a,
|
|
2103
|
+
outputType: s,
|
|
2104
|
+
outputQuality: _,
|
|
2105
|
+
onLoad: c,
|
|
2106
|
+
onUpdate: M,
|
|
2107
|
+
onProcess: d,
|
|
2108
|
+
onClose: T,
|
|
2109
|
+
className: f,
|
|
2110
|
+
onKeyDown: A,
|
|
2111
|
+
...S
|
|
2112
|
+
}, y) {
|
|
2113
|
+
const x = re(), [l] = Q(() => new dn()), C = pn(l.subscribe, l.getSnapshot, l.getSnapshot), { state: u, size: R, ui: m, status: E } = C, v = O(null), N = O(null), j = O(null), [G, W] = Q(null), [V, ct] = Q(1), [Z, dt] = Q(!1), [k, z] = Q(!1), L = O(0), $ = O(null), H = O(null), mt = O(null);
|
|
2114
|
+
m.util !== "resize" || !u ? H.current = null : (!H.current || u !== mt.current && u !== H.current) && (H.current = u);
|
|
2115
|
+
const lt = O({ onLoad: c, onUpdate: M });
|
|
2116
|
+
lt.current = { onLoad: c, onUpdate: M }, q(() => {
|
|
2117
|
+
const h = [
|
|
2118
|
+
l.on(
|
|
2119
|
+
"load",
|
|
2120
|
+
(I) => {
|
|
2121
|
+
var U, X;
|
|
2122
|
+
return (X = (U = lt.current).onLoad) == null ? void 0 : X.call(U, I.size);
|
|
2123
|
+
}
|
|
2124
|
+
),
|
|
2125
|
+
l.on("update", (I) => {
|
|
2126
|
+
var U, X;
|
|
2127
|
+
return (X = (U = lt.current).onUpdate) == null ? void 0 : X.call(U, I);
|
|
2128
|
+
}),
|
|
2129
|
+
// a rotation drag's base is stale once history moves under it
|
|
2130
|
+
...["undo", "redo", "revert"].map(
|
|
2131
|
+
(I) => l.on(I, () => {
|
|
2132
|
+
$.current = null;
|
|
2133
|
+
})
|
|
2134
|
+
)
|
|
2135
|
+
];
|
|
2136
|
+
return () => h.forEach((I) => I());
|
|
2137
|
+
}, [l]), q(() => {
|
|
2138
|
+
if (!(!e || !n))
|
|
2139
|
+
return W(null), z(!1), l.open({ src: n, initialState: i, util: o, cropAspectRatio: r, outputType: s, outputQuality: _ }).then(() => {
|
|
2140
|
+
const h = l.getSnapshot().state;
|
|
2141
|
+
h && (L.current = ge(h.rotation).quarter);
|
|
2142
|
+
}).catch(() => {
|
|
2143
|
+
}), () => l.close();
|
|
2144
|
+
}, [e, n, l]), q(() => {
|
|
2145
|
+
if (!e) return;
|
|
2146
|
+
const h = (X) => {
|
|
2147
|
+
(X.ctrlKey || X.metaKey) && X.preventDefault();
|
|
2148
|
+
}, I = (X) => X.preventDefault(), U = ["gesturestart", "gesturechange", "gestureend"];
|
|
2149
|
+
return window.addEventListener("wheel", h, { passive: !1 }), U.forEach((X) => document.addEventListener(X, I)), () => {
|
|
2150
|
+
window.removeEventListener("wheel", h), U.forEach((X) => document.removeEventListener(X, I));
|
|
2151
|
+
};
|
|
2152
|
+
}, [e]), q(() => {
|
|
2153
|
+
if (!e) return;
|
|
2154
|
+
const h = document.activeElement, I = requestAnimationFrame(() => {
|
|
2155
|
+
var U;
|
|
2156
|
+
return (U = N.current) == null ? void 0 : U.focus();
|
|
2157
|
+
});
|
|
2158
|
+
return () => {
|
|
2159
|
+
var U;
|
|
2160
|
+
cancelAnimationFrame(I), (U = h == null ? void 0 : h.focus) == null || U.call(h);
|
|
2161
|
+
};
|
|
2162
|
+
}, [e]);
|
|
2163
|
+
const xt = (h) => {
|
|
2164
|
+
N.current = h, typeof y == "function" ? y(h) : y && (y.current = h);
|
|
2165
|
+
}, J = () => {
|
|
2166
|
+
const h = l.getSnapshot().state;
|
|
2167
|
+
h && (L.current = ge(h.rotation).quarter);
|
|
2168
|
+
}, rt = () => {
|
|
2169
|
+
var h;
|
|
2170
|
+
(h = v.current) == null || h.transition("jump"), l.undo(), J();
|
|
2171
|
+
}, tt = () => {
|
|
2172
|
+
var h;
|
|
2173
|
+
(h = v.current) == null || h.transition("jump"), l.redo(), J();
|
|
2174
|
+
}, qt = () => {
|
|
2175
|
+
var h;
|
|
2176
|
+
(h = v.current) == null || h.transition("jump"), l.revert(), J();
|
|
2177
|
+
}, It = () => {
|
|
2178
|
+
var h;
|
|
2179
|
+
!u || !R || ((h = v.current) == null || h.transition("rotate"), L.current = Ee(L.current - Math.PI / 2), l.setState(kn(u, R)));
|
|
2180
|
+
}, Mt = () => {
|
|
2181
|
+
var h;
|
|
2182
|
+
!u || !R || ((h = v.current) == null || h.transition("flip"), L.current = Ee(-L.current), l.setState(Nn(u, R)));
|
|
2183
|
+
}, Nt = gn(() => T(), [T]), ft = () => {
|
|
2184
|
+
Z || Nt();
|
|
2185
|
+
}, ce = async () => {
|
|
2186
|
+
if (!(!u || Z)) {
|
|
2187
|
+
dt(!0), z(!1);
|
|
2188
|
+
try {
|
|
2189
|
+
const h = await l.process();
|
|
2190
|
+
d == null || d(h), Nt();
|
|
2191
|
+
} catch {
|
|
2192
|
+
z(!0);
|
|
2193
|
+
} finally {
|
|
2194
|
+
dt(!1);
|
|
2195
|
+
}
|
|
2196
|
+
}
|
|
2197
|
+
}, Wt = (h) => {
|
|
2198
|
+
if (A == null || A(h), h.defaultPrevented) return;
|
|
2199
|
+
const I = h.metaKey || h.ctrlKey;
|
|
2200
|
+
if (I && h.key.toLowerCase() === "z") {
|
|
2201
|
+
h.preventDefault(), h.shiftKey ? tt() : rt();
|
|
2202
|
+
return;
|
|
2203
|
+
}
|
|
2204
|
+
if (I && h.key.toLowerCase() === "y") {
|
|
2205
|
+
h.preventDefault(), tt();
|
|
2206
|
+
return;
|
|
2207
|
+
}
|
|
2208
|
+
if (h.key !== "Tab" || !N.current) return;
|
|
2209
|
+
const U = [...N.current.querySelectorAll(no)].filter(
|
|
2210
|
+
(g) => g.offsetParent !== null
|
|
2211
|
+
);
|
|
2212
|
+
if (U.length === 0) return;
|
|
2213
|
+
const X = U[0], At = U[U.length - 1];
|
|
2214
|
+
h.shiftKey && (document.activeElement === X || document.activeElement === N.current) ? (h.preventDefault(), At.focus()) : !h.shiftKey && document.activeElement === At && (h.preventDefault(), X.focus());
|
|
2215
|
+
}, pt = (h) => {
|
|
2216
|
+
const I = V, U = h > 0 ? We.find((X) => X > I * 1.01) ?? Ae : [...We].reverse().find((X) => X < I * 0.99) ?? Ie;
|
|
2217
|
+
W(U);
|
|
2218
|
+
}, Kt = u ? ge(u.rotation, L.current).fine / ve : 0, Pt = (h) => {
|
|
2219
|
+
const I = H.current ?? l.getSnapshot().state;
|
|
2220
|
+
I && (l.preview(Sn(I, h)), mt.current = l.getSnapshot().state);
|
|
2221
|
+
};
|
|
2222
|
+
let gt = null;
|
|
2223
|
+
if (u && R) {
|
|
2224
|
+
if (m.util === "crop")
|
|
2225
|
+
gt = /* @__PURE__ */ B(he, { children: [
|
|
2226
|
+
m.cropTab === "rotation" ? /* @__PURE__ */ w(
|
|
2227
|
+
Zt,
|
|
2228
|
+
{
|
|
2229
|
+
"aria-label": x("imageEditor.rotation"),
|
|
2230
|
+
min: -45,
|
|
2231
|
+
max: 45,
|
|
2232
|
+
step: 0.1,
|
|
2233
|
+
tickStep: 1,
|
|
2234
|
+
majorEvery: 5,
|
|
2235
|
+
snapThreshold: 0.6,
|
|
2236
|
+
value: Number(Kt.toFixed(1)),
|
|
2237
|
+
format: (h) => `${Number(h.toFixed(1))}°`,
|
|
2238
|
+
onInput: (h) => {
|
|
2239
|
+
const I = l.getSnapshot().state;
|
|
2240
|
+
I && ($.current ?? ($.current = I), l.preview(Oe($.current, L.current + h * ve, R)));
|
|
2241
|
+
},
|
|
2242
|
+
onChange: (h) => {
|
|
2243
|
+
const I = $.current ?? l.getSnapshot().state;
|
|
2244
|
+
$.current = null, I && (l.preview(Oe(I, L.current + h * ve, R)), l.commit());
|
|
2245
|
+
}
|
|
2246
|
+
},
|
|
2247
|
+
"rotation"
|
|
2248
|
+
) : /* @__PURE__ */ w(
|
|
2249
|
+
Zt,
|
|
2250
|
+
{
|
|
2251
|
+
"aria-label": x("imageEditor.scale"),
|
|
2252
|
+
min: 100,
|
|
2253
|
+
max: Bt * 100,
|
|
2254
|
+
step: 1,
|
|
2255
|
+
tickStep: 10,
|
|
2256
|
+
majorEvery: 5,
|
|
2257
|
+
snapPoints: [100],
|
|
2258
|
+
snapThreshold: 4,
|
|
2259
|
+
resetValue: 100,
|
|
2260
|
+
value: Math.round(Jt(u, R) * 100),
|
|
2261
|
+
format: (h) => `${Math.round(h)}%`,
|
|
2262
|
+
onInput: (h) => {
|
|
2263
|
+
const I = l.getSnapshot().state;
|
|
2264
|
+
I && l.preview(Yt(I, h / 100, R));
|
|
2265
|
+
},
|
|
2266
|
+
onChange: (h) => {
|
|
2267
|
+
const I = l.getSnapshot().state;
|
|
2268
|
+
I && (l.preview(Yt(I, h / 100, R)), l.commit());
|
|
2269
|
+
}
|
|
2270
|
+
},
|
|
2271
|
+
"scale"
|
|
2272
|
+
),
|
|
2273
|
+
/* @__PURE__ */ w(
|
|
2274
|
+
xe,
|
|
2275
|
+
{
|
|
2276
|
+
label: x("imageEditor.crop"),
|
|
2277
|
+
value: m.cropTab,
|
|
2278
|
+
options: [
|
|
2279
|
+
{ id: "rotation", label: x("imageEditor.rotation") },
|
|
2280
|
+
{ id: "scale", label: x("imageEditor.scale") }
|
|
2281
|
+
],
|
|
2282
|
+
onChange: (h) => l.setUi({ cropTab: h })
|
|
2283
|
+
}
|
|
2284
|
+
)
|
|
2285
|
+
] });
|
|
2286
|
+
else if (m.util === "filter" && l.image)
|
|
2287
|
+
gt = /* @__PURE__ */ w(
|
|
2288
|
+
$i,
|
|
2289
|
+
{
|
|
2290
|
+
image: l.image.image,
|
|
2291
|
+
size: R,
|
|
2292
|
+
state: u,
|
|
2293
|
+
onSelect: (h) => l.setState({
|
|
2294
|
+
filter: h === "default" ? null : h,
|
|
2295
|
+
colorMatrix: Ce[h]
|
|
2296
|
+
})
|
|
2297
|
+
}
|
|
2298
|
+
);
|
|
2299
|
+
else if (m.util === "resize")
|
|
2300
|
+
gt = /* @__PURE__ */ w(
|
|
2301
|
+
ji,
|
|
2302
|
+
{
|
|
2303
|
+
max: kt(H.current ?? u),
|
|
2304
|
+
value: Rt(u),
|
|
2305
|
+
locked: m.resizeLocked,
|
|
2306
|
+
onLockedChange: (h) => l.setUi({ resizeLocked: h }),
|
|
2307
|
+
onInput: Pt,
|
|
2308
|
+
onChange: (h) => {
|
|
2309
|
+
Pt(h), l.commit();
|
|
2310
|
+
}
|
|
2311
|
+
}
|
|
2312
|
+
);
|
|
2313
|
+
else if (m.util === "redact") {
|
|
2314
|
+
const h = u.redact;
|
|
2315
|
+
gt = /* @__PURE__ */ B(he, { children: [
|
|
2316
|
+
/* @__PURE__ */ w(
|
|
2317
|
+
Zt,
|
|
2318
|
+
{
|
|
2319
|
+
"aria-label": x(`imageEditor.redact.${h.effect}`),
|
|
2320
|
+
min: 0,
|
|
2321
|
+
max: 100,
|
|
2322
|
+
step: 1,
|
|
2323
|
+
tickStep: 2.5,
|
|
2324
|
+
majorEvery: 4,
|
|
2325
|
+
snapThreshold: 0,
|
|
2326
|
+
value: h.amount,
|
|
2327
|
+
format: (I) => String(Math.round(I)),
|
|
2328
|
+
onInput: (I) => l.preview({ redact: { ...h, amount: I } }),
|
|
2329
|
+
onChange: (I) => {
|
|
2330
|
+
l.preview({ redact: { ...h, amount: I } }), l.commit();
|
|
2331
|
+
}
|
|
2332
|
+
},
|
|
2333
|
+
h.effect
|
|
2334
|
+
),
|
|
2335
|
+
/* @__PURE__ */ w(
|
|
2336
|
+
xe,
|
|
2337
|
+
{
|
|
2338
|
+
label: x("imageEditor.redact"),
|
|
2339
|
+
value: h.effect,
|
|
2340
|
+
options: eo.map((I) => ({
|
|
2341
|
+
id: I,
|
|
2342
|
+
label: x(`imageEditor.redact.${I}`)
|
|
2343
|
+
})),
|
|
2344
|
+
onChange: (I) => l.setState({ redact: { ...h, effect: I } })
|
|
2345
|
+
}
|
|
2346
|
+
)
|
|
2347
|
+
] });
|
|
2348
|
+
} else if (m.util === "finetune") {
|
|
2349
|
+
const h = m.finetuneTab;
|
|
2350
|
+
gt = /* @__PURE__ */ B(he, { children: [
|
|
2351
|
+
/* @__PURE__ */ w(
|
|
2352
|
+
Zt,
|
|
2353
|
+
{
|
|
2354
|
+
"aria-label": x(`imageEditor.finetune.${h}`),
|
|
2355
|
+
min: -100,
|
|
2356
|
+
max: 100,
|
|
2357
|
+
step: 1,
|
|
2358
|
+
tickStep: 5,
|
|
2359
|
+
majorEvery: 4,
|
|
2360
|
+
snapThreshold: 3,
|
|
2361
|
+
value: u.finetune[h],
|
|
2362
|
+
format: (I) => String(Math.round(I)),
|
|
2363
|
+
onInput: (I) => {
|
|
2364
|
+
const U = l.getSnapshot().state;
|
|
2365
|
+
U && l.preview({ finetune: { ...U.finetune, [h]: I } });
|
|
2366
|
+
},
|
|
2367
|
+
onChange: (I) => {
|
|
2368
|
+
const U = l.getSnapshot().state;
|
|
2369
|
+
U && (l.preview({ finetune: { ...U.finetune, [h]: I } }), l.commit());
|
|
2370
|
+
}
|
|
2371
|
+
},
|
|
2372
|
+
h
|
|
2373
|
+
),
|
|
2374
|
+
/* @__PURE__ */ w(
|
|
2375
|
+
xe,
|
|
2376
|
+
{
|
|
2377
|
+
label: x("imageEditor.finetune"),
|
|
2378
|
+
value: h,
|
|
2379
|
+
options: yn.map((I) => ({
|
|
2380
|
+
id: I,
|
|
2381
|
+
label: x(`imageEditor.finetune.${I}`),
|
|
2382
|
+
dot: u.finetune[I] !== 0
|
|
2383
|
+
})),
|
|
2384
|
+
onChange: (I) => l.setUi({ finetuneTab: I })
|
|
2385
|
+
}
|
|
2386
|
+
)
|
|
2387
|
+
] });
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
const zt = E === "ready" && !!u, Ht = zt && m.util !== "crop";
|
|
2391
|
+
return /* @__PURE__ */ w(
|
|
2392
|
+
bn,
|
|
2393
|
+
{
|
|
2394
|
+
open: e,
|
|
2395
|
+
onClose: ft,
|
|
2396
|
+
closeOnBackdrop: !1,
|
|
2397
|
+
dim: 0,
|
|
2398
|
+
className: b.overlay,
|
|
2399
|
+
children: /* @__PURE__ */ B(
|
|
2400
|
+
"div",
|
|
2401
|
+
{
|
|
2402
|
+
ref: xt,
|
|
2403
|
+
role: "dialog",
|
|
2404
|
+
"aria-modal": "true",
|
|
2405
|
+
"aria-label": x("imageEditor.title"),
|
|
2406
|
+
tabIndex: -1,
|
|
2407
|
+
className: K(b.editor, f),
|
|
2408
|
+
"data-part": "editor",
|
|
2409
|
+
onKeyDown: Wt,
|
|
2410
|
+
...S,
|
|
2411
|
+
children: [
|
|
2412
|
+
/* @__PURE__ */ w(
|
|
2413
|
+
Ui,
|
|
2414
|
+
{
|
|
2415
|
+
ref: v,
|
|
2416
|
+
core: l,
|
|
2417
|
+
snapshot: C,
|
|
2418
|
+
cropAspectRatio: r,
|
|
2419
|
+
viewZoom: m.util === "crop" ? null : G,
|
|
2420
|
+
onViewZoom: W,
|
|
2421
|
+
onZoomReport: ct,
|
|
2422
|
+
areaRef: j
|
|
2423
|
+
}
|
|
2424
|
+
),
|
|
2425
|
+
/* @__PURE__ */ B("header", { className: b.header, "data-part": "header", children: [
|
|
2426
|
+
/* @__PURE__ */ w("div", { className: b.headerStart, children: /* @__PURE__ */ B("div", { className: b.group, children: [
|
|
2427
|
+
/* @__PURE__ */ w(
|
|
2428
|
+
Et,
|
|
2429
|
+
{
|
|
2430
|
+
variant: "text",
|
|
2431
|
+
color: "primary",
|
|
2432
|
+
size: "sm",
|
|
2433
|
+
"aria-label": x("imageEditor.close"),
|
|
2434
|
+
title: x("imageEditor.close"),
|
|
2435
|
+
onClick: ft,
|
|
2436
|
+
children: /* @__PURE__ */ w(et, { name: "Close", className: b.closeIcon })
|
|
2437
|
+
}
|
|
2438
|
+
),
|
|
2439
|
+
/* @__PURE__ */ w("span", { className: b.groupDivider, "aria-hidden": "true" }),
|
|
2440
|
+
/* @__PURE__ */ w(
|
|
2441
|
+
Et,
|
|
2442
|
+
{
|
|
2443
|
+
variant: "text",
|
|
2444
|
+
color: "primary",
|
|
2445
|
+
size: "sm",
|
|
2446
|
+
"aria-label": x("imageEditor.revert"),
|
|
2447
|
+
title: x("imageEditor.revert"),
|
|
2448
|
+
disabled: !C.canRevert,
|
|
2449
|
+
onClick: qt,
|
|
2450
|
+
children: /* @__PURE__ */ w(et, { name: "ReverseTimeArrow" })
|
|
2451
|
+
}
|
|
2452
|
+
)
|
|
2453
|
+
] }) }),
|
|
2454
|
+
/* @__PURE__ */ B("div", { className: b.headerCenter, children: [
|
|
2455
|
+
/* @__PURE__ */ B("div", { className: b.group, children: [
|
|
2456
|
+
/* @__PURE__ */ w(
|
|
2457
|
+
Et,
|
|
2458
|
+
{
|
|
2459
|
+
variant: "text",
|
|
2460
|
+
color: "primary",
|
|
2461
|
+
size: "sm",
|
|
2462
|
+
"aria-label": x("imageEditor.undo"),
|
|
2463
|
+
title: x("imageEditor.undo"),
|
|
2464
|
+
disabled: !C.canUndo,
|
|
2465
|
+
onClick: rt,
|
|
2466
|
+
children: /* @__PURE__ */ w(et, { name: "UndoArrow" })
|
|
2467
|
+
}
|
|
2468
|
+
),
|
|
2469
|
+
/* @__PURE__ */ w("span", { className: b.groupDivider, "aria-hidden": "true" }),
|
|
2470
|
+
/* @__PURE__ */ w(
|
|
2471
|
+
Et,
|
|
2472
|
+
{
|
|
2473
|
+
variant: "text",
|
|
2474
|
+
color: "primary",
|
|
2475
|
+
size: "sm",
|
|
2476
|
+
"aria-label": x("imageEditor.redo"),
|
|
2477
|
+
title: x("imageEditor.redo"),
|
|
2478
|
+
disabled: !C.canRedo,
|
|
2479
|
+
onClick: tt,
|
|
2480
|
+
children: /* @__PURE__ */ w(et, { name: "RedoArrow" })
|
|
2481
|
+
}
|
|
2482
|
+
)
|
|
2483
|
+
] }),
|
|
2484
|
+
Ht && /* @__PURE__ */ B("div", { className: K(b.group, b.fadeIn), children: [
|
|
2485
|
+
/* @__PURE__ */ w(
|
|
2486
|
+
Et,
|
|
2487
|
+
{
|
|
2488
|
+
variant: "text",
|
|
2489
|
+
color: "primary",
|
|
2490
|
+
size: "sm",
|
|
2491
|
+
"aria-label": x("imageEditor.zoomOut"),
|
|
2492
|
+
title: x("imageEditor.zoomOut"),
|
|
2493
|
+
disabled: V <= Ie * 1.01,
|
|
2494
|
+
onClick: () => pt(-1),
|
|
2495
|
+
children: /* @__PURE__ */ w(et, { name: "Minus" })
|
|
2496
|
+
}
|
|
2497
|
+
),
|
|
2498
|
+
/* @__PURE__ */ w("span", { className: b.groupDivider, "aria-hidden": "true" }),
|
|
2499
|
+
/* @__PURE__ */ B(
|
|
2500
|
+
"button",
|
|
2501
|
+
{
|
|
2502
|
+
type: "button",
|
|
2503
|
+
className: b.zoomLabel,
|
|
2504
|
+
"aria-label": x("imageEditor.zoom"),
|
|
2505
|
+
title: x("imageEditor.zoomFit"),
|
|
2506
|
+
onClick: () => W(null),
|
|
2507
|
+
children: [
|
|
2508
|
+
Math.round(V * 100),
|
|
2509
|
+
"%"
|
|
2510
|
+
]
|
|
2511
|
+
}
|
|
2512
|
+
),
|
|
2513
|
+
/* @__PURE__ */ w("span", { className: b.groupDivider, "aria-hidden": "true" }),
|
|
2514
|
+
/* @__PURE__ */ w(
|
|
2515
|
+
Et,
|
|
2516
|
+
{
|
|
2517
|
+
variant: "text",
|
|
2518
|
+
color: "primary",
|
|
2519
|
+
size: "sm",
|
|
2520
|
+
"aria-label": x("imageEditor.zoomIn"),
|
|
2521
|
+
title: x("imageEditor.zoomIn"),
|
|
2522
|
+
disabled: V >= Ae * 0.99,
|
|
2523
|
+
onClick: () => pt(1),
|
|
2524
|
+
children: /* @__PURE__ */ w(et, { name: "Add" })
|
|
2525
|
+
}
|
|
2526
|
+
)
|
|
2527
|
+
] })
|
|
2528
|
+
] }),
|
|
2529
|
+
/* @__PURE__ */ w("div", { className: b.headerEnd, children: /* @__PURE__ */ w(
|
|
2530
|
+
Et,
|
|
2531
|
+
{
|
|
2532
|
+
variant: "contained",
|
|
2533
|
+
color: "accent",
|
|
2534
|
+
size: "sm",
|
|
2535
|
+
loading: Z,
|
|
2536
|
+
disabled: !zt,
|
|
2537
|
+
"aria-label": x("imageEditor.done"),
|
|
2538
|
+
title: x("imageEditor.done"),
|
|
2539
|
+
onClick: ce,
|
|
2540
|
+
className: b.done,
|
|
2541
|
+
children: /* @__PURE__ */ w(et, { name: "CheckMarkTick" })
|
|
2542
|
+
}
|
|
2543
|
+
) })
|
|
2544
|
+
] }),
|
|
2545
|
+
/* @__PURE__ */ B("div", { className: b.main, "data-part": "main", children: [
|
|
2546
|
+
/* @__PURE__ */ w("nav", { className: b.nav, "data-part": "nav", children: /* @__PURE__ */ w(
|
|
2547
|
+
"div",
|
|
2548
|
+
{
|
|
2549
|
+
role: "tablist",
|
|
2550
|
+
"aria-label": x("imageEditor.tools"),
|
|
2551
|
+
"aria-orientation": "vertical",
|
|
2552
|
+
className: b.navList,
|
|
2553
|
+
onKeyDown: (h) => {
|
|
2554
|
+
var X;
|
|
2555
|
+
const I = Tt.findIndex((At) => At.id === m.util), U = h.key === "ArrowDown" || h.key === "ArrowRight" ? Tt[(I + 1) % Tt.length] : h.key === "ArrowUp" || h.key === "ArrowLeft" ? Tt[(I + Tt.length - 1) % Tt.length] : null;
|
|
2556
|
+
U && (h.preventDefault(), l.setUi({ util: U.id }), (X = h.currentTarget.querySelector(`[data-util="${U.id}"]`)) == null || X.focus());
|
|
2557
|
+
},
|
|
2558
|
+
children: Tt.map((h) => {
|
|
2559
|
+
const I = m.util === h.id;
|
|
2560
|
+
return /* @__PURE__ */ B(
|
|
2561
|
+
"button",
|
|
2562
|
+
{
|
|
2563
|
+
type: "button",
|
|
2564
|
+
role: "tab",
|
|
2565
|
+
id: `tz-ie-tab-${h.id}`,
|
|
2566
|
+
"aria-selected": I,
|
|
2567
|
+
"aria-controls": "tz-ie-panel",
|
|
2568
|
+
tabIndex: I ? 0 : -1,
|
|
2569
|
+
title: x(`imageEditor.${h.id}`),
|
|
2570
|
+
className: K(b.tool, I && b.toolActive),
|
|
2571
|
+
"data-util": h.id,
|
|
2572
|
+
onClick: () => l.setUi({ util: h.id }),
|
|
2573
|
+
children: [
|
|
2574
|
+
/* @__PURE__ */ w(et, { name: h.icon, size: "sm" }),
|
|
2575
|
+
/* @__PURE__ */ w("span", { className: b.toolLabel, children: x(`imageEditor.${h.id}`) })
|
|
2576
|
+
]
|
|
2577
|
+
},
|
|
2578
|
+
h.id
|
|
2579
|
+
);
|
|
2580
|
+
})
|
|
2581
|
+
}
|
|
2582
|
+
) }),
|
|
2583
|
+
/* @__PURE__ */ B(
|
|
2584
|
+
"section",
|
|
2585
|
+
{
|
|
2586
|
+
className: b.stage,
|
|
2587
|
+
id: "tz-ie-panel",
|
|
2588
|
+
role: "tabpanel",
|
|
2589
|
+
"aria-labelledby": `tz-ie-tab-${m.util}`,
|
|
2590
|
+
"data-part": "stage",
|
|
2591
|
+
"data-util": m.util,
|
|
2592
|
+
children: [
|
|
2593
|
+
/* @__PURE__ */ w("div", { className: b.toolbar, "data-part": "toolbar", children: zt && m.util === "crop" && /* @__PURE__ */ B("div", { className: K(b.toolbarRow, b.fadeIn), children: [
|
|
2594
|
+
/* @__PURE__ */ w(
|
|
2595
|
+
Me,
|
|
2596
|
+
{
|
|
2597
|
+
variant: "text",
|
|
2598
|
+
color: "primary",
|
|
2599
|
+
size: "sm",
|
|
2600
|
+
startIcon: /* @__PURE__ */ w(et, { name: "RotateLeft" }),
|
|
2601
|
+
title: x("imageEditor.rotateLeft"),
|
|
2602
|
+
"aria-label": x("imageEditor.rotateLeft"),
|
|
2603
|
+
onClick: It,
|
|
2604
|
+
className: b.toolbarIconOnPhone,
|
|
2605
|
+
children: /* @__PURE__ */ w("span", { className: b.toolbarLabel, children: x("imageEditor.rotateLeft") })
|
|
2606
|
+
}
|
|
2607
|
+
),
|
|
2608
|
+
/* @__PURE__ */ w(
|
|
2609
|
+
Me,
|
|
2610
|
+
{
|
|
2611
|
+
variant: "text",
|
|
2612
|
+
color: "primary",
|
|
2613
|
+
size: "sm",
|
|
2614
|
+
startIcon: /* @__PURE__ */ w(et, { name: "FlipHorizontal" }),
|
|
2615
|
+
title: x("imageEditor.flipHorizontal"),
|
|
2616
|
+
"aria-label": x("imageEditor.flipHorizontal"),
|
|
2617
|
+
onClick: Mt,
|
|
2618
|
+
className: b.toolbarIconOnPhone,
|
|
2619
|
+
children: /* @__PURE__ */ w("span", { className: b.toolbarLabel, children: x("imageEditor.flipHorizontal") })
|
|
2620
|
+
}
|
|
2621
|
+
),
|
|
2622
|
+
!r && u && /* @__PURE__ */ w(
|
|
2623
|
+
Bi,
|
|
2624
|
+
{
|
|
2625
|
+
ratio: u.cropRatio,
|
|
2626
|
+
options: a ?? Oi,
|
|
2627
|
+
onChange: (h) => {
|
|
2628
|
+
var U;
|
|
2629
|
+
const I = l.getSnapshot().state;
|
|
2630
|
+
!I || !R || ((U = v.current) == null || U.transition("jump"), l.setState(zn(I, h, R)));
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2633
|
+
)
|
|
2634
|
+
] }, "crop-toolbar") }),
|
|
2635
|
+
/* @__PURE__ */ B("div", { ref: j, className: b.canvasArea, "data-part": "area", children: [
|
|
2636
|
+
E === "loading" && /* @__PURE__ */ B("div", { className: b.status, role: "status", children: [
|
|
2637
|
+
/* @__PURE__ */ w(_n, { size: "lg" }),
|
|
2638
|
+
/* @__PURE__ */ w("span", { children: x("imageEditor.loading") })
|
|
2639
|
+
] }),
|
|
2640
|
+
E === "error" && /* @__PURE__ */ B("div", { className: b.status, role: "alert", children: [
|
|
2641
|
+
/* @__PURE__ */ w(et, { name: "Gallery", size: "lg" }),
|
|
2642
|
+
/* @__PURE__ */ w("span", { children: x("imageEditor.loadError") })
|
|
2643
|
+
] }),
|
|
2644
|
+
k && /* @__PURE__ */ w("div", { className: b.toastError, role: "alert", children: x("imageEditor.processError") })
|
|
2645
|
+
] }),
|
|
2646
|
+
/* @__PURE__ */ w("div", { className: b.footer, "data-part": "footer", children: /* @__PURE__ */ w("div", { className: K(b.footerInner, b.fadeIn), children: gt }, m.util) })
|
|
2647
|
+
]
|
|
2648
|
+
}
|
|
2649
|
+
)
|
|
2650
|
+
] })
|
|
2651
|
+
]
|
|
2652
|
+
}
|
|
2653
|
+
)
|
|
2654
|
+
}
|
|
2655
|
+
);
|
|
2656
|
+
});
|
|
2657
|
+
function xe({
|
|
2658
|
+
label: t,
|
|
2659
|
+
value: e,
|
|
2660
|
+
options: n,
|
|
2661
|
+
onChange: i
|
|
2662
|
+
}) {
|
|
2663
|
+
const o = O(null);
|
|
2664
|
+
return q(() => {
|
|
2665
|
+
var r, a, s;
|
|
2666
|
+
(s = (a = (r = o.current) == null ? void 0 : r.querySelector(`[data-tab="${e}"]`)) == null ? void 0 : a.scrollIntoView) == null || s.call(a, { block: "nearest", inline: "nearest", behavior: "smooth" });
|
|
2667
|
+
}, [e]), /* @__PURE__ */ w(
|
|
2668
|
+
"div",
|
|
2669
|
+
{
|
|
2670
|
+
ref: o,
|
|
2671
|
+
role: "tablist",
|
|
2672
|
+
"aria-label": t,
|
|
2673
|
+
className: b.tabs,
|
|
2674
|
+
"data-part": "tabs",
|
|
2675
|
+
onKeyDown: (r) => {
|
|
2676
|
+
var c;
|
|
2677
|
+
const a = n.findIndex((M) => M.id === e), s = r.key === "ArrowRight" ? 1 : r.key === "ArrowLeft" ? -1 : 0;
|
|
2678
|
+
if (!s) return;
|
|
2679
|
+
r.preventDefault();
|
|
2680
|
+
const _ = n[(a + s + n.length) % n.length];
|
|
2681
|
+
i(_.id), (c = r.currentTarget.querySelector(`[data-tab="${_.id}"]`)) == null || c.focus();
|
|
2682
|
+
},
|
|
2683
|
+
children: n.map((r) => /* @__PURE__ */ B(
|
|
2684
|
+
"button",
|
|
2685
|
+
{
|
|
2686
|
+
type: "button",
|
|
2687
|
+
role: "tab",
|
|
2688
|
+
"aria-selected": r.id === e,
|
|
2689
|
+
tabIndex: r.id === e ? 0 : -1,
|
|
2690
|
+
className: K(b.tab, r.id === e && b.tabActive),
|
|
2691
|
+
"data-tab": r.id,
|
|
2692
|
+
onClick: () => i(r.id),
|
|
2693
|
+
children: [
|
|
2694
|
+
r.label,
|
|
2695
|
+
r.dot && /* @__PURE__ */ w("span", { className: b.tabDot, "aria-hidden": "true" })
|
|
2696
|
+
]
|
|
2697
|
+
},
|
|
2698
|
+
r.id
|
|
2699
|
+
))
|
|
2700
|
+
}
|
|
2701
|
+
);
|
|
2702
|
+
}
|
|
2703
|
+
export {
|
|
2704
|
+
Ce as F,
|
|
2705
|
+
go as I,
|
|
2706
|
+
dn as a,
|
|
2707
|
+
po as c
|
|
2708
|
+
};
|
|
2709
|
+
//# sourceMappingURL=ImageEditor-DTFQZ6ON.js.map
|