@jackuait/blok 0.16.1 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blok.cjs +1 -1
- package/dist/blok.iife.js +4 -4
- package/dist/blok.mjs +2 -2
- package/dist/blok.umd.js +4 -4
- package/dist/chunks/APEv2Parser-4KTzNuV0.cjs +1 -0
- package/dist/chunks/APEv2Parser-WvRvu4zL.mjs +187 -0
- package/dist/chunks/AbstractID3Parser-DM9acVTg.mjs +34 -0
- package/dist/chunks/AbstractID3Parser-o6LG6Iyj.cjs +1 -0
- package/dist/chunks/AiffParser-C_VaWeb5.mjs +109 -0
- package/dist/chunks/AiffParser-DVmZ6jG0.cjs +1 -0
- package/dist/chunks/AsfParser-CH5F_9Wp.mjs +419 -0
- package/dist/chunks/AsfParser-Dwm_MRPg.cjs +1 -0
- package/dist/chunks/BasicParser-BFTgNkp-.mjs +743 -0
- package/dist/chunks/BasicParser-CLAKKNEs.cjs +1 -0
- package/dist/chunks/DsdiffParser-BAdYwB7y.mjs +108 -0
- package/dist/chunks/DsdiffParser-DRFw1wX0.cjs +1 -0
- package/dist/chunks/DsfParser-DWMLfBH1.mjs +61 -0
- package/dist/chunks/DsfParser-DjS_tBuv.cjs +1 -0
- package/dist/chunks/FlacParser-BdKXrY7L.mjs +255 -0
- package/dist/chunks/FlacParser-CPQ0VqXv.cjs +1 -0
- package/dist/chunks/ID3v1Parser-CPjEHype.cjs +1 -0
- package/dist/chunks/ID3v1Parser-DoxlznrE.mjs +75 -0
- package/dist/chunks/ID3v2Parser-BIrxzjBm.mjs +518 -0
- package/dist/chunks/ID3v2Parser-CMd_Ayt7.cjs +1 -0
- package/dist/chunks/ID3v2Token-Cc901eYL.cjs +1 -0
- package/dist/chunks/ID3v2Token-D5v9lCfb.mjs +107 -0
- package/dist/chunks/MP4Parser-0KMJ-q2k.mjs +811 -0
- package/dist/chunks/MP4Parser-B8kU67Xi.cjs +1 -0
- package/dist/chunks/MatroskaParser-CzZTyUP-.cjs +1 -0
- package/dist/chunks/MatroskaParser-fxFuCddu.mjs +814 -0
- package/dist/chunks/MpegParser-DX5r4iE7.cjs +1 -0
- package/dist/chunks/MpegParser-R-6QiuhU.mjs +513 -0
- package/dist/chunks/MusepackParser-DFLoF47O.mjs +187 -0
- package/dist/chunks/MusepackParser-OgeWmD5G.cjs +1 -0
- package/dist/chunks/OggParser-C1qP2qC7.mjs +251 -0
- package/dist/chunks/OggParser-DjscM3J-.cjs +1 -0
- package/dist/chunks/Util-BL3wIJcu.cjs +1 -0
- package/dist/chunks/Util-DiBcLCh8.mjs +109 -0
- package/dist/chunks/WavPackParser-3J7J92gh.cjs +1 -0
- package/dist/chunks/WavPackParser-Ck8xXsNf.mjs +116 -0
- package/dist/chunks/WaveParser-CiNJ-5JL.cjs +1 -0
- package/dist/chunks/WaveParser-hxQlWijT.mjs +187 -0
- package/dist/chunks/{blok-DEVVs3xk.cjs → blok-B7IRrvgX.cjs} +11 -11
- package/dist/chunks/{blok-D1e9swtF.mjs → blok-BoAuTqli.mjs} +776 -780
- package/dist/chunks/{constants-DfGAwzgk.mjs → constants-BO6zLfL2.mjs} +274 -274
- package/dist/chunks/constants-BWoyU4yv.cjs +606 -0
- package/dist/chunks/core-CqiEzfU3.mjs +292 -0
- package/dist/chunks/core-DdDpt2u7.mjs +3931 -0
- package/dist/chunks/core-YGVcFb_q.cjs +1 -0
- package/dist/chunks/core-uWDvHWK7.cjs +6 -0
- package/dist/chunks/{i18next-loader-BID4jAFG.cjs → i18next-loader-BBPMegxc.cjs} +1 -1
- package/dist/chunks/{i18next-loader-BH_a6G9t.mjs → i18next-loader-K-ir8UKk.mjs} +1 -1
- package/dist/chunks/{lightweight-i18n-B0VO8Rft.mjs → lightweight-i18n-DJpMke7a.mjs} +59 -0
- package/dist/chunks/lightweight-i18n-LFW8S8u-.cjs +1 -0
- package/dist/{messages-Ck7HWiG_.mjs → chunks/messages-3jkCmB_A.mjs} +60 -1
- package/dist/{messages-6RcfJ59a.mjs → chunks/messages-5339ApgH.mjs} +60 -1
- package/dist/{messages-CWdh59uz2.mjs → chunks/messages-7LWW3BVh.mjs} +60 -1
- package/dist/chunks/messages-9B1F-k48.cjs +1 -0
- package/dist/chunks/messages-Au1UpgkX.cjs +1 -0
- package/dist/chunks/messages-B-u5B7tY.cjs +1 -0
- package/dist/chunks/{messages-Bz_fTG46.mjs → messages-B01D7aHY.mjs} +60 -1
- package/dist/chunks/{messages-CEslBsO62.mjs → messages-B2iaIrIu.mjs} +60 -1
- package/dist/chunks/messages-B6794_2J.cjs +1 -0
- package/dist/chunks/{messages-BDNdC6-X.cjs → messages-B6dbtt1c.cjs} +1 -1
- package/dist/chunks/{messages-CVHSfosB.cjs → messages-B6yMdb3B.cjs} +1 -1
- package/dist/chunks/{messages-f1NcMMTR2.cjs → messages-B7st3eF_.cjs} +1 -1
- package/dist/chunks/{messages-D2nTfhRa2.cjs → messages-BHCepNsI.cjs} +1 -1
- package/dist/chunks/{messages-DB6z9ybS.cjs → messages-BHdKd7pH.cjs} +1 -1
- package/dist/{messages-C-XKbE2c.mjs → chunks/messages-BO-L5oN9.mjs} +60 -1
- package/dist/chunks/{messages-DDnB1EFE2.mjs → messages-BRTWvTAP.mjs} +60 -1
- package/dist/{messages-CUsdyCrN2.mjs → chunks/messages-BUvlOqll.mjs} +60 -1
- package/dist/chunks/messages-BV22YIZ_.cjs +1 -0
- package/dist/chunks/messages-BXp_U3uS.cjs +1 -0
- package/dist/{messages-BfGAGIg-2.mjs → chunks/messages-BYCHzM7F.mjs} +60 -1
- package/dist/chunks/messages-B_cHWyWC.cjs +1 -0
- package/dist/{messages-BbFJ2r9p.mjs → chunks/messages-B_d857cA.mjs} +60 -1
- package/dist/chunks/messages-BaVZgTrw.cjs +1 -0
- package/dist/{messages-DaoTSrJW.mjs → chunks/messages-Bb80Csl3.mjs} +60 -1
- package/dist/{messages-C1d7I7f_2.mjs → chunks/messages-BbZz_Anm.mjs} +60 -1
- package/dist/{messages-kb2GSl-V.mjs → chunks/messages-BdL8bmTL.mjs} +60 -1
- package/dist/chunks/{messages-CcvcAZOt.mjs → messages-BeS9EOEO.mjs} +60 -1
- package/dist/chunks/{messages-BG1Tn41d.cjs → messages-BjYhwRk7.cjs} +1 -1
- package/dist/chunks/{messages-CUxk6xrQ.cjs → messages-BkgBVEiE.cjs} +1 -1
- package/dist/chunks/{messages-BhTV7PCN.mjs → messages-Bmq--WTx.mjs} +60 -1
- package/dist/{messages-Z8HMjhe9.mjs → chunks/messages-Bp0LdGKj.mjs} +60 -1
- package/dist/chunks/{messages-Bq7pLz_h2.mjs → messages-BpMWMH9_.mjs} +60 -1
- package/dist/chunks/{messages-C-N1XBvh2.cjs → messages-BsTzdfZF.cjs} +1 -1
- package/dist/chunks/{messages-p5w1kuc5.cjs → messages-BveiGA2x.cjs} +1 -1
- package/dist/{messages-CSVEbRhT.mjs → chunks/messages-BwOUSDJR.mjs} +60 -1
- package/dist/chunks/messages-ByNR9m9W.cjs +1 -0
- package/dist/{messages-B8BXCJBA.mjs → chunks/messages-Byn9-dhb2.mjs} +60 -1
- package/dist/chunks/{messages-DaqNOQ8p.mjs → messages-C0swL9CY.mjs} +60 -1
- package/dist/chunks/{messages-CO_hj1x6.cjs → messages-C2ptZOWh.cjs} +1 -1
- package/dist/chunks/{messages-Dp5C7vWz.mjs → messages-C3rGCBi_.mjs} +60 -1
- package/dist/{messages-BytEaMMs.mjs → chunks/messages-C8_r3iTR2.mjs} +60 -1
- package/dist/chunks/{messages-Dp5SW9D-.mjs → messages-CATH_uz1.mjs} +60 -1
- package/dist/chunks/{messages-Bi3snvmH2.cjs → messages-CBbgEXuO.cjs} +1 -1
- package/dist/chunks/messages-CEySIig9.cjs +1 -0
- package/dist/chunks/messages-CGdCpNZ62.cjs +1 -0
- package/dist/chunks/{messages-CpJW0LBR.cjs → messages-CH9SBR-i.cjs} +1 -1
- package/dist/{messages-2pXizYBd.mjs → chunks/messages-CI2W7P-j.mjs} +60 -1
- package/dist/chunks/{messages-CHizzxUv.mjs → messages-CIBYzzFy.mjs} +60 -1
- package/dist/chunks/{messages-Cz7AbEFm.cjs → messages-CJFSq8Fl.cjs} +1 -1
- package/dist/chunks/{messages-DG8Lmqf52.cjs → messages-CM8uUnPx.cjs} +1 -1
- package/dist/chunks/{messages-Cf5mu1AT.cjs → messages-COx3hDcP.cjs} +1 -1
- package/dist/chunks/messages-CQT8TtiF.cjs +1 -0
- package/dist/chunks/{messages-DubJ63UL.mjs → messages-CRUb9o5k.mjs} +60 -1
- package/dist/chunks/messages-CT8djlV6.cjs +1 -0
- package/dist/{messages-BYyRYlTQ2.mjs → chunks/messages-CUPup5e3.mjs} +60 -1
- package/dist/chunks/{messages-BSyXBvUi2.cjs → messages-CVrOxu3J.cjs} +1 -1
- package/dist/chunks/messages-CWFSMzug2.cjs +1 -0
- package/dist/{messages-BXgGBpmY.mjs → chunks/messages-CX0tJpOb.mjs} +60 -1
- package/dist/chunks/{messages-xMrks-Gg.mjs → messages-CXk-iM-i.mjs} +60 -1
- package/dist/chunks/{messages-B-3_M44j.cjs → messages-CZJZ-au3.cjs} +1 -1
- package/dist/chunks/messages-CZddldga.cjs +1 -0
- package/dist/{messages-BmKhZE7I.mjs → chunks/messages-Ca9zIrBo.mjs} +60 -1
- package/dist/{messages-D1jUHOKr.mjs → chunks/messages-CbyVDo8y.mjs} +60 -1
- package/dist/chunks/{messages-CZQuqbNz2.cjs → messages-CcsM8Q7g.cjs} +1 -1
- package/dist/chunks/{messages-B3xnntgx2.mjs → messages-CeIzWL_4.mjs} +60 -1
- package/dist/{messages-DPZsygzY.mjs → chunks/messages-CeLv1whu2.mjs} +60 -1
- package/dist/chunks/messages-Ciq5_PsP.cjs +1 -0
- package/dist/{messages-qjir1Zx9.mjs → chunks/messages-CjCn5IsF.mjs} +60 -1
- package/dist/chunks/messages-CjfEt9bg.cjs +1 -0
- package/dist/{messages-S8uz2_bw2.mjs → chunks/messages-Ck1-ddbo.mjs} +60 -1
- package/dist/{messages-zoHZbvbe.mjs → chunks/messages-CkosWGGH.mjs} +60 -1
- package/dist/chunks/{messages-Bh3E53-f2.mjs → messages-Cl_pM31G.mjs} +60 -1
- package/dist/chunks/messages-CmsAbu_A.cjs +1 -0
- package/dist/chunks/messages-CqRtDVFO.cjs +1 -0
- package/dist/chunks/{messages-jAgR8EPP.cjs → messages-CuMtymEs.cjs} +1 -1
- package/dist/chunks/{messages-CSc7Lh_3.mjs → messages-Cvg_uTfy.mjs} +60 -1
- package/dist/chunks/messages-Cy-2_lIA.cjs +1 -0
- package/dist/{messages-B_XoP1A3.mjs → chunks/messages-D-QWtvWg.mjs} +60 -1
- package/dist/{messages-TfPmsrxh.mjs → chunks/messages-D-p-omWy.mjs} +60 -1
- package/dist/{messages-Bj8K6_bv.mjs → chunks/messages-D-s4_vnU.mjs} +60 -1
- package/dist/chunks/messages-D41fO84y.cjs +1 -0
- package/dist/{messages-BXs-Zwhx.mjs → chunks/messages-D4u2PSQw.mjs} +60 -1
- package/dist/chunks/messages-D7H9JUDr.cjs +1 -0
- package/dist/chunks/{messages-Bttb4o0k.cjs → messages-D7sU-NqL.cjs} +1 -1
- package/dist/chunks/{messages-Dml6u25s2.cjs → messages-DCwrXfck.cjs} +1 -1
- package/dist/{messages-CS6vG53A.mjs → chunks/messages-DDJkNbJy.mjs} +60 -1
- package/dist/{messages-BWzRZ5Un.mjs → chunks/messages-DDX6I6MX.mjs} +60 -1
- package/dist/chunks/messages-DEg5FAg1.cjs +1 -0
- package/dist/chunks/{messages-Bs9JOJDc.cjs → messages-DFHNw6PQ.cjs} +1 -1
- package/dist/chunks/{messages-M2lNlKhI2.mjs → messages-DHv7knYB.mjs} +60 -1
- package/dist/chunks/{messages-BxRX_hY12.cjs → messages-DIFwztFo.cjs} +1 -1
- package/dist/chunks/{messages-UoKgx7_8.cjs → messages-DIetNXTx.cjs} +1 -1
- package/dist/{messages-CdmaH2dA2.mjs → chunks/messages-DNtAzacv.mjs} +60 -1
- package/dist/chunks/messages-DOqJ6ogK.cjs +1 -0
- package/dist/chunks/messages-DQJcAz4s.cjs +1 -0
- package/dist/{messages-CzabNeP5.mjs → chunks/messages-DQfi2DoY.mjs} +60 -1
- package/dist/chunks/{messages-De0Fkl0K.mjs → messages-DQr7bXMD.mjs} +60 -1
- package/dist/chunks/messages-DT-JnTnw.cjs +1 -0
- package/dist/chunks/{messages-C2-v6HdR.cjs → messages-DUWCkLYR.cjs} +1 -1
- package/dist/chunks/{messages-BItPVbHx.cjs → messages-Da8yFc7l.cjs} +1 -1
- package/dist/chunks/{messages-BzC8TVYC.mjs → messages-DgF8OkNr.mjs} +60 -1
- package/dist/{messages-Dw7P8bMa2.mjs → chunks/messages-DiODNXET.mjs} +60 -1
- package/dist/{messages-CJsMZvUv.mjs → chunks/messages-DjZoCJ00.mjs} +60 -1
- package/dist/chunks/messages-DjrfovG0.cjs +1 -0
- package/dist/chunks/messages-DmjccFHq.cjs +1 -0
- package/dist/chunks/{messages-Vbqmvxs1.cjs → messages-DpNmnBjK.cjs} +1 -1
- package/dist/chunks/messages-DtaPHADA.cjs +1 -0
- package/dist/{messages-DFKu1WGX2.mjs → chunks/messages-DuD4ut1b.mjs} +60 -1
- package/dist/chunks/{messages-BqM6l_JM2.mjs → messages-DuHFGMCJ.mjs} +60 -1
- package/dist/{messages-tcfLP2b2.mjs → chunks/messages-Dwl878eS.mjs} +60 -1
- package/dist/chunks/{messages-BVuodJIJ.cjs → messages-ETJ7tQ9O.cjs} +1 -1
- package/dist/chunks/messages-EsX3eikv.cjs +1 -0
- package/dist/{messages-B4cc5O5K.mjs → chunks/messages-HJnG9r2l.mjs} +60 -1
- package/dist/chunks/{messages-Ckej-nnJ.cjs → messages-Hfo6uCIC.cjs} +1 -1
- package/dist/chunks/{messages-CT025FgD2.cjs → messages-IqNWRaNS.cjs} +1 -1
- package/dist/chunks/{messages-Cd-FaIr_2.mjs → messages-MPe9FjYe.mjs} +60 -1
- package/dist/chunks/messages-NJAjMFXd.cjs +1 -0
- package/dist/{messages-B0n-WDK72.mjs → chunks/messages-QCaF3d92.mjs} +60 -1
- package/dist/chunks/messages-SozFksSf.cjs +1 -0
- package/dist/chunks/messages-UXS3zL9A2.cjs +1 -0
- package/dist/chunks/{messages-5tb-mSXS.cjs → messages-VeyvtTce.cjs} +1 -1
- package/dist/chunks/{messages-BGoPxZ5n.mjs → messages-Xh-c7d4C.mjs} +60 -1
- package/dist/chunks/{messages-BfYWRC3o.cjs → messages-Z4LYgfWc.cjs} +1 -1
- package/dist/{messages-BCGyLzFB2.mjs → chunks/messages-ZMG7qQ3D.mjs} +60 -1
- package/dist/chunks/{messages-LWyC-1ol.mjs → messages-cSBZ5qVe.mjs} +60 -1
- package/dist/chunks/{messages-XM0y9kXy2.cjs → messages-gh5G15J1.cjs} +1 -1
- package/dist/{messages-DGwIRpOH2.mjs → chunks/messages-jEbEE90_.mjs} +60 -1
- package/dist/{messages-Cg3w36Bc.mjs → chunks/messages-kqnzps-X.mjs} +60 -1
- package/dist/chunks/{messages-S_Bmo_Qc.mjs → messages-m-A6ArIM.mjs} +60 -1
- package/dist/chunks/{messages-BHE1mg5A2.mjs → messages-t26x8wxB.mjs} +60 -1
- package/dist/chunks/{messages-s9I-JHCa.cjs → messages-tR0BdeVG.cjs} +1 -1
- package/dist/chunks/{messages-CxVi9cnz.mjs → messages-typO_i_k.mjs} +60 -1
- package/dist/chunks/{messages-Beh905t72.mjs → messages-ypIHI9Fr.mjs} +60 -1
- package/dist/{messages-ChivLKDg2.mjs → chunks/messages-zPUQsksJ.mjs} +60 -1
- package/dist/chunks/{tools-vX3wCW3a.mjs → tools-DRwLS-6t.mjs} +4223 -2323
- package/dist/chunks/tools-DXagFf6I.cjs +208 -0
- package/dist/chunks/types-BNsalfLy.cjs +1 -0
- package/dist/chunks/types-gj36fzRQ.mjs +28 -0
- package/dist/chunks/webm-muxer-BEeYNPIp.cjs +5 -0
- package/dist/chunks/webm-muxer-Doy8JtlV.mjs +864 -0
- package/dist/full.cjs +1 -1
- package/dist/full.mjs +10 -10
- package/dist/locales.mjs +126 -67
- package/dist/{chunks/messages-14GzwdH92.mjs → messages-4drvqPN8.mjs} +60 -1
- package/dist/{chunks/messages-CZfG1cmA2.mjs → messages-8__-vX3U.mjs} +60 -1
- package/dist/{chunks/messages-DyuKfskv.mjs → messages-Ao2vCNAH2.mjs} +60 -1
- package/dist/{messages-eFz25q1T.mjs → messages-B13GEFFu.mjs} +60 -1
- package/dist/{messages-C5sc4wjR.mjs → messages-B2YnZIU2.mjs} +60 -1
- package/dist/{chunks/messages-dZdV8VYV.mjs → messages-BI5B9bxE.mjs} +60 -1
- package/dist/{chunks/messages-Cc56SxY7.mjs → messages-BIgvPd6I2.mjs} +60 -1
- package/dist/{messages-Bd2Q-tnQ.mjs → messages-BKG0QHVl.mjs} +60 -1
- package/dist/{messages-DvSC5JGC2.mjs → messages-BKGg4XYm2.mjs} +60 -1
- package/dist/{chunks/messages-Bnm45Rmp.mjs → messages-BOWDzfkH.mjs} +60 -1
- package/dist/{messages-BOEP2ly_.mjs → messages-BQaiScU1.mjs} +60 -1
- package/dist/{chunks/messages-GXQbRrHa2.mjs → messages-BQhHthxq2.mjs} +60 -1
- package/dist/{chunks/messages-Cx_kyYnf2.mjs → messages-BRLWpOnP.mjs} +60 -1
- package/dist/{chunks/messages-CdOX6JHb2.mjs → messages-BarhGl2S2.mjs} +60 -1
- package/dist/{chunks/messages-PtDEkfSR2.mjs → messages-BgPDPIkO.mjs} +60 -1
- package/dist/{chunks/messages-BQKWm9xB.mjs → messages-BlvF3pot.mjs} +60 -1
- package/dist/{chunks/messages-C4Wacagz.mjs → messages-Bmu3rJwO.mjs} +60 -1
- package/dist/{chunks/messages-C62iC79d2.mjs → messages-BpwhHkFb2.mjs} +60 -1
- package/dist/{messages-DSmNNjPb.mjs → messages-BvutXmgt.mjs} +60 -1
- package/dist/{chunks/messages-DwU7qOBO2.mjs → messages-BwCgJUdq.mjs} +60 -1
- package/dist/{messages-BCeeFrNO.mjs → messages-C5IE9mXm.mjs} +60 -1
- package/dist/{chunks/messages-EI0ZLMIG.mjs → messages-C6R0bzW5.mjs} +60 -1
- package/dist/{chunks/messages-CZ4Jcn6y.mjs → messages-C9Kq8259.mjs} +60 -1
- package/dist/{messages-Nbssq1-N.mjs → messages-CAnOyxrm.mjs} +60 -1
- package/dist/{chunks/messages-DQb9YRoO2.mjs → messages-CDueJTe8.mjs} +60 -1
- package/dist/{chunks/messages-CpC5Cv_s.mjs → messages-CEGqNXnP.mjs} +60 -1
- package/dist/{messages-CWWIbebM2.mjs → messages-CF5MeYEt2.mjs} +60 -1
- package/dist/{chunks/messages-ID7kZQyc.mjs → messages-CGiVoFTi.mjs} +60 -1
- package/dist/{chunks/messages-B5eo-pGw.mjs → messages-CQzOV7VE2.mjs} +60 -1
- package/dist/{chunks/messages-DwAl9zoh2.mjs → messages-CUFac9Qe.mjs} +60 -1
- package/dist/{messages-DMH0zRig2.mjs → messages-CUcUO5bC2.mjs} +60 -1
- package/dist/{messages-CGZPFOEr.mjs → messages-CcF4SO9W.mjs} +60 -1
- package/dist/{messages-gJWgJtGo.mjs → messages-CeqpzGl9.mjs} +60 -1
- package/dist/{messages-BEnINcno2.mjs → messages-Cg6a88Bb2.mjs} +60 -1
- package/dist/{chunks/messages-BxhJFFrR.mjs → messages-Ch-SytN8.mjs} +60 -1
- package/dist/{chunks/messages-DzZZDveu.mjs → messages-Cn3uvFq3.mjs} +60 -1
- package/dist/{messages-CoSj68Ef2.mjs → messages-CqZgsrVP2.mjs} +60 -1
- package/dist/{messages-BrkXHD2D2.mjs → messages-CskLLTiG2.mjs} +60 -1
- package/dist/{chunks/messages-BSstxb1m2.mjs → messages-CusWGsl42.mjs} +60 -1
- package/dist/{messages-BInBVzW42.mjs → messages-Cvq2EFPT2.mjs} +60 -1
- package/dist/{messages-DfnSbN512.mjs → messages-CwvHO8gp2.mjs} +60 -1
- package/dist/{chunks/messages-DjSuzS2m2.mjs → messages-D4dovFzY2.mjs} +60 -1
- package/dist/{messages-BkNVOuvO2.mjs → messages-D9qgYMU82.mjs} +60 -1
- package/dist/{chunks/messages-D8qYNZ_T.mjs → messages-DGAWjKQZ.mjs} +60 -1
- package/dist/{messages-GUgmAfdB.mjs → messages-DR2JBU-H.mjs} +60 -1
- package/dist/{messages-iJKNW8hW2.mjs → messages-Da1woCgt2.mjs} +60 -1
- package/dist/{chunks/messages-DgSRzW-Y.mjs → messages-DbE-riR52.mjs} +60 -1
- package/dist/{chunks/messages-8vGF8iWb.mjs → messages-DcQNeoPB.mjs} +60 -1
- package/dist/{messages-C2pz0mJs2.mjs → messages-Dq_RdEny2.mjs} +60 -1
- package/dist/{chunks/messages-Vdmc6CaN.mjs → messages-Grhv5SE_.mjs} +60 -1
- package/dist/{messages-CX2ioEBc2.mjs → messages-HVgCKIww2.mjs} +60 -1
- package/dist/{messages-C9XTx39w2.mjs → messages-KyJQtOkh2.mjs} +60 -1
- package/dist/{messages-DPzZM5FG.mjs → messages-L4sYfXpM.mjs} +60 -1
- package/dist/{chunks/messages-Ced9OY9X.mjs → messages-P5B61L1J2.mjs} +60 -1
- package/dist/{chunks/messages-m_zk_AR3.mjs → messages-RXQKVFCJ.mjs} +60 -1
- package/dist/{chunks/messages-B94JmzMj.mjs → messages-UJx6PvCL.mjs} +60 -1
- package/dist/{chunks/messages-D1gz17wt.mjs → messages-VIQ8vjvS.mjs} +60 -1
- package/dist/{chunks/messages-BClegbPD.mjs → messages-bN4Zmk2m.mjs} +60 -1
- package/dist/{chunks/messages-DuOkV5T_.mjs → messages-fAEKzdUq.mjs} +60 -1
- package/dist/{chunks/messages-Cn0B5LU1.mjs → messages-gTUy3xjb.mjs} +60 -1
- package/dist/{chunks/messages-n1T_9w-Z.mjs → messages-hGop1gbF.mjs} +60 -1
- package/dist/{chunks/messages-DFUn1PHK2.mjs → messages-jQsl7cga2.mjs} +60 -1
- package/dist/{chunks/messages-h43rfIyt2.mjs → messages-jsrzDVZy2.mjs} +60 -1
- package/dist/{chunks/messages-BXmg4Rer2.mjs → messages-lnxRz5rM.mjs} +60 -1
- package/dist/{chunks/messages-CkRbSW3z2.mjs → messages-wmS6Z2m82.mjs} +60 -1
- package/dist/{messages-2jeEK-EB.mjs → messages-yuNINyS1.mjs} +60 -1
- package/dist/{messages-CsHwUgSZ.mjs → messages-zOl6jpOa.mjs} +60 -1
- package/dist/react.cjs +1 -1
- package/dist/react.mjs +1 -1
- package/dist/tools.cjs +1 -1
- package/dist/tools.mjs +3 -3
- package/dist/vendor.LICENSE.txt +395 -1
- package/package.json +3 -1
- package/src/components/i18n/locales/am/messages.json +60 -1
- package/src/components/i18n/locales/ar/messages.json +60 -1
- package/src/components/i18n/locales/az/messages.json +60 -1
- package/src/components/i18n/locales/bg/messages.json +60 -1
- package/src/components/i18n/locales/bn/messages.json +60 -1
- package/src/components/i18n/locales/bs/messages.json +60 -1
- package/src/components/i18n/locales/cs/messages.json +60 -1
- package/src/components/i18n/locales/da/messages.json +60 -1
- package/src/components/i18n/locales/de/messages.json +60 -1
- package/src/components/i18n/locales/dv/messages.json +60 -1
- package/src/components/i18n/locales/el/messages.json +60 -1
- package/src/components/i18n/locales/en/messages.json +59 -0
- package/src/components/i18n/locales/es/messages.json +60 -1
- package/src/components/i18n/locales/et/messages.json +60 -1
- package/src/components/i18n/locales/fa/messages.json +60 -1
- package/src/components/i18n/locales/fi/messages.json +60 -1
- package/src/components/i18n/locales/fil/messages.json +60 -1
- package/src/components/i18n/locales/fr/messages.json +60 -1
- package/src/components/i18n/locales/gu/messages.json +60 -1
- package/src/components/i18n/locales/he/messages.json +60 -1
- package/src/components/i18n/locales/hi/messages.json +60 -1
- package/src/components/i18n/locales/hr/messages.json +60 -1
- package/src/components/i18n/locales/hu/messages.json +60 -1
- package/src/components/i18n/locales/hy/messages.json +60 -1
- package/src/components/i18n/locales/id/messages.json +60 -1
- package/src/components/i18n/locales/it/messages.json +60 -1
- package/src/components/i18n/locales/ja/messages.json +60 -1
- package/src/components/i18n/locales/ka/messages.json +60 -1
- package/src/components/i18n/locales/km/messages.json +60 -1
- package/src/components/i18n/locales/kn/messages.json +60 -1
- package/src/components/i18n/locales/ko/messages.json +60 -1
- package/src/components/i18n/locales/ku/messages.json +60 -1
- package/src/components/i18n/locales/lo/messages.json +60 -1
- package/src/components/i18n/locales/lt/messages.json +60 -1
- package/src/components/i18n/locales/lv/messages.json +60 -1
- package/src/components/i18n/locales/mk/messages.json +60 -1
- package/src/components/i18n/locales/ml/messages.json +60 -1
- package/src/components/i18n/locales/mn/messages.json +60 -1
- package/src/components/i18n/locales/mr/messages.json +60 -1
- package/src/components/i18n/locales/ms/messages.json +60 -1
- package/src/components/i18n/locales/my/messages.json +60 -1
- package/src/components/i18n/locales/ne/messages.json +60 -1
- package/src/components/i18n/locales/nl/messages.json +60 -1
- package/src/components/i18n/locales/no/messages.json +60 -1
- package/src/components/i18n/locales/pa/messages.json +60 -1
- package/src/components/i18n/locales/pl/messages.json +60 -1
- package/src/components/i18n/locales/ps/messages.json +60 -1
- package/src/components/i18n/locales/pt/messages.json +60 -1
- package/src/components/i18n/locales/ro/messages.json +60 -1
- package/src/components/i18n/locales/ru/messages.json +60 -1
- package/src/components/i18n/locales/sd/messages.json +60 -1
- package/src/components/i18n/locales/si/messages.json +60 -1
- package/src/components/i18n/locales/sk/messages.json +60 -1
- package/src/components/i18n/locales/sl/messages.json +60 -1
- package/src/components/i18n/locales/sq/messages.json +60 -1
- package/src/components/i18n/locales/sr/messages.json +60 -1
- package/src/components/i18n/locales/sv/messages.json +60 -1
- package/src/components/i18n/locales/sw/messages.json +60 -1
- package/src/components/i18n/locales/ta/messages.json +60 -1
- package/src/components/i18n/locales/te/messages.json +60 -1
- package/src/components/i18n/locales/th/messages.json +60 -1
- package/src/components/i18n/locales/tr/messages.json +60 -1
- package/src/components/i18n/locales/ug/messages.json +60 -1
- package/src/components/i18n/locales/uk/messages.json +60 -1
- package/src/components/i18n/locales/ur/messages.json +60 -1
- package/src/components/i18n/locales/vi/messages.json +60 -1
- package/src/components/i18n/locales/yi/messages.json +60 -1
- package/src/components/i18n/locales/zh/messages.json +60 -1
- package/src/components/icons/index.ts +106 -0
- package/src/components/modules/paste/handlers/pattern-handler.ts +4 -7
- package/src/components/utils/format-bytes.ts +15 -0
- package/src/components/utils/max-size.ts +36 -0
- package/src/components/utils/media-empty-state.ts +4 -13
- package/src/components/utils/mime-match.ts +22 -0
- package/src/components/utils/upload-error-message.ts +43 -0
- package/src/styles/audio.css +528 -0
- package/src/styles/colors.css +31 -0
- package/src/styles/keyframes.css +8 -0
- package/src/styles/main.css +3 -0
- package/src/styles/resize-cue.css +26 -0
- package/src/styles/video.css +1221 -0
- package/src/tools/audio/constants.ts +21 -0
- package/src/tools/audio/controls.ts +416 -0
- package/src/tools/audio/empty-state.ts +45 -0
- package/src/tools/audio/i18n.ts +13 -0
- package/src/tools/audio/index.ts +482 -0
- package/src/tools/audio/metadata.ts +56 -0
- package/src/tools/audio/ui.ts +104 -0
- package/src/tools/audio/uploader.ts +76 -0
- package/src/tools/audio/waveform.ts +171 -0
- package/src/tools/file/constants.ts +5 -3
- package/src/tools/file/index.ts +45 -4
- package/src/tools/file/uploader.ts +5 -2
- package/src/tools/image/constants.ts +3 -8
- package/src/tools/image/converted-uploader.ts +30 -0
- package/src/tools/image/gif-to-webm.ts +170 -0
- package/src/tools/image/index.ts +125 -3
- package/src/tools/image/resizer.ts +39 -6
- package/src/tools/image/uploader.ts +4 -2
- package/src/tools/image/uploading-state.ts +2 -1
- package/src/tools/index.ts +4 -0
- package/src/tools/video/constants.ts +19 -0
- package/src/tools/video/controls.ts +1448 -0
- package/src/tools/video/empty-state.ts +45 -0
- package/src/tools/video/i18n.ts +13 -0
- package/src/tools/video/index.ts +521 -0
- package/src/tools/video/ui.ts +83 -0
- package/src/tools/video/uploader.ts +76 -0
- package/types/configs/blok-config.d.ts +2 -9
- package/types/tools/audio.d.ts +40 -0
- package/types/tools/file.d.ts +9 -3
- package/types/tools/image.d.ts +15 -3
- package/types/tools/max-size.d.ts +12 -0
- package/types/tools/video.d.ts +75 -0
- package/types/tools-entry.d.ts +9 -0
- package/dist/chunks/constants-B2Lcd7Kk.cjs +0 -539
- package/dist/chunks/lightweight-i18n-Clk37huC.cjs +0 -1
- package/dist/chunks/messages-04T5j1ww2.cjs +0 -1
- package/dist/chunks/messages-0OyEWZDW.cjs +0 -1
- package/dist/chunks/messages-3iHkF7Vy.cjs +0 -1
- package/dist/chunks/messages-98gouyMa.cjs +0 -1
- package/dist/chunks/messages-BAgSlZpS.cjs +0 -1
- package/dist/chunks/messages-BJ7clJXu2.cjs +0 -1
- package/dist/chunks/messages-BPYQEADI.cjs +0 -1
- package/dist/chunks/messages-BSxgqWqe.cjs +0 -1
- package/dist/chunks/messages-BdjiMHzU2.cjs +0 -1
- package/dist/chunks/messages-Br3ERe172.cjs +0 -1
- package/dist/chunks/messages-BtEDKVO7.cjs +0 -1
- package/dist/chunks/messages-BtevAuQS2.cjs +0 -1
- package/dist/chunks/messages-C6Xc3L-B2.cjs +0 -1
- package/dist/chunks/messages-CEquPedm.cjs +0 -1
- package/dist/chunks/messages-CFo-pG-t2.cjs +0 -1
- package/dist/chunks/messages-CXlSU8cQ2.cjs +0 -1
- package/dist/chunks/messages-Cf8u0aln2.cjs +0 -1
- package/dist/chunks/messages-Cg6qicee.cjs +0 -1
- package/dist/chunks/messages-CgGwGZs22.cjs +0 -1
- package/dist/chunks/messages-Cgg1HHSo.cjs +0 -1
- package/dist/chunks/messages-Ck6jEhXV.cjs +0 -1
- package/dist/chunks/messages-Cx1kdFH_2.cjs +0 -1
- package/dist/chunks/messages-DNYtMplL2.cjs +0 -1
- package/dist/chunks/messages-DOBcfgRF.cjs +0 -1
- package/dist/chunks/messages-DWeyV2N3.cjs +0 -1
- package/dist/chunks/messages-DkINYHo4.cjs +0 -1
- package/dist/chunks/messages-DsWTIuli2.cjs +0 -1
- package/dist/chunks/messages-JLj0J5so.cjs +0 -1
- package/dist/chunks/messages-o3omNKfH.cjs +0 -1
- package/dist/chunks/messages-p-1X5oFM2.cjs +0 -1
- package/dist/chunks/messages-poLdFEEs2.cjs +0 -1
- package/dist/chunks/messages-px_8gpHT.cjs +0 -1
- package/dist/chunks/messages-vdupz5T0.cjs +0 -1
- package/dist/chunks/tools-DiTb45BS.cjs +0 -208
- /package/dist/chunks/{am-B37aLxvu.cjs → am-Dc8fykoi.cjs} +0 -0
- /package/dist/chunks/{am-D7yfVqJS.mjs → am-DyT_H_W5.mjs} +0 -0
- /package/dist/chunks/{ar-ySo_KDqd.cjs → ar-B4htcHv2.cjs} +0 -0
- /package/dist/chunks/{ar-D00SixXA.mjs → ar-DxcVoX26.mjs} +0 -0
- /package/dist/chunks/{az-nCoWuGBd.cjs → az-CddDVVCC.cjs} +0 -0
- /package/dist/chunks/{az-BmIwKcoq.mjs → az-Ck_jWtwp.mjs} +0 -0
- /package/dist/chunks/{bg-BKB8_J3v.cjs → bg-BExJFlqx.cjs} +0 -0
- /package/dist/chunks/{bg-BTZaB21W.mjs → bg-C4_DlJ7m.mjs} +0 -0
- /package/dist/chunks/{bn-BQiBKtpR.cjs → bn-B3CWOlDr.cjs} +0 -0
- /package/dist/chunks/{bn-BVpf0XL6.mjs → bn-D0PWjX6h.mjs} +0 -0
- /package/dist/chunks/{bs-BSz4cPth.mjs → bs-BjqCqh8B.mjs} +0 -0
- /package/dist/chunks/{bs-D_lekdEb.cjs → bs-BylFYMjB.cjs} +0 -0
- /package/dist/chunks/{cs-Dv8Jg_Fa.cjs → cs-BzXww59F.cjs} +0 -0
- /package/dist/chunks/{cs-p5s4GudH.mjs → cs-R_vXAqRw.mjs} +0 -0
- /package/dist/chunks/{da-D33rjz-t.cjs → da-Be_YGjP-.cjs} +0 -0
- /package/dist/chunks/{da-BqJa8BMd.mjs → da-BuzQWEfl.mjs} +0 -0
- /package/dist/chunks/{de-BDDktkfI.mjs → de-BuXrJCQB.mjs} +0 -0
- /package/dist/chunks/{de-I8YFq0Ej.cjs → de-CuXVxRU3.cjs} +0 -0
- /package/dist/chunks/{el-BInM0nQo.cjs → el-CkLmGPX-.cjs} +0 -0
- /package/dist/chunks/{el-R63G08P0.mjs → el-d_XP5H44.mjs} +0 -0
- /package/dist/chunks/{es-Cj_AHhb9.cjs → es-CpevBSzX.cjs} +0 -0
- /package/dist/chunks/{es-BleH_dHg.mjs → es-D79FXk9q.mjs} +0 -0
- /package/dist/chunks/{et-BuISCVFl.mjs → et-BmawyEOM.mjs} +0 -0
- /package/dist/chunks/{et-BkMzN_qG.cjs → et-Dm53D0Mw.cjs} +0 -0
- /package/dist/chunks/{fa-C3VQIfEJ.cjs → fa-BLZQhg44.cjs} +0 -0
- /package/dist/chunks/{fa-CI9f3My0.mjs → fa-Cyzee-uD.mjs} +0 -0
- /package/dist/chunks/{fi-p8xxtchQ.cjs → fi-CktzJP0P.cjs} +0 -0
- /package/dist/chunks/{fi-C0_Jyps9.mjs → fi-zVk232gP.mjs} +0 -0
- /package/dist/chunks/{fil-DC8VTmfd.cjs → fil-BGEDSfA3.cjs} +0 -0
- /package/dist/chunks/{fil-BZsJ4YZG.mjs → fil-DQcS9VcY.mjs} +0 -0
- /package/dist/chunks/{fr-BjeioA2N.mjs → fr-CUoxzxMy.mjs} +0 -0
- /package/dist/chunks/{fr-Cbstr5ii.cjs → fr-DRFIW1vC.cjs} +0 -0
- /package/dist/chunks/{gu-CNi9WnhQ.mjs → gu-BSL13JVA.mjs} +0 -0
- /package/dist/chunks/{gu-DpPoUPem.cjs → gu-DCZgQPh1.cjs} +0 -0
- /package/dist/chunks/{he-bU_Id5XQ.mjs → he-B4fsDXlD.mjs} +0 -0
- /package/dist/chunks/{he-Rlv-PVKK.cjs → he-CrJki_kT.cjs} +0 -0
- /package/dist/chunks/{hi-CfLaLKZL.cjs → hi-B7MYHNXb.cjs} +0 -0
- /package/dist/chunks/{hi-CYYjJgoQ.mjs → hi-Df_jRvP-.mjs} +0 -0
- /package/dist/chunks/{hr-B6eFd_4M.cjs → hr-CHeiPUjb.cjs} +0 -0
- /package/dist/chunks/{hr-CerKCstu.mjs → hr-DC4ZNI8T.mjs} +0 -0
- /package/dist/chunks/{hu-DNYoHMic.mjs → hu-ClC3NxqC.mjs} +0 -0
- /package/dist/chunks/{hu-DQcisouf.cjs → hu-x4Ga7znM.cjs} +0 -0
- /package/dist/chunks/{hy-x9QOWTT6.cjs → hy-dXGxcAjA.cjs} +0 -0
- /package/dist/chunks/{hy-N0XBqVv_.mjs → hy-fpToCZeQ.mjs} +0 -0
- /package/dist/chunks/{id-G7ASv812.cjs → id-BETj6SOy.cjs} +0 -0
- /package/dist/chunks/{id-dmUIQB07.mjs → id-zXVZ_-tD.mjs} +0 -0
- /package/dist/chunks/{it-DXDwm7Aj.cjs → it-CblE5NNx.cjs} +0 -0
- /package/dist/chunks/{it-G9Rg2LaN.mjs → it-Cp7EdTdT.mjs} +0 -0
- /package/dist/chunks/{ja-DHMurrnk.cjs → ja-D4CP2G3w.cjs} +0 -0
- /package/dist/chunks/{ja-C1Nou_k5.mjs → ja-DoaPxTyV.mjs} +0 -0
- /package/dist/chunks/{ka-P0_q1_oW.cjs → ka-C6DxbxxH.cjs} +0 -0
- /package/dist/chunks/{ka-9rtmTdhq.mjs → ka-CwoyhuWu.mjs} +0 -0
- /package/dist/chunks/{km-DedsOdPY.cjs → km-BdZJI-qn.cjs} +0 -0
- /package/dist/chunks/{km-T8J0lGcC.mjs → km-D8jrJ9sv.mjs} +0 -0
- /package/dist/chunks/{kn-CAGP6H3x.cjs → kn-DsGMDyW7.cjs} +0 -0
- /package/dist/chunks/{kn-CMb5Cv2d.mjs → kn-IsuZc30u.mjs} +0 -0
- /package/dist/chunks/{ko-3D0kPtnu.cjs → ko-CFVvGmVE.cjs} +0 -0
- /package/dist/chunks/{ko-DulVmkjC.mjs → ko-DxAtBe72.mjs} +0 -0
- /package/dist/chunks/{ku-BYzD3GnU.cjs → ku-B-43xPpS.cjs} +0 -0
- /package/dist/chunks/{ku-C5mlSVfC.mjs → ku-Da-1BcEg.mjs} +0 -0
- /package/dist/chunks/{lo-D9ixPNJD.cjs → lo-DtVyNkq4.cjs} +0 -0
- /package/dist/chunks/{lo-Cw2hfj84.mjs → lo-p9PUOxXA.mjs} +0 -0
- /package/dist/chunks/{lt-CzfEJdVd.cjs → lt-BaHJn9M4.cjs} +0 -0
- /package/dist/chunks/{lt-Ceg9NAdI.mjs → lt-C4lGuzQq.mjs} +0 -0
- /package/dist/chunks/{lv-3CXzQoic.mjs → lv-B5Cp4JEf.mjs} +0 -0
- /package/dist/chunks/{lv-DWyBbTHI.cjs → lv-BHXmLxXV.cjs} +0 -0
- /package/dist/chunks/{mk-CEbNT0Oe.mjs → mk-B5rDdPUj.mjs} +0 -0
- /package/dist/chunks/{mk-Anl5AUSU.cjs → mk-BhwKijB_.cjs} +0 -0
- /package/dist/chunks/{ml-B1QmnbTX.cjs → ml-DxZv3Mzc.cjs} +0 -0
- /package/dist/chunks/{ml-DaF_zn1h.mjs → ml-gamedfCk.mjs} +0 -0
- /package/dist/chunks/{mn-DLpgZmIl.mjs → mn-BbhhPusH.mjs} +0 -0
- /package/dist/chunks/{mn-DM3AWPQI.cjs → mn-Bzi4YTMA.cjs} +0 -0
- /package/dist/chunks/{mr-CPCMiBsx.cjs → mr-BENatxZg.cjs} +0 -0
- /package/dist/chunks/{mr-C-d3CWSD.mjs → mr-DO_kNyu7.mjs} +0 -0
- /package/dist/chunks/{ms-BKg5zJ6g.cjs → ms-BVop2DJc.cjs} +0 -0
- /package/dist/chunks/{ms-D3Zil5Dz.mjs → ms-eIjFVRpo.mjs} +0 -0
- /package/dist/chunks/{my-HzQdQq6H.mjs → my-nf0gvOOX.mjs} +0 -0
- /package/dist/chunks/{my-BhrbZPAE.cjs → my-qLePPAWv.cjs} +0 -0
- /package/dist/chunks/{ne-Dw6kUPkS.mjs → ne-DOaubYly.mjs} +0 -0
- /package/dist/chunks/{ne-BsEUv3Vp.cjs → ne-DfryA0M8.cjs} +0 -0
- /package/dist/chunks/{nl-C1jFx32v.cjs → nl-BehqWHBh.cjs} +0 -0
- /package/dist/chunks/{nl-D8QQ6wmJ.mjs → nl-VHkGK6MK.mjs} +0 -0
- /package/dist/chunks/{no-BWEOGeAo.cjs → no-CR9Fxz1X.cjs} +0 -0
- /package/dist/chunks/{no-Rg2uuKdV.mjs → no-CdtSCHJr.mjs} +0 -0
- /package/dist/chunks/{notifier-BOB8o7IG.cjs → notifier-CFYHvVe5.cjs} +0 -0
- /package/dist/chunks/{notifier-CEnelp-K.mjs → notifier-DJ3Shryh.mjs} +0 -0
- /package/dist/chunks/{pa-BitCteAA.cjs → pa-DgC4LF8q.cjs} +0 -0
- /package/dist/chunks/{pa-BSwIZvA0.mjs → pa-TMcUvGQV.mjs} +0 -0
- /package/dist/chunks/{pl-FhXomIGp.mjs → pl-BfQYJ9y_.mjs} +0 -0
- /package/dist/chunks/{pl-CbCrHaA6.cjs → pl-a2nheY_J.cjs} +0 -0
- /package/dist/chunks/{prism-bash-CZ6DBzIk.mjs → prism-bash-D4zr_u8t.mjs} +0 -0
- /package/dist/chunks/{prism-bash-qitAYJtY.cjs → prism-bash-DDQ2u01V.cjs} +0 -0
- /package/dist/chunks/{prism-c-nnJdAhPL.mjs → prism-c-CVyw1BOu.mjs} +0 -0
- /package/dist/chunks/{prism-c-BLyB6e2K.cjs → prism-c-DfVjTtJG.cjs} +0 -0
- /package/dist/chunks/{prism-cpp-DYNCFS3K.mjs → prism-cpp-CrBJjuu5.mjs} +0 -0
- /package/dist/chunks/{prism-cpp-OSmmdLuG.cjs → prism-cpp-DqxJDZfM.cjs} +0 -0
- /package/dist/chunks/{prism-csharp-16T9Ewqf.cjs → prism-csharp-BbJ6Sp-b.cjs} +0 -0
- /package/dist/chunks/{prism-csharp-Dxs2I4ua.mjs → prism-csharp-lrMxvYpL.mjs} +0 -0
- /package/dist/chunks/{prism-css-DwTbu-Ar.mjs → prism-css-VQTID_HR.mjs} +0 -0
- /package/dist/chunks/{prism-css-CMFNwvrI.cjs → prism-css-w2kan9uc.cjs} +0 -0
- /package/dist/chunks/{prism-dart-DX2YtTGt.cjs → prism-dart-B374T6OY.cjs} +0 -0
- /package/dist/chunks/{prism-dart-Cqhjl8Zt.mjs → prism-dart-Q-9Z_W9B.mjs} +0 -0
- /package/dist/chunks/{prism-docker-CF7dhvYh.mjs → prism-docker-DWAQ3dDD.mjs} +0 -0
- /package/dist/chunks/{prism-docker-CR4lKITl.cjs → prism-docker-DsFNc9i3.cjs} +0 -0
- /package/dist/chunks/{prism-go-DUV4QMTT.cjs → prism-go-C4e52XbO.cjs} +0 -0
- /package/dist/chunks/{prism-go-h9KLdAE9.mjs → prism-go-CrXe2RS9.mjs} +0 -0
- /package/dist/chunks/{prism-graphql-CaH0gD6e.mjs → prism-graphql-BG5mfdhd.mjs} +0 -0
- /package/dist/chunks/{prism-graphql-Cw4U0rOD.cjs → prism-graphql-DzWE15JS.cjs} +0 -0
- /package/dist/chunks/{prism-java-BpQ0ReAC.cjs → prism-java-Bth7ny8U.cjs} +0 -0
- /package/dist/chunks/{prism-java-DvKEtgSw.mjs → prism-java-_m72Vn1f.mjs} +0 -0
- /package/dist/chunks/{prism-javascript-D2ecWeeN.mjs → prism-javascript-B74it_3Q.mjs} +0 -0
- /package/dist/chunks/{prism-javascript-ELk9U7yv.cjs → prism-javascript-CZHuhUqG.cjs} +0 -0
- /package/dist/chunks/{prism-json-BdNUnMGb.cjs → prism-json-C7yjuPaa.cjs} +0 -0
- /package/dist/chunks/{prism-json-eqh92QZC.mjs → prism-json-CFsf0S_6.mjs} +0 -0
- /package/dist/chunks/{prism-kotlin-22Gr2SxK.mjs → prism-kotlin-BTT9anu1.mjs} +0 -0
- /package/dist/chunks/{prism-kotlin-WNUAhuoa.cjs → prism-kotlin-BwlhXHxp.cjs} +0 -0
- /package/dist/chunks/{prism-latex-DKge5vOJ.mjs → prism-latex-CL8zDJwm.mjs} +0 -0
- /package/dist/chunks/{prism-latex-BtyYjHKE.cjs → prism-latex-dRhujmiF.cjs} +0 -0
- /package/dist/chunks/{prism-lua-DhVb-IBs.cjs → prism-lua-CC8iHZy0.cjs} +0 -0
- /package/dist/chunks/{prism-lua-BySMQWvB.mjs → prism-lua-D6JJ7p-A.mjs} +0 -0
- /package/dist/chunks/{prism-markdown-Bvv1_ifb.mjs → prism-markdown-D6D8BprH.mjs} +0 -0
- /package/dist/chunks/{prism-markdown-DonI20ta.cjs → prism-markdown-DMW4QHo8.cjs} +0 -0
- /package/dist/chunks/{prism-markup-DaGlO8wQ.cjs → prism-markup-DmQlWhRx.cjs} +0 -0
- /package/dist/chunks/{prism-markup-DPDFrSBO.mjs → prism-markup-fK-1ADZ0.mjs} +0 -0
- /package/dist/chunks/{prism-markup-templating-DKZ_F63l.cjs → prism-markup-templating-CKDQaPgk.cjs} +0 -0
- /package/dist/chunks/{prism-markup-templating-B1u1wroF.mjs → prism-markup-templating-DfRjv0mn.mjs} +0 -0
- /package/dist/chunks/{prism-php-V_A4SMVC.cjs → prism-php-BJVLLh_W.cjs} +0 -0
- /package/dist/chunks/{prism-php-CjjweiQK.mjs → prism-php-DffX-wRi.mjs} +0 -0
- /package/dist/chunks/{prism-python-6eBEySe7.mjs → prism-python-2BrUkjbB.mjs} +0 -0
- /package/dist/chunks/{prism-python-DLqiSiAQ.cjs → prism-python-Bhf5rXub.cjs} +0 -0
- /package/dist/chunks/{prism-r-uOZv1a7d.mjs → prism-r-CU9se1Na.mjs} +0 -0
- /package/dist/chunks/{prism-r-zh9-I3-j.cjs → prism-r-ChFoLzAP.cjs} +0 -0
- /package/dist/chunks/{prism-ruby-M4mhoFF5.cjs → prism-ruby-BvGZJs6t.cjs} +0 -0
- /package/dist/chunks/{prism-ruby-Cr-3Y89S.mjs → prism-ruby-DuQ4syPd.mjs} +0 -0
- /package/dist/chunks/{prism-rust-g2dmV4wL.cjs → prism-rust-6eFXbDzh.cjs} +0 -0
- /package/dist/chunks/{prism-rust-DxlMe9N8.mjs → prism-rust-DRurCx4W.mjs} +0 -0
- /package/dist/chunks/{prism-scala-byYaK-Hs.mjs → prism-scala-CU8N2Vpe.mjs} +0 -0
- /package/dist/chunks/{prism-scala-DdSRpf_v.cjs → prism-scala-De4Tbjij.cjs} +0 -0
- /package/dist/chunks/{prism-sql-W4S9Ag3H.mjs → prism-sql-Au3VVcw1.mjs} +0 -0
- /package/dist/chunks/{prism-sql-BjDuRopl.cjs → prism-sql-_JMPMWu-.cjs} +0 -0
- /package/dist/chunks/{prism-swift-KjqbhTlS.mjs → prism-swift-B-r5qNUT.mjs} +0 -0
- /package/dist/chunks/{prism-swift-CqOmCgZp.cjs → prism-swift-DdWKYFH_.cjs} +0 -0
- /package/dist/chunks/{prism-typescript-CjqcJxVT.mjs → prism-typescript-BKj96rmj.mjs} +0 -0
- /package/dist/chunks/{prism-typescript-DGlZWX5K.cjs → prism-typescript-DYxN8s4t.cjs} +0 -0
- /package/dist/chunks/{prism-yaml-W11WcDBZ.mjs → prism-yaml-Bk31kvSd.mjs} +0 -0
- /package/dist/chunks/{prism-yaml-HqOYDhYZ.cjs → prism-yaml-CAlRa1Lr.cjs} +0 -0
- /package/dist/chunks/{ps-BoBtbrB6.mjs → ps-Dv4lWz5A.mjs} +0 -0
- /package/dist/chunks/{ps-4sPZuv3g.cjs → ps-f5JFPQUh.cjs} +0 -0
- /package/dist/chunks/{pt-BYA5NOw_.mjs → pt-CtgGcY6X.mjs} +0 -0
- /package/dist/chunks/{pt-CSzjho-V.cjs → pt-I7qQ_R8a.cjs} +0 -0
- /package/dist/chunks/{ro-C9tN3AFF.cjs → ro-BNo9EVkV.cjs} +0 -0
- /package/dist/chunks/{ro-mtobtMpD.mjs → ro-Dxs4TSRR.mjs} +0 -0
- /package/dist/chunks/{ru-B791LPq3.mjs → ru-B5A2vGqQ.mjs} +0 -0
- /package/dist/chunks/{ru-BYPO5wNO.cjs → ru-Q0YDL_7B.cjs} +0 -0
- /package/dist/chunks/{sd-BWuglgs_.cjs → sd-56aE3AgX.cjs} +0 -0
- /package/dist/chunks/{sd-C8ngG92I.mjs → sd-DcBvM0yY.mjs} +0 -0
- /package/dist/chunks/{si-IX2P_DGB.cjs → si-B1k5DPe9.cjs} +0 -0
- /package/dist/chunks/{si-C_q8DxVt.mjs → si-JTOFsZCj.mjs} +0 -0
- /package/dist/chunks/{sk-HJJlM9uq.mjs → sk-B0LtwsAp.mjs} +0 -0
- /package/dist/chunks/{sk-CxtyIOlr.cjs → sk-DKWs0Fly.cjs} +0 -0
- /package/dist/chunks/{sl-CPjYG80u.cjs → sl-3aOunask.cjs} +0 -0
- /package/dist/chunks/{sl-kB1f5rPn.mjs → sl-CE_B7j6P.mjs} +0 -0
- /package/dist/chunks/{sq-Do6UyHn9.cjs → sq-BjtxgRqp.cjs} +0 -0
- /package/dist/chunks/{sq-CD0W0D6z.mjs → sq-DG9X-8jF.mjs} +0 -0
- /package/dist/chunks/{sr-BcyT-MWS.cjs → sr-DLHLW9qM.cjs} +0 -0
- /package/dist/chunks/{sr-lLJu9TsT.mjs → sr-LJKaTtNM.mjs} +0 -0
- /package/dist/chunks/{sv-C3GL-a0k.mjs → sv-Cm3jSTt-.mjs} +0 -0
- /package/dist/chunks/{sv-Bsz7ersx.cjs → sv-DJ6Kywac.cjs} +0 -0
- /package/dist/chunks/{sw-CUElHZxL.cjs → sw-BnvydNkI.cjs} +0 -0
- /package/dist/chunks/{sw-D6-DZ14-.mjs → sw-C2rm3bwF.mjs} +0 -0
- /package/dist/chunks/{ta-BZy78kBk.mjs → ta-5k36G0kU.mjs} +0 -0
- /package/dist/chunks/{ta-D0DQba-y.cjs → ta-e_T5Y_TH.cjs} +0 -0
- /package/dist/chunks/{te-DPMvJyXg.cjs → te-DJd9mdke.cjs} +0 -0
- /package/dist/chunks/{te-vigCVKdg.mjs → te-Qw6ZgfXC.mjs} +0 -0
- /package/dist/chunks/{th-DtcrIt9J.cjs → th-BFvK-kez.cjs} +0 -0
- /package/dist/chunks/{th-CGc0RLWB.mjs → th-DFCnkeU5.mjs} +0 -0
- /package/dist/chunks/{tr-BrEFaVNA.cjs → tr-Bio2iyuW.cjs} +0 -0
- /package/dist/chunks/{tr-Cgkf5aJo.mjs → tr-QoYDqZZE.mjs} +0 -0
- /package/dist/chunks/{ug-BVK7qBs4.mjs → ug-CYVvHjDo.mjs} +0 -0
- /package/dist/chunks/{ug-CqZXfhXi.cjs → ug-_E9uEBC5.cjs} +0 -0
- /package/dist/chunks/{uk-DgReWEge.cjs → uk-CiihPsrk.cjs} +0 -0
- /package/dist/chunks/{uk-CSPaCalw.mjs → uk-KrD9Hdx7.mjs} +0 -0
- /package/dist/chunks/{ur-ByrwJnY1.cjs → ur-B9A13pT4.cjs} +0 -0
- /package/dist/chunks/{ur-VpFFsATs.mjs → ur-Bgtl4YGa.mjs} +0 -0
- /package/dist/chunks/{vi-CWQtvATS.mjs → vi-CwW9u4Ww.mjs} +0 -0
- /package/dist/chunks/{vi-lUD3w7gP.cjs → vi-l243K5Tb.cjs} +0 -0
- /package/dist/chunks/{zh-akJj2cdF.mjs → zh-BdCF4Hao.mjs} +0 -0
- /package/dist/chunks/{zh-fSp1qOne.cjs → zh-DPZR_81P.cjs} +0 -0
package/src/tools/image/index.ts
CHANGED
|
@@ -33,6 +33,8 @@ import {
|
|
|
33
33
|
} from '../../components/icons';
|
|
34
34
|
import { DEFAULT_CAPTION_PLACEHOLDER, URL_PATTERN } from './constants';
|
|
35
35
|
import { renderEmptyState, type EmptyStateElement } from './empty-state';
|
|
36
|
+
import { uploadErrorMessage } from '../../components/utils/upload-error-message';
|
|
37
|
+
import { pickDisplayMaxSize } from '../../components/utils/max-size';
|
|
36
38
|
import { renderErrorState } from './error-state';
|
|
37
39
|
import { ImageError } from './errors';
|
|
38
40
|
import { attachResizeHandle, type ResizeEdge } from './resizer';
|
|
@@ -50,6 +52,8 @@ import { openAltPopover } from './alt-popover';
|
|
|
50
52
|
import { probeImageDimensions } from './probe-dimensions';
|
|
51
53
|
import { renderUploadingState, type UploadingStateElement } from './uploading-state';
|
|
52
54
|
import { Uploader, type UploadResult } from './uploader';
|
|
55
|
+
import { convertGifToWebm } from './gif-to-webm';
|
|
56
|
+
import { resolveConvertedUploader } from './converted-uploader';
|
|
53
57
|
|
|
54
58
|
type ToolState = 'EMPTY' | 'LOADING' | 'RENDERED' | 'ERROR';
|
|
55
59
|
|
|
@@ -83,6 +87,7 @@ export class ImageTool implements BlockTool {
|
|
|
83
87
|
private brokenImage = false;
|
|
84
88
|
private retrying = false;
|
|
85
89
|
private reloadAttempts = 0;
|
|
90
|
+
private converting = false;
|
|
86
91
|
|
|
87
92
|
constructor(options: BlockToolConstructorOptions<ImageData, ImageConfig>) {
|
|
88
93
|
this.api = options.api;
|
|
@@ -153,7 +158,11 @@ export class ImageTool implements BlockTool {
|
|
|
153
158
|
public onPaste(event: PasteEvent): void {
|
|
154
159
|
if (event.type === 'pattern') {
|
|
155
160
|
const detail = (event as PatternPasteEvent).detail;
|
|
156
|
-
this.
|
|
161
|
+
if (this.shouldConvertGifUrl(detail.data)) {
|
|
162
|
+
this.startUrl(detail.data);
|
|
163
|
+
} else {
|
|
164
|
+
this.applyResult({ url: detail.data });
|
|
165
|
+
}
|
|
157
166
|
return;
|
|
158
167
|
}
|
|
159
168
|
if (event.type === 'tag') {
|
|
@@ -174,6 +183,18 @@ export class ImageTool implements BlockTool {
|
|
|
174
183
|
};
|
|
175
184
|
|
|
176
185
|
private startUpload(file: File): void {
|
|
186
|
+
if (this.shouldConvertGif(file.type)) {
|
|
187
|
+
void this.convertGifToVideoBlock(file).then((handled) => {
|
|
188
|
+
if (!handled) this.uploadImageFile(file);
|
|
189
|
+
});
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
this.uploadImageFile(file);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** Existing upload body, extracted verbatim. */
|
|
196
|
+
private uploadImageFile(file: File): void {
|
|
197
|
+
this.converting = false;
|
|
177
198
|
this.lastFileName = file.name;
|
|
178
199
|
this.lastSource = { kind: 'file', file };
|
|
179
200
|
this.state = 'LOADING';
|
|
@@ -186,7 +207,67 @@ export class ImageTool implements BlockTool {
|
|
|
186
207
|
.catch((err) => this.applyError(err));
|
|
187
208
|
}
|
|
188
209
|
|
|
210
|
+
private shouldConvertGif(mimeType: string): boolean {
|
|
211
|
+
return this.config.convertGifToVideo !== false && mimeType === 'image/gif';
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Try to convert a GIF to a looping WebM video block. Returns true only when
|
|
216
|
+
* the block was swapped; false means the caller should keep the GIF (image).
|
|
217
|
+
*/
|
|
218
|
+
private async convertGifToVideoBlock(file: File): Promise<boolean> {
|
|
219
|
+
this.converting = true;
|
|
220
|
+
this.state = 'LOADING';
|
|
221
|
+
this.errorMessage = null;
|
|
222
|
+
this.brokenImage = false;
|
|
223
|
+
this.lastFileName = file.name;
|
|
224
|
+
this.renderState();
|
|
225
|
+
try {
|
|
226
|
+
const blob = await convertGifToWebm(await file.arrayBuffer(), { onProgress: this.reportProgress });
|
|
227
|
+
if (!blob) { this.converting = false; return false; }
|
|
228
|
+
const webm = new File([blob], file.name.replace(/\.gif$/i, '.webm'), { type: 'video/webm' });
|
|
229
|
+
const url = await this.uploadConverted(webm);
|
|
230
|
+
if (url === null) { this.converting = false; return false; }
|
|
231
|
+
this.converting = false;
|
|
232
|
+
return this.swapToVideoBlock(url, webm.name);
|
|
233
|
+
} catch {
|
|
234
|
+
this.converting = false;
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
private async uploadConverted(file: File): Promise<string | null> {
|
|
240
|
+
const upload = resolveConvertedUploader(this.api, this.config);
|
|
241
|
+
if (upload) {
|
|
242
|
+
const res = await upload(file, { onProgress: this.reportProgress });
|
|
243
|
+
return res.url;
|
|
244
|
+
}
|
|
245
|
+
return URL.createObjectURL(file);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
private swapToVideoBlock(url: string, fileName: string): boolean {
|
|
249
|
+
const index = this.api.blocks.getBlockIndex(this.block.id);
|
|
250
|
+
if (index === undefined) return false;
|
|
251
|
+
this.api.blocks.insert(
|
|
252
|
+
'video',
|
|
253
|
+
{ url, autoplay: true, loop: true, mimeType: 'video/webm', fileName },
|
|
254
|
+
{}, index, false, true,
|
|
255
|
+
);
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
|
|
189
259
|
private startUrl(url: string): void {
|
|
260
|
+
if (this.shouldConvertGifUrl(url)) {
|
|
261
|
+
void this.convertGifUrlToVideoBlock(url).then((handled) => {
|
|
262
|
+
if (!handled) this.loadImageUrl(url);
|
|
263
|
+
});
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
this.loadImageUrl(url);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/** Existing startUrl body, extracted verbatim. */
|
|
270
|
+
private loadImageUrl(url: string): void {
|
|
190
271
|
this.lastFileName = null;
|
|
191
272
|
this.lastSource = { kind: 'url', url };
|
|
192
273
|
this.state = 'LOADING';
|
|
@@ -199,6 +280,41 @@ export class ImageTool implements BlockTool {
|
|
|
199
280
|
.catch((err) => this.applyError(err));
|
|
200
281
|
}
|
|
201
282
|
|
|
283
|
+
private shouldConvertGifUrl(url: string): boolean {
|
|
284
|
+
return this.config.convertGifToVideo !== false && /\.gif(\?|#|$)/i.test(url);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
private async convertGifUrlToVideoBlock(url: string): Promise<boolean> {
|
|
288
|
+
const bytes = await this.fetchGifBytes(url);
|
|
289
|
+
if (!bytes) return false;
|
|
290
|
+
this.converting = true;
|
|
291
|
+
this.state = 'LOADING';
|
|
292
|
+
this.errorMessage = null;
|
|
293
|
+
this.renderState();
|
|
294
|
+
try {
|
|
295
|
+
const blob = await convertGifToWebm(bytes, { onProgress: this.reportProgress });
|
|
296
|
+
if (!blob) { this.converting = false; return false; }
|
|
297
|
+
const webm = new File([blob], 'animation.webm', { type: 'video/webm' });
|
|
298
|
+
const uploadedUrl = await this.uploadConverted(webm);
|
|
299
|
+
if (uploadedUrl === null) { this.converting = false; return false; }
|
|
300
|
+
this.converting = false;
|
|
301
|
+
return this.swapToVideoBlock(uploadedUrl, webm.name);
|
|
302
|
+
} catch {
|
|
303
|
+
this.converting = false;
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
private async fetchGifBytes(url: string): Promise<ArrayBuffer | null> {
|
|
309
|
+
try {
|
|
310
|
+
const res = await fetch(url);
|
|
311
|
+
if (!res.ok) return null;
|
|
312
|
+
return await res.arrayBuffer();
|
|
313
|
+
} catch {
|
|
314
|
+
return null; // CORS / network → keep the GIF as an image URL
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
202
318
|
private retryLastSource(): void {
|
|
203
319
|
const source = this.lastSource;
|
|
204
320
|
if (!source) {
|
|
@@ -231,7 +347,12 @@ export class ImageTool implements BlockTool {
|
|
|
231
347
|
|
|
232
348
|
private applyError(err: unknown): void {
|
|
233
349
|
this.state = 'ERROR';
|
|
234
|
-
this.errorMessage = err instanceof
|
|
350
|
+
this.errorMessage = err instanceof ImageError
|
|
351
|
+
? uploadErrorMessage(err, (key) => this.api.i18n.t(key), {
|
|
352
|
+
tooLarge: 'tools.image.errorFileTooLarge',
|
|
353
|
+
generic: 'tools.image.errorUploadFailed',
|
|
354
|
+
})
|
|
355
|
+
: this.api.i18n.t('tools.image.errorUploadFailed');
|
|
235
356
|
this.brokenImage = false;
|
|
236
357
|
this.retrying = false;
|
|
237
358
|
this.renderState();
|
|
@@ -565,7 +686,7 @@ export class ImageTool implements BlockTool {
|
|
|
565
686
|
onFile: (file) => this.startUpload(file),
|
|
566
687
|
onUrl: (url) => this.startUrl(url),
|
|
567
688
|
acceptTypes: this.config.types,
|
|
568
|
-
maxSize: this.config.maxSize,
|
|
689
|
+
maxSize: pickDisplayMaxSize(this.config.maxSize),
|
|
569
690
|
i18n: this.api.i18n,
|
|
570
691
|
});
|
|
571
692
|
this.emptyStateEl = el;
|
|
@@ -578,6 +699,7 @@ export class ImageTool implements BlockTool {
|
|
|
578
699
|
fileName: this.lastFileName ?? this.api.i18n.t('tools.image.uploading'),
|
|
579
700
|
onCancel: () => this.transitionToEmpty(),
|
|
580
701
|
i18n: this.api.i18n,
|
|
702
|
+
...(this.converting ? { statusLabel: this.api.i18n.t('tools.image.converting') } : {}),
|
|
581
703
|
});
|
|
582
704
|
this.uploadingEl = el;
|
|
583
705
|
this.root.appendChild(el);
|
|
@@ -41,13 +41,26 @@ export function clampPercent(value: number, minPercent: number = MIN_WIDTH_PERCE
|
|
|
41
41
|
return value;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
export interface WidthResult {
|
|
45
|
+
/** The clamped width as a percent of the container. */
|
|
46
|
+
percent: number;
|
|
47
|
+
/**
|
|
48
|
+
* True when the drag wanted to shrink past the lower floor and was pinned
|
|
49
|
+
* there — used to surface a "can't go smaller" cue to the user.
|
|
50
|
+
*/
|
|
51
|
+
clampedToMin: boolean;
|
|
52
|
+
}
|
|
53
|
+
|
|
44
54
|
/**
|
|
45
55
|
* Pointer follows the dragged edge; width grows around the alignment anchor.
|
|
46
56
|
* Center (frac 0.5) → both edges move → width delta = 2× pointer delta.
|
|
47
57
|
* Edge-anchored (frac 0 or 1) → single side grows → width delta = 1× pointer delta.
|
|
58
|
+
*
|
|
59
|
+
* Returns the clamped percent plus whether it hit the lower floor, so callers
|
|
60
|
+
* can animate a resistance cue when the player refuses to shrink further.
|
|
48
61
|
*/
|
|
49
|
-
export function
|
|
50
|
-
if (input.containerWidth <= 0) return clampPercent(0);
|
|
62
|
+
export function computeWidthResult(input: ComputeWidthInput): WidthResult {
|
|
63
|
+
if (input.containerWidth <= 0) return { percent: clampPercent(0), clampedToMin: true };
|
|
51
64
|
const frac = input.alignFrac ?? 0;
|
|
52
65
|
const denom = input.edge === 'right' ? 1 - frac : frac;
|
|
53
66
|
const multiplier = denom === 0 ? 1 : 1 / denom;
|
|
@@ -57,9 +70,23 @@ export function computeWidthPercent(input: ComputeWidthInput): number {
|
|
|
57
70
|
const minPercent = input.minWidthPx !== undefined
|
|
58
71
|
? Math.round((input.minWidthPx / input.containerWidth) * 100)
|
|
59
72
|
: MIN_WIDTH_PERCENT;
|
|
60
|
-
|
|
73
|
+
const floor = Math.min(Math.max(minPercent, MIN_WIDTH_PERCENT), MAX_WIDTH_PERCENT);
|
|
74
|
+
const raw = Math.round((nextWidth / input.containerWidth) * 100);
|
|
75
|
+
return { percent: clampPercent(raw, minPercent), clampedToMin: raw < floor };
|
|
61
76
|
}
|
|
62
77
|
|
|
78
|
+
export function computeWidthPercent(input: ComputeWidthInput): number {
|
|
79
|
+
return computeWidthResult(input).percent;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Marker set on the figure while a drag is pinned at the lower floor. Shared
|
|
84
|
+
* resize-cue CSS keys off it to recoil the player/image/embed and neutralise
|
|
85
|
+
* the dragged handle, so every resizable tool gets the "can't shrink further"
|
|
86
|
+
* feedback for free.
|
|
87
|
+
*/
|
|
88
|
+
export const RESIZE_BLOCKED_ATTR = 'data-resize-blocked';
|
|
89
|
+
|
|
63
90
|
export interface AttachResizeHandleOptions {
|
|
64
91
|
handle: HTMLElement;
|
|
65
92
|
figure: HTMLElement;
|
|
@@ -103,7 +130,7 @@ export function attachResizeHandle(opts: AttachResizeHandleOptions): () => void
|
|
|
103
130
|
|
|
104
131
|
const onMove = (event: PointerEvent): void => {
|
|
105
132
|
if (!state.active) return;
|
|
106
|
-
const
|
|
133
|
+
const result = computeWidthResult({
|
|
107
134
|
edge: opts.edge,
|
|
108
135
|
containerWidth: state.containerWidth,
|
|
109
136
|
startWidth: state.startWidth,
|
|
@@ -112,13 +139,19 @@ export function attachResizeHandle(opts: AttachResizeHandleOptions): () => void
|
|
|
112
139
|
alignFrac,
|
|
113
140
|
minWidthPx: opts.minWidthPx,
|
|
114
141
|
});
|
|
115
|
-
state.lastPercent =
|
|
116
|
-
|
|
142
|
+
state.lastPercent = result.percent;
|
|
143
|
+
if (result.clampedToMin) {
|
|
144
|
+
opts.figure.setAttribute(RESIZE_BLOCKED_ATTR, 'true');
|
|
145
|
+
} else {
|
|
146
|
+
opts.figure.removeAttribute(RESIZE_BLOCKED_ATTR);
|
|
147
|
+
}
|
|
148
|
+
opts.onPreview(result.percent);
|
|
117
149
|
};
|
|
118
150
|
|
|
119
151
|
const onUp = (event: PointerEvent): void => {
|
|
120
152
|
if (!state.active) return;
|
|
121
153
|
state.active = false;
|
|
154
|
+
opts.figure.removeAttribute(RESIZE_BLOCKED_ATTR);
|
|
122
155
|
opts.handle.releasePointerCapture(event.pointerId);
|
|
123
156
|
if (state.lastPercent !== undefined) opts.onCommit(state.lastPercent);
|
|
124
157
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ImageConfig } from '../../../types/tools/image';
|
|
2
|
+
import { resolveMaxSize } from '../../components/utils/max-size';
|
|
3
|
+
import { matchesMime } from '../../components/utils/mime-match';
|
|
2
4
|
import { DEFAULT_MAX_SIZE, DEFAULT_MIME_TYPES } from './constants';
|
|
3
5
|
import { ImageError } from './errors';
|
|
4
6
|
|
|
@@ -87,9 +89,9 @@ export class Uploader {
|
|
|
87
89
|
|
|
88
90
|
private validateFile(file: File): void {
|
|
89
91
|
const types = this.config.types ?? [...DEFAULT_MIME_TYPES];
|
|
90
|
-
const maxSize = this.config.maxSize
|
|
92
|
+
const maxSize = resolveMaxSize(this.config.maxSize, file.type, DEFAULT_MAX_SIZE);
|
|
91
93
|
|
|
92
|
-
if (!
|
|
94
|
+
if (!matchesMime(file.type, types)) {
|
|
93
95
|
throw new ImageError('UNSUPPORTED_TYPE', file.type || 'unknown');
|
|
94
96
|
}
|
|
95
97
|
if (file.size > maxSize) {
|
|
@@ -5,6 +5,7 @@ import { tr } from './i18n';
|
|
|
5
5
|
export interface UploadingStateOptions {
|
|
6
6
|
fileName: string;
|
|
7
7
|
sizeLabel?: string;
|
|
8
|
+
statusLabel?: string;
|
|
8
9
|
onCancel?(): void;
|
|
9
10
|
i18n?: I18nInstance;
|
|
10
11
|
}
|
|
@@ -33,7 +34,7 @@ export function renderUploadingState(opts: UploadingStateOptions): UploadingStat
|
|
|
33
34
|
|
|
34
35
|
const label = document.createElement('span');
|
|
35
36
|
label.className = 'blok-image-uploading__label';
|
|
36
|
-
label.textContent = tr(opts.i18n, 'tools.image.uploadingLabel');
|
|
37
|
+
label.textContent = opts.statusLabel ?? tr(opts.i18n, 'tools.image.uploadingLabel');
|
|
37
38
|
|
|
38
39
|
const name = document.createElement('span');
|
|
39
40
|
name.className = 'blok-image-uploading__filename';
|
package/src/tools/index.ts
CHANGED
|
@@ -33,6 +33,8 @@ export { Quote } from './quote';
|
|
|
33
33
|
export { CodeTool as Code } from './code';
|
|
34
34
|
export { ImageTool as Image } from './image';
|
|
35
35
|
export { FileTool as File } from './file';
|
|
36
|
+
export { AudioTool as Audio } from './audio';
|
|
37
|
+
export { VideoTool as Video } from './video';
|
|
36
38
|
export { ColumnList } from './column-list';
|
|
37
39
|
export { Column } from './column';
|
|
38
40
|
export { Columns } from './columns';
|
|
@@ -65,6 +67,8 @@ export const defaultBlockTools = {
|
|
|
65
67
|
code: { inlineToolbar: false },
|
|
66
68
|
image: {},
|
|
67
69
|
file: {},
|
|
70
|
+
audio: {},
|
|
71
|
+
video: {},
|
|
68
72
|
column_list: {},
|
|
69
73
|
column: {},
|
|
70
74
|
embed: {},
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Accept any video type by default; consumers restrict via the `types` config.
|
|
2
|
+
export const DEFAULT_MIME_TYPES = ['video/*'] as const;
|
|
3
|
+
|
|
4
|
+
export const DEFAULT_MAX_SIZE = 100 * 1024 * 1024; // 100 MiB
|
|
5
|
+
|
|
6
|
+
export const DEFAULT_CAPTION_PLACEHOLDER = 'Write a caption…';
|
|
7
|
+
|
|
8
|
+
export const MIN_WIDTH_PERCENT = 10;
|
|
9
|
+
export const MAX_WIDTH_PERCENT = 100;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Hard floor for the player's pixel width. Below this the inline controls
|
|
13
|
+
* (volume slider, timecode, scrubber, view-mode buttons) crush together, so the
|
|
14
|
+
* resize handle clamps here instead of the global 10% percent floor.
|
|
15
|
+
*/
|
|
16
|
+
export const MIN_WIDTH_PX = 440;
|
|
17
|
+
|
|
18
|
+
/** Direct links to a playable video file. */
|
|
19
|
+
export const URL_PATTERN = /^https?:\/\/\S+\.(mp4|webm|ogg|mov|m4v)(\?\S*)?$/i;
|