framefields 2.0.2 → 2.0.3
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 +6 -6
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-x28ZgQBP.mjs → audio-DbxiKp5p.mjs} +3 -3
- package/dist/{audio-x28ZgQBP.mjs.map → audio-DbxiKp5p.mjs.map} +1 -1
- package/dist/{dist-1iUYuPct.mjs → dist-CGIme1vZ.mjs} +2 -2
- package/dist/{dist-1iUYuPct.mjs.map → dist-CGIme1vZ.mjs.map} +1 -1
- package/dist/{dist-gjHmorxL.mjs → dist-DuIv211_.mjs} +16 -2
- package/dist/dist-DuIv211_.mjs.map +1 -0
- package/dist/effects/index.d.mts +1 -1
- package/dist/effects/index.mjs +23 -23
- package/dist/{effects-CHWORCYd.mjs → effects-B_APkGJJ.mjs} +2 -2
- package/dist/{effects-CHWORCYd.mjs.map → effects-B_APkGJJ.mjs.map} +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-DrGTBJJk.mjs → fonts-CwwIhe1o.mjs} +2 -2
- package/dist/{fonts-DrGTBJJk.mjs.map → fonts-CwwIhe1o.mjs.map} +1 -1
- package/dist/{index-DKFGNyMB.d.mts → index-CnAk1hTw.d.mts} +8 -1
- package/dist/{index-DKFGNyMB.d.mts.map → index-CnAk1hTw.d.mts.map} +1 -1
- package/dist/index-D2jDC7O5.d.mts.map +1 -1
- package/dist/{index-B0BNPEoH.d.mts → index-D7llSs-m.d.mts} +2 -2
- package/dist/index-D7llSs-m.d.mts.map +1 -0
- package/dist/index.d.mts +68 -61
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +38 -38
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +1 -1
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-uQM210iy.mjs → preview-D7TqF9i_.mjs} +2 -2
- package/dist/{preview-uQM210iy.mjs.map → preview-D7TqF9i_.mjs.map} +1 -1
- package/dist/preview-engine/{chunk-MT2DZQHO.mjs → chunk-4Q7JG6WJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-SWD76532.mjs → chunk-PCB2VB5K.mjs} +2 -2
- package/dist/preview-engine/{chunk-DPST2XLC.mjs → chunk-QARN3FLA.mjs} +6 -6
- package/dist/preview-engine/chunk-UC7CSW2A.mjs +1 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-YVN3EIOP.mjs → renderers-76MPTVZK.mjs} +1 -1
- package/dist/{program-Dl510wmI.mjs → program-Cjva0Nw2.mjs} +2 -2
- package/dist/{program-Dl510wmI.mjs.map → program-Cjva0Nw2.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +1 -1
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer-0kXgErRZ.mjs +3 -0
- package/dist/{renderer-B9-QSJcG.mjs → renderer-1ccLpvz3.mjs} +2 -2
- package/dist/{renderer-B9-QSJcG.mjs.map → renderer-1ccLpvz3.mjs.map} +1 -1
- package/dist/{renderer-I-Sw3JBB.mjs → renderer-8dDNjgzG.mjs} +2 -2
- package/dist/{renderer-I-Sw3JBB.mjs.map → renderer-8dDNjgzG.mjs.map} +1 -1
- package/dist/{renderer-DxjVQV6f.mjs → renderer-9ZcinEHr.mjs} +2 -2
- package/dist/{renderer-DxjVQV6f.mjs.map → renderer-9ZcinEHr.mjs.map} +1 -1
- package/dist/{renderer-CB5aWAaf.mjs → renderer-B0DTz9Fr.mjs} +2 -2
- package/dist/{renderer-CB5aWAaf.mjs.map → renderer-B0DTz9Fr.mjs.map} +1 -1
- package/dist/{renderer-B1CvhW4p.mjs → renderer-B5Tq5MWB.mjs} +2 -2
- package/dist/{renderer-B1CvhW4p.mjs.map → renderer-B5Tq5MWB.mjs.map} +1 -1
- package/dist/{renderer-vCFTm0oe.mjs → renderer-B6YiOv7l.mjs} +2 -2
- package/dist/{renderer-vCFTm0oe.mjs.map → renderer-B6YiOv7l.mjs.map} +1 -1
- package/dist/{renderer-7DOcIxFG.mjs → renderer-B8ugHLDi.mjs} +2 -2
- package/dist/{renderer-7DOcIxFG.mjs.map → renderer-B8ugHLDi.mjs.map} +1 -1
- package/dist/renderer-B9e4XyZy.mjs +3 -0
- package/dist/renderer-BBhCaxS2.mjs +3 -0
- package/dist/{renderer-B_NuVaIP.mjs → renderer-BBweieq9.mjs} +2 -2
- package/dist/{renderer-B_NuVaIP.mjs.map → renderer-BBweieq9.mjs.map} +1 -1
- package/dist/renderer-BC0iMueW.mjs +3 -0
- package/dist/renderer-BGd1VV9J.mjs +3 -0
- package/dist/renderer-BJKbasW6.mjs +3 -0
- package/dist/{renderer-OWQmmg4Z.mjs → renderer-BQgAn_oc.mjs} +2 -2
- package/dist/{renderer-OWQmmg4Z.mjs.map → renderer-BQgAn_oc.mjs.map} +1 -1
- package/dist/renderer-BV3mlZMX.mjs +3 -0
- package/dist/{renderer-ByDhfrPE.mjs → renderer-BXDrwZNT.mjs} +2 -2
- package/dist/{renderer-ByDhfrPE.mjs.map → renderer-BXDrwZNT.mjs.map} +1 -1
- package/dist/{renderer-CwQhzcUn.mjs → renderer-BcckaXum.mjs} +2 -2
- package/dist/{renderer-CwQhzcUn.mjs.map → renderer-BcckaXum.mjs.map} +1 -1
- package/dist/{renderer-BsgIcBKH.mjs → renderer-BgAzIw8w.mjs} +2 -2
- package/dist/{renderer-BsgIcBKH.mjs.map → renderer-BgAzIw8w.mjs.map} +1 -1
- package/dist/renderer-BgO4XWZz.mjs +3 -0
- package/dist/{renderer-Tp6OXWNZ.mjs → renderer-Bh1pfpzz.mjs} +2 -2
- package/dist/{renderer-Tp6OXWNZ.mjs.map → renderer-Bh1pfpzz.mjs.map} +1 -1
- package/dist/renderer-Bk842iGl.mjs +4 -0
- package/dist/{renderer-CszOjcRW.mjs → renderer-Bmt3fpzg.mjs} +1 -1
- package/dist/renderer-Bn7jX6n3.mjs +3 -0
- package/dist/{renderer-HFfcJlmR.mjs → renderer-BusX07ZE.mjs} +2 -2
- package/dist/{renderer-HFfcJlmR.mjs.map → renderer-BusX07ZE.mjs.map} +1 -1
- package/dist/{renderer-k2JL79kM.mjs → renderer-BwE5dnyL.mjs} +2 -2
- package/dist/{renderer-k2JL79kM.mjs.map → renderer-BwE5dnyL.mjs.map} +1 -1
- package/dist/{renderer-CclIvsLO.mjs → renderer-CBdqOoTN.mjs} +1 -1
- package/dist/renderer-CPKOjnkT.mjs +3 -0
- package/dist/renderer-CSgVUPHu.mjs +3 -0
- package/dist/renderer-CUr66blo.mjs +3 -0
- package/dist/{renderer-BXMmISWG.mjs → renderer-CXO4wWOT.mjs} +2 -2
- package/dist/{renderer-BXMmISWG.mjs.map → renderer-CXO4wWOT.mjs.map} +1 -1
- package/dist/renderer-CYC-j_8W.mjs +3 -0
- package/dist/{renderer-vvpdx1vk.mjs → renderer-CcDfRa1o.mjs} +2 -2
- package/dist/{renderer-vvpdx1vk.mjs.map → renderer-CcDfRa1o.mjs.map} +1 -1
- package/dist/{renderer-CMzEjdzi.mjs → renderer-CeF66MG3.mjs} +2 -2
- package/dist/{renderer-CMzEjdzi.mjs.map → renderer-CeF66MG3.mjs.map} +1 -1
- package/dist/{renderer-Ryo2CEFD.mjs → renderer-CkLD7Lp7.mjs} +2 -2
- package/dist/{renderer-Ryo2CEFD.mjs.map → renderer-CkLD7Lp7.mjs.map} +1 -1
- package/dist/{renderer-Dt6fzgX5.mjs → renderer-CuppzplW.mjs} +2 -2
- package/dist/{renderer-Dt6fzgX5.mjs.map → renderer-CuppzplW.mjs.map} +1 -1
- package/dist/{renderer-CB7lH5K8.mjs → renderer-CxE-8m71.mjs} +1 -1
- package/dist/renderer-Cy7k7eN9.mjs +3 -0
- package/dist/renderer-D3poaM-T.mjs +3 -0
- package/dist/renderer-D69vFGNB.mjs +3 -0
- package/dist/{renderer-COkcU3db.mjs → renderer-D9lcIxrz.mjs} +4 -4
- package/dist/{renderer-COkcU3db.mjs.map → renderer-D9lcIxrz.mjs.map} +1 -1
- package/dist/{renderer-BQHbp-Sp.mjs → renderer-DFA0KBdj.mjs} +2 -2
- package/dist/{renderer-BQHbp-Sp.mjs.map → renderer-DFA0KBdj.mjs.map} +1 -1
- package/dist/{renderer-CDOUAN7X.mjs → renderer-DG3VnR50.mjs} +2 -2
- package/dist/{renderer-CDOUAN7X.mjs.map → renderer-DG3VnR50.mjs.map} +1 -1
- package/dist/{renderer-BGXU6vcW.mjs → renderer-DQQnEcSA.mjs} +2 -2
- package/dist/{renderer-BGXU6vcW.mjs.map → renderer-DQQnEcSA.mjs.map} +1 -1
- package/dist/{renderer-D7EX8IjU.mjs → renderer-DVSagfD4.mjs} +2 -2
- package/dist/{renderer-D7EX8IjU.mjs.map → renderer-DVSagfD4.mjs.map} +1 -1
- package/dist/{renderer-C17wL9QX.mjs → renderer-DWvg6ZKK.mjs} +2 -2
- package/dist/{renderer-C17wL9QX.mjs.map → renderer-DWvg6ZKK.mjs.map} +1 -1
- package/dist/{renderer-Dp_FfvF-.mjs → renderer-Daa-Af8y.mjs} +2 -2
- package/dist/{renderer-Dp_FfvF-.mjs.map → renderer-Daa-Af8y.mjs.map} +1 -1
- package/dist/renderer-DiXzb5FQ.mjs +3 -0
- package/dist/{renderer-pxXf9dvk.mjs → renderer-DjYRCzzV.mjs} +2 -2
- package/dist/{renderer-pxXf9dvk.mjs.map → renderer-DjYRCzzV.mjs.map} +1 -1
- package/dist/renderer-DkKjy-Q0.mjs +3 -0
- package/dist/renderer-DlxCfGuA.mjs +3 -0
- package/dist/{renderer-Cj-whdVr.mjs → renderer-Dm0r9IBd.mjs} +2 -2
- package/dist/{renderer-Cj-whdVr.mjs.map → renderer-Dm0r9IBd.mjs.map} +1 -1
- package/dist/renderer-DnUe5mD1.mjs +3 -0
- package/dist/renderer-DwtLqidh.mjs +3 -0
- package/dist/{renderer-DbaQLI4z.mjs → renderer-NYcVjCOi.mjs} +2 -2
- package/dist/{renderer-DbaQLI4z.mjs.map → renderer-NYcVjCOi.mjs.map} +1 -1
- package/dist/{renderer-WkVrkCVA.mjs → renderer-VHpQTPbr.mjs} +2 -2
- package/dist/{renderer-WkVrkCVA.mjs.map → renderer-VHpQTPbr.mjs.map} +1 -1
- package/dist/renderer-WaLyCr37.mjs +3 -0
- package/dist/{renderer-BAQmR0Zo.mjs → renderer-Y7-Us00q.mjs} +1 -1
- package/dist/{renderer-Cl1oUXMi.mjs → renderer-aH8p3zLE.mjs} +2 -2
- package/dist/{renderer-Cl1oUXMi.mjs.map → renderer-aH8p3zLE.mjs.map} +1 -1
- package/dist/renderer-rrz9Fhwo.mjs +3 -0
- package/dist/{renderer-CH8sdfYX.mjs → renderer-s_HENMCc.mjs} +2 -2
- package/dist/{renderer-CH8sdfYX.mjs.map → renderer-s_HENMCc.mjs.map} +1 -1
- package/dist/renderer-ssnm_dWv.mjs +3 -0
- package/dist/{renderer-Fco4EmAu.mjs → renderer-vnHsTpQf.mjs} +111 -60
- package/dist/{renderer-Fco4EmAu.mjs.map → renderer-vnHsTpQf.mjs.map} +1 -1
- package/dist/renderer-xc9wkiC7.mjs +3 -0
- package/dist/{renderer-XcmYTd6P.mjs → renderer-z6Qb5Z-W.mjs} +143 -4
- package/dist/renderer-z6Qb5Z-W.mjs.map +1 -0
- package/dist/{renderers-BWg16W-V-BXG_cjhM.mjs → renderers-BWg16W-V-FofeEqQL.mjs} +2 -2
- package/dist/{renderers-BWg16W-V-BXG_cjhM.mjs.map → renderers-BWg16W-V-FofeEqQL.mjs.map} +1 -1
- package/dist/signals/index.mjs +4 -4
- package/package.json +54 -54
- package/dist/dist-gjHmorxL.mjs.map +0 -1
- package/dist/index-B0BNPEoH.d.mts.map +0 -1
- package/dist/preview-engine/chunk-DRLEOHN5.mjs +0 -1
- package/dist/renderer-3BNskNuJ.mjs +0 -3
- package/dist/renderer-9dHlMQGX.mjs +0 -3
- package/dist/renderer-BGvORwkQ.mjs +0 -3
- package/dist/renderer-BLikd6BK.mjs +0 -3
- package/dist/renderer-BSbTJBWc.mjs +0 -3
- package/dist/renderer-BU1rwNRT.mjs +0 -3
- package/dist/renderer-BZJm3m4f.mjs +0 -3
- package/dist/renderer-BqyAgNt3.mjs +0 -3
- package/dist/renderer-BryTM2g7.mjs +0 -3
- package/dist/renderer-CQCoggIa.mjs +0 -3
- package/dist/renderer-CV2m6k1V.mjs +0 -3
- package/dist/renderer-CYY-poLe.mjs +0 -3
- package/dist/renderer-C_Ki91kc.mjs +0 -3
- package/dist/renderer-CmApuKjS.mjs +0 -3
- package/dist/renderer-Cu074POw.mjs +0 -3
- package/dist/renderer-D4qLmox-.mjs +0 -3
- package/dist/renderer-D6cJ6MSq.mjs +0 -3
- package/dist/renderer-DQLGnEFc.mjs +0 -3
- package/dist/renderer-DY2SVYUW.mjs +0 -3
- package/dist/renderer-DoAY5JbB.mjs +0 -4
- package/dist/renderer-DuplLRbp.mjs +0 -3
- package/dist/renderer-DvfUbZ31.mjs +0 -3
- package/dist/renderer-Q_uUQipO.mjs +0 -3
- package/dist/renderer-UQFCgeNx.mjs +0 -3
- package/dist/renderer-XcmYTd6P.mjs.map +0 -1
- package/dist/renderer-eMsnzJg9.mjs +0 -3
- package/dist/renderer-pHiz78e0.mjs +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as o}from"./chunk-SWD76532.mjs";import{a as S}from"./chunk-EDIZNO3P.mjs";import{d as x}from"./chunk-P3HBP725.mjs";import{d as c,e as i}from"./chunk-BVF64D6H.mjs";i();i();i();i();i();i();function E(r){return typeof c<"u"?c.env?.[r]:void 0}function w(){let r=E("FRAMEFIELDS_STRICT_PROPS");return r==="1"||r==="true"}function z(){return w()||E("NODE_ENV")!=="production"}var v=new Set;function g(r){if(w())throw new Error(r);v.has(r)||(v.add(r),console.warn(`[framefields] ${r}`))}function C(r){if(typeof r!="object"||r===null||Array.isArray(r)||x(r))return!1;let e=Object.getPrototypeOf(r);return e===Object.prototype||e===null}function Z(r,e){let t=Array.from({length:e.length+1},(n,l)=>l);for(let n=1;n<=r.length;n++){let l=t[0];t[0]=n;for(let a=1;a<=e.length;a++){let s=t[a];t[a]=Math.min(t[a]+1,t[a-1]+1,l+(r[n-1]===e[a-1]?0:1)),l=s}}return t[e.length]}function J(r,e){let t,n=Number.POSITIVE_INFINITY,l=r.toLowerCase();for(let s of e){let u=s.toLowerCase(),d=u.includes(l)||l.includes(u)?1:Z(l,u);d<n&&(n=d,t=s)}return t&&n<=Math.max(2,Math.ceil(r.length/2))?` Did you mean "${t}"?`:` Known props: ${e.join(", ")}.`}function Q(r,e,t){if(typeof e=="number"){let{min:n,max:l}=t,a=n!==void 0&&e<n,s=l!==void 0&&e>l;if(a||s||Number.isNaN(e)){let u=n!==void 0&&l!==void 0?`${n} to ${l}`:n!==void 0?`\u2265 ${n}`:`\u2264 ${l}`;g(Number.isNaN(e)?`${r} is NaN`:`${r} = ${e} is outside ${u}`)}return}t.enum&&(typeof e=="string"||typeof e=="boolean")&&!t.enum.includes(e)&&g(`${r} = ${JSON.stringify(e)} is not one of ${t.enum.map(n=>JSON.stringify(n)).join(", ")}`)}function M(r,e,t){let n=Object.keys(t);for(let[l,a]of Object.entries(e)){if(a===void 0)continue;let s=t[l];if(!s){g(`${r}: unknown prop "${l}".${J(l,n)}`);continue}x(a)||typeof a=="function"||(s.props&&C(a)?M(`${r}.${l}`,a,s.props):Q(`${r}.${l}`,a,s))}}function ee(r){return typeof r=="object"&&r!==null?structuredClone(r):r}function b(r,e,t,n){let l=t;z()&&M(r,l,n);let a={};for(let[s,u]of Object.entries(e))a[s]=ee(u);for(let[s,u]of Object.entries(l)){if(u===void 0)continue;let d=a[s];a[s]=C(d)&&C(u)?{...d,...Object.fromEntries(Object.entries(u).filter(([,q])=>q!==void 0))}:u}return a}i();var p={Blur:{blurType:{enum:["Gaussian","Box","Median","Motion","Bilateral","Edge-preserving","Radial","Zoom"]},strength:{min:0,max:100},angle:{min:0,max:360},sigmaColor:{min:.01,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1},partialBlur:{},radius:{min:.01,max:1},radiusY:{min:0,max:1},shape:{enum:["ellipse","circle","rect"]}},ColorBalance:{shadows:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},midtones:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},highlights:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},preserveLuminosity:{}},ColorKey:{keyColor:{},similarity:{min:0,max:1},smoothness:{min:0,max:1},spillSuppression:{min:0,max:1},colorSpace:{enum:["YUV","RGB"]},spillSuppressionType:{enum:["Desaturate","Neutralize","None"]}},Vignette:{strength:{min:0,max:100},radius:{min:.1,max:2},softness:{min:0,max:1},roundness:{min:0,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1}}};var re={blurType:"Gaussian",strength:5,angle:0,sigmaColor:.1,centerX:.5,centerY:.5,partialBlur:!1,radius:.3,radiusY:0,shape:"circle"},y=class extends o{op="Blur";constructor(e={}){super(b("Blur",re,e,p.Blur))}},te={shadows:{cyanRed:0,magentaGreen:0,yellowBlue:0},midtones:{cyanRed:0,magentaGreen:0,yellowBlue:0},highlights:{cyanRed:0,magentaGreen:0,yellowBlue:0},preserveLuminosity:!0},m=class extends o{op="ColorBalance";constructor(e={}){super(b("ColorBalance",te,e,p.ColorBalance))}},oe={keyColor:"#00ff00",similarity:.4,smoothness:.1,spillSuppression:.2,colorSpace:"YUV",spillSuppressionType:"Desaturate"},h=class extends o{op="ColorKey";constructor(e={}){super(b("ColorKey",oe,e,p.ColorKey))}},ne={strength:50,radius:1,softness:.5,roundness:.5,centerX:.5,centerY:.5},f=class extends o{op="Vignette";constructor(e={}){super(b("Vignette",ne,e,p.Vignette))}};function le(r){return{partialBlur:!0,centerX:r.center.x,centerY:r.center.y,radius:r.bounds.width.multiply(.55),radiusY:r.bounds.height.multiply(.55),shape:"ellipse",strength:r.active.multiply(25)}}var P=class extends y{constructor(e={}){let{track:t,...n}=e;super(t?{...le(t),...ae(n)}:n)}};function ae(r){return Object.fromEntries(Object.entries(r).filter(([,e])=>e!==void 0))}i();var se={blur:r=>new P(r),colorBalance:r=>new m(r),colorKey:r=>new h(r),vignette:r=>new f(r)};var R=class extends o{op="Levels";constructor(e={}){let t={inBlack:0,inWhite:1,outBlack:0,outWhite:1};super({master:e.master??{...t},red:e.red??{...t},green:e.green??{...t},blue:e.blue??{...t},...e})}},B=class extends o{op="FilmGrain";constructor(e={}){super({strength:e.strength??15,size:e.size??1.5,monochrome:e.monochrome??!0,animated:e.animated??!0,speed:e.speed??50,shadows:e.shadows??.2,midtones:e.midtones??1,highlights:e.highlights??.2,...e})}},A=class extends o{op;constructor(e,t={}){super(t),this.op=e}},T=class extends o{op="AudioSignalExtractor";constructor(e={}){super({extractionMode:e.extractionMode??"rms_envelope",attackMs:e.attackMs??10,releaseMs:e.releaseMs??120,sensitivity:e.sensitivity??1,noiseFloorDb:e.noiseFloorDb??-48,dynamicRangeDb:e.dynamicRangeDb??48,autoRange:e.autoRange??!0,smoothing:e.smoothing??.15,curve:e.curve??"linear",beatThreshold:e.beatThreshold??.08,beatDecayMs:e.beatDecayMs??80,previewMode:e.previewMode??"envelope",nodeId:e.nodeId??"audio_extractor",...e})}async extract(e,t={}){return S.extract(e,{extractionMode:this.extractionMode,attackMs:this.attackMs,releaseMs:this.releaseMs,sensitivity:this.sensitivity,noiseFloorDb:this.noiseFloorDb,dynamicRangeDb:this.dynamicRangeDb,smoothing:this.smoothing,curve:this.curve,beatThreshold:this.beatThreshold,beatDecayMs:this.beatDecayMs,previewMode:this.previewMode,...t})}},k=class extends o{op="Curves";constructor(e={}){super({...e,curveType:e.curveType??"rgb",master:e.master??[{x:0,y:0},{x:1,y:1}],red:e.red??[{x:0,y:0},{x:1,y:1}],green:e.green??[{x:0,y:0},{x:1,y:1}],blue:e.blue??[{x:0,y:0},{x:1,y:1}],hueVsHue:e.hueVsHue??[{x:0,y:.5},{x:1,y:.5}],hueVsSat:e.hueVsSat??[{x:0,y:1},{x:1,y:1}],lumVsSat:e.lumVsSat??[{x:0,y:1},{x:1,y:1}],satVsSat:e.satVsSat??[{x:0,y:1},{x:1,y:1}]})}},D=class extends o{op="SelectiveColor";constructor(e={}){let t={cyan:0,magenta:0,yellow:0,black:0};super({...e,method:e.method??"Relative",reds:{...t,...e.reds},yellows:{...t,...e.yellows},greens:{...t,...e.greens},cyans:{...t,...e.cyans},blues:{...t,...e.blues},magentas:{...t,...e.magentas},whites:{...t,...e.whites},neutrals:{...t,...e.neutrals},blacks:{...t,...e.blacks}})}},j=class extends o{op="GradientMap";constructor(e={}){let t=[{position:0,color:"#000000"},{position:1,color:"#ffffff"}];super({...e,stops:e.stops??t,smooth:e.smooth??!0,dither:e.dither??!0,opacity:e.opacity??1})}},V=class extends o{op="ShadowsHighlights";constructor(e={}){super({...e,shadowAmount:e.shadowAmount??0,shadowTonalWidth:e.shadowTonalWidth??50,shadowRadius:e.shadowRadius??30,highlightAmount:e.highlightAmount??0,highlightTonalWidth:e.highlightTonalWidth??50,highlightRadius:e.highlightRadius??30,colorCorrection:e.colorCorrection??0,midtoneContrast:e.midtoneContrast??0})}},O=class extends o{op="ApplyLUT";constructor(e={}){super({...e,lutUrl:e.lutUrl??"",intensity:e.intensity??1})}},L=class extends o{op="UnsharpMask";constructor(e={}){super({...e,amount:e.amount??100,radius:e.radius??1.5,threshold:e.threshold??3})}},G=class extends o{op="HighPass";constructor(e={}){super({...e,radius:e.radius??3,contrastBoost:e.contrastBoost??1,monochrome:e.monochrome??!0})}},Y=class extends o{op="HalftoneScreen";constructor(e={}){super({...e,mode:e.mode??"Monochrome",dotShape:e.dotShape??"Circle",frequency:e.frequency??30,angle:e.angle??45,contrast:e.contrast??1,dotColor:e.dotColor??"#000000",paperColor:e.paperColor??"#ffffff",smooth:e.smooth??!0,invert:e.invert??!1,cyanAngle:e.cyanAngle??15,magentaAngle:e.magentaAngle??75,yellowAngle:e.yellowAngle??0,blackAngle:e.blackAngle??45,opacity:e.opacity??1})}},H=class extends o{op="TileOffset";constructor(e={}){super({...e,offsetX:e.offsetX??0,offsetY:e.offsetY??0,wrap:e.wrap??!0,edgeMode:e.edgeMode??"wrap"})}},N=class extends o{op="MotionBlur";constructor(e={}){super({...e,shutterAngle:e.shutterAngle??180,samples:e.samples??16,maxVelocity:e.maxVelocity??64,shutterCurve:e.shutterCurve??"gaussian",depthAware:e.depthAware??!0})}},$=class extends o{op="SSAO";constructor(e={}){super({...e,radius:e.radius??45,bias:e.bias??.025,intensity:e.intensity??1.5,kernelSamples:e.kernelSamples??16,blurRadius:e.blurRadius??4})}},F=class extends o{op="PBRGlass";constructor(e={}){super({...e,ior:e.ior??1.49,roughness:e.roughness??.15,transmission:e.transmission??.92,dispersion:e.dispersion??.015,fresnelPower:e.fresnelPower??5,tintColor:e.tintColor??"#ffffff"})}},I=class extends o{op="DepthOfField";constructor(e={}){super({...e,focusDistance:e.focusDistance??500,focalLength:e.focalLength??50,aperture:e.aperture??2.8,maxBlur:e.maxBlur??16,quality:e.quality??"high"})}},K=class extends o{op="Crop";constructor(e={}){super({cropType:e.cropType??"rect",leftPercentage:e.leftPercentage??0,topPercentage:e.topPercentage??0,widthPercentage:e.widthPercentage??100,heightPercentage:e.heightPercentage??100,roundness:e.roundness??0,...e})}},W=class extends o{op="Vision";constructor(e={}){super({enableDetection:e.enableDetection!==!1,enableSegmentation:e.enableSegmentation===!0,enablePose:e.enablePose===!0,enableMatte:e.enableMatte===!0,confidence:e.confidence??.3,variant:e.variant??"s",mode:e.mode??"passthrough",matteSource:e.matteSource??"instance",...e})}},X=class extends o{op="Relight3D";constructor(e={}){super({lightType:e.lightType??"Point",intensity:e.intensity??1,lightPosX:e.lightPosX??.5,lightPosY:e.lightPosY??.5,lightPosZ:e.lightPosZ??.3,lightRadius:e.lightRadius??.8,spotConeAngle:e.spotConeAngle??45,specularRoughness:e.specularRoughness??.35,specularStrength:e.specularStrength??.7,metallic:e.metallic??0,ambientIntensity:e.ambientIntensity??.4,volumetricDensity:e.volumetricDensity??.2,depthScale:e.depthScale??1,depthInvert:e.depthInvert??!1,lightColor:e.lightColor??"#ffffff",ambientColor:e.ambientColor??"#ffffff",normalMap:e.normalMap,...e})}},U=class extends o{op="TemporalDeflicker";constructor(e={}){super({blendWeight:e.blendWeight??.35,disocclusionThreshold:e.disocclusionThreshold??.15,maxMotionPixels:e.maxMotionPixels??64,scale:e.scale??.5,windowSize:e.windowSize??2,...e})}},_=class extends o{op="Modulate";constructor(e={}){super({hue:e.hue??0,brightness:e.brightness??1,contrast:e.contrast??1,exposure:e.exposure??0,saturation:e.saturation??1,sepia:e.sepia??0,...e})}};export{p as a,m as b,h as c,f as d,P as e,se as f,R as g,B as h,A as i,T as j,k,D as l,j as m,V as n,O as o,L as p,G as q,Y as r,H as s,N as t,$ as u,F as v,I as w,K as x,W as y,X as z,U as A,_ as B};
|
|
1
|
+
import{a as o}from"./chunk-PCB2VB5K.mjs";import{a as S}from"./chunk-EDIZNO3P.mjs";import{d as x}from"./chunk-P3HBP725.mjs";import{d as c,e as i}from"./chunk-BVF64D6H.mjs";i();i();i();i();i();i();function E(r){return typeof c<"u"?c.env?.[r]:void 0}function w(){let r=E("FRAMEFIELDS_STRICT_PROPS");return r==="1"||r==="true"}function z(){return w()||E("NODE_ENV")!=="production"}var v=new Set;function g(r){if(w())throw new Error(r);v.has(r)||(v.add(r),console.warn(`[framefields] ${r}`))}function C(r){if(typeof r!="object"||r===null||Array.isArray(r)||x(r))return!1;let e=Object.getPrototypeOf(r);return e===Object.prototype||e===null}function Z(r,e){let t=Array.from({length:e.length+1},(n,l)=>l);for(let n=1;n<=r.length;n++){let l=t[0];t[0]=n;for(let a=1;a<=e.length;a++){let s=t[a];t[a]=Math.min(t[a]+1,t[a-1]+1,l+(r[n-1]===e[a-1]?0:1)),l=s}}return t[e.length]}function J(r,e){let t,n=Number.POSITIVE_INFINITY,l=r.toLowerCase();for(let s of e){let u=s.toLowerCase(),d=u.includes(l)||l.includes(u)?1:Z(l,u);d<n&&(n=d,t=s)}return t&&n<=Math.max(2,Math.ceil(r.length/2))?` Did you mean "${t}"?`:` Known props: ${e.join(", ")}.`}function Q(r,e,t){if(typeof e=="number"){let{min:n,max:l}=t,a=n!==void 0&&e<n,s=l!==void 0&&e>l;if(a||s||Number.isNaN(e)){let u=n!==void 0&&l!==void 0?`${n} to ${l}`:n!==void 0?`\u2265 ${n}`:`\u2264 ${l}`;g(Number.isNaN(e)?`${r} is NaN`:`${r} = ${e} is outside ${u}`)}return}t.enum&&(typeof e=="string"||typeof e=="boolean")&&!t.enum.includes(e)&&g(`${r} = ${JSON.stringify(e)} is not one of ${t.enum.map(n=>JSON.stringify(n)).join(", ")}`)}function M(r,e,t){let n=Object.keys(t);for(let[l,a]of Object.entries(e)){if(a===void 0)continue;let s=t[l];if(!s){g(`${r}: unknown prop "${l}".${J(l,n)}`);continue}x(a)||typeof a=="function"||(s.props&&C(a)?M(`${r}.${l}`,a,s.props):Q(`${r}.${l}`,a,s))}}function ee(r){return typeof r=="object"&&r!==null?structuredClone(r):r}function b(r,e,t,n){let l=t;z()&&M(r,l,n);let a={};for(let[s,u]of Object.entries(e))a[s]=ee(u);for(let[s,u]of Object.entries(l)){if(u===void 0)continue;let d=a[s];a[s]=C(d)&&C(u)?{...d,...Object.fromEntries(Object.entries(u).filter(([,q])=>q!==void 0))}:u}return a}i();var p={Blur:{blurType:{enum:["Gaussian","Box","Median","Motion","Bilateral","Edge-preserving","Radial","Zoom"]},strength:{min:0,max:100},angle:{min:0,max:360},sigmaColor:{min:.01,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1},partialBlur:{},radius:{min:.01,max:1},radiusY:{min:0,max:1},shape:{enum:["ellipse","circle","rect"]}},ColorBalance:{shadows:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},midtones:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},highlights:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},preserveLuminosity:{}},ColorKey:{keyColor:{},similarity:{min:0,max:1},smoothness:{min:0,max:1},spillSuppression:{min:0,max:1},colorSpace:{enum:["YUV","RGB"]},spillSuppressionType:{enum:["Desaturate","Neutralize","None"]}},Vignette:{strength:{min:0,max:100},radius:{min:.1,max:2},softness:{min:0,max:1},roundness:{min:0,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1}}};var re={blurType:"Gaussian",strength:5,angle:0,sigmaColor:.1,centerX:.5,centerY:.5,partialBlur:!1,radius:.3,radiusY:0,shape:"circle"},y=class extends o{op="Blur";constructor(e={}){super(b("Blur",re,e,p.Blur))}},te={shadows:{cyanRed:0,magentaGreen:0,yellowBlue:0},midtones:{cyanRed:0,magentaGreen:0,yellowBlue:0},highlights:{cyanRed:0,magentaGreen:0,yellowBlue:0},preserveLuminosity:!0},m=class extends o{op="ColorBalance";constructor(e={}){super(b("ColorBalance",te,e,p.ColorBalance))}},oe={keyColor:"#00ff00",similarity:.4,smoothness:.1,spillSuppression:.2,colorSpace:"YUV",spillSuppressionType:"Desaturate"},h=class extends o{op="ColorKey";constructor(e={}){super(b("ColorKey",oe,e,p.ColorKey))}},ne={strength:50,radius:1,softness:.5,roundness:.5,centerX:.5,centerY:.5},f=class extends o{op="Vignette";constructor(e={}){super(b("Vignette",ne,e,p.Vignette))}};function le(r){return{partialBlur:!0,centerX:r.center.x,centerY:r.center.y,radius:r.bounds.width.multiply(.55),radiusY:r.bounds.height.multiply(.55),shape:"ellipse",strength:r.active.multiply(25)}}var P=class extends y{constructor(e={}){let{track:t,...n}=e;super(t?{...le(t),...ae(n)}:n)}};function ae(r){return Object.fromEntries(Object.entries(r).filter(([,e])=>e!==void 0))}i();var se={blur:r=>new P(r),colorBalance:r=>new m(r),colorKey:r=>new h(r),vignette:r=>new f(r)};var R=class extends o{op="Levels";constructor(e={}){let t={inBlack:0,inWhite:1,outBlack:0,outWhite:1};super({master:e.master??{...t},red:e.red??{...t},green:e.green??{...t},blue:e.blue??{...t},...e})}},B=class extends o{op="FilmGrain";constructor(e={}){super({strength:e.strength??15,size:e.size??1.5,monochrome:e.monochrome??!0,animated:e.animated??!0,speed:e.speed??50,shadows:e.shadows??.2,midtones:e.midtones??1,highlights:e.highlights??.2,...e})}},A=class extends o{op;constructor(e,t={}){super(t),this.op=e}},T=class extends o{op="AudioSignalExtractor";constructor(e={}){super({extractionMode:e.extractionMode??"rms_envelope",attackMs:e.attackMs??10,releaseMs:e.releaseMs??120,sensitivity:e.sensitivity??1,noiseFloorDb:e.noiseFloorDb??-48,dynamicRangeDb:e.dynamicRangeDb??48,autoRange:e.autoRange??!0,smoothing:e.smoothing??.15,curve:e.curve??"linear",beatThreshold:e.beatThreshold??.08,beatDecayMs:e.beatDecayMs??80,previewMode:e.previewMode??"envelope",nodeId:e.nodeId??"audio_extractor",...e})}async extract(e,t={}){return S.extract(e,{extractionMode:this.extractionMode,attackMs:this.attackMs,releaseMs:this.releaseMs,sensitivity:this.sensitivity,noiseFloorDb:this.noiseFloorDb,dynamicRangeDb:this.dynamicRangeDb,smoothing:this.smoothing,curve:this.curve,beatThreshold:this.beatThreshold,beatDecayMs:this.beatDecayMs,previewMode:this.previewMode,...t})}},k=class extends o{op="Curves";constructor(e={}){super({...e,curveType:e.curveType??"rgb",master:e.master??[{x:0,y:0},{x:1,y:1}],red:e.red??[{x:0,y:0},{x:1,y:1}],green:e.green??[{x:0,y:0},{x:1,y:1}],blue:e.blue??[{x:0,y:0},{x:1,y:1}],hueVsHue:e.hueVsHue??[{x:0,y:.5},{x:1,y:.5}],hueVsSat:e.hueVsSat??[{x:0,y:1},{x:1,y:1}],lumVsSat:e.lumVsSat??[{x:0,y:1},{x:1,y:1}],satVsSat:e.satVsSat??[{x:0,y:1},{x:1,y:1}]})}},D=class extends o{op="SelectiveColor";constructor(e={}){let t={cyan:0,magenta:0,yellow:0,black:0};super({...e,method:e.method??"Relative",reds:{...t,...e.reds},yellows:{...t,...e.yellows},greens:{...t,...e.greens},cyans:{...t,...e.cyans},blues:{...t,...e.blues},magentas:{...t,...e.magentas},whites:{...t,...e.whites},neutrals:{...t,...e.neutrals},blacks:{...t,...e.blacks}})}},j=class extends o{op="GradientMap";constructor(e={}){let t=[{position:0,color:"#000000"},{position:1,color:"#ffffff"}];super({...e,stops:e.stops??t,smooth:e.smooth??!0,dither:e.dither??!0,opacity:e.opacity??1})}},V=class extends o{op="ShadowsHighlights";constructor(e={}){super({...e,shadowAmount:e.shadowAmount??0,shadowTonalWidth:e.shadowTonalWidth??50,shadowRadius:e.shadowRadius??30,highlightAmount:e.highlightAmount??0,highlightTonalWidth:e.highlightTonalWidth??50,highlightRadius:e.highlightRadius??30,colorCorrection:e.colorCorrection??0,midtoneContrast:e.midtoneContrast??0})}},O=class extends o{op="ApplyLUT";constructor(e={}){super({...e,lutUrl:e.lutUrl??"",intensity:e.intensity??1})}},L=class extends o{op="UnsharpMask";constructor(e={}){super({...e,amount:e.amount??100,radius:e.radius??1.5,threshold:e.threshold??3})}},G=class extends o{op="HighPass";constructor(e={}){super({...e,radius:e.radius??3,contrastBoost:e.contrastBoost??1,monochrome:e.monochrome??!0})}},Y=class extends o{op="HalftoneScreen";constructor(e={}){super({...e,mode:e.mode??"Monochrome",dotShape:e.dotShape??"Circle",frequency:e.frequency??30,angle:e.angle??45,contrast:e.contrast??1,dotColor:e.dotColor??"#000000",paperColor:e.paperColor??"#ffffff",smooth:e.smooth??!0,invert:e.invert??!1,cyanAngle:e.cyanAngle??15,magentaAngle:e.magentaAngle??75,yellowAngle:e.yellowAngle??0,blackAngle:e.blackAngle??45,opacity:e.opacity??1})}},H=class extends o{op="TileOffset";constructor(e={}){super({...e,offsetX:e.offsetX??0,offsetY:e.offsetY??0,wrap:e.wrap??!0,edgeMode:e.edgeMode??"wrap"})}},N=class extends o{op="MotionBlur";constructor(e={}){super({...e,shutterAngle:e.shutterAngle??180,samples:e.samples??16,maxVelocity:e.maxVelocity??64,shutterCurve:e.shutterCurve??"gaussian",depthAware:e.depthAware??!0})}},$=class extends o{op="SSAO";constructor(e={}){super({...e,radius:e.radius??45,bias:e.bias??.025,intensity:e.intensity??1.5,kernelSamples:e.kernelSamples??16,blurRadius:e.blurRadius??4})}},F=class extends o{op="PBRGlass";constructor(e={}){super({...e,ior:e.ior??1.49,roughness:e.roughness??.15,transmission:e.transmission??.92,dispersion:e.dispersion??.015,fresnelPower:e.fresnelPower??5,tintColor:e.tintColor??"#ffffff"})}},I=class extends o{op="DepthOfField";constructor(e={}){super({...e,focusDistance:e.focusDistance??500,focalLength:e.focalLength??50,aperture:e.aperture??2.8,maxBlur:e.maxBlur??16,quality:e.quality??"high"})}},K=class extends o{op="Crop";constructor(e={}){super({cropType:e.cropType??"rect",leftPercentage:e.leftPercentage??0,topPercentage:e.topPercentage??0,widthPercentage:e.widthPercentage??100,heightPercentage:e.heightPercentage??100,roundness:e.roundness??0,...e})}},W=class extends o{op="Vision";constructor(e={}){super({enableDetection:e.enableDetection!==!1,enableSegmentation:e.enableSegmentation===!0,enablePose:e.enablePose===!0,enableMatte:e.enableMatte===!0,confidence:e.confidence??.3,variant:e.variant??"s",mode:e.mode??"passthrough",matteSource:e.matteSource??"instance",...e})}},X=class extends o{op="Relight3D";constructor(e={}){super({lightType:e.lightType??"Point",intensity:e.intensity??1,lightPosX:e.lightPosX??.5,lightPosY:e.lightPosY??.5,lightPosZ:e.lightPosZ??.3,lightRadius:e.lightRadius??.8,spotConeAngle:e.spotConeAngle??45,specularRoughness:e.specularRoughness??.35,specularStrength:e.specularStrength??.7,metallic:e.metallic??0,ambientIntensity:e.ambientIntensity??.4,volumetricDensity:e.volumetricDensity??.2,depthScale:e.depthScale??1,depthInvert:e.depthInvert??!1,lightColor:e.lightColor??"#ffffff",ambientColor:e.ambientColor??"#ffffff",normalMap:e.normalMap,...e})}},U=class extends o{op="TemporalDeflicker";constructor(e={}){super({blendWeight:e.blendWeight??.35,disocclusionThreshold:e.disocclusionThreshold??.15,maxMotionPixels:e.maxMotionPixels??64,scale:e.scale??.5,windowSize:e.windowSize??2,...e})}},_=class extends o{op="Modulate";constructor(e={}){super({hue:e.hue??0,brightness:e.brightness??1,contrast:e.contrast??1,exposure:e.exposure??0,saturation:e.saturation??1,sepia:e.sepia??0,...e})}};export{p as a,m as b,h as c,f as d,P as e,se as f,R as g,B as h,A as i,T as j,k,D as l,j as m,V as n,O as o,L as p,G as q,Y as r,H as s,N as t,$ as u,F as v,I as w,K as x,W as y,X as z,U as A,_ as B};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Ve}from"./chunk-VXUJWPIK.mjs";import{a as lt}from"./chunk-XKO4RYKN.mjs";import{b as mt}from"./chunk-DRLEOHN5.mjs";import{I as ut,a as S,b as C}from"./chunk-NQZKBFC6.mjs";import{b as dt,d as be,e as je,h as te}from"./chunk-P3HBP725.mjs";import{a as nt}from"./chunk-YSTLMWCG.mjs";import{a as st,e as it,i as Le,j as at}from"./chunk-4GEWSUX5.mjs";import{b as ge,c as rt,e as ot}from"./chunk-MTJHQATU.mjs";import{d as ct,e as pe,g as Ee}from"./chunk-YAQFFQPG.mjs";import{a as Jt,c as Qt,d as B,e as y}from"./chunk-BVF64D6H.mjs";var vt=Jt((kr,wt)=>{y();var _e=()=>new Proxy(function(){},{get:(r,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":_e(),apply:()=>_e(),construct:()=>_e()});wt.exports=_e()});y();y();y();y();y();var se=(r,e,t)=>`https://huggingface.co/${r}/resolve/${e}/${t}`,Ae="tori29umai/rtmdet-ins-onnx-person-masks",Be="e5218e8d47d7c50077f27f9893a28e0ef2ad5656",De="RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export",Fe="RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export",ft="MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export",re={"rtmdet-ins-t":{key:"rtmdet-ins-t",family:"rtmdet-ins",filename:"rtmdet-ins-t.onnx",url:se(Ae,Be,"models/tiny/rtmdet-ins_tiny_640x640.onnx"),bytes:24032356,sha256:"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c",input:[640,640],source:De},"rtmdet-ins-s":{key:"rtmdet-ins-s",family:"rtmdet-ins",filename:"rtmdet-ins-s.onnx",url:se(Ae,Be,"models/s/rtmdet-ins_s_640x640.onnx"),bytes:43236976,sha256:"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b",input:[640,640],source:De},"rtmdet-ins-m":{key:"rtmdet-ins-m",family:"rtmdet-ins",filename:"rtmdet-ins-m.onnx",url:se(Ae,Be,"models/m/rtmdet-ins_m_640x640.onnx"),bytes:115735979,sha256:"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052",input:[640,640],source:De},"rtmo-t":{key:"rtmo-t",family:"rtmo",filename:"rtmo-t.onnx",url:se("Xenova/RTMO-t","f29d13ce5ee291fbe505e9d06a049992f05699dc","onnx/model.onnx"),bytes:27360569,sha256:"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13",input:[416,416],source:Fe},"rtmo-s":{key:"rtmo-s",family:"rtmo",filename:"rtmo-s.onnx",url:se("Xenova/RTMO-s","d8c526187f341d287753831c9c8b1ecc4855bba1","onnx/model.onnx"),bytes:39636400,sha256:"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7",input:[640,640],source:Fe},"rtmo-m":{key:"rtmo-m",family:"rtmo",filename:"rtmo-m.onnx",url:se("Xenova/RTMO-m","3aba1280472b98ee2bf663482e27e243038d23fe","onnx/model.onnx"),bytes:89291929,sha256:"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e",input:[640,640],source:Fe},"selfie-square":{key:"selfie-square",family:"selfie",filename:"selfie-square.onnx",url:se("onnx-community/mediapipe_selfie_segmentation","be49485c8e027524be38591817fc5cd31bd9d00e","onnx/model.onnx"),bytes:462352,sha256:"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad",input:[256,256],source:ft},"selfie-landscape":{key:"selfie-landscape",family:"selfie",filename:"selfie-landscape.onnx",url:se("onnx-community/mediapipe_selfie_segmentation_landscape","2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3","onnx/model.onnx"),bytes:462338,sha256:"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24",input:[256,144],source:ft}};function ht(r,e="s",t=1){return r==="pose"?`rtmo-${e}`:r==="matte"?t>1.3?"selfie-landscape":"selfie-square":`rtmdet-ins-${e}`}var ye=["person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"];y();function ae(r,e){let t=Math.max(r.originX,e.originX),n=Math.max(r.originY,e.originY),o=Math.min(r.originX+r.width,e.originX+e.width),s=Math.min(r.originY+r.height,e.originY+e.height),i=Math.max(0,o-t),f=Math.max(0,s-n),a=i*f;if(a<=0)return 0;let c=r.width*r.height,h=e.width*e.height,u=c+h-a;return u>0?a/u:0}var ue=class{_nextTrackId=1;_tracks=[];_iouThreshold;_maxMissedFrames;_minHits;_positionSmoothing;_activeDuringCoast;constructor(e={}){this._iouThreshold=e.iouThreshold??.25,this._maxMissedFrames=e.maxMissedFrames??15,this._minHits=e.minHits??1,this._positionSmoothing=Math.max(.1,Math.min(1,e.positionSmoothing??.75)),this._activeDuringCoast=e.activeDuringCoast!==!1}update(e,t,n=24){let o=n>0?1/n:.0416;for(let a of this._tracks)if(a.age++,a.timeSinceUpdate++,a.timeSinceUpdate>0){let c=a.centerX+a.vx*o,h=a.centerY+a.vy*o;a.centerX=c,a.centerY=h;let u=a.box.width,p=a.box.height,T=a.box.normalizedWidth,E=a.box.normalizedHeight,P=a.box.normalizedX+T/2+a.vx*o/Math.max(1,a.box.width/T),L=a.box.normalizedY+E/2+a.vy*o/Math.max(1,a.box.height/E);a.box={originX:c-u/2,originY:h-p/2,width:u,height:p,normalizedX:P-T/2,normalizedY:L-E/2,normalizedWidth:T,normalizedHeight:E},a.vx*=.92,a.vy*=.92,a.isCoasting=!0}let s=new Set,i=new Set,f=[];for(let a=0;a<this._tracks.length;a++){let c=this._tracks[a];for(let h=0;h<e.length;h++){let u=e[h];if(c.category!==u.category)continue;let p=ae(c.box,u.boundingBox);p>=this._iouThreshold&&f.push({trackIdx:a,detIdx:h,iou:p})}}f.sort((a,c)=>c.iou-a.iou);for(let a of f){if(i.has(a.trackIdx)||s.has(a.detIdx))continue;i.add(a.trackIdx),s.add(a.detIdx);let c=this._tracks[a.trackIdx],h=e[a.detIdx],u=h.boundingBox,p=u.originX+u.width/2,T=u.originY+u.height/2,E=(p-c.centerX)/o,P=(T-c.centerY)/o;c.vx=c.vx*.4+E*.6,c.vy=c.vy*.4+P*.6;let L=this._positionSmoothing,g=c.box.width*(1-L)+u.width*L,_=c.box.height*(1-L)+u.height*L,b=c.centerX*(1-L)+p*L,j=c.centerY*(1-L)+T*L;c.centerX=b,c.centerY=j,c.score=h.score,c.timeSinceUpdate=0,c.hits++,c.isCoasting=!1,c.hits>=this._minHits&&(c.active=!0),c.box={originX:b-g/2,originY:j-_/2,width:g,height:_,normalizedX:u.normalizedX,normalizedY:u.normalizedY,normalizedWidth:u.normalizedWidth,normalizedHeight:u.normalizedHeight}}for(let a=0;a<e.length;a++){if(s.has(a))continue;let c=e[a],h=c.boundingBox,u=h.originX+h.width/2,p=h.originY+h.height/2;this._tracks.push({trackId:this._nextTrackId++,category:c.category,score:c.score,box:h,centerX:u,centerY:p,vx:0,vy:0,age:1,hits:1,timeSinceUpdate:0,active:this._minHits<=1,isCoasting:!1})}return this._tracks=this._tracks.filter(a=>a.timeSinceUpdate<=this._maxMissedFrames),this._tracks.filter(a=>a.active).map(a=>{let c=a.box.normalizedWidth,h=a.box.normalizedHeight,u=a.box.normalizedX+c/2,p=a.box.normalizedY+h/2,T=Math.sqrt(a.vx*a.vx+a.vy*a.vy);return{trackId:a.trackId,category:a.category,score:a.score,boundingBox:a.box,centerX:a.centerX,centerY:a.centerY,normalizedCenterX:u,normalizedCenterY:p,velocity:{vx:a.vx,vy:a.vy},speed:T,age:a.age,hits:a.hits,active:this._activeDuringCoast?!0:a.timeSinceUpdate===0,isCoasting:a.isCoasting}})}trackSequence(e,t,n=24){this.reset();let o=n>0?1/n:.0416,s=new Map;for(let a=0;a<t;a++){let c=e[a]??[],h=this.update(c,a,n);for(let u of h)s.has(u.trackId)||s.set(u.trackId,{category:u.category,observations:[]}),u.isCoasting||s.get(u.trackId).observations.push({frame:a,box:u.boundingBox,score:u.score})}let i=new Map;for(let[a,c]of s.entries()){let h=c.observations;if(h.length===0)continue;h.sort((g,_)=>g.frame-_.frame);let u=new Array(t).fill(null);for(let g of h)u[g.frame]={box:g.box,score:g.score};let p=h[0];for(let g=0;g<p.frame;g++)u[g]={box:{...p.box},score:p.score*.9};for(let g=0;g<h.length-1;g++){let _=h[g],b=h[g+1],j=b.frame-_.frame;if(!(j<=1))for(let l=_.frame+1;l<b.frame;l++){let m=(l-_.frame)/j,x=_.box.originX+(b.box.originX-_.box.originX)*m,v=_.box.originY+(b.box.originY-_.box.originY)*m,w=_.box.width+(b.box.width-_.box.width)*m,O=_.box.height+(b.box.height-_.box.height)*m,H=_.box.normalizedX+(b.box.normalizedX-_.box.normalizedX)*m,R=_.box.normalizedY+(b.box.normalizedY-_.box.normalizedY)*m,M=_.box.normalizedWidth+(b.box.normalizedWidth-_.box.normalizedWidth)*m,d=_.box.normalizedHeight+(b.box.normalizedHeight-_.box.normalizedHeight)*m;u[l]={box:{originX:x,originY:v,width:w,height:O,normalizedX:H,normalizedY:R,normalizedWidth:M,normalizedHeight:d},score:_.score*(1-m)+b.score*m}}}let T=h[h.length-1];for(let g=T.frame+1;g<t;g++)u[g]={box:{...T.box},score:T.score*.9};let E=[],P=2,L=[.06136,.24477,.38774,.24477,.06136];for(let g=0;g<t;g++){let _=0,b=0,j=0,l=0,m=0,x=0,v=0,w=0,O=0,H=0;for(let M=-P;M<=P;M++){let d=Math.max(0,Math.min(t-1,g+M)),I=u[d];if(I){let U=L[M+P];_+=U,b+=I.box.originX*U,j+=I.box.originY*U,l+=I.box.width*U,m+=I.box.height*U,x+=I.box.normalizedX*U,v+=I.box.normalizedY*U,w+=I.box.normalizedWidth*U,O+=I.box.normalizedHeight*U,H+=I.score*U}}let R=_>0?1/_:1;E.push({box:{originX:b*R,originY:j*R,width:l*R,height:m*R,normalizedX:x*R,normalizedY:v*R,normalizedWidth:w*R,normalizedHeight:O*R},score:H*R})}i.set(a,{category:c.category,frames:E})}let f=[];for(let a=0;a<t;a++){let c=[];for(let[h,u]of i.entries()){let p=u.frames[a];if(!p)continue;let T=u.frames[Math.max(0,a-1)]??p,E=u.frames[Math.min(t-1,a+1)]??p,P=p.box.originX+p.box.width/2,L=p.box.originY+p.box.height/2,g=T.box.originX+T.box.width/2,_=T.box.originY+T.box.height/2,b=E.box.originX+E.box.width/2,j=E.box.originY+E.box.height/2,l=a===0||a===t-1?o:2*o,m=(b-g)/l,x=(j-_)/l,v=Math.sqrt(m*m+x*x),w=p.box.normalizedWidth,O=p.box.normalizedHeight;c.push({trackId:h,category:u.category,score:p.score,boundingBox:p.box,centerX:P,centerY:L,normalizedCenterX:p.box.normalizedX+w/2,normalizedCenterY:p.box.normalizedY+O/2,velocity:{vx:m,vy:x},speed:v,age:a+1,hits:10,active:!0,isCoasting:!1})}f.push(c)}return f}reset(){this._tracks=[],this._nextTrackId=1}};var gt=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();async function Gn(r,e){let{runner:t}=e,n=e.fps??24,o=e.tasks&&e.tasks.length>0?e.tasks:["detect"],s=new Set(o),i=e.categories?new Set(e.categories.map(M=>M.toLowerCase())):null,f=e.includeMasks===!0&&s.has("segment"),a=s.has("detect")||s.has("segment"),c=[],h={},u=new Map,p=0,T=0,E=M=>!i||i.has(M.toLowerCase()),P=async(M,d,I)=>{let U=t.modelKeyFor(M,d.width/d.height),A=t.downloadStatus.get(U)==="ready",V=gt(),D=await I(),X=gt()-V;return p+=X,!A&&!h[U]&&(h[U]={bytes:re[U].bytes,ms:X}),D},L=M=>{for(let d of M){if(!E(d.category))continue;let I=u.get(d.category)??{sum:0,count:0};I.sum+=d.coverage,I.count++,u.set(d.category,I)}};for await(let M of r){let d=[];if(f){let I=await P("segment",M,()=>t.segment(M));L(I.masks),d=I.detections}else a&&(d=await P("detect",M,()=>t.detect(M)));s.has("pose")&&await P("pose",M,()=>t.pose(M)),s.has("matte")&&await P("matte",M,()=>t.matte(M)),c.push(i?d.filter(I=>E(I.category)):d),T++}let g=T,b=new ue({iouThreshold:e.iouThreshold??.25,maxMissedFrames:e.maxMissedFrames??15}).trackSequence(c,g,n),j=e.pathStride??Math.max(1,Math.ceil(g/50)),l=new Map,m=new Map,x=new Map,v=new Map,w=(M,d,I)=>{let U=M.get(d);return U===void 0&&(U=I(),M.set(d,U)),U};for(let M=0;M<g;M++)for(let d of b[M]??[]){if(!E(d.category))continue;let I=l.get(d.trackId);I||(I={category:d.category,firstFrame:M,lastFrame:M,speedSum:0,speedCount:0,centers:[]},l.set(d.trackId,I)),I.lastFrame=M,Number.isFinite(d.speed)&&(I.speedSum+=d.speed,I.speedCount++),(M-I.firstFrame)%j===0&&I.centers.push({frame:M,x:d.centerX,y:d.centerY}),w(m,d.category,()=>new Set).add(M),x.set(d.category,Math.max(x.get(d.category)??0,d.score)),w(v,d.category,()=>new Set).add(d.trackId)}let O=Array.from(l.entries()).map(([M,d])=>({trackId:M,category:d.category,frames:[d.firstFrame,d.lastFrame],speedMeanPxS:d.speedCount>0?d.speedSum/d.speedCount:0,centerPath:d.centers.map(I=>[I.x,I.y])})).sort((M,d)=>M.trackId-d.trackId),H={};for(let[M,d]of m)H[M]={framesPresent:d.size,totalFrames:g,maxConfidence:x.get(M)??0,tracks:v.get(M)?.size??0};let R={};for(let[M,d]of u)R[M]={meanCoverage:d.count>0?d.sum/d.count:0};return{source:e.source??"frames",totalFrames:g,fps:n,durationSec:n>0?g/n:0,tasks:Array.from(s),modelDownloads:h,inferenceMs:p,trackCount:O.length,classes:H,tracks:O,masks:R}}y();var en=[103.53,116.28,123.675],tn=[57.375,57.12,58.395],nn={"rtmdet-ins":{fit:"topLeft",channels:"bgr",mean:en,std:tn,padValue:114},rtmo:{fit:"center",channels:"bgr",mean:[0,0,0],std:[1,1,1],padValue:114},selfie:{fit:"stretch",channels:"rgb",mean:[0,0,0],std:[255,255,255],padValue:0}};function pt(r,e){return{...nn[r],width:e[0],height:e[1]}}function rn(r,e,t){if(t.fit==="stretch")return{scaleX:t.width/r,scaleY:t.height/e,offsetX:0,offsetY:0,inputWidth:t.width,inputHeight:t.height};let n=Math.min(t.width/r,t.height/e),o=Math.round(r*n),s=Math.round(e*n),i=t.fit==="center";return{scaleX:n,scaleY:n,offsetX:i?(t.width-o)/2:0,offsetY:i?(t.height-s)/2:0,inputWidth:t.width,inputHeight:t.height}}function ce(r,e,t){return{x:(r-t.offsetX)/t.scaleX,y:(e-t.offsetY)/t.scaleY}}function bt(r,e,t){let{width:n,height:o,data:s}=r,{width:i,height:f}=e,a=rn(n,o,e),{scaleX:c,scaleY:h,offsetX:u,offsetY:p}=a,T=i*f;(!t||t.length<3*T)&&(t=new Float32Array(3*T));let E=e.channels==="bgr"?[2,1,0]:[0,1,2],[P,L,g]=e.mean,_=1/e.std[0],b=1/e.std[1],j=1/e.std[2],l=(e.padValue-P)*_,m=(e.padValue-L)*b,x=(e.padValue-g)*j,[v,w,O]=E,H=Math.ceil(u),R=Math.ceil(p),M=Math.min(i,Math.floor(u+n*c))-1,d=Math.min(f,Math.floor(p+o*h))-1;for(let I=0;I<f;I++){let U=I*i,A=I<R||I>d,V=Math.max(0,(I+.5-p)/h-.5),D=Math.min(o-1,Math.floor(V)),X=Math.min(o-1,D+1),q=V-D;for(let $=0;$<i;$++){let N=U+$;if(A||$<H||$>M){t[N]=l,t[T+N]=m,t[2*T+N]=x;continue}let K=Math.max(0,($+.5-u)/c-.5),G=Math.min(n-1,Math.floor(K)),ne=Math.min(n-1,G+1),z=K-G,Q=(D*n+G)*4,F=(D*n+ne)*4,Y=(X*n+G)*4,Z=(X*n+ne)*4,J=(1-z)*(1-q),ee=z*(1-q),W=(1-z)*q,oe=z*q;t[N]=(s[Q+v]*J+s[F+v]*ee+s[Y+v]*W+s[Z+v]*oe-P)*_,t[T+N]=(s[Q+w]*J+s[F+w]*ee+s[Y+w]*W+s[Z+w]*oe-L)*b,t[2*T+N]=(s[Q+O]*J+s[F+O]*ee+s[Y+O]*W+s[Z+O]*oe-g)*j}}return{tensor:t,transform:a}}y();var xe=8;function Ue(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=e.classes?new Set(e.classes.map(P=>P.toLowerCase())):null,i=[];for(let P=0;P<r.count;P++){let L=r.dets[P*5+4];if(!(L>=e.confidence))continue;let g=Number(r.labels[P]),_=e.classNames[g]??`class_${g}`;if(s&&!s.has(_.toLowerCase()))continue;let b=ce(r.dets[P*5],r.dets[P*5+1],o),j=ce(r.dets[P*5+2],r.dets[P*5+3],o),l=ie(b.x,0,t),m=ie(b.y,0,n),x=ie(j.x,0,t)-l,v=ie(j.y,0,n)-m;x<=0||v<=0||i.push({index:P,detection:{category:_,score:L,boundingBox:{originX:l,originY:m,width:x,height:v,normalizedX:l/t,normalizedY:m/n,normalizedWidth:x/t,normalizedHeight:v/n}}})}i.sort((P,L)=>L.detection.score-P.detection.score);let f=i.map(P=>P.detection),a=[];if(!r.masks)return{detections:f,masks:a};let c=He(e.maskThreshold??.5,e.featherRadius??.05),{maskWidth:h,maskHeight:u}=r,p=h*u,T=h/o.inputWidth,E=u/o.inputHeight;for(let P=0;P<i.length;P++){let{index:L,detection:g}=i[P],_=g.boundingBox,b=L*p,j=Math.max(0,Math.floor(_.originX)-xe),l=Math.max(0,Math.floor(_.originY)-xe),m=Math.min(t-1,Math.ceil(_.originX+_.width)+xe),x=Math.min(n-1,Math.ceil(_.originY+_.height)+xe),v=new Uint8Array(t*n),w=0;for(let O=l;O<=x;O++){let H=((O+.5)*o.scaleY+o.offsetY)*E-.5,R=ie(Math.floor(H),0,u-1),M=Math.min(u-1,R+1),d=ie(H-R,0,1),I=O*t;for(let U=j;U<=m;U++){let A=((U+.5)*o.scaleX+o.offsetX)*T-.5,V=ie(Math.floor(A),0,h-1),D=Math.min(h-1,V+1),X=ie(A-V,0,1),q=r.masks[b+R*h+V]*(1-X)*(1-d)+r.masks[b+R*h+D]*X*(1-d)+r.masks[b+M*h+V]*(1-X)*d+r.masks[b+M*h+D]*X*d,$=c(q);$>0&&(v[I+U]=$,w+=$/255)}}w=Math.round(w),w!==0&&a.push({category:g.category,mask:v,width:t,height:n,area:w,coverage:w/(t*n),detectionIndex:P})}return{detections:f,masks:a}}function He(r,e){if(e<=0)return o=>o>r?255:0;let t=r-e,n=255/(2*e);return o=>o<=t?0:o>=r+e?255:(o-t)*n}function ie(r,e,t){return r<e?e:r>t?t:r}y();var yt=17,ze=.3;function xt(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=r.keypointStride,i=[];for(let c=0;c<r.count;c++){let h=r.dets[c*5+4];if(!(h>=e.confidence))continue;let u=ce(r.dets[c*5],r.dets[c*5+1],o),p=ce(r.dets[c*5+2],r.dets[c*5+3],o),T=le(u.x,0,t),E=le(u.y,0,n),P=le(p.x,0,t)-T,L=le(p.y,0,n)-E;if(P<=0||L<=0)continue;let g=[],_=c*yt*s;for(let j=0;j<yt;j++){let l=_+j*s,m=ce(r.keypoints[l],r.keypoints[l+1],o);g.push({x:le(m.x,0,t),y:le(m.y,0,n),visibility:le(r.keypoints[l+2],0,1)})}let b=0;for(let j of g)j.visibility>=ze&&b++;b<(e.minVisibleKeypoints??3)||i.push({score:h,boundingBox:{originX:T,originY:E,width:P,height:L,normalizedX:T/t,normalizedY:E/n,normalizedWidth:P/t,normalizedHeight:L/n},keypoints:g})}i.sort((c,h)=>h.score-c.score);let f=e.iouThreshold??.6,a=[];for(let c of i)a.some(h=>on(h,c,f))||a.push(c);return{people:a}}function le(r,e,t){return r<e?e:r>t?t:r}function on(r,e,t){if(ae(r.boundingBox,e.boundingBox)>t)return!0;let n=Math.sqrt(r.boundingBox.width*r.boundingBox.height),o=0,s=0;for(let i=0;i<r.keypoints.length;i++){let f=r.keypoints[i],a=e.keypoints[i];f.visibility<ze||a.visibility<ze||(o+=Math.hypot(f.x-a.x,f.y-a.y),s++)}return s>=3&&o/s<.1*n}y();function kt(r,e,t,n){let{sourceWidth:o,sourceHeight:s}=n,i=He(n.maskThreshold??.5,n.featherRadius??.2),f=new Uint8Array(o*s),a=e/o,c=t/s,h=0;for(let u=0;u<s;u++){let p=Math.max(0,(u+.5)*c-.5),T=Math.min(t-1,Math.floor(p)),E=Math.min(t-1,T+1),P=p-T;for(let L=0;L<o;L++){let g=Math.max(0,(L+.5)*a-.5),_=Math.min(e-1,Math.floor(g)),b=Math.min(e-1,_+1),j=g-_,l=r[T*e+_]*(1-j)*(1-P)+r[T*e+b]*j*(1-P)+r[E*e+_]*(1-j)*P+r[E*e+b]*j*P,m=i(l);f[u*o+L]=m,h+=m}}return{mask:f,width:o,height:s,coverage:o*s>0?h/(255*o*s):0}}y();y();y();var Tt=`
|
|
1
|
+
import{a as Ve}from"./chunk-VXUJWPIK.mjs";import{a as lt}from"./chunk-XKO4RYKN.mjs";import{c as mt}from"./chunk-UC7CSW2A.mjs";import{I as ut,a as S,b as C}from"./chunk-NQZKBFC6.mjs";import{b as dt,d as be,e as je,h as te}from"./chunk-P3HBP725.mjs";import{a as nt}from"./chunk-YSTLMWCG.mjs";import{a as st,e as it,i as Le,j as at}from"./chunk-4GEWSUX5.mjs";import{b as ge,c as rt,e as ot}from"./chunk-MTJHQATU.mjs";import{d as ct,e as pe,g as Ee}from"./chunk-YAQFFQPG.mjs";import{a as Jt,c as Qt,d as B,e as y}from"./chunk-BVF64D6H.mjs";var vt=Jt((kr,wt)=>{y();var _e=()=>new Proxy(function(){},{get:(r,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":_e(),apply:()=>_e(),construct:()=>_e()});wt.exports=_e()});y();y();y();y();y();var se=(r,e,t)=>`https://huggingface.co/${r}/resolve/${e}/${t}`,Ae="tori29umai/rtmdet-ins-onnx-person-masks",Be="e5218e8d47d7c50077f27f9893a28e0ef2ad5656",De="RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export",Fe="RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export",ft="MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export",re={"rtmdet-ins-t":{key:"rtmdet-ins-t",family:"rtmdet-ins",filename:"rtmdet-ins-t.onnx",url:se(Ae,Be,"models/tiny/rtmdet-ins_tiny_640x640.onnx"),bytes:24032356,sha256:"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c",input:[640,640],source:De},"rtmdet-ins-s":{key:"rtmdet-ins-s",family:"rtmdet-ins",filename:"rtmdet-ins-s.onnx",url:se(Ae,Be,"models/s/rtmdet-ins_s_640x640.onnx"),bytes:43236976,sha256:"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b",input:[640,640],source:De},"rtmdet-ins-m":{key:"rtmdet-ins-m",family:"rtmdet-ins",filename:"rtmdet-ins-m.onnx",url:se(Ae,Be,"models/m/rtmdet-ins_m_640x640.onnx"),bytes:115735979,sha256:"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052",input:[640,640],source:De},"rtmo-t":{key:"rtmo-t",family:"rtmo",filename:"rtmo-t.onnx",url:se("Xenova/RTMO-t","f29d13ce5ee291fbe505e9d06a049992f05699dc","onnx/model.onnx"),bytes:27360569,sha256:"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13",input:[416,416],source:Fe},"rtmo-s":{key:"rtmo-s",family:"rtmo",filename:"rtmo-s.onnx",url:se("Xenova/RTMO-s","d8c526187f341d287753831c9c8b1ecc4855bba1","onnx/model.onnx"),bytes:39636400,sha256:"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7",input:[640,640],source:Fe},"rtmo-m":{key:"rtmo-m",family:"rtmo",filename:"rtmo-m.onnx",url:se("Xenova/RTMO-m","3aba1280472b98ee2bf663482e27e243038d23fe","onnx/model.onnx"),bytes:89291929,sha256:"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e",input:[640,640],source:Fe},"selfie-square":{key:"selfie-square",family:"selfie",filename:"selfie-square.onnx",url:se("onnx-community/mediapipe_selfie_segmentation","be49485c8e027524be38591817fc5cd31bd9d00e","onnx/model.onnx"),bytes:462352,sha256:"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad",input:[256,256],source:ft},"selfie-landscape":{key:"selfie-landscape",family:"selfie",filename:"selfie-landscape.onnx",url:se("onnx-community/mediapipe_selfie_segmentation_landscape","2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3","onnx/model.onnx"),bytes:462338,sha256:"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24",input:[256,144],source:ft}};function ht(r,e="s",t=1){return r==="pose"?`rtmo-${e}`:r==="matte"?t>1.3?"selfie-landscape":"selfie-square":`rtmdet-ins-${e}`}var ye=["person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"];y();function ae(r,e){let t=Math.max(r.originX,e.originX),n=Math.max(r.originY,e.originY),o=Math.min(r.originX+r.width,e.originX+e.width),s=Math.min(r.originY+r.height,e.originY+e.height),i=Math.max(0,o-t),f=Math.max(0,s-n),a=i*f;if(a<=0)return 0;let c=r.width*r.height,h=e.width*e.height,u=c+h-a;return u>0?a/u:0}var ue=class{_nextTrackId=1;_tracks=[];_iouThreshold;_maxMissedFrames;_minHits;_positionSmoothing;_activeDuringCoast;constructor(e={}){this._iouThreshold=e.iouThreshold??.25,this._maxMissedFrames=e.maxMissedFrames??15,this._minHits=e.minHits??1,this._positionSmoothing=Math.max(.1,Math.min(1,e.positionSmoothing??.75)),this._activeDuringCoast=e.activeDuringCoast!==!1}update(e,t,n=24){let o=n>0?1/n:.0416;for(let a of this._tracks)if(a.age++,a.timeSinceUpdate++,a.timeSinceUpdate>0){let c=a.centerX+a.vx*o,h=a.centerY+a.vy*o;a.centerX=c,a.centerY=h;let u=a.box.width,p=a.box.height,T=a.box.normalizedWidth,E=a.box.normalizedHeight,P=a.box.normalizedX+T/2+a.vx*o/Math.max(1,a.box.width/T),L=a.box.normalizedY+E/2+a.vy*o/Math.max(1,a.box.height/E);a.box={originX:c-u/2,originY:h-p/2,width:u,height:p,normalizedX:P-T/2,normalizedY:L-E/2,normalizedWidth:T,normalizedHeight:E},a.vx*=.92,a.vy*=.92,a.isCoasting=!0}let s=new Set,i=new Set,f=[];for(let a=0;a<this._tracks.length;a++){let c=this._tracks[a];for(let h=0;h<e.length;h++){let u=e[h];if(c.category!==u.category)continue;let p=ae(c.box,u.boundingBox);p>=this._iouThreshold&&f.push({trackIdx:a,detIdx:h,iou:p})}}f.sort((a,c)=>c.iou-a.iou);for(let a of f){if(i.has(a.trackIdx)||s.has(a.detIdx))continue;i.add(a.trackIdx),s.add(a.detIdx);let c=this._tracks[a.trackIdx],h=e[a.detIdx],u=h.boundingBox,p=u.originX+u.width/2,T=u.originY+u.height/2,E=(p-c.centerX)/o,P=(T-c.centerY)/o;c.vx=c.vx*.4+E*.6,c.vy=c.vy*.4+P*.6;let L=this._positionSmoothing,g=c.box.width*(1-L)+u.width*L,_=c.box.height*(1-L)+u.height*L,b=c.centerX*(1-L)+p*L,j=c.centerY*(1-L)+T*L;c.centerX=b,c.centerY=j,c.score=h.score,c.timeSinceUpdate=0,c.hits++,c.isCoasting=!1,c.hits>=this._minHits&&(c.active=!0),c.box={originX:b-g/2,originY:j-_/2,width:g,height:_,normalizedX:u.normalizedX,normalizedY:u.normalizedY,normalizedWidth:u.normalizedWidth,normalizedHeight:u.normalizedHeight}}for(let a=0;a<e.length;a++){if(s.has(a))continue;let c=e[a],h=c.boundingBox,u=h.originX+h.width/2,p=h.originY+h.height/2;this._tracks.push({trackId:this._nextTrackId++,category:c.category,score:c.score,box:h,centerX:u,centerY:p,vx:0,vy:0,age:1,hits:1,timeSinceUpdate:0,active:this._minHits<=1,isCoasting:!1})}return this._tracks=this._tracks.filter(a=>a.timeSinceUpdate<=this._maxMissedFrames),this._tracks.filter(a=>a.active).map(a=>{let c=a.box.normalizedWidth,h=a.box.normalizedHeight,u=a.box.normalizedX+c/2,p=a.box.normalizedY+h/2,T=Math.sqrt(a.vx*a.vx+a.vy*a.vy);return{trackId:a.trackId,category:a.category,score:a.score,boundingBox:a.box,centerX:a.centerX,centerY:a.centerY,normalizedCenterX:u,normalizedCenterY:p,velocity:{vx:a.vx,vy:a.vy},speed:T,age:a.age,hits:a.hits,active:this._activeDuringCoast?!0:a.timeSinceUpdate===0,isCoasting:a.isCoasting}})}trackSequence(e,t,n=24){this.reset();let o=n>0?1/n:.0416,s=new Map;for(let a=0;a<t;a++){let c=e[a]??[],h=this.update(c,a,n);for(let u of h)s.has(u.trackId)||s.set(u.trackId,{category:u.category,observations:[]}),u.isCoasting||s.get(u.trackId).observations.push({frame:a,box:u.boundingBox,score:u.score})}let i=new Map;for(let[a,c]of s.entries()){let h=c.observations;if(h.length===0)continue;h.sort((g,_)=>g.frame-_.frame);let u=new Array(t).fill(null);for(let g of h)u[g.frame]={box:g.box,score:g.score};let p=h[0];for(let g=0;g<p.frame;g++)u[g]={box:{...p.box},score:p.score*.9};for(let g=0;g<h.length-1;g++){let _=h[g],b=h[g+1],j=b.frame-_.frame;if(!(j<=1))for(let l=_.frame+1;l<b.frame;l++){let m=(l-_.frame)/j,x=_.box.originX+(b.box.originX-_.box.originX)*m,v=_.box.originY+(b.box.originY-_.box.originY)*m,w=_.box.width+(b.box.width-_.box.width)*m,O=_.box.height+(b.box.height-_.box.height)*m,H=_.box.normalizedX+(b.box.normalizedX-_.box.normalizedX)*m,R=_.box.normalizedY+(b.box.normalizedY-_.box.normalizedY)*m,M=_.box.normalizedWidth+(b.box.normalizedWidth-_.box.normalizedWidth)*m,d=_.box.normalizedHeight+(b.box.normalizedHeight-_.box.normalizedHeight)*m;u[l]={box:{originX:x,originY:v,width:w,height:O,normalizedX:H,normalizedY:R,normalizedWidth:M,normalizedHeight:d},score:_.score*(1-m)+b.score*m}}}let T=h[h.length-1];for(let g=T.frame+1;g<t;g++)u[g]={box:{...T.box},score:T.score*.9};let E=[],P=2,L=[.06136,.24477,.38774,.24477,.06136];for(let g=0;g<t;g++){let _=0,b=0,j=0,l=0,m=0,x=0,v=0,w=0,O=0,H=0;for(let M=-P;M<=P;M++){let d=Math.max(0,Math.min(t-1,g+M)),I=u[d];if(I){let U=L[M+P];_+=U,b+=I.box.originX*U,j+=I.box.originY*U,l+=I.box.width*U,m+=I.box.height*U,x+=I.box.normalizedX*U,v+=I.box.normalizedY*U,w+=I.box.normalizedWidth*U,O+=I.box.normalizedHeight*U,H+=I.score*U}}let R=_>0?1/_:1;E.push({box:{originX:b*R,originY:j*R,width:l*R,height:m*R,normalizedX:x*R,normalizedY:v*R,normalizedWidth:w*R,normalizedHeight:O*R},score:H*R})}i.set(a,{category:c.category,frames:E})}let f=[];for(let a=0;a<t;a++){let c=[];for(let[h,u]of i.entries()){let p=u.frames[a];if(!p)continue;let T=u.frames[Math.max(0,a-1)]??p,E=u.frames[Math.min(t-1,a+1)]??p,P=p.box.originX+p.box.width/2,L=p.box.originY+p.box.height/2,g=T.box.originX+T.box.width/2,_=T.box.originY+T.box.height/2,b=E.box.originX+E.box.width/2,j=E.box.originY+E.box.height/2,l=a===0||a===t-1?o:2*o,m=(b-g)/l,x=(j-_)/l,v=Math.sqrt(m*m+x*x),w=p.box.normalizedWidth,O=p.box.normalizedHeight;c.push({trackId:h,category:u.category,score:p.score,boundingBox:p.box,centerX:P,centerY:L,normalizedCenterX:p.box.normalizedX+w/2,normalizedCenterY:p.box.normalizedY+O/2,velocity:{vx:m,vy:x},speed:v,age:a+1,hits:10,active:!0,isCoasting:!1})}f.push(c)}return f}reset(){this._tracks=[],this._nextTrackId=1}};var gt=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();async function Gn(r,e){let{runner:t}=e,n=e.fps??24,o=e.tasks&&e.tasks.length>0?e.tasks:["detect"],s=new Set(o),i=e.categories?new Set(e.categories.map(M=>M.toLowerCase())):null,f=e.includeMasks===!0&&s.has("segment"),a=s.has("detect")||s.has("segment"),c=[],h={},u=new Map,p=0,T=0,E=M=>!i||i.has(M.toLowerCase()),P=async(M,d,I)=>{let U=t.modelKeyFor(M,d.width/d.height),A=t.downloadStatus.get(U)==="ready",V=gt(),D=await I(),X=gt()-V;return p+=X,!A&&!h[U]&&(h[U]={bytes:re[U].bytes,ms:X}),D},L=M=>{for(let d of M){if(!E(d.category))continue;let I=u.get(d.category)??{sum:0,count:0};I.sum+=d.coverage,I.count++,u.set(d.category,I)}};for await(let M of r){let d=[];if(f){let I=await P("segment",M,()=>t.segment(M));L(I.masks),d=I.detections}else a&&(d=await P("detect",M,()=>t.detect(M)));s.has("pose")&&await P("pose",M,()=>t.pose(M)),s.has("matte")&&await P("matte",M,()=>t.matte(M)),c.push(i?d.filter(I=>E(I.category)):d),T++}let g=T,b=new ue({iouThreshold:e.iouThreshold??.25,maxMissedFrames:e.maxMissedFrames??15}).trackSequence(c,g,n),j=e.pathStride??Math.max(1,Math.ceil(g/50)),l=new Map,m=new Map,x=new Map,v=new Map,w=(M,d,I)=>{let U=M.get(d);return U===void 0&&(U=I(),M.set(d,U)),U};for(let M=0;M<g;M++)for(let d of b[M]??[]){if(!E(d.category))continue;let I=l.get(d.trackId);I||(I={category:d.category,firstFrame:M,lastFrame:M,speedSum:0,speedCount:0,centers:[]},l.set(d.trackId,I)),I.lastFrame=M,Number.isFinite(d.speed)&&(I.speedSum+=d.speed,I.speedCount++),(M-I.firstFrame)%j===0&&I.centers.push({frame:M,x:d.centerX,y:d.centerY}),w(m,d.category,()=>new Set).add(M),x.set(d.category,Math.max(x.get(d.category)??0,d.score)),w(v,d.category,()=>new Set).add(d.trackId)}let O=Array.from(l.entries()).map(([M,d])=>({trackId:M,category:d.category,frames:[d.firstFrame,d.lastFrame],speedMeanPxS:d.speedCount>0?d.speedSum/d.speedCount:0,centerPath:d.centers.map(I=>[I.x,I.y])})).sort((M,d)=>M.trackId-d.trackId),H={};for(let[M,d]of m)H[M]={framesPresent:d.size,totalFrames:g,maxConfidence:x.get(M)??0,tracks:v.get(M)?.size??0};let R={};for(let[M,d]of u)R[M]={meanCoverage:d.count>0?d.sum/d.count:0};return{source:e.source??"frames",totalFrames:g,fps:n,durationSec:n>0?g/n:0,tasks:Array.from(s),modelDownloads:h,inferenceMs:p,trackCount:O.length,classes:H,tracks:O,masks:R}}y();var en=[103.53,116.28,123.675],tn=[57.375,57.12,58.395],nn={"rtmdet-ins":{fit:"topLeft",channels:"bgr",mean:en,std:tn,padValue:114},rtmo:{fit:"center",channels:"bgr",mean:[0,0,0],std:[1,1,1],padValue:114},selfie:{fit:"stretch",channels:"rgb",mean:[0,0,0],std:[255,255,255],padValue:0}};function pt(r,e){return{...nn[r],width:e[0],height:e[1]}}function rn(r,e,t){if(t.fit==="stretch")return{scaleX:t.width/r,scaleY:t.height/e,offsetX:0,offsetY:0,inputWidth:t.width,inputHeight:t.height};let n=Math.min(t.width/r,t.height/e),o=Math.round(r*n),s=Math.round(e*n),i=t.fit==="center";return{scaleX:n,scaleY:n,offsetX:i?(t.width-o)/2:0,offsetY:i?(t.height-s)/2:0,inputWidth:t.width,inputHeight:t.height}}function ce(r,e,t){return{x:(r-t.offsetX)/t.scaleX,y:(e-t.offsetY)/t.scaleY}}function bt(r,e,t){let{width:n,height:o,data:s}=r,{width:i,height:f}=e,a=rn(n,o,e),{scaleX:c,scaleY:h,offsetX:u,offsetY:p}=a,T=i*f;(!t||t.length<3*T)&&(t=new Float32Array(3*T));let E=e.channels==="bgr"?[2,1,0]:[0,1,2],[P,L,g]=e.mean,_=1/e.std[0],b=1/e.std[1],j=1/e.std[2],l=(e.padValue-P)*_,m=(e.padValue-L)*b,x=(e.padValue-g)*j,[v,w,O]=E,H=Math.ceil(u),R=Math.ceil(p),M=Math.min(i,Math.floor(u+n*c))-1,d=Math.min(f,Math.floor(p+o*h))-1;for(let I=0;I<f;I++){let U=I*i,A=I<R||I>d,V=Math.max(0,(I+.5-p)/h-.5),D=Math.min(o-1,Math.floor(V)),X=Math.min(o-1,D+1),q=V-D;for(let $=0;$<i;$++){let N=U+$;if(A||$<H||$>M){t[N]=l,t[T+N]=m,t[2*T+N]=x;continue}let K=Math.max(0,($+.5-u)/c-.5),G=Math.min(n-1,Math.floor(K)),ne=Math.min(n-1,G+1),z=K-G,Q=(D*n+G)*4,F=(D*n+ne)*4,Y=(X*n+G)*4,Z=(X*n+ne)*4,J=(1-z)*(1-q),ee=z*(1-q),W=(1-z)*q,oe=z*q;t[N]=(s[Q+v]*J+s[F+v]*ee+s[Y+v]*W+s[Z+v]*oe-P)*_,t[T+N]=(s[Q+w]*J+s[F+w]*ee+s[Y+w]*W+s[Z+w]*oe-L)*b,t[2*T+N]=(s[Q+O]*J+s[F+O]*ee+s[Y+O]*W+s[Z+O]*oe-g)*j}}return{tensor:t,transform:a}}y();var xe=8;function Ue(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=e.classes?new Set(e.classes.map(P=>P.toLowerCase())):null,i=[];for(let P=0;P<r.count;P++){let L=r.dets[P*5+4];if(!(L>=e.confidence))continue;let g=Number(r.labels[P]),_=e.classNames[g]??`class_${g}`;if(s&&!s.has(_.toLowerCase()))continue;let b=ce(r.dets[P*5],r.dets[P*5+1],o),j=ce(r.dets[P*5+2],r.dets[P*5+3],o),l=ie(b.x,0,t),m=ie(b.y,0,n),x=ie(j.x,0,t)-l,v=ie(j.y,0,n)-m;x<=0||v<=0||i.push({index:P,detection:{category:_,score:L,boundingBox:{originX:l,originY:m,width:x,height:v,normalizedX:l/t,normalizedY:m/n,normalizedWidth:x/t,normalizedHeight:v/n}}})}i.sort((P,L)=>L.detection.score-P.detection.score);let f=i.map(P=>P.detection),a=[];if(!r.masks)return{detections:f,masks:a};let c=He(e.maskThreshold??.5,e.featherRadius??.05),{maskWidth:h,maskHeight:u}=r,p=h*u,T=h/o.inputWidth,E=u/o.inputHeight;for(let P=0;P<i.length;P++){let{index:L,detection:g}=i[P],_=g.boundingBox,b=L*p,j=Math.max(0,Math.floor(_.originX)-xe),l=Math.max(0,Math.floor(_.originY)-xe),m=Math.min(t-1,Math.ceil(_.originX+_.width)+xe),x=Math.min(n-1,Math.ceil(_.originY+_.height)+xe),v=new Uint8Array(t*n),w=0;for(let O=l;O<=x;O++){let H=((O+.5)*o.scaleY+o.offsetY)*E-.5,R=ie(Math.floor(H),0,u-1),M=Math.min(u-1,R+1),d=ie(H-R,0,1),I=O*t;for(let U=j;U<=m;U++){let A=((U+.5)*o.scaleX+o.offsetX)*T-.5,V=ie(Math.floor(A),0,h-1),D=Math.min(h-1,V+1),X=ie(A-V,0,1),q=r.masks[b+R*h+V]*(1-X)*(1-d)+r.masks[b+R*h+D]*X*(1-d)+r.masks[b+M*h+V]*(1-X)*d+r.masks[b+M*h+D]*X*d,$=c(q);$>0&&(v[I+U]=$,w+=$/255)}}w=Math.round(w),w!==0&&a.push({category:g.category,mask:v,width:t,height:n,area:w,coverage:w/(t*n),detectionIndex:P})}return{detections:f,masks:a}}function He(r,e){if(e<=0)return o=>o>r?255:0;let t=r-e,n=255/(2*e);return o=>o<=t?0:o>=r+e?255:(o-t)*n}function ie(r,e,t){return r<e?e:r>t?t:r}y();var yt=17,ze=.3;function xt(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=r.keypointStride,i=[];for(let c=0;c<r.count;c++){let h=r.dets[c*5+4];if(!(h>=e.confidence))continue;let u=ce(r.dets[c*5],r.dets[c*5+1],o),p=ce(r.dets[c*5+2],r.dets[c*5+3],o),T=le(u.x,0,t),E=le(u.y,0,n),P=le(p.x,0,t)-T,L=le(p.y,0,n)-E;if(P<=0||L<=0)continue;let g=[],_=c*yt*s;for(let j=0;j<yt;j++){let l=_+j*s,m=ce(r.keypoints[l],r.keypoints[l+1],o);g.push({x:le(m.x,0,t),y:le(m.y,0,n),visibility:le(r.keypoints[l+2],0,1)})}let b=0;for(let j of g)j.visibility>=ze&&b++;b<(e.minVisibleKeypoints??3)||i.push({score:h,boundingBox:{originX:T,originY:E,width:P,height:L,normalizedX:T/t,normalizedY:E/n,normalizedWidth:P/t,normalizedHeight:L/n},keypoints:g})}i.sort((c,h)=>h.score-c.score);let f=e.iouThreshold??.6,a=[];for(let c of i)a.some(h=>on(h,c,f))||a.push(c);return{people:a}}function le(r,e,t){return r<e?e:r>t?t:r}function on(r,e,t){if(ae(r.boundingBox,e.boundingBox)>t)return!0;let n=Math.sqrt(r.boundingBox.width*r.boundingBox.height),o=0,s=0;for(let i=0;i<r.keypoints.length;i++){let f=r.keypoints[i],a=e.keypoints[i];f.visibility<ze||a.visibility<ze||(o+=Math.hypot(f.x-a.x,f.y-a.y),s++)}return s>=3&&o/s<.1*n}y();function kt(r,e,t,n){let{sourceWidth:o,sourceHeight:s}=n,i=He(n.maskThreshold??.5,n.featherRadius??.2),f=new Uint8Array(o*s),a=e/o,c=t/s,h=0;for(let u=0;u<s;u++){let p=Math.max(0,(u+.5)*c-.5),T=Math.min(t-1,Math.floor(p)),E=Math.min(t-1,T+1),P=p-T;for(let L=0;L<o;L++){let g=Math.max(0,(L+.5)*a-.5),_=Math.min(e-1,Math.floor(g)),b=Math.min(e-1,_+1),j=g-_,l=r[T*e+_]*(1-j)*(1-P)+r[T*e+b]*j*(1-P)+r[E*e+_]*(1-j)*P+r[E*e+b]*j*P,m=i(l);f[u*o+L]=m,h+=m}}return{mask:f,width:o,height:s,coverage:o*s>0?h/(255*o*s):0}}y();y();y();var Tt=`
|
|
2
2
|
struct Bone {
|
|
3
3
|
start: vec2<f32>,
|
|
4
4
|
end: vec2<f32>,
|
|
@@ -95,4 +95,4 @@ struct VSOut {
|
|
|
95
95
|
}
|
|
96
96
|
return textureSampleLevel(picture, samp, uv, 0.0) * m;
|
|
97
97
|
}
|
|
98
|
-
`,Ie=class{constructor(e,t){this.device=e;let n=e.createShaderModule({label:"vision_matte_composite",code:_n});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:n,entryPoint:"vs"},fragment:{module:n,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,t,n,o){let s=this.masks.get(e);(!s||s.width!==n||s.height!==o)&&(s?.destroy(),s=this.device.createTexture({label:`vision_mask_${e}`,size:[n,o],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,s));let i=Math.ceil(n/256)*256,f=t;if(i!==n){f=new Uint8Array(i*o);for(let a=0;a<o;a++)f.set(t.subarray(a*n,(a+1)*n),a*i)}return this.device.queue.writeTexture({texture:s},f.buffer,{offset:f.byteOffset,bytesPerRow:i,rowsPerImage:o},{width:n,height:o}),s}draw(e,t,n,o,s,i){let f=o.width,a=o.height,c=new Float32Array(8),h=new Uint32Array(c.buffer);h[0]=s==="matte"?0:s==="mask"?1:2,s==="crop"&&i?(c[2]=i.x0/f,c[3]=i.y0/a,c[4]=(i.x1+1)/f,c[5]=(i.y1+1)/a):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,s==="crop"&&(h[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let u=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(u,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:n.createView()},{binding:2,resource:o.createView()},{binding:3,resource:this.sampler}]}),T=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:t,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});T.setPipeline(this.pipeline),T.setBindGroup(0,p),T.draw(3),T.end()}};var Ce=null,Qe=null,Oe=null,Gt=null,$t=new Re,Wt=new Map,Sn=new Map,wn=new Map,Kt=new Map,et=new WeakMap,de=new Map,tt=new Map,vn=3;function qt(r,e,t,n,o,s){let i=r.get(t);return(!i||i.width!==n.width||i.height!==n.height||i.format!==n.format)&&(i?.destroy(),i=e.createTexture({size:[n.width,n.height],format:n.format,usage:o,label:s}),r.set(t,i)),i}var Mn=(r,e,t)=>qt(Sn,r,e,t,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),Pn=(r,e,t)=>qt(wn,r,e,t,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function Rn(r,e,t,n,o){let s=e;return JSON.stringify([r,s?.operation?.id??s?.id??null,n,o,t.mode??"passthrough",t.variant,t.confidence,t.classes,t.maskThreshold,t.featherRadius,t.matteSource,t.keyBackground===!0,t.maxMissedFrames])}function In(r,e,t){let n=r.backgroundKeyThreshold;return typeof n=="number"?n:typeof n?.get=="function"?Number(n.get({frame:e,fps:t})):typeof n?._value=="number"?Number(n._value):70}function Cn(r,e,t){if(r)return tt.set(e,{mask:r,frame:t}),r;let n=tt.get(e);if(n&&t-n.frame<=vn)return n.mask}function On(r){let e={variant:r.variant,confidence:r.confidence,classes:r.classes,maskThreshold:r.maskThreshold,featherRadius:r.featherRadius,modelsDir:r.modelsDir,baseUrl:r.baseUrl},t=JSON.stringify(e);return Ce?.key!==t&&(Ce?.runner.close(),Ce={key:t,runner:fe.create(e)}),Ce.runner}function Ln(r,e){let t=Kt.get(r);return t||(t=new ue({maxMissedFrames:e.maxMissedFrames??15}),Kt.set(r,t)),t}function En(r,e,t){return e<=0||t<=0?r:{people:r.people.map(n=>({...n,keypoints:n.keypoints.map(o=>({x:o.x/e,y:o.y/t,visibility:o.visibility}))}))}}function jn(r,e){return r.map(t=>{let{cx:n,cy:o}=Dn(t),s=null;for(let i of e){let f=i.centerX-n,a=i.centerY-o,c=f*f+a*a;(!s||c<s.distance)&&(s={trackId:i.trackId,distance:c})}return s?{...t,trackId:s.trackId}:t})}function Vn(r,e,t){let n=e*t,o=new Uint8Array(n),s=new Int32Array(n),i=0,f=c=>{o[c]||r[c]>0||(o[c]=1,s[i++]=c)};for(let c=0;c<e;c++)f(c),f((t-1)*e+c);for(let c=0;c<t;c++)f(c*e),f(c*e+e-1);let a=0;for(;a<i;){let c=s[a++],h=c%e,u=c+1;h+1<e&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-1,h>0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c+e,u<n&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-e,u>=0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u)}for(let c=0;c<n;c++)r[c]===0&&o[c]===0&&(r[c]=255)}function An(r,e,t,n=2){if(n<=0)return r;let o=new Uint8Array(e*t),s=new Uint8Array(e*t),i=2*n+1;for(let a=0;a<t;a++){let c=a*e,h=0;for(let u=-n;u<=n;u++){let p=Math.max(0,Math.min(e-1,u));h+=r[c+p]}for(let u=0;u<e;u++){o[c+u]=Math.round(h/i);let p=Math.max(0,u-n),T=Math.min(e-1,u+n+1);h+=r[c+T]-r[c+p]}}let f=new Float64Array(e);for(let a=-n;a<=n;a++){let c=Math.max(0,Math.min(t-1,a))*e;for(let h=0;h<e;h++)f[h]+=o[c+h]}for(let a=0;a<t;a++){let c=a*e,h=Math.max(0,a-n)*e,u=Math.min(t-1,a+n+1)*e;for(let p=0;p<e;p++)s[c+p]=Math.round(f[p]/i),f[p]+=o[u+p]-o[h+p]}return s}function Bn(r,e,t,n,o,s){let i=0,f=0,a=0,c=0,h=(g,_)=>{let b=_*e+g;if(r[b])return;let j=b*4;i+=n[j],f+=n[j+1],a+=n[j+2],c++};for(let g=0;g<e;g+=4)h(g,0),h(g,t-1);for(let g=0;g<t;g+=4)h(0,g),h(e-1,g);if(c===0)return r;i/=c,f/=c,a/=c;let u=e*t,p=new Uint8Array(u);for(let g=0,_=0;g<u;g++,_+=4)p[g]=Math.max(Math.abs(n[_]-i),Math.abs(n[_+1]-f),Math.abs(n[_+2]-a))>o?1:0;let T=new Int32Array(u),E=0;for(let g=0;g<u;g++)r[g]>0&&(p[g]&&(r[g]=255),T[E++]=g);let P=0;for(;P<E;){let g=T[P++],_=g%e,b=g+1;_+1<e&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-1,_>0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g+e,b<u&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-e,b>=0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b)}Vn(r,e,t);let L=s!==void 0&&s>0?Math.max(1,Math.min(8,Math.round(s*50))):2;return An(r,e,t,L)}function Dn(r){let{mask:e,width:t,height:n}=r,o=0,s=0,i=0;for(let f=0;f<n;f++){let a=f*t;for(let c=0;c<t;c++)e[a+c]>0&&(o+=c,s+=f,i++)}return i===0?{cx:0,cy:0}:{cx:o/i,cy:s/i}}var Zt=async r=>{let{ctx:e,encoder:t,pass:n,targetView:o,targetWidth:s,targetHeight:i,props:f,drawChild:a}=r,{virtualMedia:c}=f,h=c?.operation;if(h?.op!=="Vision")return;let u=h;n.end();let p=c?.children?.[0];if(!p)return;let T=u.effect,E=T!=null,P=c?.id??h?.id??`${s}x${i}_${u.mode}_${u.variant}_${u.keyBackground}_${u.backgroundKeyThreshold}`,L=`vision-${P}`,g=E?et.get(T):de.get(L);g&&(g.width!==s||g.height!==i)&&(g.destroy(),g=void 0,E?et.delete(T):de.delete(L));let _=g!==void 0;if(!g&&(g=e.device.createTexture({size:[s,i],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),E?et.set(T,g):de.set(L,g),de.size>4)){let F=de.keys().next().value;F&&F!==L&&(de.get(F)?.destroy(),de.delete(F))}let b=f.frame??0,j=f.fps??24,l=u.mode??"passthrough",m=l==="mask"||l==="matte"||l==="crop",x=u.visionBundle??c.visionBundle,v=u.enableDetection!==!1||l==="boxes"||l==="tracking",w=u.enableSegmentation===!0||m&&u.matteSource!=="selfie",O=u.enableMatte===!0||m&&u.matteSource==="selfie",H=u.enablePose===!0||l==="skeleton",R=!O&&!H&&(v||w),M=R?Rn(P,p,u,s,i):"",d=F=>u.keyBackground===!0?In(u,F,j):void 0,I=F=>{if(!R||F===void 0)return;let Y=$t.get(M,F);if(!(!Y||Y.keyThreshold!==d(F))&&!(w&&x&&!Y.masks))return Y},U=_?Wt.get(P):void 0,A=I(b),V=A!==void 0;A||(A=I(U));let D;m&&_&&!V&&(D=Mn(e.device,P,g),t.copyTextureToTexture({texture:g},{texture:D},[s,i,1]));let X=null;if(_&&!A){let Y=s*4,Z=Math.ceil(Y/256)*256,J=Z*i,ee=e.device.createBuffer({size:J,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:"vision_frame_staging"}),W=e.device.createCommandEncoder({label:"vision_readback_encoder"});W.copyTextureToBuffer({texture:g},{buffer:ee,bytesPerRow:Z,rowsPerImage:i},[s,i,1]),e.device.queue.submit([W.finish()]),await ee.mapAsync(GPUMapMode.READ);let oe=new Uint8Array(ee.getMappedRange());if(X=new Uint8ClampedArray(s*i*4),Z===Y)X.set(oe.subarray(0,X.length));else for(let he=0;he<i;he++)X.set(oe.subarray(he*Z,he*Z+Y),he*Y);ee.unmap(),ee.destroy()}let q=g.createView();e.renderer.beginFrame(t,q,{r:0,g:0,b:0,a:0},s,i,"clear").end(),await a(p,{...f},q,g,s,i),Wt.set(P,b);let N=[],K=[],G,ne,z;if(A)N=A.objects,v&&x?.setObjectResult(b,{objects:A.objects,rawDetections:A.detections}),w&&x&&A.masks&&(K=A.masks.map(Je),x.setMaskResult(b,K)),A.subject&&(z=Je(A.subject.mask),tt.set(P,{mask:z,frame:b}));else if(X){let F=On(u),Y={data:X,width:s,height:i},Z=[];if(v){Z=await F.detect(Y);let J=Ln(P,u);b===0&&J.reset(),N=J.update(Z,b,j),x?.setObjectResult(b,{objects:N,rawDetections:Z})}if(w){let J=await F.segment(Y);K=jn(J.masks,N),x?.setMaskResult(b,K)}if(O&&(G=await F.matte(Y),x?.setMatteResult(b,G)),H){let J=await F.pose(Y),ee=En(J,Y.width,Y.height);ne={people:zt(ee.people,N)},x?.setPoseResult(b,ne)}if(m){z=Cn(u.matteSource==="selfie"?Fn(G):Ot(K.length>0?K:x?.getMaskResult(b)??[]),P,b);let J=d(U??b);z&&J!==void 0&&(z={...z,mask:Bn(z.mask,z.width,z.height,X,J,u.featherRadius)})}R&&U!==void 0&&$t.set(M,U,{detections:Z,objects:N,masks:x?K.map(Ze):null,subject:z?{mask:Ze(z)}:null,keyThreshold:d(U)})}if(m){let F=V?g:D;if(!z||!F){e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear").end();return}(!Oe||Gt!==e.renderer.format)&&(Oe=new Ie(e.device,e.renderer.format),Gt=e.renderer.format);let Y=Oe.uploadMask(P,z.mask,z.width,z.height),Z=Pn(e.device,P,g);Oe.draw(t,Z.createView(),F,Y,l,l==="crop"?we(z)??void 0:void 0),x?.setStencilTexture(Z);let J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}if(l==="skeleton"){Qe||(Qe=new Te(e.device));let Y=(x?.getPoseResult(b)??ne)?.people[0];if(Y&&Y.keypoints.length>0){let Z=Qe.renderToTexture(Y.keypoints,{width:s,height:i}),J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}}if(l==="boxes"||l==="tracking"){let F=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(F,g,{x:0,y:0,width:s,height:i});let Y=N.length>0?N:x?.getObjectResult(b).objects??[];if(Y.length>0){let Z="#38bdf8";for(let ee of Y){if(!ee.active)continue;let W=ee.boundingBox;e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY+W.height-2,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:2,height:W.height},Z),e.renderer.drawRect(F,{x:W.originX+W.width-2,y:W.originY,width:2,height:W.height},Z);let oe=Math.min(16,W.width/4,W.height/4);e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:oe,height:4},"#ffffff"),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:4,height:oe},"#ffffff"),l==="tracking"&&e.renderer.drawRect(F,{x:ee.centerX-3,y:ee.centerY-3,width:6,height:6},"#ef4444",3)}}F.end();return}let Q=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(Q,g,{x:0,y:0,width:s,height:i}),Q.end()};function Fn(r){if(!r||r.coverage<=0)return;let e=Math.round(r.coverage*r.width*r.height);return{category:"person",mask:r.mask,width:r.width,height:r.height,area:e,coverage:r.coverage,detectionIndex:-1}}var Ns=nt({WebGPURenderer:Zt});export{Lt as a,Et as b,jt as c,Qr as d,ln as e,ro as f,io as g,uo as h,mo as i,dn as j,Ft as k,Dt as l,go as m,un as n,mn as o,fn as p,hn as q,gn as r,pn as s,Xe as t,Ut as u,bn as v,Ge as w,Io as x,Ht as y,Vo as z,Ao as A,Fo as B,ke as C,ye as D,ue as E,Gn as F,k as G,Ye as H,_t as I,Te as J,St as K,vt as L,fe as M,Me as N,Pe as O,Yt as P,rs as Q,We as R,Ns as S};
|
|
98
|
+
`,Ie=class{constructor(e,t){this.device=e;let n=e.createShaderModule({label:"vision_matte_composite",code:_n});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:n,entryPoint:"vs"},fragment:{module:n,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,t,n,o){let s=this.masks.get(e);(!s||s.width!==n||s.height!==o)&&(s?.destroy(),s=this.device.createTexture({label:`vision_mask_${e}`,size:[n,o],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,s));let i=Math.ceil(n/256)*256,f=t;if(i!==n){f=new Uint8Array(i*o);for(let a=0;a<o;a++)f.set(t.subarray(a*n,(a+1)*n),a*i)}return this.device.queue.writeTexture({texture:s},f.buffer,{offset:f.byteOffset,bytesPerRow:i,rowsPerImage:o},{width:n,height:o}),s}draw(e,t,n,o,s,i){let f=o.width,a=o.height,c=new Float32Array(8),h=new Uint32Array(c.buffer);h[0]=s==="matte"?0:s==="mask"?1:2,s==="crop"&&i?(c[2]=i.x0/f,c[3]=i.y0/a,c[4]=(i.x1+1)/f,c[5]=(i.y1+1)/a):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,s==="crop"&&(h[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let u=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(u,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:n.createView()},{binding:2,resource:o.createView()},{binding:3,resource:this.sampler}]}),T=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:t,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});T.setPipeline(this.pipeline),T.setBindGroup(0,p),T.draw(3),T.end()}};var Ce=null,Qe=null,Oe=null,Gt=null,$t=new Re,Wt=new Map,Sn=new Map,wn=new Map,Kt=new Map,et=new WeakMap,de=new Map,tt=new Map,vn=3;function qt(r,e,t,n,o,s){let i=r.get(t);return(!i||i.width!==n.width||i.height!==n.height||i.format!==n.format)&&(i?.destroy(),i=e.createTexture({size:[n.width,n.height],format:n.format,usage:o,label:s}),r.set(t,i)),i}var Mn=(r,e,t)=>qt(Sn,r,e,t,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),Pn=(r,e,t)=>qt(wn,r,e,t,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function Rn(r,e,t,n,o){let s=e;return JSON.stringify([r,s?.operation?.id??s?.id??null,n,o,t.mode??"passthrough",t.variant,t.confidence,t.classes,t.maskThreshold,t.featherRadius,t.matteSource,t.keyBackground===!0,t.maxMissedFrames])}function In(r,e,t){let n=r.backgroundKeyThreshold;return typeof n=="number"?n:typeof n?.get=="function"?Number(n.get({frame:e,fps:t})):typeof n?._value=="number"?Number(n._value):70}function Cn(r,e,t){if(r)return tt.set(e,{mask:r,frame:t}),r;let n=tt.get(e);if(n&&t-n.frame<=vn)return n.mask}function On(r){let e={variant:r.variant,confidence:r.confidence,classes:r.classes,maskThreshold:r.maskThreshold,featherRadius:r.featherRadius,modelsDir:r.modelsDir,baseUrl:r.baseUrl},t=JSON.stringify(e);return Ce?.key!==t&&(Ce?.runner.close(),Ce={key:t,runner:fe.create(e)}),Ce.runner}function Ln(r,e){let t=Kt.get(r);return t||(t=new ue({maxMissedFrames:e.maxMissedFrames??15}),Kt.set(r,t)),t}function En(r,e,t){return e<=0||t<=0?r:{people:r.people.map(n=>({...n,keypoints:n.keypoints.map(o=>({x:o.x/e,y:o.y/t,visibility:o.visibility}))}))}}function jn(r,e){return r.map(t=>{let{cx:n,cy:o}=Dn(t),s=null;for(let i of e){let f=i.centerX-n,a=i.centerY-o,c=f*f+a*a;(!s||c<s.distance)&&(s={trackId:i.trackId,distance:c})}return s?{...t,trackId:s.trackId}:t})}function Vn(r,e,t){let n=e*t,o=new Uint8Array(n),s=new Int32Array(n),i=0,f=c=>{o[c]||r[c]>0||(o[c]=1,s[i++]=c)};for(let c=0;c<e;c++)f(c),f((t-1)*e+c);for(let c=0;c<t;c++)f(c*e),f(c*e+e-1);let a=0;for(;a<i;){let c=s[a++],h=c%e,u=c+1;h+1<e&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-1,h>0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c+e,u<n&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-e,u>=0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u)}for(let c=0;c<n;c++)r[c]===0&&o[c]===0&&(r[c]=255)}function An(r,e,t,n=2){if(n<=0)return r;let o=new Uint8Array(e*t),s=new Uint8Array(e*t),i=2*n+1;for(let a=0;a<t;a++){let c=a*e,h=0;for(let u=-n;u<=n;u++){let p=Math.max(0,Math.min(e-1,u));h+=r[c+p]}for(let u=0;u<e;u++){o[c+u]=Math.round(h/i);let p=Math.max(0,u-n),T=Math.min(e-1,u+n+1);h+=r[c+T]-r[c+p]}}let f=new Float64Array(e);for(let a=-n;a<=n;a++){let c=Math.max(0,Math.min(t-1,a))*e;for(let h=0;h<e;h++)f[h]+=o[c+h]}for(let a=0;a<t;a++){let c=a*e,h=Math.max(0,a-n)*e,u=Math.min(t-1,a+n+1)*e;for(let p=0;p<e;p++)s[c+p]=Math.round(f[p]/i),f[p]+=o[u+p]-o[h+p]}return s}function Bn(r,e,t,n,o,s){let i=0,f=0,a=0,c=0,h=(g,_)=>{let b=_*e+g;if(r[b])return;let j=b*4;i+=n[j],f+=n[j+1],a+=n[j+2],c++};for(let g=0;g<e;g+=4)h(g,0),h(g,t-1);for(let g=0;g<t;g+=4)h(0,g),h(e-1,g);if(c===0)return r;i/=c,f/=c,a/=c;let u=e*t,p=new Uint8Array(u);for(let g=0,_=0;g<u;g++,_+=4)p[g]=Math.max(Math.abs(n[_]-i),Math.abs(n[_+1]-f),Math.abs(n[_+2]-a))>o?1:0;let T=new Int32Array(u),E=0;for(let g=0;g<u;g++)r[g]>0&&(p[g]&&(r[g]=255),T[E++]=g);let P=0;for(;P<E;){let g=T[P++],_=g%e,b=g+1;_+1<e&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-1,_>0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g+e,b<u&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-e,b>=0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b)}Vn(r,e,t);let L=s!==void 0&&s>0?Math.max(1,Math.min(8,Math.round(s*50))):2;return An(r,e,t,L)}function Dn(r){let{mask:e,width:t,height:n}=r,o=0,s=0,i=0;for(let f=0;f<n;f++){let a=f*t;for(let c=0;c<t;c++)e[a+c]>0&&(o+=c,s+=f,i++)}return i===0?{cx:0,cy:0}:{cx:o/i,cy:s/i}}var Zt=async r=>{let{ctx:e,encoder:t,pass:n,targetView:o,targetWidth:s,targetHeight:i,props:f,drawChild:a}=r,{virtualMedia:c}=f,h=c?.operation;if(h?.op!=="Vision")return;let u=h;n.end();let p=c?.children?.[0];if(!p)return;let T=u.effect,E=T!=null,P=c?.id??h?.id??`${s}x${i}_${u.mode}_${u.variant}_${u.keyBackground}_${u.backgroundKeyThreshold}`,L=`vision-${P}`,g=E?et.get(T):de.get(L);g&&(g.width!==s||g.height!==i)&&(g.destroy(),g=void 0,E?et.delete(T):de.delete(L));let _=g!==void 0;if(!g&&(g=e.device.createTexture({size:[s,i],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),E?et.set(T,g):de.set(L,g),de.size>4)){let F=de.keys().next().value;F&&F!==L&&(de.get(F)?.destroy(),de.delete(F))}let b=f.frame??0,j=f.fps??24,l=u.mode??"passthrough",m=l==="mask"||l==="matte"||l==="crop",x=u.visionBundle??c.visionBundle,v=u.enableDetection!==!1||l==="boxes"||l==="tracking",w=u.enableSegmentation===!0||m&&u.matteSource!=="selfie",O=u.enableMatte===!0||m&&u.matteSource==="selfie",H=u.enablePose===!0||l==="skeleton",R=!O&&!H&&(v||w),M=R?Rn(P,p,u,s,i):"",d=F=>u.keyBackground===!0?In(u,F,j):void 0,I=F=>{if(!R||F===void 0)return;let Y=$t.get(M,F);if(!(!Y||Y.keyThreshold!==d(F))&&!(w&&x&&!Y.masks))return Y},U=_?Wt.get(P):void 0,A=I(b),V=A!==void 0;A||(A=I(U));let D;m&&_&&!V&&(D=Mn(e.device,P,g),t.copyTextureToTexture({texture:g},{texture:D},[s,i,1]));let X=null;if(_&&!A){let Y=s*4,Z=Math.ceil(Y/256)*256,J=Z*i,ee=e.device.createBuffer({size:J,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:"vision_frame_staging"}),W=e.device.createCommandEncoder({label:"vision_readback_encoder"});W.copyTextureToBuffer({texture:g},{buffer:ee,bytesPerRow:Z,rowsPerImage:i},[s,i,1]),e.device.queue.submit([W.finish()]),await ee.mapAsync(GPUMapMode.READ);let oe=new Uint8Array(ee.getMappedRange());if(X=new Uint8ClampedArray(s*i*4),Z===Y)X.set(oe.subarray(0,X.length));else for(let he=0;he<i;he++)X.set(oe.subarray(he*Z,he*Z+Y),he*Y);ee.unmap(),ee.destroy()}let q=g.createView();e.renderer.beginFrame(t,q,{r:0,g:0,b:0,a:0},s,i,"clear").end(),await a(p,{...f},q,g,s,i),Wt.set(P,b);let N=[],K=[],G,ne,z;if(A)N=A.objects,v&&x?.setObjectResult(b,{objects:A.objects,rawDetections:A.detections}),w&&x&&A.masks&&(K=A.masks.map(Je),x.setMaskResult(b,K)),A.subject&&(z=Je(A.subject.mask),tt.set(P,{mask:z,frame:b}));else if(X){let F=On(u),Y={data:X,width:s,height:i},Z=[];if(v){Z=await F.detect(Y);let J=Ln(P,u);b===0&&J.reset(),N=J.update(Z,b,j),x?.setObjectResult(b,{objects:N,rawDetections:Z})}if(w){let J=await F.segment(Y);K=jn(J.masks,N),x?.setMaskResult(b,K)}if(O&&(G=await F.matte(Y),x?.setMatteResult(b,G)),H){let J=await F.pose(Y),ee=En(J,Y.width,Y.height);ne={people:zt(ee.people,N)},x?.setPoseResult(b,ne)}if(m){z=Cn(u.matteSource==="selfie"?Fn(G):Ot(K.length>0?K:x?.getMaskResult(b)??[]),P,b);let J=d(U??b);z&&J!==void 0&&(z={...z,mask:Bn(z.mask,z.width,z.height,X,J,u.featherRadius)})}R&&U!==void 0&&$t.set(M,U,{detections:Z,objects:N,masks:x?K.map(Ze):null,subject:z?{mask:Ze(z)}:null,keyThreshold:d(U)})}if(m){let F=V?g:D;if(!z||!F){e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear").end();return}(!Oe||Gt!==e.renderer.format)&&(Oe=new Ie(e.device,e.renderer.format),Gt=e.renderer.format);let Y=Oe.uploadMask(P,z.mask,z.width,z.height),Z=Pn(e.device,P,g);Oe.draw(t,Z.createView(),F,Y,l,l==="crop"?we(z)??void 0:void 0),x?.setStencilTexture(Z);let J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}if(l==="skeleton"){Qe||(Qe=new Te(e.device));let Y=(x?.getPoseResult(b)??ne)?.people[0];if(Y&&Y.keypoints.length>0){let Z=Qe.renderToTexture(Y.keypoints,{width:s,height:i}),J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}}if(l==="boxes"||l==="tracking"){let F=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(F,g,{x:0,y:0,width:s,height:i});let Y=N.length>0?N:x?.getObjectResult(b).objects??[];if(Y.length>0){let Z="#38bdf8";for(let ee of Y){if(!ee.active)continue;let W=ee.boundingBox;e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY+W.height-2,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:2,height:W.height},Z),e.renderer.drawRect(F,{x:W.originX+W.width-2,y:W.originY,width:2,height:W.height},Z);let oe=Math.min(16,W.width/4,W.height/4);e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:oe,height:4},"#ffffff"),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:4,height:oe},"#ffffff"),l==="tracking"&&e.renderer.drawRect(F,{x:ee.centerX-3,y:ee.centerY-3,width:6,height:6},"#ef4444",3)}}F.end();return}let Q=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(Q,g,{x:0,y:0,width:s,height:i}),Q.end()};function Fn(r){if(!r||r.coverage<=0)return;let e=Math.round(r.coverage*r.width*r.height);return{category:"person",mask:r.mask,width:r.width,height:r.height,area:e,coverage:r.coverage,detectionIndex:-1}}var Xs=nt({WebGPURenderer:Zt});export{Lt as a,Et as b,jt as c,Qr as d,ln as e,ro as f,io as g,uo as h,mo as i,dn as j,Ft as k,Dt as l,go as m,un as n,mn as o,fn as p,hn as q,gn as r,pn as s,Xe as t,Ut as u,bn as v,Ge as w,Io as x,Ht as y,Vo as z,Ao as A,Fo as B,ke as C,ye as D,ue as E,Gn as F,k as G,Ye as H,_t as I,Te as J,St as K,vt as L,fe as M,Me as N,Pe as O,Yt as P,rs as Q,We as R,Xs as S};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as K}from"./chunk-LKYN3BM2.mjs";import{a as pe}from"./chunk-JPXQPP6J.mjs";import{a as
|
|
1
|
+
import{a as K}from"./chunk-LKYN3BM2.mjs";import{a as pe}from"./chunk-JPXQPP6J.mjs";import{a as D}from"./chunk-CNSHAFEA.mjs";import{a as le,b as X,d as ce,e as R}from"./chunk-VSSB73UU.mjs";import{a as ue}from"./chunk-GYG2IIBR.mjs";import{f as G,g as M,i as he}from"./chunk-4BEJJKEU.mjs";import{e as g}from"./chunk-BVF64D6H.mjs";g();var L=class{constructor(e,t){this.url=e;this.isHeadless=t}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let e=await R.acquire(this.url);this.destroyed?R.release(this.url):this.input=e}catch(e){throw this.initPromise=null,e}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(R.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},Z=class extends L{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];isDecoding=!1;decodeBuffer=null;nextRequest=null;pushHeadlessQueue(e){let t=this.headlessQueue.findIndex(r=>r.timestamp>e.timestamp);t===-1?this.headlessQueue.push(e):this.headlessQueue.splice(t,0,e)}async fillHeadlessQueue(e){if(this.iterator)for(;this.headlessQueue.length<2;){let t=await this.iterator.next();if(this.currentFetchId!==e){t.value?.close?.();return}if(t.done||!t.value)break;this.pushHeadlessQueue(t.value)}}async closeIterator(e){if(e)try{await e.return()}catch{}}resetSinks(){let e=this.iterator;if(this.iterator=null,e)try{e.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let t of this.headlessQueue)try{t.close()}catch{}this.headlessQueue=[],this.decodeBuffer=null,this.iteratorStartTimestamp=-1}onDestroy(){this.resetSinks()}async startIterator(e,t){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let n=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed)return;this.currentFrame=n.value??null;let s=await this.iterator.next();this.currentFetchId!==t||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(e,t){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let n=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(n),await this.fillHeadlessQueue(t),!(this.currentFetchId!==t||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(e){if(await this.init(),this.destroyed||!this.input)return null;let t=Math.max(0,Number.isFinite(e)?e:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:t,resolve:r,reject:i}})):this.executeDecode(t)}async executeDecode(e){this.isDecoding=!0;try{return await this.performDecode(e)}finally{if(this.isDecoding=!1,this.nextRequest){let t=this.nextRequest;this.nextRequest=null,this.executeDecode(t.timestampSec).then(t.resolve).catch(t.reject)}}}async performDecodeHeadless(e,t){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let h=await this.input.getPrimaryVideoTrack();if(!h)return null;this.videoSampleSink=new le(h)}let r=1e-4;if((!this.iterator||e<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&e<this.headlessQueue[0].timestamp-.01||this.headlessQueue.length>0&&e-this.headlessQueue[0].timestamp>1)&&(await this.startIteratorHeadless(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(t),this.currentFetchId!==t||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=e+r){this.headlessQueue.shift()?.close();continue}break}let s=this.headlessQueue[0];if(!s)return null;let a=s.displayWidth,o=s.displayHeight,c=a*o*4,l=this.decodeBuffer;return(!l||l.length!==c)&&(l=new Uint8Array(c),this.decodeBuffer=l),await s.copyTo(l,{format:"RGBA"}),this.currentFetchId!==t||this.destroyed||!this.input?null:{width:a,height:o,buffer:l}}async performDecodeInternal(e){this.currentFetchId++;let t=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(e,t);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let a=await this.input.getPrimaryVideoTrack();if(!a)return null;this.canvasSink=new X(a,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||e<this.iteratorStartTimestamp-r||this.currentFrame&&e<this.currentFrame.timestamp-.01||this.currentFrame&&e-this.currentFrame.timestamp>1)&&(await this.startIterator(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=e+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let a=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed||!this.input)return null;this.nextFrame=a.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(e){let t=Math.max(0,Number.isFinite(e)?e:0);try{return await this.performDecodeInternal(t)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let n=await this.input.getPrimaryVideoTrack();if(n&&!this.destroyed)return this.canvasSink=new X(n,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(t)}}catch{}throw r}}},J=class extends L{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(e,t){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(e),this.iteratorStartTimestamp=e)}async*getBuffers(e){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new ce(i)}(!this.iterator||Math.abs(e-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(e,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(t){let r=t;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw t}finally{let t=this.currentFetchId;this.currentFetchId===t&&(this.iterator=null)}}},ee=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;touchKey(e){this.lastAccessed.set(e,Date.now())}destroy(){for(let e of this.videoDecoders.values())try{e.destroy()}catch{}this.videoDecoders.clear();for(let e of this.audioDecoders.values())try{e.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear()}prune(e=3e5){let t=Date.now();for(let[r,i]of this.lastAccessed.entries())if(t-i>e){let n=this.videoDecoders.get(r);n&&(n.destroy(),this.videoDecoders.delete(r));let s=this.audioDecoders.get(r);s&&(s.destroy(),this.audioDecoders.delete(r)),this.lastAccessed.delete(r)}}getVideo(e,t,r){let i=`${e}-${t}-${r??"default"}`,n=this.videoDecoders.get(i);return n||(n=new Z(e,t),this.videoDecoders.set(i,n)),this.touchKey(i),this.prune(),n}getAudio(e,t){let r=`${e}-${t??"default"}`,i=this.audioDecoders.get(r);return i||(i=new J(e,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(e){for(let[t,r]of this.videoDecoders)t.includes(e)&&(r.destroy(),this.videoDecoders.delete(t),this.lastAccessed.delete(t));for(let[t,r]of this.audioDecoders)t.includes(e)&&(r.destroy(),this.audioDecoders.delete(t),this.lastAccessed.delete(t))}},Le=new ee;g();g();var de=`
|
|
2
2
|
struct CompositeUniforms {
|
|
3
3
|
blendMode : u32,
|
|
4
4
|
padding1 : u32,
|
|
@@ -180,7 +180,7 @@ fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
|
180
180
|
|
|
181
181
|
return accum / max(totalWeight, 0.0001);
|
|
182
182
|
}
|
|
183
|
-
`,te=class{textures=[];texturesByKey=new Map;index=0;getTexture(e,t,r,i,n){let s=new Set(Array.isArray(n)?n:n?[n]:[]),a=`${t}x${r}:${i}`,o=this.texturesByKey.get(a);if(o)for(let c=0;c<o.length;c++){let p=o[c];if(!s.has(p)){o.splice(c,1),o.unshift(p);let h=this.textures.indexOf(p);return h>=this.index&&(this.textures.splice(h,1),this.textures.splice(this.index,0,p),this.index++),p}}let l=e.createTexture({size:[t,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(a)||this.texturesByKey.set(a,[]),this.texturesByKey.get(a).unshift(l),this.textures.splice(this.index,0,l),this.index++,l}reset(){this.index=0}destroy(){for(let e of this.textures)e.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Ue={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25},$=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new M;motionBlurUniformBindGroupCache=new M;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(e,t){this.device=e,this.compositePool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new te,this.compositeUniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.motionBlurUniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=e.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=e.createShaderModule({label:"composite.wgsl",code:de});this.compositePipeline=e.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-strip"}});let n=e.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),s=e.createShaderModule({label:"motion-blur-2d.wgsl",code:Ge});this.motionBlurPipeline=e.createRenderPipeline({label:"MotionBlurPipeline",layout:n,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(e,t,r,i,n){return this.texturePool.getTexture(e,t,r,i,n)}getBuffer(e,t){return this.compositePool.getBuffer(e,t)}composite(e,t,r,i,n,s,a,o){let l=r.getSampler(this.device),c=[i,n];o&&(Array.isArray(o)?c.push(...o):c.push(o));let p=this.texturePool.getTexture(this.device,i.width,i.height,a,c);this.compositeData[0]=Ue[s]??0;let h=this.compositePool.getBuffer(this.device,this.compositeData),m=e.beginRenderPass({colorAttachments:[{view:p.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(this.compositePipeline);let d=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,h);m.setBindGroup(0,d);let f=t.getCompositeBindGroup(this.device,this.dualTextureLayout,i,n,l);return m.setBindGroup(1,f),m.draw(4),m.end(),p}applyMotionBlur(e,t,r,i,n,s,a=180,o=16,l,c){if(Math.abs(n)<.1&&Math.abs(s)<.1||a<=0)return i;let p=r.getSampler(this.device),h=[i];c&&(Array.isArray(c)?h.push(...c):h.push(c));let m=this.texturePool.getTexture(this.device,i.width,i.height,l,h);this.motionBlurData[0]=n/i.width,this.motionBlurData[1]=s/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=a/360,this.motionBlurData[5]=o,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let d=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),f=e.beginRenderPass({colorAttachments:[{view:m.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});f.setPipeline(this.motionBlurPipeline);let y=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,d);return f.setBindGroup(0,y),f.setBindGroup(1,t.getBindGroup(this.device,this.singleTextureLayout,i,p)),f.draw(3),f.end(),m}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};g();g();var O=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(e,t,r,i){let n=this.cache.get(r);n||(n=new Map,this.cache.set(r,n));let s=n.get(t);return s||(s=e.createBindGroup({layout:t,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),n.set(t,s)),s}getCompositeBindGroup(e,t,r,i,n){let s=this.dualCache.get(r);s||(s=new WeakMap,this.dualCache.set(r,s));let a=s.get(i);a||(a=new Map,s.set(i,a));let o=a.get(t);return o||(o=e.createBindGroup({layout:t,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:n}]}),a.set(t,o)),o}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};g();var A=class{scissorStack=[];stencilStack=[];pushScissor(e,t,r){this.scissorStack.push({rect:e,surfaceWidth:t,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(e){this.scissorStack=[...e]}clearScissors(){this.scissorStack=[]}getCurrentScissor(e,t){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(e!==void 0&&t!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==e||r.surfaceHeight!==t)))return r.rect}pushStencilClip(e){this.stencilStack.push(e)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(e,t,r){let i=this.getCurrentScissor(t,r);if(!i){e.setScissorRect(0,0,Math.max(1,Math.floor(t)),Math.max(1,Math.floor(r)));return}let n=Math.max(0,Math.floor(i.x)),s=Math.max(0,Math.floor(i.y)),a=Math.min(t,Math.ceil(i.x+i.width)),o=Math.min(r,Math.ceil(i.y+i.height)),l=Math.max(0,a-n),c=Math.max(0,o-s);if(!Number.isFinite(n)||!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(c)||l<=0||c<=0)e.setScissorRect(0,0,1,1);else{let p=Math.min(l,Math.max(0,t-n)),h=Math.min(c,Math.max(0,r-s));p<=0||h<=0?e.setScissorRect(0,0,1,1):e.setScissorRect(Math.floor(n),Math.floor(s),Math.floor(p),Math.floor(h))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};g();function fe(u,e,t,r,i=24){let n=[],s=u;for(let a=1;a<=i;a++){let o=a/i,l=1-o,c=l*l,p=c*l,h=o*o,m=h*o,d={x:p*u.x+3*c*o*e.x+3*l*h*t.x+m*r.x,y:p*u.y+3*c*o*e.y+3*l*h*t.y+m*r.y};n.push({p0:s,p1:d}),s=d}return n}function me(u,e,t,r=16){let i=[],n=u;for(let s=1;s<=r;s++){let a=s/r,o=1-a,l=o*o,c=a*a,p={x:l*u.x+2*o*a*e.x+c*t.x,y:l*u.y+2*o*a*e.y+c*t.y};i.push({p0:n,p1:p}),n=p}return i}function Me(u,e,t,r,i,n,s){let a=Math.abs(e),o=Math.abs(t);if(a<1e-9||o<1e-9)return[{p0:u,p1:s}];if(Math.hypot(s.x-u.x,s.y-u.y)<1e-9)return[];let l=r*Math.PI/180,c=Math.cos(l),p=Math.sin(l),h=(u.x-s.x)/2,m=(u.y-s.y)/2,d=c*h+p*m,f=-p*h+c*m,y=d*d/(a*a)+f*f/(o*o);y>1&&(a*=Math.sqrt(y),o*=Math.sqrt(y));let x=a*a*o*o-a*a*f*f-o*o*d*d,P=a*a*f*f+o*o*d*d,v=(i===n?-1:1)*Math.sqrt(Math.max(0,x/P)),b=v*a*f/o,S=-v*o*d/a,U=c*b-p*S+(u.x+s.x)/2,k=p*b+c*S+(u.y+s.y)/2,j=(C,T,F,_)=>Math.atan2(C*_-T*F,C*F+T*_),Q=j(1,0,(d-b)/a,(f-S)/o),D=j((d-b)/a,(f-S)/o,(-d-b)/a,(-f-S)/o);!n&&D>0&&(D-=2*Math.PI),n&&D<0&&(D+=2*Math.PI);let Y=Math.max(4,Math.ceil(Math.abs(D)/(2*Math.PI)*64)),se=[],ne=u;for(let C=1;C<=Y;C++){let T=Q+D*C/Y,F=a*Math.cos(T),_=o*Math.sin(T),ae=C===Y?s:{x:c*F-p*_+U,y:p*F+c*_+k};se.push({p0:ne,p1:ae}),ne=ae}return se}function E(u){let e=[];if(!u||typeof u!="string")return e;let t=[],r=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,i;for(;(i=r.exec(u))!==null;)i[1]?t.push(i[1]):i[2]&&t.push(parseFloat(i[2]));let n=0,s={x:0,y:0},a={x:0,y:0},o=null,l=null;for(;n<t.length;){let c=t[n++];if(typeof c!="string")continue;let p=c,h=p===p.toLowerCase(),m=p.toUpperCase(),d=()=>n<t.length&&typeof t[n]=="number"?t[n++]:0;switch(m){case"M":{let f=!0;for(;n<t.length&&typeof t[n]=="number";){let y=d(),x=d();h&&(y+=s.x,x+=s.y),f?(s={x:y,y:x},a={x:y,y:x},f=!1):(e.push({p0:s,p1:{x:y,y:x}}),s={x:y,y:x})}o=null,l=null;break}case"L":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d();h&&(f+=s.x,y+=s.y),e.push({p0:s,p1:{x:f,y}}),s={x:f,y}}o=null,l=null;break}case"H":{for(;n<t.length&&typeof t[n]=="number";){let f=d();h&&(f+=s.x);let y={x:f,y:s.y};e.push({p0:s,p1:y}),s=y}o=null,l=null;break}case"V":{for(;n<t.length&&typeof t[n]=="number";){let f=d();h&&(f+=s.y);let y={x:s.x,y:f};e.push({p0:s,p1:y}),s=y}o=null,l=null;break}case"C":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d(),v=d(),b=d();h&&(f+=s.x,y+=s.y,x+=s.x,P+=s.y,v+=s.x,b+=s.y);let S={x:f,y},U={x,y:P},k={x:v,y:b};e.push(...fe(s,S,U,k)),s=k,o=U}l=null;break}case"S":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d();h&&(f+=s.x,y+=s.y,x+=s.x,P+=s.y);let v;o?v={x:2*s.x-o.x,y:2*s.y-o.y}:v={x:s.x,y:s.y};let b={x:f,y},S={x,y:P};e.push(...fe(s,v,b,S)),s=S,o=b}l=null;break}case"Q":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d();h&&(f+=s.x,y+=s.y,x+=s.x,P+=s.y);let v={x:f,y},b={x,y:P};e.push(...me(s,v,b)),s=b,l=v}o=null;break}case"T":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d();h&&(f+=s.x,y+=s.y);let x;l?x={x:2*s.x-l.x,y:2*s.y-l.y}:x={x:s.x,y:s.y};let P={x:f,y};e.push(...me(s,x,P)),s=P,l=x}o=null;break}case"A":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d()!==0,v=d()!==0,b=d(),S=d();h&&(b+=s.x,S+=s.y);let U={x:b,y:S};e.push(...Me(s,f,y,x,P,v,U)),s=U}o=null,l=null;break}case"Z":{Math.hypot(s.x-a.x,s.y-a.y)>1e-5&&e.push({p0:s,p1:a}),s=a,o=null,l=null;break}default:break}}return e}function I(u,e,t,r=0){if(u.length===0)return[];let i=[],n=0;for(let c of u){let p=Math.hypot(c.p1.x-c.p0.x,c.p1.y-c.p0.y);i.push(p),n+=p}if(n<1e-6)return[];let s=Math.abs(r)>1?r%360/360:r,a=(e+s)%1,o=(t+s)%1;a<0&&(a+=1),o<0&&(o+=1);let l=(c,p)=>{if(c>=p)return[];let h=[],m=0;for(let d=0;d<u.length;d++){let f=u[d],y=i[d],x=m,P=m+y;if(m=P,P<=c||x>=p||y<1e-6)continue;let v=Math.max(0,(c-x)/y),b=Math.min(1,(p-x)/y);if(b>v){let S={x:f.p0.x+(f.p1.x-f.p0.x)*v,y:f.p0.y+(f.p1.y-f.p0.y)*v},U={x:f.p0.x+(f.p1.x-f.p0.x)*b,y:f.p0.y+(f.p1.y-f.p0.y)*b};h.push({p0:S,p1:U})}}return h};if(e===0&&t===1&&r===0)return[...u];if(Math.abs(a-o)<1e-5)return[];if(a<=o)return l(a*n,o*n);{let c=l(a*n,n),p=l(0,o*n);return[...c,...p]}}function re(u,e,t=0){if(u.length===0||e.length===0)return u;let r=0;for(let m of e)r+=m;if(r<1e-5)return u;let i=0,n=[];for(let m of u){let d=Math.hypot(m.p1.x-m.p0.x,m.p1.y-m.p0.y);n.push(d),i+=d}let s=[],a=(t%r+r)%r,o=0,l=!0,c=a;for(;c>e[o];)c-=e[o],o=(o+1)%e.length,l=!l;let p=e[o]-c,h=0;for(;h<i;){let m=Math.min(p,i-h);if(l&&m>1e-4){let d=I(u,h/i,(h+m)/i);s.push(...d)}h+=m,o=(o+1)%e.length,l=!l,p=e[o]}return s}function xe(u,e,t=0,r=0,i=0,n=0){let s=Math.min(u/2,e/2),a=Math.min(t,s),o=Math.min(r,s),l=Math.min(i,s),c=Math.min(n,s);return a===0&&o===0&&l===0&&c===0?`M 0 0 L ${u} 0 L ${u} ${e} L 0 ${e} Z`:[`M ${a} 0`,`L ${u-o} 0`,o>0?`Q ${u} 0 ${u} ${o}`:`L ${u} 0`,`L ${u} ${e-l}`,l>0?`Q ${u} ${e} ${u-l} ${e}`:`L ${u} ${e}`,`L ${c} ${e}`,c>0?`Q 0 ${e} 0 ${e-c}`:`L 0 ${e}`,`L 0 ${a}`,a>0?`Q 0 0 ${a} 0`:"L 0 0","Z"].join(" ")}function De(u,e){let t=Math.min(u,e)/2,r=u/2,i=e/2,n=t*.5522847498;return[`M ${r} ${i-t}`,`C ${r+n} ${i-t} ${r+t} ${i-n} ${r+t} ${i}`,`C ${r+t} ${i+n} ${r+n} ${i+t} ${r} ${i+t}`,`C ${r-n} ${i+t} ${r-t} ${i+n} ${r-t} ${i}`,`C ${r-t} ${i-n} ${r-n} ${i-t} ${r} ${i-t}`,"Z"].join(" ")}function Be(u,e){let t=u/2,r=e/2,i=t,n=r,s=t*.5522847498,a=r*.5522847498;return[`M ${i} ${n-r}`,`C ${i+s} ${n-r} ${i+t} ${n-a} ${i+t} ${n}`,`C ${i+t} ${n+a} ${i+s} ${n+r} ${i} ${n+r}`,`C ${i-s} ${n+r} ${i-t} ${n+a} ${i-t} ${n}`,`C ${i-t} ${n-a} ${i-s} ${n-r} ${i} ${n-r}`,"Z"].join(" ")}function Ce(u,e,t=5){let r=Math.max(3,t),i=Math.min(u,e)/2,n=u/2,s=e/2,a=[];for(let o=0;o<r;o++){let l=-Math.PI/2+o*2*Math.PI/r;a.push({x:n+i*Math.cos(l),y:s+i*Math.sin(l)})}return a.map((o,l)=>`${l===0?"M":"L"} ${o.x} ${o.y}`).join(" ")+" Z"}function ke(u,e,t=5,r=.5){let i=Math.max(3,t),n=Math.min(u,e)/2,s=n*Math.max(.01,Math.min(.99,r)),a=u/2,o=e/2,l=[];for(let c=0;c<i*2;c++){let p=-Math.PI/2+c*Math.PI/i,h=c%2===0?n:s;l.push({x:a+h*Math.cos(p),y:o+h*Math.sin(p)})}return l.map((c,p)=>`${p===0?"M":"L"} ${c.x} ${c.y}`).join(" ")+" Z"}function Te(u,e,t=40,r=40,i=20){let n=Math.min(t,e),s=Math.min(r,u),a=Math.min(i,n),o=e/2;return[`M 0 ${o-a/2}`,`L ${u-s} ${o-a/2}`,`L ${u-s} ${o-n/2}`,`L ${u} ${o}`,`L ${u-s} ${o+n/2}`,`L ${u-s} ${o+a/2}`,`L 0 ${o+a/2}`,"Z"].join(" ")}function ie(u){let{shapeType:e,width:t,height:r}=u;switch(e){case"rect":return xe(t,r,u.cornerRadius??0,u.cornerRadius??0,u.cornerRadius??0,u.cornerRadius??0);case"circle":return De(t,r);case"ellipse":return Be(t,r);case"polygon":return Ce(t,r,u.polygonSides??5);case"star":return ke(t,r,u.starPoints??5,u.starInnerRadiusRatio??.5);case"arrow":return Te(t,r,u.arrowHeadWidth??40,u.arrowHeadLength??40,u.arrowShaftWidth??20);case"path":return u.path??"";default:return""}}function ye(u){if(u.length<3)return[];if(u.length===3)return[u[0],u[1],u[2]];let e=[...u],t=e[e.length-1],r=e[0];if(Math.hypot(t.x-r.x,t.y-r.y)<1e-5&&e.pop(),e.length<3)return[];let i=0;for(let p=0;p<e.length;p++){let h=(p+1)%e.length;i+=e[p].x*e[h].y-e[h].x*e[p].y}i<0&&e.reverse();let n=(p,h,m,d)=>{let f=(m.x-h.x)*(p.y-h.y)-(m.y-h.y)*(p.x-h.x),y=(d.x-m.x)*(p.y-m.y)-(d.y-m.y)*(p.x-m.x),x=(h.x-d.x)*(p.y-d.y)-(h.y-d.y)*(p.x-d.x);return f>=-1e-6&&y>=-1e-6&&x>=-1e-6},s=(p,h,m,d)=>{if((h.x-p.x)*(m.y-p.y)-(h.y-p.y)*(m.x-p.x)<=1e-7)return!1;for(let y of d)if(!(y===p||y===h||y===m)&&n(y,p,h,m))return!1;return!0},a=[],o=[...e],l=0,c=o.length*o.length*2;for(;o.length>3&&l<c;){l++;let p=!1;for(let h=0;h<o.length;h++){let m=o[(h-1+o.length)%o.length],d=o[h],f=o[(h+1)%o.length];if(s(m,d,f,o)){a.push(m,d,f),o.splice(h,1),p=!0;break}}p||(a.push(o[0],o[1],o[2]),o.splice(1,1))}return o.length===3&&a.push(o[0],o[1],o[2]),a}function ge(u){let{shapeType:e,width:t,height:r}=u;if(e==="rect"){let i=u.cornerRadius??0;if(i<=0)return new Float32Array([0,0,t,0,t,r,0,0,t,r,0,r]);let n=xe(t,r,i,i,i,i),a=E(n).map(c=>c.p0),o=ye(a),l=new Float32Array(o.length*2);for(let c=0;c<o.length;c++)l[c*2]=o[c].x,l[c*2+1]=o[c].y;return l}if(e==="circle"||e==="ellipse"){let i=t/2,n=r/2,s=e==="circle"?Math.min(t,r)/2:t/2,a=e==="circle"?s:r/2,o=48,l=new Float32Array(o*3*2),c=0;for(let p=0;p<o;p++){let h=p*2*Math.PI/o,m=(p+1)*2*Math.PI/o;l[c++]=i,l[c++]=n,l[c++]=i+s*Math.cos(h),l[c++]=n+a*Math.sin(h),l[c++]=i+s*Math.cos(m),l[c++]=n+a*Math.sin(m)}return l}if(e==="polygon"){let i=Math.max(3,u.polygonSides??5),n=Math.min(t,r)/2,s=t/2,a=r/2,o=new Float32Array(i*3*2),l=0;for(let c=0;c<i;c++){let p=-Math.PI/2+c*2*Math.PI/i,h=-Math.PI/2+(c+1)*2*Math.PI/i;o[l++]=s,o[l++]=a,o[l++]=s+n*Math.cos(p),o[l++]=a+n*Math.sin(p),o[l++]=s+n*Math.cos(h),o[l++]=a+n*Math.sin(h)}return o}if(e==="star"){let i=Math.max(3,u.starPoints??5),n=Math.min(t,r)/2,s=n*Math.max(.01,Math.min(.99,u.starInnerRadiusRatio??.5)),a=t/2,o=r/2,l=i*2,c=new Float32Array(l*3*2),p=0;for(let h=0;h<l;h++){let m=-Math.PI/2+h*Math.PI/i,d=-Math.PI/2+(h+1)*Math.PI/i,f=h%2===0?n:s,y=(h+1)%2===0?n:s;c[p++]=a,c[p++]=o,c[p++]=a+f*Math.cos(m),c[p++]=o+f*Math.sin(m),c[p++]=a+y*Math.cos(d),c[p++]=o+y*Math.sin(d)}return c}if(e==="arrow"){let i=Math.min(u.arrowHeadWidth??40,r),n=Math.min(u.arrowHeadLength??40,t),s=Math.min(u.arrowShaftWidth??20,i),a=r/2,o=0,l=t-n,c=t,p=a-s/2,h=a+s/2,m=a-i/2,d=a+i/2;return new Float32Array([o,p,l,p,l,h,o,p,l,h,o,h,l,m,c,a,l,d])}if(e==="path"&&u.path){let i=E(u.path);if(i.length===0)return new Float32Array(0);let n=i.map(o=>o.p0),s=ye(n),a=new Float32Array(s.length*2);for(let o=0;o<s.length;o++)a[o*2]=s[o].x,a[o*2+1]=s[o].y;return a}return new Float32Array(0)}g();g();var Pe=`
|
|
183
|
+
`,te=class{textures=[];texturesByKey=new Map;index=0;getTexture(e,t,r,i,n){let s=new Set(Array.isArray(n)?n:n?[n]:[]),a=`${t}x${r}:${i}`,o=this.texturesByKey.get(a);if(o)for(let l=0;l<o.length;l++){let h=o[l];if(!s.has(h)){o.splice(l,1),o.unshift(h);let p=this.textures.indexOf(h);return p>=this.index&&(this.textures.splice(p,1),this.textures.splice(this.index,0,h),this.index++),h}}let c=e.createTexture({size:[t,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(a)||this.texturesByKey.set(a,[]),this.texturesByKey.get(a).unshift(c),this.textures.splice(this.index,0,c),this.index++,c}reset(){this.index=0}destroy(){for(let e of this.textures)e.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Ue={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25},$=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new M;motionBlurUniformBindGroupCache=new M;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(e,t){this.device=e,this.compositePool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new te,this.compositeUniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.motionBlurUniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=e.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=e.createShaderModule({label:"composite.wgsl",code:de});this.compositePipeline=e.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-strip"}});let n=e.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),s=e.createShaderModule({label:"motion-blur-2d.wgsl",code:Ge});this.motionBlurPipeline=e.createRenderPipeline({label:"MotionBlurPipeline",layout:n,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(e,t,r,i,n){return this.texturePool.getTexture(e,t,r,i,n)}getBuffer(e,t){return this.compositePool.getBuffer(e,t)}composite(e,t,r,i,n,s,a,o){let c=r.getSampler(this.device),l=[i,n];o&&(Array.isArray(o)?l.push(...o):l.push(o));let h=this.texturePool.getTexture(this.device,i.width,i.height,a,l);this.compositeData[0]=Ue[s]??0;let p=this.compositePool.getBuffer(this.device,this.compositeData),m=e.beginRenderPass({colorAttachments:[{view:h.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(this.compositePipeline);let d=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,p);m.setBindGroup(0,d);let f=t.getCompositeBindGroup(this.device,this.dualTextureLayout,i,n,c);return m.setBindGroup(1,f),m.draw(4),m.end(),h}applyMotionBlur(e,t,r,i,n,s,a=180,o=16,c,l){if(Math.abs(n)<.1&&Math.abs(s)<.1||a<=0)return i;let h=r.getSampler(this.device),p=[i];l&&(Array.isArray(l)?p.push(...l):p.push(l));let m=this.texturePool.getTexture(this.device,i.width,i.height,c,p);this.motionBlurData[0]=n/i.width,this.motionBlurData[1]=s/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=a/360,this.motionBlurData[5]=o,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let d=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),f=e.beginRenderPass({colorAttachments:[{view:m.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});f.setPipeline(this.motionBlurPipeline);let y=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,d);return f.setBindGroup(0,y),f.setBindGroup(1,t.getBindGroup(this.device,this.singleTextureLayout,i,h)),f.draw(3),f.end(),m}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};g();g();var O=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(e,t,r,i){let n=this.cache.get(r);n||(n=new Map,this.cache.set(r,n));let s=n.get(t);return s||(s=e.createBindGroup({layout:t,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),n.set(t,s)),s}getCompositeBindGroup(e,t,r,i,n){let s=this.dualCache.get(r);s||(s=new WeakMap,this.dualCache.set(r,s));let a=s.get(i);a||(a=new Map,s.set(i,a));let o=a.get(t);return o||(o=e.createBindGroup({layout:t,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:n}]}),a.set(t,o)),o}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};g();var A=class{scissorStack=[];stencilStack=[];pushScissor(e,t,r){this.scissorStack.push({rect:e,surfaceWidth:t,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(e){this.scissorStack=[...e]}clearScissors(){this.scissorStack=[]}getCurrentScissor(e,t){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(e!==void 0&&t!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==e||r.surfaceHeight!==t)))return r.rect}pushStencilClip(e){this.stencilStack.push(e)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(e,t,r){let i=this.getCurrentScissor(t,r);if(!i){e.setScissorRect(0,0,Math.max(1,Math.floor(t)),Math.max(1,Math.floor(r)));return}let n=Math.max(0,Math.floor(i.x)),s=Math.max(0,Math.floor(i.y)),a=Math.min(t,Math.ceil(i.x+i.width)),o=Math.min(r,Math.ceil(i.y+i.height)),c=Math.max(0,a-n),l=Math.max(0,o-s);if(!Number.isFinite(n)||!Number.isFinite(s)||!Number.isFinite(c)||!Number.isFinite(l)||c<=0||l<=0)e.setScissorRect(0,0,1,1);else{let h=Math.min(c,Math.max(0,t-n)),p=Math.min(l,Math.max(0,r-s));h<=0||p<=0?e.setScissorRect(0,0,1,1):e.setScissorRect(Math.floor(n),Math.floor(s),Math.floor(h),Math.floor(p))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};g();function fe(u,e,t,r,i=24){let n=[],s=u;for(let a=1;a<=i;a++){let o=a/i,c=1-o,l=c*c,h=l*c,p=o*o,m=p*o,d={x:h*u.x+3*l*o*e.x+3*c*p*t.x+m*r.x,y:h*u.y+3*l*o*e.y+3*c*p*t.y+m*r.y};n.push({p0:s,p1:d}),s=d}return n}function me(u,e,t,r=16){let i=[],n=u;for(let s=1;s<=r;s++){let a=s/r,o=1-a,c=o*o,l=a*a,h={x:c*u.x+2*o*a*e.x+l*t.x,y:c*u.y+2*o*a*e.y+l*t.y};i.push({p0:n,p1:h}),n=h}return i}function Me(u,e,t,r,i,n,s){let a=Math.abs(e),o=Math.abs(t);if(a<1e-9||o<1e-9)return[{p0:u,p1:s}];if(Math.hypot(s.x-u.x,s.y-u.y)<1e-9)return[];let c=r*Math.PI/180,l=Math.cos(c),h=Math.sin(c),p=(u.x-s.x)/2,m=(u.y-s.y)/2,d=l*p+h*m,f=-h*p+l*m,y=d*d/(a*a)+f*f/(o*o);y>1&&(a*=Math.sqrt(y),o*=Math.sqrt(y));let x=a*a*o*o-a*a*f*f-o*o*d*d,P=a*a*f*f+o*o*d*d,v=(i===n?-1:1)*Math.sqrt(Math.max(0,x/P)),b=v*a*f/o,S=-v*o*d/a,U=l*b-h*S+(u.x+s.x)/2,k=h*b+l*S+(u.y+s.y)/2,j=(C,T,F,_)=>Math.atan2(C*_-T*F,C*F+T*_),Q=j(1,0,(d-b)/a,(f-S)/o),B=j((d-b)/a,(f-S)/o,(-d-b)/a,(-f-S)/o);!n&&B>0&&(B-=2*Math.PI),n&&B<0&&(B+=2*Math.PI);let Y=Math.max(4,Math.ceil(Math.abs(B)/(2*Math.PI)*64)),se=[],ne=u;for(let C=1;C<=Y;C++){let T=Q+B*C/Y,F=a*Math.cos(T),_=o*Math.sin(T),ae=C===Y?s:{x:l*F-h*_+U,y:h*F+l*_+k};se.push({p0:ne,p1:ae}),ne=ae}return se}function E(u){let e=[];if(!u||typeof u!="string")return e;let t=[],r=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,i;for(;(i=r.exec(u))!==null;)i[1]?t.push(i[1]):i[2]&&t.push(parseFloat(i[2]));let n=0,s={x:0,y:0},a={x:0,y:0},o=null,c=null;for(;n<t.length;){let l=t[n++];if(typeof l!="string")continue;let h=l,p=h===h.toLowerCase(),m=h.toUpperCase(),d=()=>n<t.length&&typeof t[n]=="number"?t[n++]:0;switch(m){case"M":{let f=!0;for(;n<t.length&&typeof t[n]=="number";){let y=d(),x=d();p&&(y+=s.x,x+=s.y),f?(s={x:y,y:x},a={x:y,y:x},f=!1):(e.push({p0:s,p1:{x:y,y:x}}),s={x:y,y:x})}o=null,c=null;break}case"L":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d();p&&(f+=s.x,y+=s.y),e.push({p0:s,p1:{x:f,y}}),s={x:f,y}}o=null,c=null;break}case"H":{for(;n<t.length&&typeof t[n]=="number";){let f=d();p&&(f+=s.x);let y={x:f,y:s.y};e.push({p0:s,p1:y}),s=y}o=null,c=null;break}case"V":{for(;n<t.length&&typeof t[n]=="number";){let f=d();p&&(f+=s.y);let y={x:s.x,y:f};e.push({p0:s,p1:y}),s=y}o=null,c=null;break}case"C":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d(),v=d(),b=d();p&&(f+=s.x,y+=s.y,x+=s.x,P+=s.y,v+=s.x,b+=s.y);let S={x:f,y},U={x,y:P},k={x:v,y:b};e.push(...fe(s,S,U,k)),s=k,o=U}c=null;break}case"S":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d();p&&(f+=s.x,y+=s.y,x+=s.x,P+=s.y);let v;o?v={x:2*s.x-o.x,y:2*s.y-o.y}:v={x:s.x,y:s.y};let b={x:f,y},S={x,y:P};e.push(...fe(s,v,b,S)),s=S,o=b}c=null;break}case"Q":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d();p&&(f+=s.x,y+=s.y,x+=s.x,P+=s.y);let v={x:f,y},b={x,y:P};e.push(...me(s,v,b)),s=b,c=v}o=null;break}case"T":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d();p&&(f+=s.x,y+=s.y);let x;c?x={x:2*s.x-c.x,y:2*s.y-c.y}:x={x:s.x,y:s.y};let P={x:f,y};e.push(...me(s,x,P)),s=P,c=x}o=null;break}case"A":{for(;n<t.length&&typeof t[n]=="number";){let f=d(),y=d(),x=d(),P=d()!==0,v=d()!==0,b=d(),S=d();p&&(b+=s.x,S+=s.y);let U={x:b,y:S};e.push(...Me(s,f,y,x,P,v,U)),s=U}o=null,c=null;break}case"Z":{Math.hypot(s.x-a.x,s.y-a.y)>1e-5&&e.push({p0:s,p1:a}),s=a,o=null,c=null;break}default:break}}return e}function I(u,e,t,r=0){if(u.length===0)return[];let i=[],n=0;for(let l of u){let h=Math.hypot(l.p1.x-l.p0.x,l.p1.y-l.p0.y);i.push(h),n+=h}if(n<1e-6)return[];let s=Math.abs(r)>1?r%360/360:r,a=(e+s)%1,o=(t+s)%1;a<0&&(a+=1),o<0&&(o+=1);let c=(l,h)=>{if(l>=h)return[];let p=[],m=0;for(let d=0;d<u.length;d++){let f=u[d],y=i[d],x=m,P=m+y;if(m=P,P<=l||x>=h||y<1e-6)continue;let v=Math.max(0,(l-x)/y),b=Math.min(1,(h-x)/y);if(b>v){let S={x:f.p0.x+(f.p1.x-f.p0.x)*v,y:f.p0.y+(f.p1.y-f.p0.y)*v},U={x:f.p0.x+(f.p1.x-f.p0.x)*b,y:f.p0.y+(f.p1.y-f.p0.y)*b};p.push({p0:S,p1:U})}}return p};if(e===0&&t===1&&r===0)return[...u];if(Math.abs(a-o)<1e-5)return[];if(a<=o)return c(a*n,o*n);{let l=c(a*n,n),h=c(0,o*n);return[...l,...h]}}function re(u,e,t=0){if(u.length===0||e.length===0)return u;let r=0;for(let m of e)r+=m;if(r<1e-5)return u;let i=0,n=[];for(let m of u){let d=Math.hypot(m.p1.x-m.p0.x,m.p1.y-m.p0.y);n.push(d),i+=d}let s=[],a=(t%r+r)%r,o=0,c=!0,l=a;for(;l>e[o];)l-=e[o],o=(o+1)%e.length,c=!c;let h=e[o]-l,p=0;for(;p<i;){let m=Math.min(h,i-p);if(c&&m>1e-4){let d=I(u,p/i,(p+m)/i);s.push(...d)}p+=m,o=(o+1)%e.length,c=!c,h=e[o]}return s}function xe(u,e,t=0,r=0,i=0,n=0){let s=Math.min(u/2,e/2),a=Math.min(t,s),o=Math.min(r,s),c=Math.min(i,s),l=Math.min(n,s);return a===0&&o===0&&c===0&&l===0?`M 0 0 L ${u} 0 L ${u} ${e} L 0 ${e} Z`:[`M ${a} 0`,`L ${u-o} 0`,o>0?`Q ${u} 0 ${u} ${o}`:`L ${u} 0`,`L ${u} ${e-c}`,c>0?`Q ${u} ${e} ${u-c} ${e}`:`L ${u} ${e}`,`L ${l} ${e}`,l>0?`Q 0 ${e} 0 ${e-l}`:`L 0 ${e}`,`L 0 ${a}`,a>0?`Q 0 0 ${a} 0`:"L 0 0","Z"].join(" ")}function Be(u,e){let t=Math.min(u,e)/2,r=u/2,i=e/2,n=t*.5522847498;return[`M ${r} ${i-t}`,`C ${r+n} ${i-t} ${r+t} ${i-n} ${r+t} ${i}`,`C ${r+t} ${i+n} ${r+n} ${i+t} ${r} ${i+t}`,`C ${r-n} ${i+t} ${r-t} ${i+n} ${r-t} ${i}`,`C ${r-t} ${i-n} ${r-n} ${i-t} ${r} ${i-t}`,"Z"].join(" ")}function De(u,e){let t=u/2,r=e/2,i=t,n=r,s=t*.5522847498,a=r*.5522847498;return[`M ${i} ${n-r}`,`C ${i+s} ${n-r} ${i+t} ${n-a} ${i+t} ${n}`,`C ${i+t} ${n+a} ${i+s} ${n+r} ${i} ${n+r}`,`C ${i-s} ${n+r} ${i-t} ${n+a} ${i-t} ${n}`,`C ${i-t} ${n-a} ${i-s} ${n-r} ${i} ${n-r}`,"Z"].join(" ")}function Ce(u,e,t=5){let r=Math.max(3,t),i=Math.min(u,e)/2,n=u/2,s=e/2,a=[];for(let o=0;o<r;o++){let c=-Math.PI/2+o*2*Math.PI/r;a.push({x:n+i*Math.cos(c),y:s+i*Math.sin(c)})}return a.map((o,c)=>`${c===0?"M":"L"} ${o.x} ${o.y}`).join(" ")+" Z"}function ke(u,e,t=5,r=.5){let i=Math.max(3,t),n=Math.min(u,e)/2,s=n*Math.max(.01,Math.min(.99,r)),a=u/2,o=e/2,c=[];for(let l=0;l<i*2;l++){let h=-Math.PI/2+l*Math.PI/i,p=l%2===0?n:s;c.push({x:a+p*Math.cos(h),y:o+p*Math.sin(h)})}return c.map((l,h)=>`${h===0?"M":"L"} ${l.x} ${l.y}`).join(" ")+" Z"}function Te(u,e,t=40,r=40,i=20){let n=Math.min(t,e),s=Math.min(r,u),a=Math.min(i,n),o=e/2;return[`M 0 ${o-a/2}`,`L ${u-s} ${o-a/2}`,`L ${u-s} ${o-n/2}`,`L ${u} ${o}`,`L ${u-s} ${o+n/2}`,`L ${u-s} ${o+a/2}`,`L 0 ${o+a/2}`,"Z"].join(" ")}function ie(u){let{shapeType:e,width:t,height:r}=u;switch(e){case"rect":return xe(t,r,u.cornerRadius??0,u.cornerRadius??0,u.cornerRadius??0,u.cornerRadius??0);case"circle":return Be(t,r);case"ellipse":return De(t,r);case"polygon":return Ce(t,r,u.polygonSides??5);case"star":return ke(t,r,u.starPoints??5,u.starInnerRadiusRatio??.5);case"arrow":return Te(t,r,u.arrowHeadWidth??40,u.arrowHeadLength??40,u.arrowShaftWidth??20);case"path":return u.path??"";default:return""}}function ye(u){if(u.length<3)return[];if(u.length===3)return[u[0],u[1],u[2]];let e=[...u],t=e[e.length-1],r=e[0];if(Math.hypot(t.x-r.x,t.y-r.y)<1e-5&&e.pop(),e.length<3)return[];let i=0;for(let h=0;h<e.length;h++){let p=(h+1)%e.length;i+=e[h].x*e[p].y-e[p].x*e[h].y}i<0&&e.reverse();let n=(h,p,m,d)=>{let f=(m.x-p.x)*(h.y-p.y)-(m.y-p.y)*(h.x-p.x),y=(d.x-m.x)*(h.y-m.y)-(d.y-m.y)*(h.x-m.x),x=(p.x-d.x)*(h.y-d.y)-(p.y-d.y)*(h.x-d.x);return f>=-1e-6&&y>=-1e-6&&x>=-1e-6},s=(h,p,m,d)=>{if((p.x-h.x)*(m.y-h.y)-(p.y-h.y)*(m.x-h.x)<=1e-7)return!1;for(let y of d)if(!(y===h||y===p||y===m)&&n(y,h,p,m))return!1;return!0},a=[],o=[...e],c=0,l=o.length*o.length*2;for(;o.length>3&&c<l;){c++;let h=!1;for(let p=0;p<o.length;p++){let m=o[(p-1+o.length)%o.length],d=o[p],f=o[(p+1)%o.length];if(s(m,d,f,o)){a.push(m,d,f),o.splice(p,1),h=!0;break}}h||(a.push(o[0],o[1],o[2]),o.splice(1,1))}return o.length===3&&a.push(o[0],o[1],o[2]),a}function ge(u){let{shapeType:e,width:t,height:r}=u;if(e==="rect"){let i=u.cornerRadius??0;if(i<=0)return new Float32Array([0,0,t,0,t,r,0,0,t,r,0,r]);let n=xe(t,r,i,i,i,i),a=E(n).map(l=>l.p0),o=ye(a),c=new Float32Array(o.length*2);for(let l=0;l<o.length;l++)c[l*2]=o[l].x,c[l*2+1]=o[l].y;return c}if(e==="circle"||e==="ellipse"){let i=t/2,n=r/2,s=e==="circle"?Math.min(t,r)/2:t/2,a=e==="circle"?s:r/2,o=48,c=new Float32Array(o*3*2),l=0;for(let h=0;h<o;h++){let p=h*2*Math.PI/o,m=(h+1)*2*Math.PI/o;c[l++]=i,c[l++]=n,c[l++]=i+s*Math.cos(p),c[l++]=n+a*Math.sin(p),c[l++]=i+s*Math.cos(m),c[l++]=n+a*Math.sin(m)}return c}if(e==="polygon"){let i=Math.max(3,u.polygonSides??5),n=Math.min(t,r)/2,s=t/2,a=r/2,o=new Float32Array(i*3*2),c=0;for(let l=0;l<i;l++){let h=-Math.PI/2+l*2*Math.PI/i,p=-Math.PI/2+(l+1)*2*Math.PI/i;o[c++]=s,o[c++]=a,o[c++]=s+n*Math.cos(h),o[c++]=a+n*Math.sin(h),o[c++]=s+n*Math.cos(p),o[c++]=a+n*Math.sin(p)}return o}if(e==="star"){let i=Math.max(3,u.starPoints??5),n=Math.min(t,r)/2,s=n*Math.max(.01,Math.min(.99,u.starInnerRadiusRatio??.5)),a=t/2,o=r/2,c=i*2,l=new Float32Array(c*3*2),h=0;for(let p=0;p<c;p++){let m=-Math.PI/2+p*Math.PI/i,d=-Math.PI/2+(p+1)*Math.PI/i,f=p%2===0?n:s,y=(p+1)%2===0?n:s;l[h++]=a,l[h++]=o,l[h++]=a+f*Math.cos(m),l[h++]=o+f*Math.sin(m),l[h++]=a+y*Math.cos(d),l[h++]=o+y*Math.sin(d)}return l}if(e==="arrow"){let i=Math.min(u.arrowHeadWidth??40,r),n=Math.min(u.arrowHeadLength??40,t),s=Math.min(u.arrowShaftWidth??20,i),a=r/2,o=0,c=t-n,l=t,h=a-s/2,p=a+s/2,m=a-i/2,d=a+i/2;return new Float32Array([o,h,c,h,c,p,o,h,c,p,o,p,c,m,l,a,c,d])}if(e==="path"&&u.path){let i=E(u.path);if(i.length===0)return new Float32Array(0);let n=i.map(o=>o.p0),s=ye(n),a=new Float32Array(s.length*2);for(let o=0;o<s.length;o++)a[o*2]=s[o].x,a[o*2+1]=s[o].y;return a}return new Float32Array(0)}g();g();var Pe=`
|
|
184
184
|
struct Uniforms {
|
|
185
185
|
transformCol0 : vec4<f32>,
|
|
186
186
|
transformCol1 : vec4<f32>,
|
|
@@ -257,7 +257,7 @@ fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capTy
|
|
|
257
257
|
|
|
258
258
|
return vec4<f32>(u.color.rgb * alpha, alpha);
|
|
259
259
|
}
|
|
260
|
-
`;var V=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;scratchData=new Float32Array(28);constructor(e,t){this.device=e,this.uniformPool=new G(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"path.wgsl",code:Pe});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.pipeline=e.createRenderPipeline({label:"PathPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),this.maxPipeline=e.createRenderPipeline({label:"PathPipeline.max",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcFactor:"one",dstFactor:"one",operation:"max"}}}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}drawPath(e,t,r,i,n,s,a,o){let
|
|
260
|
+
`;var V=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;scratchData=new Float32Array(28);constructor(e,t){this.device=e,this.uniformPool=new G(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"path.wgsl",code:Pe});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.pipeline=e.createRenderPipeline({label:"PathPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),this.maxPipeline=e.createRenderPipeline({label:"PathPipeline.max",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcFactor:"one",dstFactor:"one",operation:"max"}}}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}drawPath(e,t,r,i,n,s,a,o){let c=E(r);if(c.length===0||((o?.trimStart!==void 0||o?.trimEnd!==void 0||o?.trimOffset!==void 0)&&(c=I(c,o.trimStart??0,o.trimEnd??1,o.trimOffset??0)),o?.strokeDashArray&&o.strokeDashArray.length>0&&(c=re(c,o.strokeDashArray,o.strokeDashOffset??0)),c.length===0))return;let l=D(i),h=o?.opacity??1,p=0;o?.strokeLineCap==="butt"?p=1:o?.strokeLineCap==="square"&&(p=2);for(let m of c)this.drawSegment(e,t,m.p0,m.p1,l,n,p,s,a,h,o)}drawSegments(e,t,r,i,n,s,a,o){let c=r;if((o?.trimStart!==void 0||o?.trimEnd!==void 0||o?.trimOffset!==void 0)&&(c=I(c,o.trimStart??0,o.trimEnd??1,o.trimOffset??0)),o?.strokeDashArray&&o.strokeDashArray.length>0&&(c=re(c,o.strokeDashArray,o.strokeDashOffset??0)),c.length===0)return;let l=D(i),h=o?.opacity??1,p=0;o?.strokeLineCap==="butt"?p=1:o?.strokeLineCap==="square"&&(p=2);for(let m of c)this.drawSegment(e,t,m.p0,m.p1,l,n,p,s,a,h,o)}drawSegment(e,t,r,i,n,s,a,o,c,l,h){let p=this.scratchData;t.packIntoBuffer(p,l,o,c,h?.transform),p[15]=s,p[16]=n.r,p[17]=n.g,p[18]=n.b,p[19]=n.a,p[20]=a,p[21]=0,p[22]=0,p[23]=0,p[24]=r.x,p[25]=r.y,p[26]=i.x,p[27]=i.y;let m=this.uniformPool.getBuffer(this.device,p),d=i.x-r.x,f=i.y-r.y,y=Math.sqrt(d*d+f*f);if(y<1e-6)return;let x=s*.5+2,P=d/y*x,v=f/y*x,b=-v,S=P,U=new Float32Array([r.x-P-b,r.y-v-S,r.x-P+b,r.y-v+S,i.x+P-b,i.y+v-S,i.x+P+b,i.y+v+S]),k=this.vertexPool.getBuffer(this.device,U),Q=h?.blendMode==="max"?this.maxPipeline:this.pipeline;e.setPipeline(Q);let B=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,m);e.setBindGroup(0,B),e.setVertexBuffer(0,k),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};g();g();var ve=`
|
|
261
261
|
struct Uniforms {
|
|
262
262
|
transformCol0 : vec4<f32>,
|
|
263
263
|
transformCol1 : vec4<f32>,
|
|
@@ -311,7 +311,7 @@ struct VSOut {
|
|
|
311
311
|
return color * opacity;
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
`;var W=class{buffers=[];index=0;size;usage;constructor(e,t){this.size=e,this.usage=t}getBuffer(e,t){if(this.index>=this.buffers.length){let i=e.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return e.queue.writeBuffer(r,0,t),r}reset(){this.index=0}destroy(){for(let e of this.buffers)e.destroy();this.buffers=[]}},z=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(e,t){this.device=e,this.uniformPool=new W(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new W(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"quad.wgsl",code:ve});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.textureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=e.createRenderPipeline({label:"QuadPipeline",layout:i,vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,n,s,a,o,l
|
|
314
|
+
`;var W=class{buffers=[];index=0;size;usage;constructor(e,t){this.size=e,this.usage=t}getBuffer(e,t){if(this.index>=this.buffers.length){let i=e.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return e.queue.writeBuffer(r,0,t),r}reset(){this.index=0}destroy(){for(let e of this.buffers)e.destroy();this.buffers=[]}},z=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(e,t){this.device=e,this.uniformPool=new W(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new W(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"quad.wgsl",code:ve});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.textureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=e.createRenderPipeline({label:"QuadPipeline",layout:i,vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,n,s,a,o,c,l){let h=l?.opacity??1;r.packIntoBuffer(this.uniformData,h,o,c,l?.transform);let p=this.uniformPool.getBuffer(this.device,this.uniformData),m=s.x/i.width,d=s.y/i.height,f=(s.x+s.width)/i.width,y=(s.y+s.height)/i.height;this.vertexData[0]=a.x,this.vertexData[1]=a.y,this.vertexData[2]=m,this.vertexData[3]=d,this.vertexData[4]=a.x+a.width,this.vertexData[5]=a.y,this.vertexData[6]=f,this.vertexData[7]=d,this.vertexData[8]=a.x,this.vertexData[9]=a.y+a.height,this.vertexData[10]=m,this.vertexData[11]=y,this.vertexData[12]=a.x+a.width,this.vertexData[13]=a.y+a.height,this.vertexData[14]=f,this.vertexData[15]=y;let x=this.vertexPool.getBuffer(this.device,this.vertexData),P=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p),v=t.getBindGroup(this.device,this.textureLayout,i,n);e.setPipeline(this.pipeline),e.setBindGroup(0,P),e.setBindGroup(1,v),e.setVertexBuffer(0,x),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};g();g();var be=`
|
|
315
315
|
struct Uniforms {
|
|
316
316
|
transformCol0 : vec4<f32>,
|
|
317
317
|
transformCol1 : vec4<f32>,
|
|
@@ -368,7 +368,7 @@ struct VSOut {
|
|
|
368
368
|
|
|
369
369
|
return vec4<f32>(outColor.rgb * alpha, alpha);
|
|
370
370
|
}
|
|
371
|
-
`;var H=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(28);constructor(e,t){this.device=e,this.uniformPool=new G(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"shape-fill.wgsl",code:be});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.pipeline=e.createRenderPipeline({label:"ShapeFillPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-list"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,n,s,a,o){if(r.length<6||i.type==="none")return;let
|
|
371
|
+
`;var H=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(28);constructor(e,t){this.device=e,this.uniformPool=new G(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"shape-fill.wgsl",code:be});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.pipeline=e.createRenderPipeline({label:"ShapeFillPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-list"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,n,s,a,o){if(r.length<6||i.type==="none")return;let c=o?.opacity??1;t.packIntoBuffer(this.uniformData,c,s,a,o?.transform);let l=0;i.type==="linear"?l=1:i.type==="radial"&&(l=2),this.uniformData[15]=l;let h=D(i.color??"#ffffff");this.uniformData[16]=h.r,this.uniformData[17]=h.g,this.uniformData[18]=h.b,this.uniformData[19]=h.a;let p=D(i.color2??i.color??"#ffffff");this.uniformData[20]=p.r,this.uniformData[21]=p.g,this.uniformData[22]=p.b,this.uniformData[23]=p.a,l===1?(this.uniformData[24]=i.startX??n.x,this.uniformData[25]=i.startY??n.y,this.uniformData[26]=i.endX??n.x+n.width,this.uniformData[27]=i.endY??n.y+n.height):l===2?(this.uniformData[24]=i.cx??n.x+n.width/2,this.uniformData[25]=i.cy??n.y+n.height/2,this.uniformData[26]=i.radius??Math.max(n.width,n.height)/2,this.uniformData[27]=0):(this.uniformData[24]=0,this.uniformData[25]=0,this.uniformData[26]=0,this.uniformData[27]=0);let m=this.uniformPool.getBuffer(this.device,this.uniformData),d=this.vertexPool.getBuffer(this.device,r);e.setPipeline(this.pipeline),e.setBindGroup(0,this.device.createBindGroup({layout:this.uniformLayout,entries:[{binding:0,resource:{buffer:m}}]})),e.setVertexBuffer(0,d),e.draw(r.length/2)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy()}};g();g();var Se=`
|
|
372
372
|
struct Uniforms {
|
|
373
373
|
transformCol0 : vec4<f32>,
|
|
374
374
|
transformCol1 : vec4<f32>,
|
|
@@ -415,4 +415,4 @@ fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
|
|
|
415
415
|
|
|
416
416
|
return vec4<f32>(u.color.rgb * alpha, alpha);
|
|
417
417
|
}
|
|
418
|
-
`;var q=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;uniformData=new Float32Array(24);vertexData=new Float32Array(8);constructor(e,t){this.device=e,this.uniformPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"solid.wgsl",code:Se});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.pipeline=e.createRenderPipeline({label:"SolidPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,n,s,a=0,o){let
|
|
418
|
+
`;var q=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;uniformData=new Float32Array(24);vertexData=new Float32Array(8);constructor(e,t){this.device=e,this.uniformPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"solid.wgsl",code:Se});this.uniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.pipeline=e.createRenderPipeline({label:"SolidPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout]}),vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,n,s,a=0,o){let c=D(i),l=o?.opacity??1;t.packIntoBuffer(this.uniformData,l,n,s,o?.transform),this.uniformData[15]=a,this.uniformData[16]=c.r,this.uniformData[17]=c.g,this.uniformData[18]=c.b,this.uniformData[19]=c.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height;let h=this.uniformPool.getBuffer(this.device,this.uniformData);this.vertexData[0]=r.x,this.vertexData[1]=r.y,this.vertexData[2]=r.x+r.width,this.vertexData[3]=r.y,this.vertexData[4]=r.x,this.vertexData[5]=r.y+r.height,this.vertexData[6]=r.x+r.width,this.vertexData[7]=r.y+r.height;let p=this.vertexPool.getBuffer(this.device,this.vertexData);e.setPipeline(this.pipeline);let m=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h);e.setBindGroup(0,m),e.setVertexBuffer(0,p),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};g();var N=class{stack=[new DOMMatrix];push(e){let r=this.stack[this.stack.length-1].multiply(e);this.stack.push(r)}pop(){this.stack.length>1&&this.stack.pop()}getCurrent(){return this.stack[this.stack.length-1]}packIntoBuffer(e,t,r,i,n,s){let a=this.getCurrent();n&&(a=a.multiply(n)),e[0]=a.a,e[1]=a.b,e[2]=0,e[3]=0,e[4]=a.c,e[5]=a.d,e[6]=0,e[7]=0,e[8]=a.e,e[9]=a.f,e[10]=1,e[11]=0,e[12]=t,e[13]=r,e[14]=i,e[15]=s??0}destroy(){this.stack=[new DOMMatrix]}};function Fe(u){if(Array.isArray(u)){let r=u[3]??1;return[u[0]*r,u[1]*r,u[2]*r,r]}if("r"in u){let r=u.a??1;return{r:u.r*r,g:u.g*r,b:u.b*r,a:r}}let e=Array.from(u),t=e[3]??1;return[e[0]*t,e[1]*t,e[2]*t,t]}var we=new WeakMap;function Vt(u,e){let t=we.get(u);return(!t||t.format!==e||t.isDestroyed)&&(t=new oe(u,e),we.set(u,t)),t.resetPools(),t}var oe=class{device;transformStack=new N;clipStack=new A;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new O;samplerCache=new pe;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(e,t){this.device=e,this.format=t,this.quadPipeline=new z(e,t),this.solidPipeline=new q(e,t),this.shapeFillPipeline=new H(e,t),this.pathPipeline=new V(e,t),this.effectPipeline=new $(e,t),this.slugPipeline=new he(e,t)}beginFrame(e,t,r={r:0,g:0,b:0,a:0},i,n,s="clear"){this.surfaceWidth=i,this.surfaceHeight=n,e!==this.lastEncoder&&(this.lastEncoder=e,this.resetPools());let a=e.beginRenderPass({colorAttachments:[{view:t,clearValue:Fe(r),loadOp:s,storeOp:"store"}]});return this.clipStack.applyScissorToPass(a,i,n),a}endFrame(e){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),K.flushRetired(this.device),K.prune(this.device)}drawTexture(e,t,r,i){let n=this.samplerCache.getSampler(this.device),s={x:0,y:0,width:t.width,height:t.height};this.rasterDrawCount++,this.quadPipeline.draw(e,this.bindGroupCache,this.transformStack,t,n,s,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(e,t,r,i,n){let s=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(e,this.bindGroupCache,this.transformStack,t,s,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawRect(e,t,r,i=0,n){let s=0,a=n;typeof i=="object"&&i!==null?(a=i,s=0):typeof i=="number"&&(s=i),this.rasterDrawCount++,this.solidPipeline.draw(e,this.transformStack,t,r,this.surfaceWidth,this.surfaceHeight,s,a)}drawPath(e,t,r,i,n){this.rasterDrawCount++,this.pathPipeline.drawPath(e,this.transformStack,t,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShapeFill(e,t,r,i,n){this.rasterDrawCount++,this.shapeFillPipeline.draw(e,this.transformStack,t,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShape(e,t,r,i,n){let s={x:0,y:0,width:t.width,height:t.height};if(r&&r.type!=="none"){let a=ge(t);if(a.length>0&&(this.drawShapeFill(e,a,r,s,n),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let o=ie(t);o&&this.drawPath(e,o,r.color,1,{...n,strokeLineCap:"round"})}}if(i&&i.width&&i.width>0&&i.color){let a=ie(t);a&&this.drawPath(e,a,i.color,i.width,{...n,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(e,t,r,i){this.drawRect(e,t.rect,r,t.rx,i)}getTemporaryTexture(e,t,r){return this.effectPipeline.getTexture(this.device,e,t,this.format,r)}getTemporaryBuffer(e){return this.effectPipeline.getBuffer(this.device,e)}composite(e,t,r,i,n){return this.effectPipeline.composite(e,this.bindGroupCache,this.samplerCache,t,r,i,this.format,n)}applyMotionBlur(e,t,r,i,n=180,s=16,a){return this.effectPipeline.applyMotionBlur(e,this.bindGroupCache,this.samplerCache,t,r,i,n,s,this.format,a)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let e=this.transformStack.getCurrent();this.pushTransform(e.inverse())}pushTransform(e){this.transformStack.push(e)}popTransform(){this.transformStack.pop()}pushScissor(e){this.clipStack.pushScissor(e,this.surfaceWidth,this.surfaceHeight)}pushScissorLocal(e){let t=this.transformStack.getCurrent(),r=[t.transformPoint(new DOMPoint(e.x,e.y)),t.transformPoint(new DOMPoint(e.x+e.width,e.y)),t.transformPoint(new DOMPoint(e.x,e.y+e.height)),t.transformPoint(new DOMPoint(e.x+e.width,e.y+e.height))],i=r.map(h=>h.x),n=r.map(h=>h.y),s=Math.min(...i),a=Math.min(...n),o=Math.max(...i)-s,c=Math.max(...n)-a,l=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(l){let h=Math.max(s,l.x),p=Math.max(a,l.y),m=Math.min(s+o,l.x+l.width),d=Math.min(a+c,l.y+l.height);s=h,a=p,o=Math.max(0,m-h),c=Math.max(0,d-p)}this.clipStack.pushScissor({x:s,y:a,width:o,height:c},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let e=this.clipStack.saveScissors();return this.clipStack.clearScissors(),e}resumeScissors(e){this.clipStack.restoreScissors(e)}pushStencilClip(e){this.clipStack.pushStencilClip(e)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};g();async function jt(u,e){if(typeof window<"u"&&typeof FontFace<"u")try{let r=await new FontFace(u,`url(${e})`).load();document.fonts.add(r),await document.fonts.ready}catch(t){console.warn(`[preloadFont] Failed to load font "${u}" from ${e}:`,t)}else await ue(u,e)}export{Le as a,$ as b,Vt as c,oe as d,jt as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as s}from"./chunk-BVF64D6H.mjs";s();var w="onnxruntime-web",g=()=>import(w),u=class{kind="webgpu";_loader;_providers;_wasmFallback;_ortPromise;constructor(e={}){this._loader=e.loader??g,this._providers=e.executionProviders??["webgpu","wasm"],this._wasmFallback=e.wasmFallback!==!1}ort(){return this._ortPromise||(this._ortPromise=this._loader().catch(e=>{throw this._ortPromise=void 0,new Error(`onnxruntime-web failed to load (${String(e)}). Install it in the browser bundle or pass a custom loader.`)})),this._ortPromise}async createSession(e){let o=await this.ort(),r;try{r=await o.InferenceSession.create(e,{executionProviders:[...this._providers],graphOptimizationLevel:"all",logSeverityLevel:3})}catch(n){if(!this._wasmFallback||!this._providers.includes("webgpu"))throw n;r=await o.InferenceSession.create(e,{executionProviders:["wasm"],graphOptimizationLevel:"all",logSeverityLevel:3})}return{run:async n=>{let v=r.inputNames.includes(n.name)?n.name:r.inputNames[0]??n.name,p=await r.run({[v]:new o.Tensor("float32",n.data,[...n.dims])}),a={};for(let[d,l]of Object.entries(p))a[d]={data:l.data,dims:[...l.dims]};return a},release:()=>{r.release()}}}};s();s();var h="onnxruntime-web/webgpu",S="webgpu",t;function O(){return t||(t=(async()=>{let i=globalThis;if(i.navigator?.gpu)return;let{create:e,globals:o}=await import(S);Object.assign(globalThis,o);let r=i.navigator??={};Object.defineProperty(r,"gpu",{value:e([]),configurable:!0,writable:!0})})(),t.catch(()=>{t=void 0})),t}var c=class{kind="webgpu";_inner;constructor(e={}){let o=e.loader??(async()=>{await O();let r=await import(h);return r.env?.wasm&&(r.env.wasm.numThreads=1),r});this._inner=new u({wasmFallback:!1,...e,loader:o})}createSession(e){return this._inner.createSession(e)}};var f;function I(i){f=i}var m=class{_resolved;get kind(){return this._resolved?.kind??"webgpu"}async createSession(e){if(!this._resolved){let o=new c({wasmFallback:!1});try{let r=await o.createSession(e);return this._resolved=o,r}catch{this._resolved=new P}}return this._resolved.createSession(e)}};function k(){return f?.()??new m}var P=class{kind="node";ortPromise;async ort(){return this.ortPromise||(this.ortPromise=import("./onnxruntime-node-56GSZEH3.mjs").catch(e=>{throw this.ortPromise=void 0,new Error(`onnxruntime-node failed to load (${String(e)}). Install it in the environment or provide a custom SessionProvider.`)})),this.ortPromise}async createSession(e){let o=await this.ort(),r=await o.InferenceSession.create(e,{executionProviders:["cpu"],graphOptimizationLevel:"all"});return{run:async n=>{let p={[r.inputNames.includes(n.name)?n.name:r.inputNames[0]??n.name]:new o.Tensor("float32",n.data,[...n.dims])},a=await r.run(p),d={};for(let[l,b]of Object.entries(a))d[l]={data:b.data,dims:[...b.dims]};return d},release:()=>{r.release()}}}};export{u as a,I as b,k as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as ea,B as fa,a as G,b as H,c as I,d as J,e as K,f as L,g as M,h as N,i as O,j as P,k as Q,l as R,m as S,n as T,o as U,p as V,q as W,r as X,s as Y,t as Z,u as _,v as $,w as aa,x as ba,y as ca,z as da}from"./chunk-
|
|
1
|
+
import{A as ea,B as fa,a as G,b as H,c as I,d as J,e as K,f as L,g as M,h as N,i as O,j as P,k as Q,l as R,m as S,n as T,o as U,p as V,q as W,r as X,s as Y,t as Z,u as _,v as $,w as aa,x as ba,y as ca,z as da}from"./chunk-4Q7JG6WJ.mjs";import{a as C}from"./chunk-QP2NI4XD.mjs";import{a as D}from"./chunk-LEEZXHQO.mjs";import{a as E}from"./chunk-ZX6APG6E.mjs";import{S as F}from"./chunk-PCB2VB5K.mjs";import{b as y}from"./chunk-5XDHHOF2.mjs";import{a as z}from"./chunk-55CCFPUX.mjs";import{a as A}from"./chunk-M2GRYRLM.mjs";import{b as B}from"./chunk-BJKH76OM.mjs";import{b as r}from"./chunk-KZOLCZIV.mjs";import{b as s}from"./chunk-5UP7FSGT.mjs";import{a as t}from"./chunk-L62MRHGZ.mjs";import{a as v}from"./chunk-HXMDPMLB.mjs";import{b as w}from"./chunk-NWRSVVTF.mjs";import{b as x}from"./chunk-U446SQP3.mjs";import{a as j}from"./chunk-UDNCEHUI.mjs";import{a as k}from"./chunk-I4FH6HYU.mjs";import{b as l}from"./chunk-5JD65JSJ.mjs";import{a as m}from"./chunk-D7MZHP2Y.mjs";import{a as n}from"./chunk-V7ZVVUQU.mjs";import{a as o}from"./chunk-G3HW4VER.mjs";import{a as p}from"./chunk-AOLAHYVV.mjs";import{a as q}from"./chunk-SA3JUR6D.mjs";import"./chunk-YKMBRUAE.mjs";import{a as e}from"./chunk-EHIIT4ZR.mjs";import{a as f}from"./chunk-H2F5NVQ6.mjs";import{b as g}from"./chunk-DPPH3NK2.mjs";import{a as h}from"./chunk-Z4ERCLNF.mjs";import"./chunk-N4LHIPHZ.mjs";import{a as i}from"./chunk-BUIQ5TUH.mjs";import"./chunk-VXUJWPIK.mjs";import{b as c}from"./chunk-MC7TZZLD.mjs";import{a as d}from"./chunk-CA5N7JRZ.mjs";import{a as b}from"./chunk-LP3EP33S.mjs";import"./chunk-XOEEGC4Z.mjs";import"./chunk-XKO4RYKN.mjs";import{a}from"./chunk-D5PHI6ET.mjs";import"./chunk-UC7CSW2A.mjs";import"./chunk-CNSHAFEA.mjs";import"./chunk-FKZ4XXPE.mjs";import"./chunk-EDIZNO3P.mjs";import{a as u}from"./chunk-G76HSKOS.mjs";import"./chunk-IYVN2QEL.mjs";import"./chunk-NQZKBFC6.mjs";import"./chunk-CYY366IE.mjs";import"./chunk-P3HBP725.mjs";import"./chunk-B6PLCMBM.mjs";import"./chunk-37EFVZWT.mjs";import"./chunk-VSSB73UU.mjs";import"./chunk-24P6DAB3.mjs";import"./chunk-YSTLMWCG.mjs";import"./chunk-6YJP57MZ.mjs";import"./chunk-4GEWSUX5.mjs";import"./chunk-MTJHQATU.mjs";import"./chunk-HYBAPT6I.mjs";import"./chunk-YAQFFQPG.mjs";import"./chunk-BVF64D6H.mjs";export{U as ApplyLUT,P as AudioSignalExtractor,K as Blur,H as ColorBalance,I as ColorKey,ba as Crop,Q as Curves,O as CustomEffect,aa as DepthOfField,N as FilmGrain,S as GradientMap,X as HalftoneScreen,W as HighPass,M as Levels,fa as Modulate,Z as MotionBlur,$ as PBRGlass,da as Relight3D,_ as SSAO,R as SelectiveColor,T as ShadowsHighlights,ea as TemporalDeflicker,Y as TileOffset,V as UnsharpMask,J as Vignette,ca as Vision,a as applyLutRenderer,b as blurRenderer,c as colorBalanceRenderer,d as colorkeyRenderer,e as cornerPinRenderer,f as cropRenderer,g as curvesRenderer,h as deflickerRenderer,i as displacementMapRenderer,L as effectFactories,G as effectMeta,j as filmGrainRenderer,k as flipRenderer,l as gradientMapRenderer,m as halftoneScreenRenderer,n as highPassRenderer,o as kenBurnsRenderer,p as layerStyleRenderer,q as levelsRenderer,r as liquifyRenderer,s as maskMathRenderer,t as meshWarpRenderer,u as modulateRenderer,v as paintRenderer,w as patchHealRenderer,x as refineEdgeRenderer,y as refractionCausticsRenderer,z as relight3dRenderer,A as selectiveColorRenderer,B as shadowsHighlightsRenderer,C as tileOffsetRenderer,D as unsharpMaskRenderer,E as vignetteRenderer,F as visionRenderer};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{B as Fl,C as Rl,D as Rn,E as Bn,F as Bl,G as Il,H as Ul,I as El,J as Ur,K as _l,a as il,b as sl,c as X,d as Je,e as fl,f as hl,g as gl,h as bl,i as xl,j as yl,k as vl,n as wl,o as Sl,p as Ml,q as kl,r as Vo,s as Ch,t as Ah,u as Nh,v as Dh,w as Oh,x as Lh,y as Fh,z as Rh}from"./chunk-HAXK42HG.mjs";import{a as Ol}from"./chunk-PIAJWALT.mjs";import{a as Ln,b as Go}from"./chunk-PJ3DVG45.mjs";import{a as zo,b as ml,d as pl,e as Bh}from"./chunk-
|
|
1
|
+
import{B as Fl,C as Rl,D as Rn,E as Bn,F as Bl,G as Il,H as Ul,I as El,J as Ur,K as _l,a as il,b as sl,c as X,d as Je,e as fl,f as hl,g as gl,h as bl,i as xl,j as yl,k as vl,n as wl,o as Sl,p as Ml,q as kl,r as Vo,s as Ch,t as Ah,u as Nh,v as Dh,w as Oh,x as Lh,y as Fh,z as Rh}from"./chunk-HAXK42HG.mjs";import{a as Ol}from"./chunk-PIAJWALT.mjs";import{a as Ln,b as Go}from"./chunk-PJ3DVG45.mjs";import{a as zo,b as ml,d as pl,e as Bh}from"./chunk-QARN3FLA.mjs";import{a as cl}from"./chunk-LKYN3BM2.mjs";import"./chunk-JPXQPP6J.mjs";import{A as ca,B as da,b as $n,c as Wn,d as Hn,e as ut,g as Yn,h as Xn,i as Zn,j as Ql,k as qn,l as Kn,m as Jn,n as Qn,o as ea,p as ta,q as ra,r as na,s as aa,t as oa,u as ia,v as sa,w as ua,x as ar,y as lt,z as la}from"./chunk-4Q7JG6WJ.mjs";import"./chunk-QP2NI4XD.mjs";import"./chunk-LEEZXHQO.mjs";import"./chunk-ZX6APG6E.mjs";import{A as Th,B as Ph,C as Ho,D as Gl,E as zl,F as En,G as Vl,H as jl,I as $l,J as Wl,K as Hl,L as Yl,M as _n,N as Xl,O as Gn,P as zn,Q as Vn,R as nr,a as jo,b as rf,c as nf,d as af,e as of,f as sf,g as bf,h as xf,i as yf,j as vf,k as wf,l as Sf,m as Mf,n as zf,o as Vf,p as jf,q as $f,r as Wf,s as Hf,t as Yf,u as Xf,v as Zf,w as qf,x as ih,y as xh,z as kh}from"./chunk-PCB2VB5K.mjs";import"./chunk-5XDHHOF2.mjs";import"./chunk-55CCFPUX.mjs";import"./chunk-M2GRYRLM.mjs";import"./chunk-BJKH76OM.mjs";import"./chunk-KZOLCZIV.mjs";import"./chunk-5UP7FSGT.mjs";import"./chunk-L62MRHGZ.mjs";import"./chunk-HXMDPMLB.mjs";import"./chunk-NWRSVVTF.mjs";import"./chunk-U446SQP3.mjs";import"./chunk-UDNCEHUI.mjs";import"./chunk-I4FH6HYU.mjs";import"./chunk-5JD65JSJ.mjs";import"./chunk-D7MZHP2Y.mjs";import"./chunk-V7ZVVUQU.mjs";import"./chunk-G3HW4VER.mjs";import"./chunk-AOLAHYVV.mjs";import"./chunk-SA3JUR6D.mjs";import{a as uf,b as lf}from"./chunk-YKMBRUAE.mjs";import"./chunk-EHIIT4ZR.mjs";import"./chunk-H2F5NVQ6.mjs";import"./chunk-DPPH3NK2.mjs";import"./chunk-Z4ERCLNF.mjs";import{a as In,b as Un}from"./chunk-N4LHIPHZ.mjs";import"./chunk-BUIQ5TUH.mjs";import{a as yh,b as vh,c as wh,d as Sh,e as Mh}from"./chunk-VXUJWPIK.mjs";import"./chunk-MC7TZZLD.mjs";import"./chunk-CA5N7JRZ.mjs";import"./chunk-LP3EP33S.mjs";import"./chunk-XOEEGC4Z.mjs";import{i as Dn}from"./chunk-XKO4RYKN.mjs";import"./chunk-D5PHI6ET.mjs";import"./chunk-UC7CSW2A.mjs";import"./chunk-CNSHAFEA.mjs";import{a as ll}from"./chunk-FKZ4XXPE.mjs";import{a as ql,b as Kl,c as Jl,d as jn}from"./chunk-CURR5X7D.mjs";import"./chunk-CVGM2U4J.mjs";import"./chunk-H5BPCY7N.mjs";import"./chunk-JWNHTRED.mjs";import"./chunk-6ZOXGAYA.mjs";import"./chunk-3O5OKR6D.mjs";import"./chunk-SXX7HX34.mjs";import"./chunk-V3H7WWOT.mjs";import"./chunk-N4PWLBZ7.mjs";import"./chunk-VJGK7MLJ.mjs";import"./chunk-TMRLZV5X.mjs";import{a as Zl}from"./chunk-EDIZNO3P.mjs";import"./chunk-G76HSKOS.mjs";import{a as fe}from"./chunk-IYVN2QEL.mjs";import{A as Kf,B as Jf,C as Qf,D as eh,E as th,F as rh,G as nh,H as ah,I as oh,a as i,c as cf,d as df,e as mf,f as pf,g as ff,h as hf,i as gf,j as kf,k as Tf,l as Pf,m as Cf,n as Af,o as Nf,p as Df,q as Of,r as Lf,s as Ff,t as Rf,u as Bf,v as If,w as Uf,x as Ef,y as _f,z as Gf}from"./chunk-NQZKBFC6.mjs";import{b as ul}from"./chunk-CYY366IE.mjs";import{a as Dt,b as Xp,c as Zp,d as qp,e as Tl,f as Pl,g as Kp,h as Jp,i as Qp,j as ef,k as tf,l as Cl,m as Al,n as Nl,o as Dl}from"./chunk-P3HBP725.mjs";import"./chunk-XD4GKD6H.mjs";import{b as Ll}from"./chunk-B6PLCMBM.mjs";import{a as al}from"./chunk-37EFVZWT.mjs";import{e as On}from"./chunk-VSSB73UU.mjs";import{a as sh,b as uh,c as lh,d as ch,e as dh,f as mh,g as ph,h as $o,i as fh,j as Wo,k as hh,l as gh,m as bh}from"./chunk-24P6DAB3.mjs";import"./chunk-YSTLMWCG.mjs";import{d as ol}from"./chunk-6YJP57MZ.mjs";import{a as Ot}from"./chunk-SZ7YRPKO.mjs";import"./chunk-GYG2IIBR.mjs";import{d as Nt,f as Fn,i as dl}from"./chunk-4BEJJKEU.mjs";import{m as rr}from"./chunk-4GEWSUX5.mjs";import{r as he}from"./chunk-MTJHQATU.mjs";import"./chunk-HYBAPT6I.mjs";import{o as j}from"./chunk-YAQFFQPG.mjs";import{a as Er,b as _r}from"./chunk-ZEYUXJIV.mjs";import{a as _o,c as tr,d as S,e as g}from"./chunk-BVF64D6H.mjs";var Lu=_o((Zw,Ou)=>{g();var wn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":wn(),apply:()=>wn(),construct:()=>wn()});Ou.exports=wn()});var Ru=_o((l2,Fu)=>{g();var kn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":kn(),apply:()=>kn(),construct:()=>kn()});Fu.exports=kn()});g();g();var Yo=`
|
|
2
2
|
struct MotionBlurUniforms {
|
|
3
3
|
shutterFraction: f32, // shutterAngle / 360.0
|
|
4
4
|
sampleCount: u32, // e.g. 16
|