framefields 2.3.0 → 2.3.1
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/audio/index.mjs +10 -10
- package/dist/{audio-ChRqnFwB.mjs → audio-CS104aUj.mjs} +3 -3
- package/dist/{audio-ChRqnFwB.mjs.map → audio-CS104aUj.mjs.map} +1 -1
- package/dist/{dist-t-NLlnhM.mjs → dist-BOdxAhOT.mjs} +2 -2
- package/dist/{dist-t-NLlnhM.mjs.map → dist-BOdxAhOT.mjs.map} +1 -1
- package/dist/{dist-PwT_Vmax.mjs → dist-jU289ehm.mjs} +108 -26
- package/dist/{dist-PwT_Vmax.mjs.map → dist-jU289ehm.mjs.map} +1 -1
- package/dist/effects/index.mjs +34 -34
- package/dist/{effects-Duoqc_Oa.mjs → effects-BzOlVD-w.mjs} +2 -2
- package/dist/{effects-Duoqc_Oa.mjs.map → effects-BzOlVD-w.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-CgNmeFXh.mjs → fonts-BhlV_3Qt.mjs} +2 -2
- package/dist/{fonts-CgNmeFXh.mjs.map → fonts-BhlV_3Qt.mjs.map} +1 -1
- package/dist/{gpu-1ZpAuQOR.mjs → gpu-BA1Wz_mS.mjs} +2 -2
- package/dist/{gpu-1ZpAuQOR.mjs.map → gpu-BA1Wz_mS.mjs.map} +1 -1
- package/dist/index-AdrZIWT0.d.mts.map +1 -1
- package/dist/index.mjs +48 -48
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-CArsjmkd.mjs → preview-BVyG76gO.mjs} +2 -2
- package/dist/{preview-CArsjmkd.mjs.map → preview-BVyG76gO.mjs.map} +1 -1
- package/dist/preview-engine/{chunk-DLAHSLNX.mjs → chunk-GCTVRM7J.mjs} +14 -14
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/{renderers-527ONFIA.mjs → renderers-3F5AIDEL.mjs} +1 -1
- package/dist/{program-Dd9tJFkY.mjs → program-CCSfHMfh.mjs} +2 -2
- package/dist/{program-Dd9tJFkY.mjs.map → program-CCSfHMfh.mjs.map} +1 -1
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer-1Kv7oA86.mjs +5 -0
- package/dist/{renderer-CC72sZ8l.mjs → renderer-1uLtqb74.mjs} +69 -69
- package/dist/{renderer-CC72sZ8l.mjs.map → renderer-1uLtqb74.mjs.map} +1 -1
- package/dist/{renderer-94byj7Mk.mjs → renderer-4VpA7LfU.mjs} +2 -2
- package/dist/{renderer-94byj7Mk.mjs.map → renderer-4VpA7LfU.mjs.map} +1 -1
- package/dist/{renderer-D8_UYdDb.mjs → renderer-8BM6sJUR.mjs} +2 -2
- package/dist/{renderer-D8_UYdDb.mjs.map → renderer-8BM6sJUR.mjs.map} +1 -1
- package/dist/renderer-AVHJ33nv.mjs +5 -0
- package/dist/{renderer-BVR0mEIT.mjs → renderer-AtLlZMQ9.mjs} +2 -2
- package/dist/{renderer-BVR0mEIT.mjs.map → renderer-AtLlZMQ9.mjs.map} +1 -1
- package/dist/renderer-B8dJGf8R.mjs +6 -0
- package/dist/{renderer-DJQD7tai.mjs → renderer-B93zd3sx.mjs} +2 -2
- package/dist/{renderer-DJQD7tai.mjs.map → renderer-B93zd3sx.mjs.map} +1 -1
- package/dist/{renderer-Ck2pRec0.mjs → renderer-BD7Lmb8h.mjs} +3 -3
- package/dist/{renderer-Ck2pRec0.mjs.map → renderer-BD7Lmb8h.mjs.map} +1 -1
- package/dist/renderer-BEA6nknY.mjs +5 -0
- package/dist/{renderer-yGAk7J9P.mjs → renderer-BFRI5alp.mjs} +3 -3
- package/dist/{renderer-yGAk7J9P.mjs.map → renderer-BFRI5alp.mjs.map} +1 -1
- package/dist/{renderer-C4tUATd_.mjs → renderer-BG5sbTXt.mjs} +3 -3
- package/dist/{renderer-C4tUATd_.mjs.map → renderer-BG5sbTXt.mjs.map} +1 -1
- package/dist/{renderer-CSPpKLi3.mjs → renderer-BI4OMlEx.mjs} +2 -2
- package/dist/{renderer-CSPpKLi3.mjs.map → renderer-BI4OMlEx.mjs.map} +1 -1
- package/dist/renderer-BOfi06L2.mjs +5 -0
- package/dist/renderer-BOhvtAGL.mjs +5 -0
- package/dist/renderer-BQT3GI9g.mjs +5 -0
- package/dist/{renderer-Cvysm2Jg.mjs → renderer-BRwp1kV-.mjs} +3 -3
- package/dist/{renderer-Cvysm2Jg.mjs.map → renderer-BRwp1kV-.mjs.map} +1 -1
- package/dist/{renderer-DWcbrx2M.mjs → renderer-BVUTOGHs.mjs} +2 -2
- package/dist/{renderer-DWcbrx2M.mjs.map → renderer-BVUTOGHs.mjs.map} +1 -1
- package/dist/renderer-BXmStgeT.mjs +5 -0
- package/dist/renderer-Bajxo7Nt.mjs +5 -0
- package/dist/{renderer-DIqwz7dV.mjs → renderer-Bel1UHA5.mjs} +2 -2
- package/dist/{renderer-Dvg5nbgU.mjs → renderer-BetA_iVd.mjs} +3 -3
- package/dist/{renderer-Dvg5nbgU.mjs.map → renderer-BetA_iVd.mjs.map} +1 -1
- package/dist/{renderer-BId5hBLb.mjs → renderer-BmDpyiII.mjs} +3 -3
- package/dist/{renderer-BId5hBLb.mjs.map → renderer-BmDpyiII.mjs.map} +1 -1
- package/dist/{renderer-D-yNHLG7.mjs → renderer-BonWt8jF.mjs} +3 -3
- package/dist/{renderer-D-yNHLG7.mjs.map → renderer-BonWt8jF.mjs.map} +1 -1
- package/dist/{renderer-CI9Pq77W.mjs → renderer-BpEsZG3t.mjs} +3 -3
- package/dist/{renderer-CI9Pq77W.mjs.map → renderer-BpEsZG3t.mjs.map} +1 -1
- package/dist/{renderer-DpQaiH6C.mjs → renderer-BvBIHi6N.mjs} +2 -2
- package/dist/{renderer-DpQaiH6C.mjs.map → renderer-BvBIHi6N.mjs.map} +1 -1
- package/dist/{renderer-D6YcQTLI.mjs → renderer-BvvuGfZk.mjs} +3 -3
- package/dist/{renderer-D6YcQTLI.mjs.map → renderer-BvvuGfZk.mjs.map} +1 -1
- package/dist/renderer-BzRR0KMm.mjs +5 -0
- package/dist/{renderer-DzOzVxNS.mjs → renderer-Bzl0s07U.mjs} +2 -2
- package/dist/{renderer-DzOzVxNS.mjs.map → renderer-Bzl0s07U.mjs.map} +1 -1
- package/dist/{renderer-CKSdl0Xf.mjs → renderer-C39GD6jP.mjs} +3 -3
- package/dist/{renderer-CKSdl0Xf.mjs.map → renderer-C39GD6jP.mjs.map} +1 -1
- package/dist/renderer-C3Gjy2iE.mjs +5 -0
- package/dist/{renderer-CS-goRD3.mjs → renderer-C3lPwajT.mjs} +3 -3
- package/dist/{renderer-CS-goRD3.mjs.map → renderer-C3lPwajT.mjs.map} +1 -1
- package/dist/renderer-C5hQgkz-.mjs +5 -0
- package/dist/{renderer-BY08hHFS.mjs → renderer-C6cF5seJ.mjs} +2 -2
- package/dist/{renderer-BY08hHFS.mjs.map → renderer-C6cF5seJ.mjs.map} +1 -1
- package/dist/{renderer-UT0CcmMZ.mjs → renderer-C8GZ0pCV.mjs} +3 -3
- package/dist/{renderer-UT0CcmMZ.mjs.map → renderer-C8GZ0pCV.mjs.map} +1 -1
- package/dist/{renderer-CWQ-Bct7.mjs → renderer-CFe9pZFN.mjs} +2 -2
- package/dist/{renderer-CWQ-Bct7.mjs.map → renderer-CFe9pZFN.mjs.map} +1 -1
- package/dist/renderer-CLF-MiOA.mjs +5 -0
- package/dist/renderer-CLa43fCd.mjs +5 -0
- package/dist/{renderer-zQIB2VZZ.mjs → renderer-CLdwOhST.mjs} +2 -2
- package/dist/{renderer-zQIB2VZZ.mjs.map → renderer-CLdwOhST.mjs.map} +1 -1
- package/dist/renderer-CMK1d6w_.mjs +5 -0
- package/dist/{renderer-CLUyYFqS.mjs → renderer-CMdtUn5o.mjs} +2 -2
- package/dist/{renderer-CLUyYFqS.mjs.map → renderer-CMdtUn5o.mjs.map} +1 -1
- package/dist/{renderer-DNaHFctD.mjs → renderer-CNYfB5cC.mjs} +2 -2
- package/dist/{renderer-DNaHFctD.mjs.map → renderer-CNYfB5cC.mjs.map} +1 -1
- package/dist/renderer-CPEQOe3u.mjs +5 -0
- package/dist/{renderer-257LxOyx.mjs → renderer-CWx3Kg79.mjs} +3 -3
- package/dist/{renderer-257LxOyx.mjs.map → renderer-CWx3Kg79.mjs.map} +1 -1
- package/dist/{renderer-DKXK5hDm.mjs → renderer-CdOy3EBJ.mjs} +2 -2
- package/dist/{renderer-DKXK5hDm.mjs.map → renderer-CdOy3EBJ.mjs.map} +1 -1
- package/dist/{renderer-CraudZUC.mjs → renderer-Celrh689.mjs} +3 -3
- package/dist/{renderer-CraudZUC.mjs.map → renderer-Celrh689.mjs.map} +1 -1
- package/dist/renderer-CemfjOM9.mjs +5 -0
- package/dist/{renderer-_AuL8mAi.mjs → renderer-ChloaI6P.mjs} +3 -3
- package/dist/{renderer-_AuL8mAi.mjs.map → renderer-ChloaI6P.mjs.map} +1 -1
- package/dist/{renderer-BmTDXIUI.mjs → renderer-CiMpdh0s.mjs} +2 -2
- package/dist/{renderer-BmTDXIUI.mjs.map → renderer-CiMpdh0s.mjs.map} +1 -1
- package/dist/renderer-CkcrScs9.mjs +5 -0
- package/dist/{renderer-BEdc-7JW.mjs → renderer-Cn6VlWHZ.mjs} +3 -3
- package/dist/{renderer-BEdc-7JW.mjs.map → renderer-Cn6VlWHZ.mjs.map} +1 -1
- package/dist/{renderer-BpdzhZE7.mjs → renderer-CqewgazK.mjs} +3 -3
- package/dist/{renderer-BpdzhZE7.mjs.map → renderer-CqewgazK.mjs.map} +1 -1
- package/dist/{renderer-aCDIEYb3.mjs → renderer-Cu5k5D9N.mjs} +2 -2
- package/dist/{renderer-aCDIEYb3.mjs.map → renderer-Cu5k5D9N.mjs.map} +1 -1
- package/dist/{renderer-D1MOTlWS.mjs → renderer-CuphUktB.mjs} +2 -2
- package/dist/{renderer-D1MOTlWS.mjs.map → renderer-CuphUktB.mjs.map} +1 -1
- package/dist/renderer-CwrLihY6.mjs +5 -0
- package/dist/{renderer-CrUudSLP.mjs → renderer-D1Jt-c3F.mjs} +2 -2
- package/dist/{renderer-CrUudSLP.mjs.map → renderer-D1Jt-c3F.mjs.map} +1 -1
- package/dist/{renderer-OxafT7Xm.mjs → renderer-D1wd0FhZ.mjs} +5 -5
- package/dist/{renderer-OxafT7Xm.mjs.map → renderer-D1wd0FhZ.mjs.map} +1 -1
- package/dist/{renderer-JiEpssIz.mjs → renderer-D26S5hUh.mjs} +2 -2
- package/dist/{renderer-JiEpssIz.mjs.map → renderer-D26S5hUh.mjs.map} +1 -1
- package/dist/renderer-D4S6i2MC.mjs +5 -0
- package/dist/{renderer-Dju3SEAJ.mjs → renderer-D7ss6fLB.mjs} +3 -3
- package/dist/{renderer-Dju3SEAJ.mjs.map → renderer-D7ss6fLB.mjs.map} +1 -1
- package/dist/renderer-DB8F0XoP.mjs +5 -0
- package/dist/{renderer-7OvgLE8w.mjs → renderer-DCGLXnYW.mjs} +2 -2
- package/dist/{renderer-CIMI33Yd.mjs → renderer-DCYabwlC.mjs} +2 -2
- package/dist/{renderer-CIMI33Yd.mjs.map → renderer-DCYabwlC.mjs.map} +1 -1
- package/dist/renderer-DGpVLJOn.mjs +5 -0
- package/dist/renderer-DGxibeSa.mjs +5 -0
- package/dist/renderer-DJQm3bAW.mjs +5 -0
- package/dist/{renderer-B3c-j-e5.mjs → renderer-DMZ5aLU1.mjs} +2 -2
- package/dist/{renderer-B3c-j-e5.mjs.map → renderer-DMZ5aLU1.mjs.map} +1 -1
- package/dist/renderer-DMftVSfX.mjs +5 -0
- package/dist/renderer-DNpovOd8.mjs +5 -0
- package/dist/{renderer-xezE7IZX.mjs → renderer-DOWekunR.mjs} +3 -3
- package/dist/{renderer-xezE7IZX.mjs.map → renderer-DOWekunR.mjs.map} +1 -1
- package/dist/{renderer-CKpwEo1w.mjs → renderer-DPWeKe_x.mjs} +3 -3
- package/dist/{renderer-CKpwEo1w.mjs.map → renderer-DPWeKe_x.mjs.map} +1 -1
- package/dist/renderer-DSHlvKQk.mjs +5 -0
- package/dist/{renderer-2BnBo6CX.mjs → renderer-DUBb7D17.mjs} +3 -3
- package/dist/{renderer-2BnBo6CX.mjs.map → renderer-DUBb7D17.mjs.map} +1 -1
- package/dist/renderer-DYtrdR2p.mjs +5 -0
- package/dist/{renderer-CwwmwM7J.mjs → renderer-DaCsT-XU.mjs} +3 -3
- package/dist/{renderer-CwwmwM7J.mjs.map → renderer-DaCsT-XU.mjs.map} +1 -1
- package/dist/{renderer-BmQbSQHf.mjs → renderer-DcAfp1Er.mjs} +2 -2
- package/dist/{renderer-BmQbSQHf.mjs.map → renderer-DcAfp1Er.mjs.map} +1 -1
- package/dist/{renderer-0L9MEb3A.mjs → renderer-DdlaBsk_.mjs} +2 -2
- package/dist/{renderer-0L9MEb3A.mjs.map → renderer-DdlaBsk_.mjs.map} +1 -1
- package/dist/{renderer-72A4SvOE.mjs → renderer-DerDxKK3.mjs} +3 -3
- package/dist/{renderer-72A4SvOE.mjs.map → renderer-DerDxKK3.mjs.map} +1 -1
- package/dist/{renderer-DuxzqfoE.mjs → renderer-DfkWYUTX.mjs} +2 -2
- package/dist/{renderer-ChoYV7Ko.mjs → renderer-Dh-OF6aH.mjs} +2 -2
- package/dist/{renderer-ChoYV7Ko.mjs.map → renderer-Dh-OF6aH.mjs.map} +1 -1
- package/dist/{renderer-DZnUiiBp.mjs → renderer-Dk-THZHp.mjs} +3 -3
- package/dist/{renderer-DZnUiiBp.mjs.map → renderer-Dk-THZHp.mjs.map} +1 -1
- package/dist/{renderer-BK32cV7E.mjs → renderer-DpWRj6zF.mjs} +3 -3
- package/dist/{renderer-BK32cV7E.mjs.map → renderer-DpWRj6zF.mjs.map} +1 -1
- package/dist/{renderer-D1T7A3NF.mjs → renderer-DpwlN4LH.mjs} +3 -3
- package/dist/{renderer-D1T7A3NF.mjs.map → renderer-DpwlN4LH.mjs.map} +1 -1
- package/dist/{renderer-Dvq11SEA.mjs → renderer-Dq4aO7az.mjs} +2 -2
- package/dist/{renderer-Dvq11SEA.mjs.map → renderer-Dq4aO7az.mjs.map} +1 -1
- package/dist/renderer-DuSImLUz.mjs +5 -0
- package/dist/{renderer-aN60v8jR.mjs → renderer-DukD7S3w.mjs} +2 -2
- package/dist/{renderer-aN60v8jR.mjs.map → renderer-DukD7S3w.mjs.map} +1 -1
- package/dist/{renderer-mpInX4Iy.mjs → renderer-FXUCKps6.mjs} +3 -3
- package/dist/{renderer-mpInX4Iy.mjs.map → renderer-FXUCKps6.mjs.map} +1 -1
- package/dist/renderer-FbyMYKXe.mjs +5 -0
- package/dist/{renderer-BHrqEgIA.mjs → renderer-HMl2V4iM.mjs} +3 -3
- package/dist/{renderer-BHrqEgIA.mjs.map → renderer-HMl2V4iM.mjs.map} +1 -1
- package/dist/{renderer-D0xLIq1r.mjs → renderer-LM_XIKl1.mjs} +3 -3
- package/dist/{renderer-D0xLIq1r.mjs.map → renderer-LM_XIKl1.mjs.map} +1 -1
- package/dist/renderer-NMFv7Auz.mjs +5 -0
- package/dist/{renderer-YyEBKPcE.mjs → renderer-O1b-oYJE.mjs} +2 -2
- package/dist/renderer-P3vpdUnb.mjs +5 -0
- package/dist/{renderer-EhCkD11e.mjs → renderer-PknbdJyL.mjs} +3 -3
- package/dist/{renderer-EhCkD11e.mjs.map → renderer-PknbdJyL.mjs.map} +1 -1
- package/dist/renderer-QTOm26Lg.mjs +5 -0
- package/dist/{renderer-CvOzuDX3.mjs → renderer-YJ3Yukou.mjs} +3 -3
- package/dist/{renderer-CvOzuDX3.mjs.map → renderer-YJ3Yukou.mjs.map} +1 -1
- package/dist/{renderer-DNYSf2Fl.mjs → renderer-YdLL2o6d.mjs} +2 -2
- package/dist/{renderer-DNYSf2Fl.mjs.map → renderer-YdLL2o6d.mjs.map} +1 -1
- package/dist/renderer-ahzhMa5q.mjs +5 -0
- package/dist/{renderer-B2aXfdW_.mjs → renderer-c-bwxMde.mjs} +2 -2
- package/dist/{renderer-B2aXfdW_.mjs.map → renderer-c-bwxMde.mjs.map} +1 -1
- package/dist/renderer-dThfTNge.mjs +5 -0
- package/dist/{renderer-B3ypX3MH.mjs → renderer-dUkOBfGB.mjs} +3 -3
- package/dist/{renderer-B3ypX3MH.mjs.map → renderer-dUkOBfGB.mjs.map} +1 -1
- package/dist/renderer-dgAS_k7B.mjs +5 -0
- package/dist/{renderer-BEpANdcO.mjs → renderer-g-ui08Lh.mjs} +3 -3
- package/dist/{renderer-BEpANdcO.mjs.map → renderer-g-ui08Lh.mjs.map} +1 -1
- package/dist/{renderer-DyPgVl1l.mjs → renderer-kSs8VtY7.mjs} +3 -3
- package/dist/{renderer-DyPgVl1l.mjs.map → renderer-kSs8VtY7.mjs.map} +1 -1
- package/dist/{renderer-CxP2e6Ov.mjs → renderer-pPiQwFYh.mjs} +2 -2
- package/dist/{renderer-CxP2e6Ov.mjs.map → renderer-pPiQwFYh.mjs.map} +1 -1
- package/dist/{renderer-C-Qj0BnT.mjs → renderer-wL-ly4fT.mjs} +3 -3
- package/dist/{renderer-C-Qj0BnT.mjs.map → renderer-wL-ly4fT.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-i6u_rhCX.mjs → renderers-CP8CFWDs-CVHwMTiz.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-i6u_rhCX.mjs.map → renderers-CP8CFWDs-CVHwMTiz.mjs.map} +1 -1
- package/dist/signals/index.mjs +4 -4
- package/package.json +56 -56
- package/dist/renderer-0lp9ClNc.mjs +0 -5
- package/dist/renderer-4g_BfiKp.mjs +0 -5
- package/dist/renderer-7Aw6AHqW.mjs +0 -5
- package/dist/renderer-B82v8PyC.mjs +0 -5
- package/dist/renderer-B8BDMJNz.mjs +0 -5
- package/dist/renderer-BCPRrhP8.mjs +0 -5
- package/dist/renderer-BFhzO6En.mjs +0 -5
- package/dist/renderer-BH0KF-y-.mjs +0 -6
- package/dist/renderer-BTI5ybyH.mjs +0 -5
- package/dist/renderer-Ba7LH8U2.mjs +0 -5
- package/dist/renderer-BcQBlfhC.mjs +0 -5
- package/dist/renderer-BdMJzCTz.mjs +0 -5
- package/dist/renderer-Bxi2j-tG.mjs +0 -5
- package/dist/renderer-CCn5ISVM.mjs +0 -5
- package/dist/renderer-CDRsdhg9.mjs +0 -5
- package/dist/renderer-CiCK8ZG_.mjs +0 -5
- package/dist/renderer-CsEk9TFz.mjs +0 -5
- package/dist/renderer-D1gx_-hi.mjs +0 -5
- package/dist/renderer-D5MCGNAF.mjs +0 -5
- package/dist/renderer-DD_MzvM-.mjs +0 -5
- package/dist/renderer-DP7YoZ0K.mjs +0 -5
- package/dist/renderer-DXiWvKij.mjs +0 -5
- package/dist/renderer-Dc6fW-o1.mjs +0 -5
- package/dist/renderer-DiurlsNT.mjs +0 -5
- package/dist/renderer-DvCUdgVz.mjs +0 -5
- package/dist/renderer-IiwAh9-K.mjs +0 -5
- package/dist/renderer-JlGXqH0E.mjs +0 -5
- package/dist/renderer-TZFKKgL1.mjs +0 -5
- package/dist/renderer-aEecoNPX.mjs +0 -5
- package/dist/renderer-ewhliYYP.mjs +0 -5
- package/dist/renderer-hQc6GgTi.mjs +0 -5
- package/dist/renderer-iuX0RZIi.mjs +0 -5
- package/dist/renderer-j4vkTzHa.mjs +0 -5
- package/dist/renderer-msPjwx_9.mjs +0 -5
- package/dist/renderer-pI2ndu-b.mjs +0 -5
- package/dist/renderer-x1OGMhsC.mjs +0 -5
|
@@ -28205,43 +28205,125 @@ function organizeGlyphPolygons({ contours: glyphContours, simplified }) {
|
|
|
28205
28205
|
}
|
|
28206
28206
|
return polygons;
|
|
28207
28207
|
}
|
|
28208
|
+
/** Where segments ab and cd cross strictly inside both, or null. */
|
|
28209
|
+
function segmentCrossing(a, b, c, d) {
|
|
28210
|
+
const rx = b.x - a.x;
|
|
28211
|
+
const ry = b.y - a.y;
|
|
28212
|
+
const sx = d.x - c.x;
|
|
28213
|
+
const sy = d.y - c.y;
|
|
28214
|
+
const den = rx * sy - ry * sx;
|
|
28215
|
+
if (Math.abs(den) < 1e-12) return null;
|
|
28216
|
+
const t = ((c.x - a.x) * sy - (c.y - a.y) * sx) / den;
|
|
28217
|
+
const u = ((c.x - a.x) * ry - (c.y - a.y) * rx) / den;
|
|
28218
|
+
const eps = 1e-9;
|
|
28219
|
+
if (t <= eps || t >= 1 - eps || u <= eps || u >= 1 - eps) return null;
|
|
28220
|
+
return {
|
|
28221
|
+
x: a.x + rx * t,
|
|
28222
|
+
y: a.y + ry * t
|
|
28223
|
+
};
|
|
28224
|
+
}
|
|
28225
|
+
/**
|
|
28226
|
+
* Splits a contour that crosses itself into simple loops: at each crossing
|
|
28227
|
+
* the contour is cut into the part between the two crossing edges and the
|
|
28228
|
+
* rest. Font outlines meant to be filled with the nonzero rule (variable
|
|
28229
|
+
* fonts, overlapping strokes) often cross themselves, and a triangulator
|
|
28230
|
+
* given such a contour fills the wrong areas (a "V" with its notch filled).
|
|
28231
|
+
*/
|
|
28232
|
+
function untangleContour(contour, depth = 0) {
|
|
28233
|
+
const n = contour.length;
|
|
28234
|
+
if (n < 3) return [];
|
|
28235
|
+
if (depth > 64) return [contour];
|
|
28236
|
+
for (let i = 0; i < n; i++) {
|
|
28237
|
+
const a = contour[i];
|
|
28238
|
+
const b = contour[(i + 1) % n];
|
|
28239
|
+
for (let j = i + 2; j < n; j++) {
|
|
28240
|
+
if (i === 0 && j === n - 1) continue;
|
|
28241
|
+
const x = segmentCrossing(a, b, contour[j], contour[(j + 1) % n]);
|
|
28242
|
+
if (!x) continue;
|
|
28243
|
+
const inner = [x, ...contour.slice(i + 1, j + 1)];
|
|
28244
|
+
const outer = [
|
|
28245
|
+
x,
|
|
28246
|
+
...contour.slice(j + 1),
|
|
28247
|
+
...contour.slice(0, i + 1)
|
|
28248
|
+
];
|
|
28249
|
+
return [...untangleContour(inner, depth + 1), ...untangleContour(outer, depth + 1)];
|
|
28250
|
+
}
|
|
28251
|
+
}
|
|
28252
|
+
return Math.abs(computeContourSignedArea(contour)) > 1e-9 ? [contour] : [];
|
|
28253
|
+
}
|
|
28254
|
+
/** Nonzero winding number of a set of contours around a point. */
|
|
28255
|
+
function windingNumber(p, contours) {
|
|
28256
|
+
let w = 0;
|
|
28257
|
+
for (const c of contours) for (let i = 0; i < c.length; i++) {
|
|
28258
|
+
const a = c[i];
|
|
28259
|
+
const b = c[(i + 1) % c.length];
|
|
28260
|
+
const side = (b.x - a.x) * (p.y - a.y) - (p.x - a.x) * (b.y - a.y);
|
|
28261
|
+
if (a.y <= p.y) {
|
|
28262
|
+
if (b.y > p.y && side > 0) w++;
|
|
28263
|
+
} else if (b.y <= p.y && side < 0) w--;
|
|
28264
|
+
}
|
|
28265
|
+
return w;
|
|
28266
|
+
}
|
|
28267
|
+
/** A point just inside a simple loop, next to its longest edge. */
|
|
28268
|
+
function pointJustInside(loop) {
|
|
28269
|
+
let best = 0;
|
|
28270
|
+
let bestLen = -1;
|
|
28271
|
+
for (let i = 0; i < loop.length; i++) {
|
|
28272
|
+
const a$1 = loop[i];
|
|
28273
|
+
const b$1 = loop[(i + 1) % loop.length];
|
|
28274
|
+
const len = Math.hypot(b$1.x - a$1.x, b$1.y - a$1.y);
|
|
28275
|
+
if (len > bestLen) {
|
|
28276
|
+
bestLen = len;
|
|
28277
|
+
best = i;
|
|
28278
|
+
}
|
|
28279
|
+
}
|
|
28280
|
+
const a = loop[best];
|
|
28281
|
+
const b = loop[(best + 1) % loop.length];
|
|
28282
|
+
const mx = (a.x + b.x) / 2;
|
|
28283
|
+
const my = (a.y + b.y) / 2;
|
|
28284
|
+
const eps = Math.max(1e-4, Math.min(.01, bestLen * .001));
|
|
28285
|
+
const nx = -(b.y - a.y) / bestLen * eps;
|
|
28286
|
+
const ny = (b.x - a.x) / bestLen * eps;
|
|
28287
|
+
const p = {
|
|
28288
|
+
x: mx + nx,
|
|
28289
|
+
y: my + ny
|
|
28290
|
+
};
|
|
28291
|
+
return isPointInsidePolygon(p, loop) ? p : {
|
|
28292
|
+
x: mx - nx,
|
|
28293
|
+
y: my - ny
|
|
28294
|
+
};
|
|
28295
|
+
}
|
|
28208
28296
|
/**
|
|
28209
|
-
* For outlines that
|
|
28210
|
-
*
|
|
28211
|
-
*
|
|
28212
|
-
*
|
|
28297
|
+
* For outlines that were not simplified (no skia, as in the browser):
|
|
28298
|
+
* contours may cross themselves and each other, and are meant to be filled
|
|
28299
|
+
* with the nonzero rule. Self-crossings are split into simple loops; a loop
|
|
28300
|
+
* whose inside is filled under the nonzero rule becomes an outline, and one
|
|
28301
|
+
* that is empty (a counter) becomes a hole of the smallest outline around it.
|
|
28302
|
+
* Overlapping outlines become separate solids, which look the same once
|
|
28303
|
+
* extruded.
|
|
28213
28304
|
*/
|
|
28214
28305
|
function organizeByWinding(glyphContours) {
|
|
28215
|
-
const
|
|
28216
|
-
const signed = computeContourSignedArea(contour);
|
|
28217
|
-
return {
|
|
28218
|
-
contour,
|
|
28219
|
-
signed,
|
|
28220
|
-
area: Math.abs(signed)
|
|
28221
|
-
};
|
|
28222
|
-
});
|
|
28223
|
-
if (contours.length === 0) return [];
|
|
28224
|
-
contours.sort((a, b) => b.area - a.area);
|
|
28225
|
-
const filled = Math.sign(contours[0].signed);
|
|
28306
|
+
const loops = glyphContours.flatMap((c) => untangleContour(c));
|
|
28226
28307
|
const polygons = [];
|
|
28227
|
-
|
|
28228
|
-
|
|
28308
|
+
const holes = [];
|
|
28309
|
+
for (const loop of loops) if (windingNumber(pointJustInside(loop), glyphContours) !== 0) polygons.push({
|
|
28310
|
+
outer: loop,
|
|
28229
28311
|
holes: []
|
|
28230
28312
|
});
|
|
28231
|
-
|
|
28232
|
-
|
|
28233
|
-
const
|
|
28234
|
-
const
|
|
28313
|
+
else holes.push(loop);
|
|
28314
|
+
for (const hole of holes) {
|
|
28315
|
+
const area = Math.abs(computeContourSignedArea(hole));
|
|
28316
|
+
const probe = pointJustInside(hole);
|
|
28235
28317
|
let home;
|
|
28236
28318
|
let homeArea = Number.POSITIVE_INFINITY;
|
|
28237
28319
|
for (const poly of polygons) {
|
|
28238
|
-
const
|
|
28239
|
-
if (
|
|
28320
|
+
const outerArea = Math.abs(computeContourSignedArea(poly.outer));
|
|
28321
|
+
if (outerArea > area && outerArea < homeArea && isPointInsidePolygon(probe, poly.outer)) {
|
|
28240
28322
|
home = poly;
|
|
28241
|
-
homeArea =
|
|
28323
|
+
homeArea = outerArea;
|
|
28242
28324
|
}
|
|
28243
28325
|
}
|
|
28244
|
-
home?.holes.push(
|
|
28326
|
+
home?.holes.push(hole);
|
|
28245
28327
|
}
|
|
28246
28328
|
return polygons;
|
|
28247
28329
|
}
|
|
@@ -31053,4 +31135,4 @@ if (typeof globalThis !== "undefined") globalThis.__GATEWAI_DELAYS__ = globalThi
|
|
|
31053
31135
|
|
|
31054
31136
|
//#endregion
|
|
31055
31137
|
export { resolveTextSpans as $, TextSelectorSchema as $t, ensureDevice as A, sampleAudioSpectrumScale as An, GlyphAnchorGroupingSchema as At, loadModel3D as B, SignalRegistry as Bt, drawGifNode as C, evaluateTypewriterState as Cn, AudioSpectrumTypographySchema as Ct, drawSignalNode as D, getScramblePool as Dn, EnhancedTextNodeSchema as Dt, drawParagraphNode as E, generatePathSegments as En, DynamicStrokePropertiesSchema as Et, getRenderer2D as F, ParticleDissolveConfigSchema as Ft, parseColor as G, TextAnimatorBuilder as Gt, lutStore as H, Spatial3DPropertiesSchema as Ht, initHeadlessWebGPU as I, SelectorBasedOnSchema as It, parseOBJ as J, TextPathBuilder as Jt, parseFBX as K, TextCursorConfigSchema as Kt, inputStore as L, SelectorModeSchema as Lt, generateExtrudedTextGeometry as M, samplePathChainGeometry as Mn, KineticMarqueeConfigSchema as Mt, getHeadlessFontPath as N, signalRegistry as Nn, LineSpacingDynamicsSchema as Nt, drawSvgNode as O, getShuffledOrder as On, ExpressionSelectorSchema as Ot, getPrimitiveGeometry as P, waveToCubicBeziers as Pn, LongShadowConfigSchema as Pt, registerHeadlessFont as Q, TextScrambleConfigSchema as Qt, jointMatrices as R, SelectorShapeSchema as Rt, drawCaptionNode as S, evaluateSpringProgress as Sn, AudioSignalComputePipeline as St, drawLottieNode as T, generateArcLengthLUT as Tn, CubicBezierSegmentSchema as Tt, measureMaxCaptionHeight as U, SpringPhysicsSchema as Ut, loadOBJ as V, SkewPropertiesSchema as Vt, mediaDecoderCache as W, TextAnchorConfigSchema as Wt, poseNodes as X, TextPathSourceSchema as Xt, parseSvgPathToSegments as Y, TextPathOptionsSchema as Yt, probeVideoSize as Z, TextRangeSelectorSchema as Zt, buildShapeSvgPath as _, evaluateCubicBezierDerivative as _n, AdvancedTextAnimatorBuilder as _t, GlassPipeline as a, Vec2Schema as an, resolveMediaSourceUrl as at, colorMatrixWgsl as b, evaluateSelectorCombination as bn, AnchorPresetSchema as bt, Renderer2D as c, buildPathLUT as cn, LIGHT_UNIFORM_SIZE_BYTES as ct, ScreenSpaceRelightPipeline as d, computeLineLeadingDisplacement as dn, Matrix4Math as dt, TextSignalSelectorSchema as en, shaderStore as et, ShadowPipeline as f, computeRangeSelectorWeight as fn, Path3D as ft, WebGPUAudioProcessor as g, evaluateCubicBezier as gn, AETextAnimatorSchema as gt, SlugPipeline as h, ellipseToCubicBeziers as hn, resolveEnvironment as ht, EffectPipeline as i, VariableFontAxesSchema as in, GetFontAssetUrl as it, fitSpansToText as j, sampleCurveGeometry as jn, GlyphAnchorPointSchema as jt, drawVideoNode as k, parseSvgPathToCubicBeziers as kn, ExtendedGlyphPropertiesSchema as kt, Renderer3D as l, buildWGSLSignalFn as ln, Light3D as lt, SlugGeometry as m, distanceToCurveParameter as mn, parseColorToRgb as mt, AudioLatentTrackCache as n, TypewriterAnimatorSchema as nn, srtLoader as nt, MotionBlurPipeline as o, VolumetricFormationConfigSchema as on, Camera3D as ot, SlugFontCache as p, deterministicWigglyNoise as pn, Vector3Math as pt, parseMTL as q, TextCursorStyleSchema as qt, AudioMeshDeformPipeline as r, TypingCadenceSchema as rn, textureCache as rt, NodeSurfaceProvider as s, VolumetricFormationModeSchema as sn, ENVIRONMENT_PRESETS as st, AudioLatentEngine as t, TextWigglySelectorSchema as tn, spansText as tt, SSAOPipeline as u, computeAnchorPivotOffset as un, MAX_LIGHTS as ut, clearAllVideoCache as v, evaluateExpressionSelector as vn, AdvancedTextAnimatorSchema as vt, drawImageNode as w, evaluateVolumetricFormation as wn, ChromaticGlitchConfigSchema as wt, describeGpu as x, evaluateSkewMatrix as xn, AnimatableGlyphPropsSchema as xt, clearHeadlessFonts as y, evaluateMarqueeOffset as yn, AnchorGroupingSchema as yt, loadFBX as z, SelectorUnitsSchema as zt };
|
|
31056
|
-
//# sourceMappingURL=dist-
|
|
31138
|
+
//# sourceMappingURL=dist-jU289ehm.mjs.map
|