@vincentt-xr/sdk 2.0.0-alpha.2 → 2.0.0-alpha.4
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/GROUNDING.md +67 -9
- package/dist/{DebuggerUI-Cq28c18s.js → DebuggerUI-DhKTXTY2.js} +1 -1
- package/dist/{DebuggerUI-B45_Gb9d.cjs → DebuggerUI-bnGHSSOb.cjs} +1 -1
- package/dist/{FaceMeshRenderer-6t8OsQhK.js → FaceMeshRenderer-B2i2NW71.js} +3 -3
- package/dist/{FaceMeshRenderer-lQLhYIW-.cjs → FaceMeshRenderer-BSOq1OnG.cjs} +1 -1
- package/dist/{FaceRetouch-CDrL0pXg.js → FaceRetouch-Bg-OBU4n.js} +30 -30
- package/dist/{FaceRetouch-DtNl8-4e.cjs → FaceRetouch-TZeBGIqW.cjs} +1 -1
- package/dist/components/MeshRenderer/index.d.ts +1 -0
- package/dist/components/ScreenImage/source.d.ts +3 -0
- package/dist/contexts-B2_NsTnk.js +660 -0
- package/dist/contexts-BgWfyxre.cjs +1 -0
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +1246 -1205
- package/dist/entries/low-level.d.ts +5 -0
- package/dist/face-effects.cjs +1 -1
- package/dist/face-effects.js +4 -4
- package/dist/{getFaceInfo-hUKMLFcr.js → getFaceInfo-4DhcPZDJ.js} +1 -1
- package/dist/{getFaceInfo-CyPAKh3h.cjs → getFaceInfo-QOQ_dc-W.cjs} +1 -1
- package/dist/hooks/selectors.d.ts +2 -4
- package/dist/hooks/useXRModel.d.ts +5 -0
- package/dist/hooks/useXRSession/reason.d.ts +19 -0
- package/dist/hooks/useXRSession/store.d.ts +12 -4
- package/dist/index-72Wb15Ca.js +214 -0
- package/dist/{index-JygePOwo.js → index-BMeBJ0dV.js} +322 -299
- package/dist/index-C9yQVzAh.cjs +1 -0
- package/dist/index-CNGzE49z.cjs +17 -0
- package/dist/{index-Di70KWuY.js → index-Cj3fGDtZ.js} +844 -825
- package/dist/{index-BgQAX8rs.js → index-D1kj6uc-.js} +123 -120
- package/dist/{index-D4bLzBr6.cjs → index-Da7uycur.cjs} +1 -1
- package/dist/{index-DSpzjuqd.cjs → index-WPPnlFO1.cjs} +1 -1
- package/dist/index-ZaDEzDtR.cjs +1 -0
- package/dist/{index-UC0Ux38E.js → index-g250Tqme.js} +1 -1
- package/dist/{internal-DuMPpcbp.js → internal-34pb7djs.js} +3 -3
- package/dist/{internal-i2JkM85N.cjs → internal-Dtvo4WYo.cjs} +1 -1
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +1 -1
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +399 -490
- package/dist/main.cjs +1 -1
- package/dist/main.js +28 -28
- package/dist/{renderGroups-C9QJrAXu.js → renderGroups-CPWUX6z9.js} +1 -1
- package/dist/{renderGroups-Dvm1J4lW.cjs → renderGroups-jSUOY1Oq.cjs} +1 -1
- package/dist/{renderPasses-CjgG_6kQ.js → renderPasses-CLlYRdMk.js} +5 -5
- package/dist/{renderPasses-CT5iBwtg.cjs → renderPasses-KUJUSevp.cjs} +2 -2
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/{selectors-Dw3C-gSk.js → selectors-DLxL8Q66.js} +4 -4
- package/dist/{selectors-2QvO5RYY.cjs → selectors-S8g25ke9.cjs} +1 -1
- package/dist/{session-C1StwN0f.js → session-CbtvwiaD.js} +1 -1
- package/dist/{session-BChR4TgK.cjs → session-DP8AF7Rg.cjs} +1 -1
- package/dist/texture/animatedTexture.d.ts +2 -0
- package/dist/texture/gifReader.d.ts +17 -0
- package/dist/texture/gifTextureSource.d.ts +16 -0
- package/dist/tracking.cjs +1 -1
- package/dist/tracking.js +9 -9
- package/dist/{useFaceInfo-C-WfMlYp.cjs → useFaceInfo-BvZeUBsL.cjs} +1 -1
- package/dist/{useFaceInfo-CwsHZedC.js → useFaceInfo-C06EyScd.js} +3 -3
- package/dist/{useFaceResults-CkFc1egZ.js → useFaceResults-C1Ppc8rS.js} +1 -1
- package/dist/{useFaceResults-VcFdOUFV.cjs → useFaceResults-CCNiH7VZ.cjs} +1 -1
- package/docs/api/screen-image.mdx +27 -3
- package/docs/api/texture-sources.mdx +25 -6
- package/docs/texture-api-consumer.md +26 -0
- package/package.json +4 -3
- package/dist/contexts-BKvTIayr.cjs +0 -1
- package/dist/contexts-Bk5zz_VR.js +0 -214
- package/dist/index-82aENaRq.cjs +0 -1
- package/dist/index-CEc1CAmB.cjs +0 -1
- package/dist/index-CTHeBQOs.js +0 -178
- package/dist/index-DzEzkBIH.cjs +0 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const _=require("react/jsx-runtime"),v=require("@react-three/fiber"),s=require("react"),S=require("./index-Da7uycur.cjs"),X=require("./renderLayers-lDtL0_43.cjs"),V=require("three");function Y(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const b=Y(V);function Z(e){return JSON.stringify(e??{})}function N(e,t,n=!0){const{session:r}=S.useXRContext(),o=s.useId(),[u,d]=s.useState(null),l=Z(t),c=s.useRef(t);c.current=t,s.useEffect(()=>{let i=!1;return d(null),r.registry.acquire(e,o,c.current).catch(f=>{i||d(f instanceof Error?f:new Error(String(f)))}),()=>{i=!0,r.registry.release(e,o)}},[r,e,o,l]),s.useEffect(()=>{r.registry.setActive(e,o,n)},[r,e,o,n]);const y=r.store,A=s.useSyncExternalStore(i=>y.subscribe(i),()=>y.getSnapshot().pipeline.get(e)??null,()=>null),E=s.useMemo(()=>A?A.getModelNode():null,[A]);return{ready:A!==null&&u===null,node:E,error:u}}const U=({materialProps:e,settings:t})=>t.type==="basic"?_.jsx("meshBasicMaterial",{...e}):_.jsx("meshStandardMaterial",{...e,roughness:t.roughness,metalness:t.metalness}),j=1e-6,B=e=>{const{x:t,y:n,z:r}=e.scale;return Math.abs(t-n)<=j&&Math.abs(t-r)<=j?t:1},W=(e,t,n,r)=>{if(!n.enabled)return e;const o=B(n);return r.x=t.x+(e.x-t.x)*o+n.position.x,r.y=t.y+(e.y-t.y)*o-n.position.y,r.z=t.z+(e.z-t.z)*o+n.position.z,r},G=(e,t,n)=>S.unprojectToZZeroInto(e,t,n),J=(e,t,n)=>{const r=(e.x-.5)*2,o=(.5-e.y)*2,u=b.MathUtils.clamp(e.z*2,-1,1);return n.set(r,o,u).unproject(t)},Q=(e,t,n,r,o,u)=>{const d=Math.min(t,e.length);for(let l=0;l<d;l++){o(e[l],r,u);const c=l*3;n[c]=u.x,n[c+1]=u.y,n[c+2]=u.z}return d},$=[[127,34,139],[11,0,37],[232,231,120],[72,37,39],[128,121,47],[232,121,128],[104,69,67],[175,171,148],[118,50,101],[73,39,40],[9,151,108],[48,115,131],[194,204,211],[74,40,185],[80,42,183],[40,92,186],[230,229,118],[202,212,214],[83,18,17],[76,61,146],[160,29,30],[56,157,173],[106,204,194],[135,214,192],[203,165,98],[21,71,68],[51,45,4],[144,24,23],[77,146,91],[205,50,187],[201,200,18],[91,106,182],[90,91,181],[85,84,17],[206,203,36],[148,171,140],[92,40,39],[193,189,244],[159,158,28],[247,246,161],[236,3,196],[54,68,104],[193,168,8],[117,228,31],[189,193,55],[98,97,99],[126,47,100],[166,79,218],[155,154,26],[209,49,131],[135,136,150],[47,126,217],[223,52,53],[45,51,134],[211,170,140],[67,69,108],[43,106,91],[230,119,120],[226,130,247],[63,53,52],[238,20,242],[46,70,156],[78,62,96],[46,53,63],[143,34,227],[123,117,111],[44,125,19],[236,134,51],[216,206,205],[154,153,22],[39,37,167],[200,201,208],[36,142,100],[57,212,202],[20,60,99],[28,158,157],[35,226,113],[160,159,27],[204,202,210],[113,225,46],[43,202,204],[62,76,77],[137,123,116],[41,38,72],[203,129,142],[64,98,240],[49,102,64],[41,73,74],[212,216,207],[42,74,184],[169,170,211],[170,149,176],[105,66,69],[122,6,168],[123,147,187],[96,77,90],[65,55,107],[89,90,180],[101,100,120],[63,105,104],[93,137,227],[15,86,85],[129,102,49],[14,87,86],[55,8,9],[100,47,121],[145,23,22],[88,89,179],[6,122,196],[88,95,96],[138,172,136],[215,58,172],[115,48,219],[42,80,81],[195,3,51],[43,146,61],[171,175,199],[81,82,38],[53,46,225],[144,163,110],[52,65,66],[229,228,117],[34,127,234],[107,108,69],[109,108,151],[48,64,235],[62,78,191],[129,209,126],[111,35,143],[117,123,50],[222,65,52],[19,125,141],[221,55,65],[3,195,197],[25,7,33],[220,237,44],[70,71,139],[122,193,245],[247,130,33],[71,21,162],[170,169,150],[188,174,196],[216,186,92],[2,97,167],[141,125,241],[164,167,37],[72,38,12],[38,82,13],[63,68,71],[226,35,111],[101,50,205],[206,92,165],[209,198,217],[165,167,97],[220,115,218],[133,112,243],[239,238,241],[214,135,169],[190,173,133],[171,208,32],[125,44,237],[86,87,178],[85,86,179],[84,85,180],[83,84,181],[201,83,182],[137,93,132],[76,62,183],[61,76,184],[57,61,185],[212,57,186],[214,207,187],[34,143,156],[79,239,237],[123,137,177],[44,1,4],[201,194,32],[64,102,129],[213,215,138],[59,166,219],[242,99,97],[2,94,141],[75,59,235],[24,110,228],[25,130,226],[23,24,229],[22,23,230],[26,22,231],[112,26,232],[189,190,243],[221,56,190],[28,56,221],[27,28,222],[29,27,223],[30,29,224],[247,30,225],[238,79,20],[166,59,75],[60,75,240],[147,177,215],[20,79,166],[187,147,213],[112,233,244],[233,128,245],[128,114,188],[114,217,174],[131,115,220],[217,198,236],[198,131,134],[177,132,58],[143,35,124],[110,163,7],[228,110,25],[356,389,368],[11,302,267],[452,350,349],[302,303,269],[357,343,277],[452,453,357],[333,332,297],[175,152,377],[347,348,330],[303,304,270],[9,336,337],[278,279,360],[418,262,431],[304,408,409],[310,415,407],[270,409,410],[450,348,347],[422,430,434],[313,314,17],[306,307,375],[387,388,260],[286,414,398],[335,406,418],[364,367,416],[423,358,327],[251,284,298],[281,5,4],[373,374,253],[307,320,321],[425,427,411],[421,313,18],[321,405,406],[320,404,405],[315,16,17],[426,425,266],[377,400,369],[322,391,269],[417,465,464],[386,257,258],[466,260,388],[456,399,419],[284,332,333],[417,285,8],[346,340,261],[413,441,285],[327,460,328],[355,371,329],[392,439,438],[382,341,256],[429,420,360],[364,394,379],[277,343,437],[443,444,283],[275,440,363],[431,262,369],[297,338,337],[273,375,321],[450,451,349],[446,342,467],[293,334,282],[458,461,462],[276,353,383],[308,324,325],[276,300,293],[372,345,447],[352,345,340],[274,1,19],[456,248,281],[436,427,425],[381,256,252],[269,391,393],[200,199,428],[266,330,329],[287,273,422],[250,462,328],[258,286,384],[265,353,342],[387,259,257],[424,431,430],[342,353,276],[273,335,424],[292,325,307],[366,447,345],[271,303,302],[423,266,371],[294,455,460],[279,278,294],[271,272,304],[432,434,427],[272,407,408],[394,430,431],[395,369,400],[334,333,299],[351,417,168],[352,280,411],[325,319,320],[295,296,336],[319,403,404],[330,348,349],[293,298,333],[323,454,447],[15,16,315],[358,429,279],[14,15,316],[285,336,9],[329,349,350],[374,380,252],[318,402,403],[6,197,419],[318,319,325],[367,364,365],[435,367,397],[344,438,439],[272,271,311],[195,5,281],[273,287,291],[396,428,199],[311,271,268],[283,444,445],[373,254,339],[282,334,296],[449,347,346],[264,447,454],[336,296,299],[338,10,151],[278,439,455],[292,407,415],[358,371,355],[340,345,372],[346,347,280],[442,443,282],[19,94,370],[441,442,295],[248,419,197],[263,255,359],[440,275,274],[300,383,368],[351,412,465],[263,467,466],[301,368,389],[395,378,379],[412,351,419],[436,426,322],[2,164,393],[370,462,461],[164,0,267],[302,11,12],[268,12,13],[293,300,301],[446,261,340],[330,266,425],[426,423,391],[429,355,437],[391,327,326],[440,457,438],[341,382,362],[459,457,461],[434,430,394],[414,463,362],[396,369,262],[354,461,457],[316,403,402],[315,404,403],[314,405,404],[313,406,405],[421,418,406],[366,401,361],[306,408,407],[291,409,408],[287,410,409],[432,436,410],[434,416,411],[264,368,383],[309,438,457],[352,376,401],[274,275,4],[421,428,262],[294,327,358],[433,416,367],[289,455,439],[462,370,326],[2,326,370],[305,460,455],[254,449,448],[255,261,446],[253,450,449],[252,451,450],[256,452,451],[341,453,452],[413,464,463],[441,413,414],[258,442,441],[257,443,442],[259,444,443],[260,445,444],[467,342,445],[459,458,250],[289,392,290],[290,328,460],[376,433,435],[250,290,392],[411,416,433],[341,463,464],[453,464,465],[357,465,412],[343,412,399],[360,363,440],[437,399,456],[420,456,363],[401,435,288],[372,383,353],[339,255,249],[448,261,255],[133,243,190],[133,155,112],[33,246,247],[33,130,25],[398,384,286],[362,398,414],[362,463,341],[263,359,467],[263,249,255],[466,467,260],[75,60,166],[238,239,79],[162,127,139],[72,11,37],[121,232,120],[73,72,39],[114,128,47],[233,232,128],[103,104,67],[152,175,148],[119,118,101],[74,73,40],[107,9,108],[49,48,131],[32,194,211],[184,74,185],[191,80,183],[185,40,186],[119,230,118],[210,202,214],[84,83,17],[77,76,146],[161,160,30],[190,56,173],[182,106,194],[138,135,192],[129,203,98],[54,21,68],[5,51,4],[145,144,23],[90,77,91],[207,205,187],[83,201,18],[181,91,182],[180,90,181],[16,85,17],[205,206,36],[176,148,140],[165,92,39],[245,193,244],[27,159,28],[30,247,161],[174,236,196],[103,54,104],[55,193,8],[111,117,31],[221,189,55],[240,98,99],[142,126,100],[219,166,218],[112,155,26],[198,209,131],[169,135,150],[114,47,217],[224,223,53],[220,45,134],[32,211,140],[109,67,108],[146,43,91],[231,230,120],[113,226,247],[105,63,52],[241,238,242],[124,46,156],[95,78,96],[70,46,63],[116,143,227],[116,123,111],[1,44,19],[3,236,51],[207,216,205],[26,154,22],[165,39,167],[199,200,208],[101,36,100],[43,57,202],[242,20,99],[56,28,157],[124,35,113],[29,160,27],[211,204,210],[124,113,46],[106,43,204],[96,62,77],[227,137,116],[73,41,72],[36,203,142],[235,64,240],[48,49,64],[42,41,74],[214,212,207],[183,42,184],[210,169,211],[140,170,176],[104,105,69],[193,122,168],[50,123,187],[89,96,90],[66,65,107],[179,89,180],[119,101,120],[68,63,104],[234,93,227],[16,15,85],[209,129,49],[15,14,86],[107,55,9],[120,100,121],[153,145,22],[178,88,179],[197,6,196],[89,88,96],[135,138,136],[138,215,172],[218,115,219],[41,42,81],[5,195,51],[57,43,61],[208,171,199],[41,81,38],[224,53,225],[24,144,110],[105,52,66],[118,229,117],[227,34,234],[66,107,69],[10,109,151],[219,48,235],[183,62,191],[142,129,126],[116,111,143],[118,117,50],[223,222,52],[94,19,141],[222,221,65],[196,3,197],[45,220,44],[156,70,139],[188,122,245],[139,71,162],[149,170,150],[122,188,196],[206,216,92],[164,2,167],[242,141,241],[0,164,37],[11,72,12],[12,38,13],[70,63,71],[31,226,111],[36,101,205],[203,206,165],[126,209,217],[98,165,97],[237,220,218],[237,239,241],[210,214,169],[140,171,32],[241,125,237],[179,86,178],[180,85,179],[181,84,180],[182,83,181],[194,201,182],[177,137,132],[184,76,183],[185,61,184],[186,57,185],[216,212,186],[192,214,187],[139,34,156],[218,79,237],[147,123,177],[45,44,4],[208,201,32],[98,64,129],[192,213,138],[235,59,219],[141,242,97],[97,2,141],[240,75,235],[229,24,228],[31,25,226],[230,23,229],[231,22,230],[232,26,231],[233,112,232],[244,189,243],[189,221,190],[222,28,221],[223,27,222],[224,29,223],[225,30,224],[113,247,225],[99,60,240],[213,147,215],[60,20,166],[192,187,213],[243,112,244],[244,233,245],[245,128,188],[188,114,174],[134,131,220],[174,217,236],[236,198,134],[215,177,58],[156,143,124],[25,110,7],[31,228,25],[264,356,368],[0,11,267],[451,452,349],[267,302,269],[350,357,277],[350,452,357],[299,333,297],[396,175,377],[280,347,330],[269,303,270],[151,9,337],[344,278,360],[424,418,431],[270,304,409],[272,310,407],[322,270,410],[449,450,347],[432,422,434],[18,313,17],[291,306,375],[259,387,260],[424,335,418],[434,364,416],[391,423,327],[301,251,298],[275,281,4],[254,373,253],[375,307,321],[280,425,411],[200,421,18],[335,321,406],[321,320,405],[314,315,17],[423,426,266],[396,377,369],[270,322,269],[413,417,464],[385,386,258],[248,456,419],[298,284,333],[168,417,8],[448,346,261],[417,413,285],[326,327,328],[277,355,329],[309,392,438],[381,382,256],[279,429,360],[365,364,379],[355,277,437],[282,443,283],[281,275,363],[395,431,369],[299,297,337],[335,273,321],[348,450,349],[359,446,467],[283,293,282],[250,458,462],[300,276,383],[292,308,325],[283,276,293],[264,372,447],[346,352,340],[354,274,19],[363,456,281],[426,436,425],[380,381,252],[267,269,393],[421,200,428],[371,266,329],[432,287,422],[290,250,328],[385,258,384],[446,265,342],[386,387,257],[422,424,430],[445,342,276],[422,273,424],[306,292,307],[352,366,345],[268,271,302],[358,423,371],[327,294,460],[331,279,294],[303,271,304],[436,432,427],[304,272,408],[395,394,431],[378,395,400],[296,334,299],[6,351,168],[376,352,411],[307,325,320],[285,295,336],[320,319,404],[329,330,349],[334,293,333],[366,323,447],[316,15,315],[331,358,279],[317,14,316],[8,285,9],[277,329,350],[253,374,252],[319,318,403],[351,6,419],[324,318,325],[397,367,365],[288,435,397],[278,344,439],[310,272,311],[248,195,281],[375,273,291],[175,396,199],[312,311,268],[276,283,445],[390,373,339],[295,282,296],[448,449,346],[356,264,454],[337,336,299],[337,338,151],[294,278,455],[308,292,415],[429,358,355],[265,340,372],[352,346,280],[295,442,282],[354,19,370],[285,441,295],[195,248,197],[457,440,274],[301,300,368],[417,351,465],[251,301,389],[394,395,379],[399,412,419],[410,436,322],[326,2,393],[354,370,461],[393,164,267],[268,302,12],[312,268,13],[298,293,301],[265,446,340],[280,330,425],[322,426,391],[420,429,437],[393,391,326],[344,440,438],[458,459,461],[364,434,394],[428,396,262],[274,354,457],[317,316,402],[316,315,403],[315,314,404],[314,313,405],[313,421,406],[323,366,361],[292,306,407],[306,291,408],[291,287,409],[287,432,410],[427,434,411],[372,264,383],[459,309,457],[366,352,401],[1,274,4],[418,421,262],[331,294,358],[435,433,367],[392,289,439],[328,462,326],[94,2,370],[289,305,455],[339,254,448],[359,255,446],[254,253,449],[253,252,450],[252,256,451],[256,341,452],[414,413,463],[286,441,414],[286,258,441],[258,257,442],[257,259,443],[259,260,444],[260,467,445],[309,459,250],[305,289,290],[305,290,460],[401,376,435],[309,250,392],[376,411,433],[453,341,464],[357,453,465],[343,357,412],[437,343,399],[344,360,440],[420,437,456],[360,420,363],[361,401,288],[265,372,353],[390,339,249],[339,448,255],[255,339,448]].flat(),e0=[.5104879319667817,.33515610277652746,.5174233198165894,.43859300494194037,.5123749554157258,.406469448208809,.5423470318317414,.5244461464881898,.5190713584423066,.46557595014572145,.5194876372814179,.5006013351678849,.5178673148155213,.5855525898933411,.7009655416011811,.5918984371423721,.5193980515003205,.6528422343730926,.520683366060257,.689273599088192,.5248700261116028,.8232529717683792,.5099657952785492,.32301718473434454,.5088536620140076,.31080526888370513,.5081197202205658,.3013389307260514,.5072353065013886,.29900476515293123,.5073091566562653,.28442813932895666,.5065075337886811,.26649361431598667,.5061309516429902,.24778731942176818,.5031875848770142,.22179436564445493,.515326726436615,.4231037962436676,.5375777959823609,.4205444622039795,.8049442350864411,.6867966356873512,.6222659975290299,.570705144405365,.6496635556221009,.567776631116867,.6773027807474137,.5670208501815797,.7126377105712891,.5800703662633897,.5999099642038346,.5764724123477936,.674340370297432,.6495546865463258,.639536875486374,.6477413746714593,.703840109705925,.642201315164566,.7209078550338746,.6294069054722786,.7342745542526246,.5601695317029953,.6015644401311875,.18118685364723203,.7114282578229905,.598883952498436,.809715884923935,.5682615923881531,.7667155593633652,.5767241555452347,.6445030301809311,.45154162526130676,.541424173116684,.34213731765747074,.5359058856964112,.3113374251127243,.5710002213716507,.33134433805942537,.5891562283039093,.31890978991985325,.5585465461015702,.3096196609735489,.5759132236242295,.30601608335971836,.6229794204235077,.2713706839084626,.5398103773593903,.43802148282527925,.545369166135788,.46441581428051,.7616913348436356,.6473416510224344,.5914883643388749,.5243312466144563,.5945767045021058,.44076132655143746,.5964909076690674,.4544808346033096,.7225886166095734,.4498931097984314,.5443432211875916,.49703910827636727,.7029067009687424,.6777765545248986,.7391736537218094,.6677046212553979,.7836920201778412,.7359224516153335,.577455359697342,.6573990839719772,.6085408657789231,.6353888112306596,.6427326381206513,.298196165561676,.7550604224205018,.30743678390979773,.5732827365398407,.4262381809949875,.5523188143968583,.417594336271286,.6096987754106522,.29745593249797825,.6036115020513535,.2985246556997299,.7549919366836548,.6845966669917107,.592850747704506,.4273046988248826,.6501948565244675,.6762702855467797,.6582381755113602,.699515787065029,.682483646273613,.802994977235794,.768890205025673,.710366437137127,.6672395795583725,.752104974091053,.7775519520044327,.6584857258200645,.7920276552438736,.6709628927707671,.5397542297840119,.3256357330083847,.5643998861312867,.3199443298578262,.5826229482889176,.313130943775177,.5657853364944458,.42035281538963326,.606510478258133,.2980171996355057,.5952901721000672,.2918463486433029,.5999826073646546,.29865378022193906,.565356719493866,.4374908703565598,.570739108324051,.30172707617282873,.5532697021961213,.303354971408844,.532040822505951,.3026815611124039,.5385064661502839,.22311560392379765,.5377482950687409,.25083183526992797,.5373399734497071,.26933391273021695,.5351483404636384,.28629542768001554,.5317461371421814,.3004490631818772,.5704152762889863,.30009212374687194,.5761924862861634,.2931597578525544,.5817892730236054,.28451425909996036,.5862761169672013,.27445026516914367,.6169582635164261,.3500816184282303,.7930811375379563,.4456584650278092,.5136566936969758,.41420710563659674,.5836256474256516,.29897587478160864,.5893380820751191,.29504160165786747,.5458188831806183,.4063113230466843,.581692311167717,.41034119904041294,.5490593492984772,.4114610868692398,.6189475685358048,.5063568043708802,.6631498366594315,.48547921061515814,.5990702986717225,.44076220870018007,.7452016949653626,.7754116746783257,.729542288184166,.7380649703741073,.7152380675077439,.6996659177541733,.6012845069169999,.2532631474733353,.5908916622400284,.6924743655323982,.6002487272024155,.7558749470114707,.611236396431923,.817432113289833,.6991332352161408,.5705236423015594,.7608276635408402,.5389788854122162,.5859951555728913,.5837152945995332,.7452233761548996,.6138822454214097,.5740126550197602,.542653586268425,.5829357832670212,.45267452478408815,.7883433729410172,.5171645599603654,.7431249052286149,.5203535276651383,.7091684520244599,.5116798001527787,.6566549122333527,.5192352938652038,.6176983743906022,.532645167708397,.590181502699852,.5458893078565599,.5431278228759766,.5780327129364013,.7785866141319275,.4588600414991379,.7662802815437317,.614813904762268,.528258103132248,.42353384375572206,.5884005159139634,.49679056286811835,.8132390558719635,.5690749335289003,.5698921114206315,.5609081107378007,.5997681200504303,.4383326607942582,.7258545190095902,.5959577548503876,.5829301953315735,.4692867088317872,.7767194837331772,.37870833754539496,.5859857678413392,.5927838939428329,.5655010223388672,.4863545227050781,.7103684276342392,.24216726005077366,.7039464592933655,.21081999421119696,.7955554753541947,.45157338261604313,.7394011497497559,.27975760281085965,.8023439675569535,.6235768947005271,.6065513819456101,.1520459520816803,.5237656712532044,.4144193726778031,.6113508373498917,.4744607317447663,.7872020035982132,.5706054615974427,.6744208365678788,.5840893256664277,.6509357273578644,.5835042405128479,.599469143152237,.28584001839160916,.76683469414711,.4027401643991471,.5548133134841919,.11242247700691227,.6348527550697327,.15134210765361789,.6676738739013672,.17523885548114776,.5231557369232178,.758142014145851,.49590798020362853,.10746171355247497,.6282390981912613,.5856175380945206,.6072420954704285,.5888098138570785,.592762503027916,.5906054276227952,.7843813925981522,.61877524882555,.610203567147255,.6159668180346489,.6345708996057511,.625477318763733,.6599059730768204,.6266139122843744,.6838259130716324,.6209151762723923,.6978932946920395,.6127474161982536,.8138886868953705,.6332776087522507,.690067994594574,.587394626736641,.5115295231342316,.3814830261468887,.593753132224083,.3682318288087845,.5745513767004014,.43174642801284796,.5468618154525757,.38006519258022314,.5175330221652985,.6183956491947173,.6776301890611649,.20638245522975923,.6439310491085053,.1795444029569626,.5587406486272812,.13319884419441225,.7303948730230332,.25156523168087,.5936179041862488,.6020026791095734,.5595558166503907,.5354639637470247,.49903409481048583,.12705478847026824,.5986292988061905,.12926876127719883,.7810411036014557,.3901792484521866,.5526776045560837,.3004089254140854,.5582781463861466,.2904709684848786,.5625745087862015,.2769930589199066,.5656344175338746,.26021293580532073,.5736826092004776,.23544175803661344,.5897697389125824,.3026730704307556,.5960018962621689,.3050022739171982,.6013990819454194,.30801084220409397,.6334722220897675,.32613734483718876,.7345953911542893,.3890004771947861,.5586504369974137,.5622388321161271,.5686756849288941,.6147718372941018,.5835970371961594,.6114995065331459,.58382708132267,.30018893957138065,.7323651343584061,.3204736191034317,.5478970587253571,.6144195291399956,.5885591685771943,.20925473153591162,.5188342511653901,.5294416445493699,.5430448532104493,.5502454686164857,.5189176678657532,.5563708889484407,.5749752998352051,.4918947476148606,.5015926539897919,.1563655036687851,.5023517191410065,.19124654710292815,.5467969954013825,.1949619370698929,.6493796885013581,.2596786844730377,.6223085105419159,.4147812741994858,.6219283074140549,.2305004018545151,.6836527764797211,.41583852946758276,.6457133769989014,.38482945740222935,.7015091359615326,.3687519657611847,.5560723870992661,.1615346747636795,.5877480685710907,.4753766226768494,.672212439775467,.23758670270442966,.6372418433427811,.20715841531753537,.6714329898357392,.2934120523929596,.7559577107429505,.3546825754642487,.7028004407882691,.28965476036071774,.7641248583793641,.3323610144853592,.6633666038513184,.34586538851261145,.5732450067996979,.5168171036243439,.5740206122398377,.4420601803064346,.5862565368413926,.4328912365436554,.5658091634511948,.46056721985340127,.5935333251953125,.6414948242902756,.643502163887024,.6581727835536004,.6862205892801285,.6599488797783852,.71900634765625,.6517863023281099,.7387710094451905,.6366994085907935,.7436862468719483,.5870225805044174,.8067718029022217,.5102852332592012,.719052392244339,.549573050737381,.6912373930215836,.5426725524663925,.6540380597114563,.5452089506387712,.6191460520029068,.5529706466197968,.5933077514171601,.5624450343847276,.5760908752679825,.5711276936531067,.8037864595651627,.5079354095458986,.5832139283418656,.42433229863643646,.5602819353342057,.5111040878295898,.5571386992931366,.44193623840808877,.5406022548675538,.42711933732032775,.5550468444824219,.43675835609436037,.5743813246488572,.4152073520421982,.5367868125438691,.42474128484725954,.5321040332317353,.41727378547191624,.5769275009632111,.5919214832782747,.5631695121526719,.5864408034086228,.555830317735672,.5819090950489045,.7057080000638962,.6055842030048371,.7297580271959305,.614007951617241,.49450652599334716,.5258826154470444,.30584611296653746,.6040364730358123,.4885244846343994,.4224347966909409,.188004332780838,.7111089858412742,.3873521864414215,.5786778944730759,.3588928759098053,.5761974024772645,.32972376346588134,.5772378969192504,.29263614416122435,.5937507289648056,.4124107241630554,.5837435233592987,.3437161326408386,.6627882960438729,.3795058310031891,.6574259343743325,.3114838480949402,.657741964161396,.2904722273349762,.6461278694868089,.2668101370334625,.5759735572338105,.3916287899017334,.18396661460399627,.2956514835357666,.6133467811346054,.17441000342369078,.5913206297159195,.23045413494110106,.5952582108974458,.3695909559726715,.4586390632390976,.4777859032154083,.34189285218715665,.4799880862236023,.31095413148403167,.4436598002910614,.32987600147724155,.42009713053703307,.3173161882162094,.4536511182785034,.3079365211725235,.431768137216568,.30468503117561346,.37606616616249083,.27423435926437384,.49449856877326964,.4396295297145844,.4917183697223663,.4654612708091736,.2524005055427551,.6652582022547722,.4289156973361969,.5291139262914657,.4268526315689087,.44427823305130004,.42474048137664794,.45817836105823523,.2809027314186096,.46354105353355407,.49383275508880614,.49885324716567997,.3271153151988983,.6924127805233002,.28349151015281676,.6843035730719567,.22369228601455687,.7584647151827812,.4591939032077789,.6617383736371993,.40913431644439696,.6426751393079757,.35715471506118773,.30240225076675414,.1987894058227539,.3237072455883026,.4482724845409393,.42876928627491,.4697932779788971,.4196605491638184,.39104996919631957,.2959751355648041,.3971476137638092,.29665681600570676,.26748310327529906,.7016683402657509,.4251814365386963,.4304117369651795,.3845069885253906,.6860294970870018,.3804918110370636,.7099798905849457,.35481985211372374,.8164000543951988,.2475942552089691,.730037857890129,.37163846492767333,.7639490339159964,.23443256616592406,.677293357551098,.2116762578487396,.6924480664730073,.4783883273601532,.32515374898910526,.44883744716644286,.3184075164794922,.42566208839416503,.31092865943908693,.45405327081680297,.4228447753190994,.3932682454586029,.2964416819810867,.4071350872516632,.290535255074501,.40034677386283873,.29673135757446295,.4610676050186157,.44076672971248626,.4361940503120422,.3005809444189072,.45694692730903624,.30211268544197084,.4812539994716644,.30183855772018436,.46574126482009887,.22492808878421783,.47153966426849364,.25130698263645174,.4740802526473999,.2694691020250321,.4768980026245117,.28705804526805884,.48090897798538207,.2996276724338532,.43501039147377013,.2992805469036102,.4293511092662811,.2932880002260208,.4233271360397339,.28415390133857726,.41761367321014403,.27479386210441586,.39445154666900634,.3538810330629349,.16652100086212157,.4672100204229355,.4183532476425171,.29779809594154355,.41378535628318786,.29400077641010286,.47695048451423644,.40816306352615356,.43489335775375365,.41207451105117804,.473628032207489,.41300628066062933,.3975309908390045,.5133917200565339,.34924407601356505,.4949547010660172,.4189921498298645,.44448454558849343,.27738903760910033,.7946441161632538,.29866914749145507,.7549788492918015,.3170970857143402,.7143296006321906,.39919986128807067,.2556870716810226,.4517517566680908,.6986333075165749,.44375439286231994,.7623249980807305,.4346091330051422,.8250303360819817,.3058603286743164,.5830274391174317,.235262531042099,.5560186910629272,.4279192566871643,.5892863947153091,.2622906148433685,.6309370476007461,.45053591132164,.5464099961519242,.44443781971931456,.45605955004692084,.20207332372665404,.5370177584886551,.25663607120513915,.5358516681194305,.29581143260002135,.5243526387214661,.3525206625461578,.5284005987644196,.39442025423049926,.5392975616455078,.42579718232154845,.5511161494255066,.49076547026634215,.5801296907663345,.20957841277122496,.47626241028308874,.23929433822631835,.6331100556254388,.5024659812450409,.4247821944952011,.432133811712265,.5009672063589097,.15906893014907836,.5940177994966507,.4492078602313995,.5648097443580629,.41579030752182006,.4419312763214112,.2798506796360016,.6113770532608032,.44294874668121337,.47275686144828805,.1783646523952484,.3979667472839356,.42730753421783446,.5981915760040284,.46777849197387694,.4889896112680436,.26486464142799376,.2499848622083664,.26026474237442015,.21801546096801755,.17761032581329345,.47220298230648045,.23215438723564147,.29172880232334136,.1906857371330261,.6463678139448166,.3811529755592346,.1541750180721283,.5033367156982422,.41569132089614874,.40528597235679625,.4797393995523453,.2049500823020935,.59123428940773,.3344294309616089,.5942869651317597,.35825960636138915,.5929379391670226,.4015964150428772,.28595646202564245,.21618961095809935,.4194869863986969,.43316020369529723,.11274379968643189,.34098224639892577,.1526068884134293,.3026312172412872,.17882644414901733,.3831480026245117,.5945327538251877,.40483357310295104,.5966399866342544,.419615763425827,.5973996269702913,.2160478115081787,.6388220790028571,.40051244497299193,.6220169800519944,.37555851340293883,.6336345481872558,.3499592423439026,.6373451414704323,.32648445963859557,.6342222797870636,.3108482539653778,.6266552078723908,.16784127354621886,.6591027337312698,.3177972316741943,.5982361245155334,.4220952868461609,.3706905978918075,.4483287215232849,.43451813936233524,.4753179132938385,.38104525983333587,.30160035490989684,.21209139108657843,.33879016637802123,.18215490162372588,.4353105306625366,.1335425513982773,.22725783586502074,.2627154815196991,.4187734603881836,.6076370733976364,.471796441078186,.5377814787626267,.3835057199001312,.13003402531147007,.18837626576423644,.4081169712543488,.4558822691440582,.3006539422273636,.45070006251335143,.29020555198192594,.44506027102470397,.276558490395546,.441160249710083,.26132532536983494,.42807196378707885,.237567846775055,.413764613866806,.300301303267479,.40849854350090026,.3033808845281601,.40325652360916137,.3060078132152558,.3719393193721771,.3296157675981522,.2585947096347809,.4027331072092057,.4712364852428436,.5652889716625213,.4525624096393585,.6187475714087487,.43274884223937987,.6166740807890891,.4197424530982971,.2985221195220948,.25107048749923705,.3324888157844544,.48253663182258605,.6165598976612092,.40862621665000914,.21186126053333282,.4922338902950287,.5517929780483246,.4509614884853363,.49562425196170806,.45456190705299376,.19553345918655402,.3438455045223236,.2646773803234101,.39053775668144225,.41997271955013277,.3724295377731323,.2345973211526871,.32362549304962157,.42551548063755035,.3627460479736328,.39166522800922393,.2982912242412567,.37974442124366764,.44216259121894835,.16258520364761353,.4327280104160309,.47912641644477844,.31535937190055846,.24389803588390352,.35182328820228576,.2114975947141648,.3249718725681305,.3009969878196716,.22358919978141784,.36996547162532806,.2854694604873657,.29810287833213805,.2033691883087158,.34796677708625795,.3403308272361755,.35305335700511936,.4522935628890991,.520306442975998,.45397244691848754,.4453733104467393,.4360526978969574,.4358169931173325,.4670851409435272,.463337938785553,.430365788936615,.6462299782037735,.3818374752998352,.6678127396106721,.3376319885253906,.6731280717253685,.3007634162902832,.6677066612243652,.2756028652191162,.6542664083838463,.25909878611564635,.6035455572605133,.17238967418670653,.5322284626960754,.28373541235923766,.5632325726747514,.3148886442184448,.5544471430778504,.35481600761413573,.554238184094429,.39195387363433837,.5604119020700455,.4199950277805328,.5684955823421478,.4408359706401825,.5755523312091828,.1607656955718994,.5315613377094268,.43638269901275634,.4271241891384125,.4722903251647949,.513996543288231,.4744726598262787,.4443250972032547,.48785080313682555,.4292660462856293,.4740713119506836,.43900651216506964,.443528014421463,.4168834346532822,.49345849752426146,.4267724323272705,.49457465410232543,.4177086848020554,.438745903968811,.5969951617717744,.4560649275779724,.5900395292043685,.4670982837677002,.5844003933668136,.3021982192993164,.6197374525666237,.27794389724731444,.6304952013492584,.6290517628192902,.6082503873109817,.601810845732689,.608769752383232,.6309714198112488,.6319623801112175,.657788547873497,.6077486652135848,.6277183473110199,.5834045577049256,.333698707818985,.6181534442305565,.3082489252090454,.6187389704585076,.3358501076698303,.6419334176182747,.3613401234149933,.618020570576191,.33353258967399596,.5936576622724534],P=468,t0=P*3,r0={type:"standard",color:"#ffffff",opacity:1,wireframe:!1,roughness:1,metalness:0},O=({material:e,faceIndex:t=0,numFaces:n,visible:r=!0,children:o})=>{const{ready:u,node:d}=N(S.XRModel.FACE_TRACKER,n===void 0?void 0:{numFaces:n}),{camera:l}=v.useThree(),c=s.useRef(null),y=s.useRef(null),A=s.useRef(null),E=s.useRef(null),i=s.useRef(null),f=s.useRef(new b.Vector3),p=s.useMemo(()=>{const R=new Uint16Array($),M=new b.BufferAttribute(R,1),h=new b.Float32BufferAttribute(e0,2),C=new Float32Array(t0),a=new b.Float32BufferAttribute(C,3);return a.setUsage(b.DynamicDrawUsage),{indexAttr:M,uvAttr:h,positionAttr:a,positions:C}},[]);s.useEffect(()=>{E.current=p.indexAttr,i.current=p.uvAttr,A.current=p.positionAttr,y.current=p.positions;const R=c.current;if(R){const M=R.geometry;M.setAttribute("position",p.positionAttr),M.setAttribute("uv",p.uvAttr),M.setIndex(p.indexAttr)}return()=>{E.current=null,i.current=null,A.current=null,y.current=null}},[p]),v.useFrame(()=>{var x;if(!u||!d||!c.current)return;const{detectionResults:R}=d,M=(x=R==null?void 0:R.faceLandmarks)==null?void 0:x[t],h=c.current.geometry,C=y.current,a=A.current;if(!M||M.length===0||!C||!a){h.drawRange.count!==0&&h.setDrawRange(0,0);return}h.getAttribute("position")!==a&&(h.setAttribute("position",a),h.setAttribute("uv",i.current),h.setIndex(E.current)),h.drawRange.count===0&&h.setDrawRange(0,1/0),Q(M,P,C,l,G,f.current),a.needsUpdate=!0,h.computeVertexNormals()});const F=o!=null&&o!==!1;return _.jsxs("mesh",{material:e,ref:c,visible:r,children:[_.jsx("bufferGeometry",{}),!e&&!F&&_.jsx(U,{settings:r0,materialProps:{attach:"material",transparent:!0,depthWrite:!1,side:b.DoubleSide,needsUpdate:!0}}),!e&&F?o:null]})};O.displayName="FaceMesh";const L={"face.forehead":10,"face.noseTip":1,"face.chin":152,"face.leftEyeOuter":263,"face.rightEyeOuter":33,"face.leftCheek":425,"face.rightCheek":205,"face.mouthCenter":13,"face.leftEarlobe":454,"face.rightEarlobe":234},n0={"face.center":[10,152,234,454],"face.leftEye":[263,362,387,373],"face.rightEye":[33,133,158,145]},K=(e,t=0)=>Number.isFinite(e)?e:t,w=e=>Math.max(-1,Math.min(1,K(e))),s0={x:0,y:0,z:0},H=(e,t,n=s0,r={x:0,y:0,z:0,visibility:0})=>{const o=L[e];if(o!==void 0){const i=t[o];return i?Object.assign(r,i):null}const u=n0[e];if(u){r.x=0,r.y=0,r.z=0;for(const i of u){const f=t[i];if(!f)return null;r.x+=f.x,r.y+=f.y,r.z+=f.z}return r.x/=u.length,r.y/=u.length,r.z/=u.length,r.visibility=1,r}if(e!=="face.custom"||t.length===0)return null;let d=1/0,l=1/0,c=-1/0,y=-1/0,A=0;for(const i of t)d=Math.min(d,i.x),l=Math.min(l,i.y),c=Math.max(c,i.x),y=Math.max(y,i.y),A+=i.z;const E=c-d;return r.x=(d+c)*.5-w(n.x)*E*.5,r.y=(l+y)*.5-w(n.y)*(y-l)*.5,r.z=A/t.length-K(n.z)*E,r.visibility=1,r},o0={left:L["face.leftEyeOuter"],right:L["face.rightEyeOuter"]},z=s.createContext(null),c0=()=>s.useContext(z),i0=({faceIndex:e=0,numFaces:t,scaleWithFace:n=!1,followFaceRoll:r=!0,targetFps:o,active:u=!0,children:d})=>{const l=s.useRef(!1),c=s.useRef(null),y=s.useMemo(()=>{if(!(t===void 0&&o===void 0))return{...t===void 0?{}:{numFaces:t},...o===void 0?{}:{targetFps:o}}},[t,o]),{ready:A,node:E}=N(S.XRModel.FACE_TRACKER,y,u),{camera:i}=v.useThree(),f=s.useRef(i);f.current!==i&&(f.current=i,l.current=!1);const p=s.useRef(null),F=s.useRef({x:0,y:0,z:0,visibility:0});v.useFrame(()=>{if(!A||!E||!c.current)return;p.current=E,!l.current&&f.current&&(E.setCamera(f.current,e),l.current=!0);const a=E.getFace(e);if(!a){c.current.visible=!1;return}c.current.visible=!0;const{position:x,rotation:m,scale:T}=a.transform;c.current.position.set(x.x,x.y,x.z),c.current.rotation.set(m.x,m.y,r?m.z:0),n?c.current.scale.set(T.x,T.y,T.z):c.current.scale.set(1,1,1)});const R=s.useCallback((a,x)=>{var I,k;const m=p.current,T=(k=(I=m==null?void 0:m.detectionResults)==null?void 0:I.faceLandmarks)==null?void 0:k[e];if(!T||T.length===0)return null;const g=H(a,T,x,F.current);return g?{position:S.unprojectToZZero(g,f.current)}:null},[e]),M=s.useMemo(()=>({type:"face",resolveLandmark:R}),[R]);let h;const C=[];return s.Children.forEach(d,a=>{var x,m;s.isValidElement(a)&&(((x=a.type)==null?void 0:x.displayName)==="FaceTracker.Mesh"||((m=a.type)==null?void 0:m.displayName)==="FaceMesh")?h=s.cloneElement(a,{faceIndex:e,numFaces:t}):C.push(a)}),_.jsxs(z.Provider,{value:M,children:[_.jsx("group",{ref:c,renderOrder:X.RENDER_LAYERS.TRACKED,children:C}),h]})},q=e=>_.jsx(O,{...e});q.displayName="FaceTracker.Mesh";const D=i0;D.Mesh=q;const u0=D;exports.FACE_EYE_DISTANCE_LANDMARKS=o0;exports.FACE_LANDMARK_INDICES=L;exports.FaceMesh=O;exports.FaceTracker=D;exports.HeadTracker=u0;exports.MeshMaterial=U;exports.TrackerContext=z;exports.projectLandmarkWithDepth=J;exports.resolveFaceAnchorPoint=H;exports.transformFaceMeshLandmark=W;exports.useTrackerContext=c0;exports.useXRModel=N;
|
|
@@ -3,7 +3,7 @@ import { useFrame as A } from "@react-three/fiber";
|
|
|
3
3
|
import { useRef as y, useEffect as k } from "react";
|
|
4
4
|
import * as p from "three";
|
|
5
5
|
import { R as H } from "./renderLayers-zrK2pv5O.js";
|
|
6
|
-
import { a as v } from "./index-
|
|
6
|
+
import { a as v } from "./index-D1kj6uc-.js";
|
|
7
7
|
const O = [
|
|
8
8
|
"face.center",
|
|
9
9
|
"face.forehead",
|
|
@@ -3,8 +3,8 @@ var O = (t, e, r) => e in t ? K(t, e, { enumerable: !0, configurable: !0, writab
|
|
|
3
3
|
var s = (t, e, r) => O(t, typeof e != "symbol" ? e + "" : e, r);
|
|
4
4
|
import { jsx as f, jsxs as w } from "react/jsx-runtime";
|
|
5
5
|
import W, { useState as b, useRef as h, useEffect as T, useCallback as y, createContext as X, Suspense as V, lazy as q } from "react";
|
|
6
|
-
import {
|
|
7
|
-
import { u as G } from "./index-
|
|
6
|
+
import { a as J } from "./selectors-DLxL8Q66.js";
|
|
7
|
+
import { u as G } from "./index-BMeBJ0dV.js";
|
|
8
8
|
import { useFrame as Q } from "@react-three/fiber";
|
|
9
9
|
import "./hasFullUnitUVBounds-BGvcFsQM.js";
|
|
10
10
|
import "./renderLayers-zrK2pv5O.js";
|
|
@@ -376,7 +376,7 @@ class re {
|
|
|
376
376
|
return this.isRunning;
|
|
377
377
|
}
|
|
378
378
|
}
|
|
379
|
-
const ie = q(async () => ({ default: (await import("./DebuggerUI-
|
|
379
|
+
const ie = q(async () => ({ default: (await import("./DebuggerUI-DhKTXTY2.js")).DebuggerUI })), C = X(null);
|
|
380
380
|
function be({
|
|
381
381
|
children: t,
|
|
382
382
|
keyboardShortcut: e = "ctrl+shift+d",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var H=Object.defineProperty;var z=(t,e,r)=>e in t?H(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var i=(t,e,r)=>z(t,typeof e!="symbol"?e+"":e,r);const m=require("react/jsx-runtime"),n=require("react"),O=require("./selectors-2QvO5RYY.cjs"),$=require("./index-D4bLzBr6.cjs"),B=require("@react-three/fiber");require("./hasFullUnitUVBounds-p1Dl0ejX.cjs");require("./renderLayers-lDtL0_43.cjs");const K=({children:t,defaultCollapsed:e=!0,title:r,width:s=320})=>{const[o,a]=n.useState(e);return o?m.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":`Open ${r}`,title:`Open ${r}`,style:{position:"absolute",right:16,bottom:16,zIndex:40,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",pointerEvents:"auto"},children:"◫"}):m.jsxs("div",{style:{position:"absolute",right:16,bottom:16,zIndex:40,width:s,maxWidth:"calc(100vw - 32px)",padding:14,borderRadius:14,boxShadow:"0 12px 30px rgba(0,0,0,0.26)",backdropFilter:"blur(10px)",pointerEvents:"auto",background:"rgba(15, 23, 42, 0.78)",border:"1px solid rgba(255,255,255,0.12)",color:"#e5eefb"},children:[m.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:10},children:[m.jsx("div",{style:{fontSize:13,fontWeight:700},children:r}),m.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`Close ${r}`,title:`Close ${r}`,style:{width:32,height:32,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(255,255,255,0.04)",color:"#e5eefb",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),t]})};class V{constructor(){i(this,"frameTimestamps",[]);i(this,"lastUpdateTime",0);i(this,"currentFPS",0);i(this,"updateInterval",500);this.lastUpdateTime=performance.now()}trackFrame(){const e=performance.now();this.frameTimestamps.push(e);const r=e-this.updateInterval;this.frameTimestamps=this.frameTimestamps.filter(s=>s>r),e-this.lastUpdateTime>=this.updateInterval&&(this.currentFPS=this.frameTimestamps.length*2,this.lastUpdateTime=e)}getFPS(){return this.currentFPS}reset(){this.frameTimestamps=[],this.lastUpdateTime=performance.now(),this.currentFPS=0}}function W(t,e=1){return t.toFixed(e)}function x(t){return t/(1024*1024)}function X(t,e){return e===0?0:t/e*100}class J{constructor(e=1e3){i(this,"intervalId",null);i(this,"memoryUsage",null);i(this,"updateInterval");i(this,"isSupported",!1);this.updateInterval=e,this.checkSupport()}checkSupport(){const e=performance;this.isSupported="memory"in e&&e.memory!==void 0,this.isSupported||console.warn("[MemoryTracker] performance.memory not available (Chrome-only API)")}start(){if(this.intervalId!==null){console.warn("[MemoryTracker] Already running");return}if(!this.isSupported){this.memoryUsage=null;return}this.updateMemory(),this.intervalId=window.setInterval(()=>{this.updateMemory()},this.updateInterval)}stop(){this.intervalId!==null&&(clearInterval(this.intervalId),this.intervalId=null)}updateMemory(){if(!this.isSupported)return;const e=performance;if(!e.memory)return;const r=e.memory.usedJSHeapSize,s=e.memory.jsHeapSizeLimit;this.memoryUsage={used:x(r),total:x(s),percentage:X(r,s)}}getMemoryUsage(){return this.memoryUsage}isMemorySupported(){return this.isSupported}}class G{constructor(){i(this,"resolution","N/A");i(this,"videoElement",null);i(this,"metadataListener",null)}start(e){if(!e){this.resolution="N/A";return}this.videoElement=e,e.videoWidth>0&&e.videoHeight>0&&this.updateResolution(),this.metadataListener=()=>{this.updateResolution()},e.addEventListener("loadedmetadata",this.metadataListener)}stop(){this.videoElement&&this.metadataListener&&(this.videoElement.removeEventListener("loadedmetadata",this.metadataListener),this.metadataListener=null),this.videoElement=null,this.resolution="N/A"}updateResolution(){if(!this.videoElement){this.resolution="N/A";return}const e=this.videoElement.videoWidth,r=this.videoElement.videoHeight;e>0&&r>0?this.resolution=`${e}x${r}`:this.resolution="N/A"}getResolution(){return this.videoElement&&this.updateResolution(),this.resolution}}class Q{constructor(e={}){i(this,"options");i(this,"isRunning",!1);i(this,"metrics",{cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"});i(this,"cameraFPSTracker");i(this,"memoryTracker");i(this,"resolutionTracker");i(this,"frameTimes",[]);i(this,"lastEffectiveFPSUpdate",0);this.options={enableMemoryTracking:e.enableMemoryTracking??!0,memoryUpdateInterval:e.memoryUpdateInterval??1e3},this.cameraFPSTracker=new V,this.memoryTracker=new J(this.options.memoryUpdateInterval),this.resolutionTracker=new G}start(e){if(this.isRunning){console.warn("[MetricsCollector] Already running");return}this.isRunning=!0,this.lastEffectiveFPSUpdate=performance.now(),this.options.enableMemoryTracking&&this.memoryTracker.start(),e&&this.resolutionTracker.start(e),this.setupCameraFPSHook(),console.info("[MetricsCollector] Started")}stop(){this.isRunning&&(this.isRunning=!1,this.memoryTracker.stop(),this.resolutionTracker.stop(),this.cameraFPSTracker.reset(),this.cleanupCameraFPSHook(),console.info("[MetricsCollector] Stopped"))}setupCameraFPSHook(){const e=window;e.__xr_debugger_metrics||(e.__xr_debugger_metrics={trackCameraFrame:()=>{this.cameraFPSTracker.trackFrame(),this.metrics.cameraFPS=this.cameraFPSTracker.getFPS()}})}cleanupCameraFPSHook(){const e=window;e.__xr_debugger_metrics&&delete e.__xr_debugger_metrics}getMetrics(){return this.updateMetricsFromTrackers(),{...this.metrics}}updateMetricsFromTrackers(){this.isRunning&&(this.metrics.memory=this.memoryTracker.getMemoryUsage(),this.metrics.resolution=this.resolutionTracker.getResolution(),this.updateEffectiveFPS())}updateRenderTime(e){this.metrics.renderTime=e,this.updateEffectiveFPS()}async updateDetectionTime(e){if(!e||!this.isRunning){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}try{const r=Object.values(e).filter(Boolean);if(r.length===0){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}const s=r.map(c=>c&&typeof c.getPerformanceData=="function"?c.getPerformanceData():Promise.resolve({name:"unknown",processingTime:0})),o=await Promise.all(s);this.metrics.modelPerformance=o.map(c=>({name:c.name,processingTime:c.processingTime||0}));const a=o.reduce((c,p)=>c+(p.processingTime||0),0);this.metrics.detectionTime=a,this.updateEffectiveFPS()}catch(r){console.warn("[MetricsCollector] Error updating detection time:",r),this.metrics.detectionTime=0,this.metrics.modelPerformance=[]}}updateEffectiveFPS(){const e=performance.now(),r=this.metrics.detectionTime+this.metrics.renderTime;if(this.frameTimes.push(r),e-this.lastEffectiveFPSUpdate>=1e3){if(this.frameTimes.length>0){const s=this.frameTimes.reduce((o,a)=>o+a,0)/this.frameTimes.length;this.metrics.effectiveFPS=s>0?1e3/s:0}this.frameTimes=[],this.lastEffectiveFPSUpdate=e}}isActive(){return this.isRunning}}const Y=n.lazy(async()=>({default:(await Promise.resolve().then(()=>require("./DebuggerUI-B45_Gb9d.cjs"))).DebuggerUI})),k=n.createContext(null);function Z({children:t,keyboardShortcut:e="ctrl+shift+d",initialEnabled:r=!1,position:s="top-left"}){const[o,a]=n.useState(r),[c,p]=n.useState(!1),[y,_]=n.useState({cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"}),f=n.useRef(null),u=n.useRef(null),g=n.useRef(!1),{session:b}=$.useXRContext(),T=O.useXRReady();n.useEffect(()=>(f.current||(f.current=new Q,window.__xr_metrics_collector=f.current),()=>{f.current&&f.current.stop(),u.current&&clearInterval(u.current),window.__xr_metrics_collector&&delete window.__xr_metrics_collector}),[]),n.useEffect(()=>{const l=f.current;if(l){if(o&&T){const d=b._getVideoElement();l.start(d),u.current=window.setInterval(async()=>{if(!g.current){g.current=!0;try{const S=Object.fromEntries(b.store.getSnapshot().pipeline);await l.updateDetectionTime(S),_(l.getMetrics())}finally{g.current=!1}}},100)}else l.stop(),u.current&&(clearInterval(u.current),u.current=null),g.current=!1;return()=>{u.current&&(clearInterval(u.current),u.current=null)}}},[o,T,b]),n.useEffect(()=>{const l=d=>{const h=e.toLowerCase().split("+"),D=h.includes("ctrl")||h.includes("control"),I=h.includes("shift"),M=h.includes("alt"),U=h[h.length-1],j=D?d.ctrlKey||d.metaKey:!0,L=I?d.shiftKey:!0,A=M?d.altKey:!0,q=d.key.toLowerCase()===U;j&&L&&A&&q&&(d.preventDefault(),a(N=>!N))};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l)}},[e]);const C=n.useCallback(()=>{a(l=>!l)},[]),R=n.useCallback(()=>{a(!0)},[]),w=n.useCallback(()=>{a(!1)},[]),E={state:{enabled:o,collapsed:c,metrics:y},toggle:C,setCollapsed:p,enable:R,disable:w};return m.jsxs(k.Provider,{value:E,children:[t,o&&m.jsx(n.Suspense,{fallback:null,children:m.jsx(Y,{metrics:y,collapsed:c,onCollapse:p,onClose:w,position:s,keyboardShortcut:e})})]})}function ee(){const t=n.useContext(k);if(!t)throw new Error("useDebuggerContext must be used within a DebuggerProvider");return t}function te({onUpdate:t}){const e=n.useRef(0),r=n.useRef(!0);return B.useFrame(()=>{if(r.current)r.current=!1;else{const o=performance.now()-e.current;t(o)}e.current=performance.now()},-1e3),null}function P(){const t=ee();return{metrics:t.state.metrics,enabled:t.state.enabled,collapsed:t.state.collapsed,toggle:t.toggle,setCollapsed:t.setCollapsed,enable:t.enable,disable:t.disable}}function re(){const{enabled:t}=P(),e=r=>{const s=window;s.__xr_metrics_collector&&s.__xr_metrics_collector.updateRenderTime(r)};return t?m.jsx(te,{onUpdate:e}):null}const v=600;function F(){if(typeof window>"u")return;const t=window;return t.__xrCalibrationDebugState||(t.__xrCalibrationDebugState={events:[]}),t.__xrCalibrationDebugState}function se(t,e,r){const s=F();s&&(s.events.push({source:t,label:e,payload:r,ts:performance.now()}),s.events.length>v&&s.events.splice(0,s.events.length-v))}function ie(t=v){const e=F();return e?e.events.slice(Math.max(0,e.events.length-t)):[]}exports.DebuggerOverlay=re;exports.DebuggerProvider=Z;exports.XRDebugView=K;exports.formatNumber=W;exports.readCalibrationDebugEvents=ie;exports.recordCalibrationDebugEvent=se;exports.useDebugger=P;
|
|
1
|
+
"use strict";var H=Object.defineProperty;var z=(t,e,r)=>e in t?H(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var i=(t,e,r)=>z(t,typeof e!="symbol"?e+"":e,r);const m=require("react/jsx-runtime"),n=require("react"),O=require("./selectors-S8g25ke9.cjs"),$=require("./index-Da7uycur.cjs"),B=require("@react-three/fiber");require("./hasFullUnitUVBounds-p1Dl0ejX.cjs");require("./renderLayers-lDtL0_43.cjs");const K=({children:t,defaultCollapsed:e=!0,title:r,width:s=320})=>{const[o,a]=n.useState(e);return o?m.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":`Open ${r}`,title:`Open ${r}`,style:{position:"absolute",right:16,bottom:16,zIndex:40,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",pointerEvents:"auto"},children:"◫"}):m.jsxs("div",{style:{position:"absolute",right:16,bottom:16,zIndex:40,width:s,maxWidth:"calc(100vw - 32px)",padding:14,borderRadius:14,boxShadow:"0 12px 30px rgba(0,0,0,0.26)",backdropFilter:"blur(10px)",pointerEvents:"auto",background:"rgba(15, 23, 42, 0.78)",border:"1px solid rgba(255,255,255,0.12)",color:"#e5eefb"},children:[m.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:10},children:[m.jsx("div",{style:{fontSize:13,fontWeight:700},children:r}),m.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`Close ${r}`,title:`Close ${r}`,style:{width:32,height:32,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(255,255,255,0.04)",color:"#e5eefb",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),t]})};class V{constructor(){i(this,"frameTimestamps",[]);i(this,"lastUpdateTime",0);i(this,"currentFPS",0);i(this,"updateInterval",500);this.lastUpdateTime=performance.now()}trackFrame(){const e=performance.now();this.frameTimestamps.push(e);const r=e-this.updateInterval;this.frameTimestamps=this.frameTimestamps.filter(s=>s>r),e-this.lastUpdateTime>=this.updateInterval&&(this.currentFPS=this.frameTimestamps.length*2,this.lastUpdateTime=e)}getFPS(){return this.currentFPS}reset(){this.frameTimestamps=[],this.lastUpdateTime=performance.now(),this.currentFPS=0}}function W(t,e=1){return t.toFixed(e)}function x(t){return t/(1024*1024)}function X(t,e){return e===0?0:t/e*100}class J{constructor(e=1e3){i(this,"intervalId",null);i(this,"memoryUsage",null);i(this,"updateInterval");i(this,"isSupported",!1);this.updateInterval=e,this.checkSupport()}checkSupport(){const e=performance;this.isSupported="memory"in e&&e.memory!==void 0,this.isSupported||console.warn("[MemoryTracker] performance.memory not available (Chrome-only API)")}start(){if(this.intervalId!==null){console.warn("[MemoryTracker] Already running");return}if(!this.isSupported){this.memoryUsage=null;return}this.updateMemory(),this.intervalId=window.setInterval(()=>{this.updateMemory()},this.updateInterval)}stop(){this.intervalId!==null&&(clearInterval(this.intervalId),this.intervalId=null)}updateMemory(){if(!this.isSupported)return;const e=performance;if(!e.memory)return;const r=e.memory.usedJSHeapSize,s=e.memory.jsHeapSizeLimit;this.memoryUsage={used:x(r),total:x(s),percentage:X(r,s)}}getMemoryUsage(){return this.memoryUsage}isMemorySupported(){return this.isSupported}}class G{constructor(){i(this,"resolution","N/A");i(this,"videoElement",null);i(this,"metadataListener",null)}start(e){if(!e){this.resolution="N/A";return}this.videoElement=e,e.videoWidth>0&&e.videoHeight>0&&this.updateResolution(),this.metadataListener=()=>{this.updateResolution()},e.addEventListener("loadedmetadata",this.metadataListener)}stop(){this.videoElement&&this.metadataListener&&(this.videoElement.removeEventListener("loadedmetadata",this.metadataListener),this.metadataListener=null),this.videoElement=null,this.resolution="N/A"}updateResolution(){if(!this.videoElement){this.resolution="N/A";return}const e=this.videoElement.videoWidth,r=this.videoElement.videoHeight;e>0&&r>0?this.resolution=`${e}x${r}`:this.resolution="N/A"}getResolution(){return this.videoElement&&this.updateResolution(),this.resolution}}class Q{constructor(e={}){i(this,"options");i(this,"isRunning",!1);i(this,"metrics",{cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"});i(this,"cameraFPSTracker");i(this,"memoryTracker");i(this,"resolutionTracker");i(this,"frameTimes",[]);i(this,"lastEffectiveFPSUpdate",0);this.options={enableMemoryTracking:e.enableMemoryTracking??!0,memoryUpdateInterval:e.memoryUpdateInterval??1e3},this.cameraFPSTracker=new V,this.memoryTracker=new J(this.options.memoryUpdateInterval),this.resolutionTracker=new G}start(e){if(this.isRunning){console.warn("[MetricsCollector] Already running");return}this.isRunning=!0,this.lastEffectiveFPSUpdate=performance.now(),this.options.enableMemoryTracking&&this.memoryTracker.start(),e&&this.resolutionTracker.start(e),this.setupCameraFPSHook(),console.info("[MetricsCollector] Started")}stop(){this.isRunning&&(this.isRunning=!1,this.memoryTracker.stop(),this.resolutionTracker.stop(),this.cameraFPSTracker.reset(),this.cleanupCameraFPSHook(),console.info("[MetricsCollector] Stopped"))}setupCameraFPSHook(){const e=window;e.__xr_debugger_metrics||(e.__xr_debugger_metrics={trackCameraFrame:()=>{this.cameraFPSTracker.trackFrame(),this.metrics.cameraFPS=this.cameraFPSTracker.getFPS()}})}cleanupCameraFPSHook(){const e=window;e.__xr_debugger_metrics&&delete e.__xr_debugger_metrics}getMetrics(){return this.updateMetricsFromTrackers(),{...this.metrics}}updateMetricsFromTrackers(){this.isRunning&&(this.metrics.memory=this.memoryTracker.getMemoryUsage(),this.metrics.resolution=this.resolutionTracker.getResolution(),this.updateEffectiveFPS())}updateRenderTime(e){this.metrics.renderTime=e,this.updateEffectiveFPS()}async updateDetectionTime(e){if(!e||!this.isRunning){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}try{const r=Object.values(e).filter(Boolean);if(r.length===0){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}const s=r.map(c=>c&&typeof c.getPerformanceData=="function"?c.getPerformanceData():Promise.resolve({name:"unknown",processingTime:0})),o=await Promise.all(s);this.metrics.modelPerformance=o.map(c=>({name:c.name,processingTime:c.processingTime||0}));const a=o.reduce((c,p)=>c+(p.processingTime||0),0);this.metrics.detectionTime=a,this.updateEffectiveFPS()}catch(r){console.warn("[MetricsCollector] Error updating detection time:",r),this.metrics.detectionTime=0,this.metrics.modelPerformance=[]}}updateEffectiveFPS(){const e=performance.now(),r=this.metrics.detectionTime+this.metrics.renderTime;if(this.frameTimes.push(r),e-this.lastEffectiveFPSUpdate>=1e3){if(this.frameTimes.length>0){const s=this.frameTimes.reduce((o,a)=>o+a,0)/this.frameTimes.length;this.metrics.effectiveFPS=s>0?1e3/s:0}this.frameTimes=[],this.lastEffectiveFPSUpdate=e}}isActive(){return this.isRunning}}const Y=n.lazy(async()=>({default:(await Promise.resolve().then(()=>require("./DebuggerUI-bnGHSSOb.cjs"))).DebuggerUI})),k=n.createContext(null);function Z({children:t,keyboardShortcut:e="ctrl+shift+d",initialEnabled:r=!1,position:s="top-left"}){const[o,a]=n.useState(r),[c,p]=n.useState(!1),[y,_]=n.useState({cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"}),f=n.useRef(null),u=n.useRef(null),g=n.useRef(!1),{session:b}=$.useXRContext(),T=O.useXRReady();n.useEffect(()=>(f.current||(f.current=new Q,window.__xr_metrics_collector=f.current),()=>{f.current&&f.current.stop(),u.current&&clearInterval(u.current),window.__xr_metrics_collector&&delete window.__xr_metrics_collector}),[]),n.useEffect(()=>{const l=f.current;if(l){if(o&&T){const d=b._getVideoElement();l.start(d),u.current=window.setInterval(async()=>{if(!g.current){g.current=!0;try{const S=Object.fromEntries(b.store.getSnapshot().pipeline);await l.updateDetectionTime(S),_(l.getMetrics())}finally{g.current=!1}}},100)}else l.stop(),u.current&&(clearInterval(u.current),u.current=null),g.current=!1;return()=>{u.current&&(clearInterval(u.current),u.current=null)}}},[o,T,b]),n.useEffect(()=>{const l=d=>{const h=e.toLowerCase().split("+"),D=h.includes("ctrl")||h.includes("control"),I=h.includes("shift"),M=h.includes("alt"),U=h[h.length-1],j=D?d.ctrlKey||d.metaKey:!0,L=I?d.shiftKey:!0,A=M?d.altKey:!0,q=d.key.toLowerCase()===U;j&&L&&A&&q&&(d.preventDefault(),a(N=>!N))};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l)}},[e]);const C=n.useCallback(()=>{a(l=>!l)},[]),R=n.useCallback(()=>{a(!0)},[]),w=n.useCallback(()=>{a(!1)},[]),E={state:{enabled:o,collapsed:c,metrics:y},toggle:C,setCollapsed:p,enable:R,disable:w};return m.jsxs(k.Provider,{value:E,children:[t,o&&m.jsx(n.Suspense,{fallback:null,children:m.jsx(Y,{metrics:y,collapsed:c,onCollapse:p,onClose:w,position:s,keyboardShortcut:e})})]})}function ee(){const t=n.useContext(k);if(!t)throw new Error("useDebuggerContext must be used within a DebuggerProvider");return t}function te({onUpdate:t}){const e=n.useRef(0),r=n.useRef(!0);return B.useFrame(()=>{if(r.current)r.current=!1;else{const o=performance.now()-e.current;t(o)}e.current=performance.now()},-1e3),null}function P(){const t=ee();return{metrics:t.state.metrics,enabled:t.state.enabled,collapsed:t.state.collapsed,toggle:t.toggle,setCollapsed:t.setCollapsed,enable:t.enable,disable:t.disable}}function re(){const{enabled:t}=P(),e=r=>{const s=window;s.__xr_metrics_collector&&s.__xr_metrics_collector.updateRenderTime(r)};return t?m.jsx(te,{onUpdate:e}):null}const v=600;function F(){if(typeof window>"u")return;const t=window;return t.__xrCalibrationDebugState||(t.__xrCalibrationDebugState={events:[]}),t.__xrCalibrationDebugState}function se(t,e,r){const s=F();s&&(s.events.push({source:t,label:e,payload:r,ts:performance.now()}),s.events.length>v&&s.events.splice(0,s.events.length-v))}function ie(t=v){const e=F();return e?e.events.slice(Math.max(0,e.events.length-t)):[]}exports.DebuggerOverlay=re;exports.DebuggerProvider=Z;exports.XRDebugView=K;exports.formatNumber=W;exports.readCalibrationDebugEvents=ie;exports.recordCalibrationDebugEvent=se;exports.useDebugger=P;
|
package/dist/internal.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal-Dtvo4WYo.cjs"),r=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),n=require("./renderLayers-lDtL0_43.cjs");exports.DebuggerOverlay=e.DebuggerOverlay;exports.DebuggerProvider=e.DebuggerProvider;exports.XRDebugView=e.XRDebugView;exports.readCalibrationDebugEvents=e.readCalibrationDebugEvents;exports.recordCalibrationDebugEvent=e.recordCalibrationDebugEvent;exports.useDebugger=e.useDebugger;exports._resetUVBoundsWarnings=r._resetUVBoundsWarnings;exports.logUVBoundsWarningOnce=r.logUVBoundsWarningOnce;exports.RENDER_LAYERS=n.RENDER_LAYERS;
|
package/dist/internal.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a, D as s, X as o, r as g, b as n, u } from "./internal-
|
|
1
|
+
import { a, D as s, X as o, r as g, b as n, u } from "./internal-34pb7djs.js";
|
|
2
2
|
import { _ as i, l as t } from "./hasFullUnitUVBounds-BGvcFsQM.js";
|
|
3
3
|
import { R as d } from "./renderLayers-zrK2pv5O.js";
|
|
4
4
|
export {
|
package/dist/low-level.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var pe=Object.defineProperty;var me=(e,t,r)=>t in e?pe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var X=(e,t,r)=>me(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("./index-D4bLzBr6.cjs"),P=require("./index-82aENaRq.cjs"),j=require("./selectors-2QvO5RYY.cjs"),f=require("react"),W=require("./getFaceInfo-CyPAKh3h.cjs"),u=require("react/jsx-runtime"),ge=require("@react-three/drei"),V=require("./index-CEc1CAmB.cjs"),re=require("./useFaceResults-VcFdOUFV.cjs"),xe=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),L=require("./contexts-BKvTIayr.cjs"),be=require("three");function we(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const z=we(be),B=({children:e,config:t,style:r})=>u.jsx("div",{"data-render-target":t.name,style:{position:"absolute",inset:0,overflow:"hidden",background:t.clearColor,pointerEvents:t.pointerEvents??"none",zIndex:t.zIndex,opacity:t.hidden?0:1,...r},children:e}),N=({canvas:e,layout:t,media:r,mirrored:n,filter:o})=>{const i=Math.round(t.destination.width),a=Math.round(t.destination.height);e.width!==i&&(e.width=i),e.height!==a&&(e.height=a);const s=e.getContext("2d");s&&(s.setTransform(1,0,0,1,0,0),s.clearRect(0,0,i,a),n&&(s.translate(i,0),s.scale(-1,1)),o&&(s.filter=o),s.drawImage(r,t.offsetX,t.offsetY,t.drawWidth,t.drawHeight),o&&(s.filter="none"),s.setTransform(1,0,0,1,0,0))},ne=({canvasRef:e,enabled:t=!0,fps:r=30,imageRef:n,layout:o,mirrored:i,sourceKind:a,videoRef:s})=>{f.useEffect(()=>{if(!t){const b=e.current,g=b==null?void 0:b.getContext("2d");b&&g&&g.clearRect(0,0,b.width,b.height);return}let l=0,c=0;const d=r>0?1e3/r:0,p=b=>{if(l=requestAnimationFrame(p),d>0&&b-c<d)return;c=b;const g=e.current;if(!g||!o)return;if(a==="image"){const x=n.current;if(!x||!x.complete||x.naturalWidth<=0||x.naturalHeight<=0)return;N({canvas:g,layout:o,media:x,mirrored:i});return}const w=s.current;!w||w.readyState<2||w.videoWidth<=0||w.videoHeight<=0||N({canvas:g,layout:o,media:w,mirrored:i})};return l=requestAnimationFrame(p),()=>{cancelAnimationFrame(l)}},[e,t,r,n,o,i,a,s])},oe=({canvasRef:e,imageRef:t,layer:r,layout:n,mirrored:o,sourceKind:i,videoRef:a})=>(ne({canvasRef:e,imageRef:t,layout:n,mirrored:o,sourceKind:i,videoRef:a}),u.jsx(B,{config:r,children:u.jsx("canvas",{ref:e,style:{position:"absolute",inset:0,width:"100%",height:"100%",display:"block",background:"#000"}})})),ve=({canvasRef:e,controlInsetTop:t,debugVisible:r,fps:n=15,imageRef:o,layer:i,layout:a,mirrored:s,sourceKind:l,videoRef:c,viewportSize:d})=>{ne({canvasRef:e,enabled:r,fps:n,imageRef:o,layout:a,mirrored:s,sourceKind:l,videoRef:c});const p=Math.min(220,Math.max(120,d.width*.22)),b=d.width>0&&d.height>0?d.width/d.height:1,g=Math.min(d.height-24,Math.max(t??16,16));return u.jsx(B,{config:i,children:u.jsx("canvas",{ref:e,style:{position:"absolute",left:16,top:g,width:r?p:1,height:r?"auto":1,aspectRatio:`${b}`,opacity:r?.85:0,borderRadius:10,border:r?"1px solid rgba(255,255,255,0.16)":"none",pointerEvents:"none",objectFit:"contain",background:"#000"}})})},Se={audio:!1,video:{facingMode:"user",frameRate:{ideal:30,max:60}}},ye={name:"viewport-live",clearColor:"#000000",pointerEvents:"none",zIndex:0},Re={name:"viewport-ui",clearColor:"transparent",pointerEvents:"auto",zIndex:5},Ce={name:"viewport-scene",clearColor:"transparent",pointerEvents:"auto",zIndex:1},k={webcam:{icon:"◉",label:"Webcam"},image:{icon:"▣",label:"Images"},video:{icon:"▶",label:"Videos"}},Ee=({imageRef:e,selectedSource:t,videoRef:r})=>u.jsxs(u.Fragment,{children:[u.jsx("video",{ref:r,style:{position:"absolute",width:1,height:1,opacity:t==="image"?0:.001,pointerEvents:"none"}}),u.jsx("img",{ref:e,alt:"",style:{position:"absolute",width:1,height:1,opacity:t==="image"?.001:0,pointerEvents:"none"}})]}),Q=({dock:e,label:t,onChange:r,options:n,value:o})=>u.jsx("div",{style:{position:"absolute",top:e==="top-left"?74:void 0,bottom:e==="bottom-left"?74:void 0,left:16,zIndex:5,maxWidth:"calc(100vw - 32px)",padding:10,borderRadius:14,background:"rgba(15, 23, 42, 0.72)",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)"},children:u.jsxs("label",{style:{display:"grid",gap:6,color:"#e5eefb",fontSize:12,fontWeight:700},children:[u.jsx("span",{children:t}),u.jsx("select",{value:o,onChange:i=>r(i.target.value),style:{minWidth:180,maxWidth:"calc(100vw - 52px)",height:36,borderRadius:10,border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.06)",color:"#e5eefb",padding:"0 10px"},children:n.map(i=>u.jsx("option",{value:i.id,style:{color:"#111827"},children:i.label},i.id))})]})}),Te=({dock:e,imageOptions:t,selectedImageId:r,selectedSource:n,selectedVideoId:o,setSelectedImageId:i,setSelectedSource:a,setSelectedVideoId:s,showMediaControls:l,videoOptions:c})=>{const[d,p]=f.useState(!1),b=["webcam","image","video"].filter(g=>g==="image"?t.length>0:g==="video"?c.length>0:!0);return l?d?u.jsx("button",{type:"button",onClick:()=>p(!1),"aria-label":"Open media controls",title:"Open media controls",style:{position:"absolute",top:e==="top-left"?16:void 0,bottom:e==="bottom-left"?16:void 0,left:16,zIndex:5,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer"},children:"≡"}):u.jsxs(u.Fragment,{children:[u.jsxs("div",{style:{position:"absolute",top:e==="top-left"?16:void 0,bottom:e==="bottom-left"?16:void 0,left:16,zIndex:5,display:"inline-flex",alignItems:"center",gap:8,maxWidth:"calc(100vw - 32px)"},children:[u.jsx("div",{style:{display:"inline-flex",alignItems:"center",gap:8,padding:8,borderRadius:999,background:"rgba(15, 23, 42, 0.72)",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",overflowX:"auto"},children:b.map(g=>{const w=g===n;return u.jsxs("button",{type:"button",onClick:()=>a(g),"aria-pressed":w,title:k[g].label,style:{border:"none",borderRadius:999,minWidth:42,height:42,padding:"0 12px",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8,background:w?"rgba(56, 189, 248, 0.18)":"rgba(255,255,255,0.04)",color:w?"#e0f2fe":"rgba(229,238,251,0.82)",cursor:"pointer",flex:"0 0 auto"},children:[u.jsx("span",{style:{fontSize:14,lineHeight:1},children:k[g].icon}),u.jsx("span",{style:{fontSize:12,fontWeight:700,letterSpacing:"0.01em"},children:k[g].label})]},g)})}),u.jsx("button",{type:"button",onClick:()=>p(!0),"aria-label":"Close media controls",title:"Close media controls",style:{width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),n==="image"&&t.length>0&&u.jsx(Q,{dock:e,label:"Image Asset",options:t,value:r,onChange:i}),n==="video"&&c.length>0&&u.jsx(Q,{dock:e,label:"Video Asset",options:c,value:o,onChange:s})]}):null},Me=({containerRef:e,displayCanvasRef:t,imageOptions:r,imageRef:n,layout:o,managesOwnMedia:i,mediaDock:a,mode:s,overlayContent:l,renderOutputs:c,sceneContent:d,selectedImageId:p,selectedSource:b,selectedVideoId:g,setSceneRenderOutputs:w,setSelectedImageId:x,setSelectedSource:m,setSelectedVideoId:y,showMediaControls:F,style:C,videoOptions:S,videoRef:E,viewportSize:v,mirrored:h})=>u.jsxs("div",{ref:e,style:{position:"fixed",inset:0,overflow:"hidden",background:"#000",...C},children:[u.jsx(Ee,{imageRef:n,selectedSource:b,videoRef:E}),s==="dom"&&i&&u.jsx(oe,{canvasRef:t,imageRef:n,videoRef:E,layer:ye,layout:o,mirrored:h,sourceKind:b==="image"?"image":"video"}),(s==="r3f"||s==="hybrid")&&u.jsx(B,{config:Ce,children:u.jsx(L.XRScene,{onRenderOutputs:w,renderOutputs:{sceneColor:c.sceneColor||c.finalColor,sceneDepth:c.sceneDepth},renderTargetSize:v,style:{width:"100%",height:"100%"},children:d})}),u.jsxs(B,{config:Re,children:[i&&u.jsx(Te,{dock:a,imageOptions:r,selectedImageId:p,selectedSource:b,selectedVideoId:g,setSelectedImageId:x,setSelectedSource:m,setSelectedVideoId:y,showMediaControls:F,videoOptions:S}),l]})]}),Fe=5,Ie=1,ie=(e,t)=>t,je="brightness(2.2) contrast(1.5) saturate(1.25)",ae=({enabled:e,displayMirrored:t,imageRef:r,layout:n,mode:o,numFaces:i,selectedSource:a,sourceStream:s,videoRef:l})=>{const{session:c}=q.useXRContext(),d=f.useRef(null),p=f.useRef(!1),b=f.useRef(document.createElement("canvas")),{ready:g,node:w,error:x}=P.useXRModel(q.XRModel.FACE_TRACKER,{numFaces:i??(o==="head-binding"?Ie:Fe)}),[m,y]=f.useState("idle"),[F,C]=f.useState(null),S=e&&g&&!!w,E=re.useFaceResults({node:S?w:null,enabled:S,selectedSource:a,onFrame:f.useCallback(()=>{C(null),y("ready")},[])});return f.useEffect(()=>{if(!e||!n)return;const v=()=>{const R=a==="image"?r.current:l.current;if(R){if(R instanceof HTMLImageElement){if(!R.complete||R.naturalWidth<=0||R.naturalHeight<=0)return}else if(R.readyState<2||R.videoWidth<=0||R.videoHeight<=0)return;N({canvas:b.current,layout:n,media:R,mirrored:t,filter:a==="webcam"?je:void 0})}};if(a==="image"){v();return}let h=0;const T=()=>{h=requestAnimationFrame(T),v()};return h=requestAnimationFrame(T),()=>cancelAnimationFrame(h)},[t,e,r,n,a,l]),f.useEffect(()=>{var D;if(!e){y("idle"),C(null),p.current=!1,d.current=null;return}if(!n){y("initializing");return}const v=(s==null?void 0:s.id)??(((D=l.current)==null?void 0:D.srcObject)instanceof MediaStream?l.current.srcObject.id:"none"),T=a==="webcam"?`webcam:${v}`:a;d.current!==T&&(p.current=!1,d.current=T);let R=!1;return(async()=>{try{if(y("initializing"),p.current||(await c.setFrameSource({canvas:b.current,sourceKind:a}),await c.start(),p.current=!0),R)return;C(null),y("initializing")}catch(I){if(R)return;y("error"),C(I instanceof Error?I.message:"Failed to initialize SDK face tracking")}})(),()=>{R=!0}},[e,n,a,c,s,l]),f.useEffect(()=>{!S&&e&&!x&&y("initializing")},[S,e,x]),f.useEffect(()=>{x&&(y("error"),C(x.message))},[x]),f.useEffect(()=>()=>{p.current=!1,c.stop()},[c]),{activeDelegate:"GPU",faces:E,status:m,error:F}},Xe=(e,t)=>e==="auto"?t==="webcam"?"cover":"contain":e,ke=({imageOptions:e,initialImageId:t,initialSource:r,initialVideoId:n,source:o,videoOptions:i})=>{var l,c,d,p;const a=(o==null?void 0:o.kind)??r??"webcam";return{selectedSource:a==="image"&&e.length===0||a==="video"&&i.length===0?"webcam":a,selectedImageId:(o==null?void 0:o.kind)==="image"?o.assetId??((l=e[0])==null?void 0:l.id)??"":t??((c=e[0])==null?void 0:c.id)??"",selectedVideoId:(o==null?void 0:o.kind)==="video"?o.assetId??((d=i[0])==null?void 0:d.id)??"":n??((p=i[0])==null?void 0:p.id)??""}},Le=(e,t,r)=>{if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return null;const n=r==="contain"?Math.min(t.width/e.width,t.height/e.height):Math.max(t.width/e.width,t.height/e.height),o=e.width*n,i=e.height*n;return{source:e,destination:t,drawWidth:o,drawHeight:i,offsetX:(t.width-o)*.5,offsetY:(t.height-i)*.5,scale:n}},ze=e=>{if(!e)return{width:0,height:0};const t=e.getBoundingClientRect();return{width:t.width||e.clientWidth,height:t.height||e.clientHeight}},Be=e=>{const[t,r]=f.useState({width:0,height:0});return f.useLayoutEffect(()=>{const n=e.current;if(!n)return;let o=0;const i=()=>{const c=ze(n);r(d=>d.width===c.width&&d.height===c.height?d:c)},a=()=>{i(),o&&cancelAnimationFrame(o),o=requestAnimationFrame(i)};a();const s=new ResizeObserver(a);s.observe(n);const l=window.visualViewport;return window.addEventListener("resize",a),window.addEventListener("orientationchange",a),l==null||l.addEventListener("resize",a),l==null||l.addEventListener("scroll",a),()=>{o&&cancelAnimationFrame(o),s.disconnect(),window.removeEventListener("resize",a),window.removeEventListener("orientationchange",a),l==null||l.removeEventListener("resize",a),l==null||l.removeEventListener("scroll",a)}},[e]),t},Ve=({enabled:e,selectedSource:t})=>{const r=j.useXRModelNode(q.XRModel.FACE_TRACKER);return{faces:re.useFaceResults({node:r,enabled:e,selectedSource:t}),trackerStatus:r?"ready":"idle"}},Z=e=>{e&&(e.pause(),e.removeAttribute("src"),e.srcObject=null,e.load())},ee=e=>{e&&e.removeAttribute("src")},De=({enabled:e,imageAsset:t,selectedSource:r,videoAsset:n})=>{const o=f.useRef(null),i=f.useRef(null),[a,s]=f.useState(null),[l,c]=f.useState({width:0,height:0}),[d,p]=f.useState("idle"),[b,g]=f.useState(null);return f.useEffect(()=>{if(!e){Z(o.current),ee(i.current),s(null),c({width:0,height:0}),p("idle"),g(null);return}let w=!1,x=null;const m=(v,h)=>{w||(c({width:v,height:h}),p("ready"),g(null))},y=()=>{Z(o.current),ee(i.current),x==null||x.getTracks().forEach(v=>v.stop()),x=null,s(null)},F=async()=>{p("requesting");const v=await navigator.mediaDevices.getUserMedia(Se);if(w){v.getTracks().forEach(T=>T.stop());return}x=v,s(v);const h=o.current;h&&(h.srcObject=v,h.muted=!0,h.playsInline=!0,h.autoplay=!0,await h.play(),m(h.videoWidth,h.videoHeight))},C=async v=>{p("requesting"),s(null);const h=o.current;h&&(h.src=v,h.muted=!0,h.loop=!0,h.playsInline=!0,h.autoplay=!0,h.crossOrigin="anonymous",await h.play(),m(h.videoWidth,h.videoHeight))},S=async v=>{p("requesting"),s(null);const h=i.current;h&&(await new Promise((T,R)=>{h.onload=()=>T(),h.onerror=()=>R(new Error("Unable to load image")),h.src=v}),m(h.naturalWidth,h.naturalHeight))};return y(),(async()=>{try{if(r==="webcam"){await F();return}if(r==="video"){if(!(n!=null&&n.src))throw new Error("Missing video source");await C(n.src);return}if(!(t!=null&&t.src))throw new Error("Missing image source");await S(t.src)}catch(v){if(w)return;p("error"),g(v instanceof Error?v.message:`Unable to initialize ${r}`)}})(),()=>{w=!0,y()}},[e,t,r,n]),{videoRef:o,imageRef:i,stream:a,mediaSize:l,status:d,error:b}},Ae=({enabled:e,imageRef:t,selectedSource:r,status:n,videoRef:o})=>{const[i,a]=f.useState(null);return f.useEffect(()=>{if(!e||n!=="ready"){a(c=>(c==null||c.dispose(),null));return}const s=r==="image"?t.current:o.current;if(!s)return;const l=r==="image"?new z.Texture(s):new z.VideoTexture(s);return l.colorSpace=z.SRGBColorSpace,l.minFilter=z.LinearFilter,l.magFilter=z.LinearFilter,l.generateMipmaps=!1,l.needsUpdate=!0,a(c=>(c==null||c.dispose(),l)),()=>{l.dispose()}},[e,t,r,n,o]),i},qe=({externalTracker:e,imageOptions:t,layout:r,managesOwnMedia:n,mediaError:o,mediaFitMode:i,mediaSize:a,mediaStatus:s,mirrored:l,selectedImage:c,selectedImageId:d,selectedSource:p,selectedVideo:b,selectedVideoId:g,setMirrored:w,setSelectedImageId:x,setSelectedSource:m,setSelectedVideoId:y,setShowMediaControls:F,showMediaControls:C,tracker:S,videoOptions:E,viewportSize:v})=>{const h=p==="image"?`${k.image.label}: ${(c==null?void 0:c.label)??""}`:p==="video"?`${k.video.label}: ${(b==null?void 0:b.label)??""}`:k.webcam.label;return{activeDelegate:n?S.activeDelegate:null,faces:n?S.faces:e.faces,imageOptions:t,layout:r,mediaError:o,mediaFitMode:i,mediaLabel:h,mediaStatus:s,mirrored:l,selectedImageId:d,selectedSource:p,selectedVideoId:g,setMirrored:w,setSelectedImageId:x,setSelectedSource:m,setSelectedVideoId:y,setShowMediaControls:F,showMediaControls:C,trackerError:n?S.error:null,trackerStatus:n?S.status:e.trackerStatus,videoOptions:E,viewportSize:v,mediaSize:a}},Pe=({mediaTexture:e,previewMode:t,renderOutputs:r,sceneRenderOutputs:n})=>f.useMemo(()=>({requested:r,previewMode:t,mediaColorTexture:e,sceneColorTexture:n.sceneColorTexture,finalColorTexture:r.finalColor?n.sceneColorTexture:null,sceneDepthTexture:n.sceneDepthTexture,estimatedDepthTexture:null,available:{mediaColor:e!==null,sceneColor:n.sceneColorTexture!==null,finalColor:!!(r.finalColor&&n.sceneColorTexture),sceneDepth:n.sceneDepthTexture!==null,estimatedDepth:!1}}),[e,t,r,n]),We=({fitMode:e,imageOptions:t,initialImageId:r,initialMirrored:n,initialSource:o,initialVideoId:i,mediaStrategy:a,previewMode:s,renderOutputs:l,showMediaControlsByDefault:c,source:d,videoOptions:p})=>{const b=f.useRef(null),g=f.useRef(null),w=Be(b),x=f.useMemo(()=>ke({imageOptions:t,initialImageId:r,initialSource:o,initialVideoId:i,source:d,videoOptions:p}),[t,r,o,i,d,p]),[m,y]=f.useState(n),[F,C]=f.useState(c),[S,E]=f.useState(x.selectedSource),[v,h]=f.useState(x.selectedImageId),[T,R]=f.useState(x.selectedVideoId),[G,D]=f.useState({sceneColorTexture:null,sceneDepthTexture:null}),I=a==="internal";f.useEffect(()=>{d&&(E(x.selectedSource),h(x.selectedImageId),R(x.selectedVideoId))},[x,d]);const Y=t.find(U=>U.id===v)??t[0],J=p.find(U=>U.id===T)??p[0],M=De({enabled:I,imageAsset:Y,selectedSource:S,videoAsset:J}),_=Xe(e,S),A=f.useMemo(()=>Le(M.mediaSize,w,_),[M.mediaSize,_,w]),ce=Ae({enabled:!!(l.mediaColor||l.finalColor),imageRef:M.imageRef,selectedSource:S,status:M.status,videoRef:M.videoRef}),H=ie(S,m),de=ae({displayMirrored:H,enabled:I&&M.status==="ready"&&A!==null,imageRef:M.imageRef,layout:A,selectedSource:S,sourceStream:M.stream,videoRef:M.videoRef}),ue=Ve({enabled:!I,selectedSource:S}),he=qe({externalTracker:ue,imageOptions:t,layout:A,managesOwnMedia:I,mediaError:M.error,mediaFitMode:_,mediaSize:M.mediaSize,mediaStatus:M.status,mirrored:H,selectedImage:Y,selectedImageId:v,selectedSource:S,selectedVideo:J,selectedVideoId:T,setMirrored:y,setSelectedImageId:h,setSelectedSource:E,setSelectedVideoId:R,setShowMediaControls:C,showMediaControls:F,tracker:de,videoOptions:p,viewportSize:w}),fe=Pe({mediaTexture:ce,previewMode:s,renderOutputs:l,sceneRenderOutputs:G});return{containerRef:b,displayCanvasRef:g,displayMirrored:H,layout:A,managesOwnMedia:I,media:M,renderOutputState:fe,renderState:he,selectedImageId:v,selectedSource:S,selectedVideoId:T,setSceneRenderOutputs:D,setSelectedImageId:h,setSelectedSource:E,setSelectedVideoId:R,showMediaControls:F,viewportSize:w}},O=({children:e})=>u.jsx(u.Fragment,{children:e});O.displayName="XRViewport.Scene";const K=({children:e})=>u.jsx(u.Fragment,{children:e});K.displayName="XRViewport.Overlay";const _e=(e,t)=>{if(e==="dom")return{sceneContent:null,overlayContent:t};let r=null,n=null;const o=[];return f.Children.forEach(t,i=>{var s;if(!f.isValidElement(i)){i!=null&&o.push(i);return}const a=(s=i.type)==null?void 0:s.displayName;if(a===O.displayName){r=i.props.children;return}if(a===K.displayName){n=i.props.children;return}o.push(i)}),!n&&o.length>0&&(n=o),{sceneContent:r,overlayContent:n}},te=(e,t)=>typeof e=="function"?e(t):e;function He(e){return e.Scene=O,e.Overlay=K,e}const Ue=He(({children:e,fitMode:t="auto",imageOptions:r=[],initialImageId:n,initialMirrored:o=!0,initialSource:i="webcam",initialVideoId:a,mediaStrategy:s="internal",mediaDock:l="bottom-left",mode:c="dom",previewMode:d="finalColor",renderOutputs:p={},showMediaControlsByDefault:b=!0,source:g,style:w,videoOptions:x=[]})=>{const m=We({fitMode:t,imageOptions:r,initialImageId:n,initialMirrored:o,initialSource:i,initialVideoId:a,mediaStrategy:s,previewMode:d,renderOutputs:p,showMediaControlsByDefault:b,source:g,videoOptions:x}),y=typeof e=="function"?e(m.renderState):e,{sceneContent:F,overlayContent:C}=_e(c,y),S=te(F,m.renderState),E=te(C,m.renderState);return u.jsx(L.XRViewportStateContext.Provider,{value:m.renderState,children:u.jsx(L.XRViewportRenderOutputsContext.Provider,{value:m.renderOutputState,children:u.jsx(Me,{containerRef:m.containerRef,displayCanvasRef:m.displayCanvasRef,imageOptions:r,imageRef:m.media.imageRef,layout:m.layout,managesOwnMedia:m.managesOwnMedia,mediaDock:l,mirrored:m.displayMirrored,mode:c,overlayContent:E,renderOutputs:p,sceneContent:S,selectedImageId:m.selectedImageId,selectedSource:m.selectedSource,selectedVideoId:m.selectedVideoId,setSceneRenderOutputs:m.setSceneRenderOutputs,setSelectedImageId:m.setSelectedImageId,setSelectedSource:m.setSelectedSource,setSelectedVideoId:m.setSelectedVideoId,showMediaControls:m.showMediaControls,style:w,videoOptions:x,videoRef:m.media.videoRef,viewportSize:m.viewportSize})})})}),Ne={position:"absolute",top:-28,left:0,background:"rgba(34, 197, 94, 0.9)",color:"#04130a",fontFamily:"Menlo, Monaco, Consolas, monospace",fontSize:12,fontWeight:700,padding:"4px 8px",whiteSpace:"nowrap"},$e=({boundingBox:e,label:t="face bounding box",color:r="#22c55e",style:n,labelStyle:o})=>u.jsx("div",{style:{position:"absolute",left:`${e.left*100}%`,top:`${e.top*100}%`,width:`${e.width*100}%`,height:`${e.height*100}%`,border:`3px solid ${r}`,boxSizing:"border-box",pointerEvents:"none",zIndex:20,...n},children:t!==null&&u.jsx("div",{style:{...Ne,...o},children:t})}),Oe=e=>{const[t,r]=f.useState(null);return f.useEffect(()=>{let n=0;const o=()=>{var l,c;n=requestAnimationFrame(o);const i=(c=(l=e==null?void 0:e.detectionResults)==null?void 0:l.faceLandmarks)==null?void 0:c[0];if(!i||i.length===0){r(null);return}const a=W.computeLandmarkBounds(i),s={left:a.minX,top:a.minY,width:a.width,height:a.height};r(d=>d&&d.left===s.left&&d.top===s.top&&d.width===s.width&&d.height===s.height?d:s)};return o(),()=>{cancelAnimationFrame(n)}},[e]),t},Ke=({background:e="#000",children:t,style:r})=>u.jsx("div",{style:{position:"fixed",inset:0,overflow:"hidden",background:e,...r},children:t}),Ge=e=>{const{makeDefault:t=!0,...r}=e;return u.jsx(ge.PerspectiveCamera,{position:[0,0,40],fov:30,near:.1,far:1e3,makeDefault:t,...r})},Ye=["fill","contain"],Je=(e,t,r,n,o)=>{const i=Math.max(1,Math.floor(t)),a=Math.max(0,Math.floor(e)),s=r==="ping-pong"&&i>1?i*2-2:i,l=Math.floor(a/s),c=o>0?l>=o:!n&&a>=s,d=c?s-1:a%s;return{frame:r==="reverse"?i-1-d%i:r==="random"?d*7919%i:r==="ping-pong"&&d>=i?s-d:d,ended:c,loop:l}},Qe=(e,t,r)=>{const n=Math.max(1,Math.floor(r));return Math.floor(Math.max(0,e)*Math.max(0,t))%n};class Ze{constructor(t,r){X(this,"capabilities");X(this,"snapshot");X(this,"listeners",new Set);X(this,"eventListeners",new Map);this.capabilities=t,this.snapshot={state:"idle",frame:0,time:0,playMode:"forward",loop:!0,loopCount:0,...r}}play(){const t=this.snapshot.state==="paused";this.update({state:"playing"}),this.emit(t?"Resume":"PlayBegin")}pause(){this.update({state:"paused"}),this.emit("Pause")}restart(){this.update({state:"playing",frame:0,time:0}),this.emit("PlayBegin")}setPlayMode(t){this.update({playMode:t})}setLoop(t,r=0){this.update({loop:t,loopCount:r})}seek(t){this.capabilities.canSeek&&this.update({frame:Math.max(0,Math.floor(t)),time:Math.max(0,t)})}subscribe(t){return this.listeners.add(t),()=>this.listeners.delete(t)}on(t,r){const n=this.eventListeners.get(t)??new Set;return n.add(r),this.eventListeners.set(t,n),()=>this.off(t,r)}off(t,r){var n;(n=this.eventListeners.get(t))==null||n.delete(r)}getSnapshot(){return this.snapshot}dispose(){this.listeners.clear(),this.eventListeners.clear(),this.snapshot={...this.snapshot,state:"idle"}}emit(t){var r;(r=this.eventListeners.get(t))==null||r.forEach(n=>n({type:t,snapshot:this.snapshot}))}update(t){this.snapshot={...this.snapshot,...t},this.listeners.forEach(r=>r(this.snapshot))}}function et(e){return async(t,r)=>{const n=e.find(o=>o.canResolve(t));if(!n)throw new se("No texture provider matched source",t);return le(n.resolve.bind(n),t,r)}}class se extends Error{constructor(r,n){super(r);X(this,"source");this.name="TextureSourceLoadError",this.source=n}}function $(e){if(e.aborted)throw new DOMException("Texture source load aborted","AbortError")}async function le(e,t,r){$(r);const n=await e(t,r);return r.aborted&&(n.dispose(),$(r)),n}function tt(e){e==null||e.dispose()}exports.useXRContext=q.useXRContext;exports.HeadTracker=P.HeadTracker;exports.useTrackerContext=P.useTrackerContext;exports.useXRModel=P.useXRModel;exports.useXRCameraTexture=j.useXRCameraTexture;exports.useXRError=j.useXRError;exports.useXRModelNode=j.useXRModelNode;exports.useXRPipelineSnapshot=j.useXRPipelineSnapshot;exports.useXRReady=j.useXRReady;exports.useXRRenderSize=j.useXRRenderSize;exports.computeLandmarkBounds=W.computeLandmarkBounds;exports.createFaceInfoTarget=W.createFaceInfoTarget;exports.getFaceInfo=W.getFaceInfo;exports.ScreenRectAspectContext=V.ScreenRectAspectContext;exports.getThreeBlending=V.getThreeBlending;exports.getThreeDepthFunction=V.getThreeDepthFunction;exports.getThreeSide=V.getThreeSide;exports.useScreenSpace=V.useScreenSpace;exports.hasFullUnitUVBounds=xe.hasFullUnitUVBounds;exports.computeScreenTransform=L.computeScreenTransform;exports.useXRViewportRenderOutputs=L.useXRViewportRenderOutputs;exports.useXRViewportState=L.useXRViewportState;exports.BasicAnimatedTextureController=Ze;exports.BoundingBoxOverlay=$e;exports.PerspectiveCamera=Ge;exports.TEXTURE_FITS=Ye;exports.TextureSourceLoadError=se;exports.XRCompositor=Ke;exports.XRLayer=B;exports.XRMediaSurface=oe;exports.XRTrackingOverlay=ve;exports.XRViewport=Ue;exports.createTextureSourceResolver=et;exports.disposeResolvedTextureSource=tt;exports.getPlaybackFrame=Je;exports.getSequenceFrame=Qe;exports.resolveCalibrationFaceDisplayMirrored=ie;exports.resolveTextureSource=le;exports.throwIfAborted=$;exports.useCalibrationFaceTracker=ae;exports.useFaceBoundingBox=Oe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./index-Da7uycur.cjs"),D=require("./index-ZaDEzDtR.cjs"),j=require("./selectors-S8g25ke9.cjs"),f=require("react"),q=require("./getFaceInfo-QOQ_dc-W.cjs"),d=require("react/jsx-runtime"),de=require("@react-three/drei"),B=require("./index-C9yQVzAh.cjs"),ee=require("./useFaceResults-CCNiH7VZ.cjs"),ue=require("./hasFullUnitUVBounds-p1Dl0ejX.cjs"),C=require("./contexts-BgWfyxre.cjs"),he=require("three");function fe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const z=fe(he),A=({children:e,config:t,style:r})=>d.jsx("div",{"data-render-target":t.name,style:{position:"absolute",inset:0,overflow:"hidden",background:t.clearColor,pointerEvents:t.pointerEvents??"none",zIndex:t.zIndex,opacity:t.hidden?0:1,...r},children:e}),U=({canvas:e,layout:t,media:r,mirrored:n,filter:o})=>{const i=Math.round(t.destination.width),a=Math.round(t.destination.height);e.width!==i&&(e.width=i),e.height!==a&&(e.height=a);const s=e.getContext("2d");s&&(s.setTransform(1,0,0,1,0,0),s.clearRect(0,0,i,a),n&&(s.translate(i,0),s.scale(-1,1)),o&&(s.filter=o),s.drawImage(r,t.offsetX,t.offsetY,t.drawWidth,t.drawHeight),o&&(s.filter="none"),s.setTransform(1,0,0,1,0,0))},te=({canvasRef:e,enabled:t=!0,fps:r=30,imageRef:n,layout:o,mirrored:i,sourceKind:a,videoRef:s})=>{f.useEffect(()=>{if(!t){const b=e.current,p=b==null?void 0:b.getContext("2d");b&&p&&p.clearRect(0,0,b.width,b.height);return}let l=0,c=0;const u=r>0?1e3/r:0,m=b=>{if(l=requestAnimationFrame(m),u>0&&b-c<u)return;c=b;const p=e.current;if(!p||!o)return;if(a==="image"){const x=n.current;if(!x||!x.complete||x.naturalWidth<=0||x.naturalHeight<=0)return;U({canvas:p,layout:o,media:x,mirrored:i});return}const w=s.current;!w||w.readyState<2||w.videoWidth<=0||w.videoHeight<=0||U({canvas:p,layout:o,media:w,mirrored:i})};return l=requestAnimationFrame(m),()=>{cancelAnimationFrame(l)}},[e,t,r,n,o,i,a,s])},re=({canvasRef:e,imageRef:t,layer:r,layout:n,mirrored:o,sourceKind:i,videoRef:a})=>(te({canvasRef:e,imageRef:t,layout:n,mirrored:o,sourceKind:i,videoRef:a}),d.jsx(A,{config:r,children:d.jsx("canvas",{ref:e,style:{position:"absolute",inset:0,width:"100%",height:"100%",display:"block",background:"#000"}})})),me=({canvasRef:e,controlInsetTop:t,debugVisible:r,fps:n=15,imageRef:o,layer:i,layout:a,mirrored:s,sourceKind:l,videoRef:c,viewportSize:u})=>{te({canvasRef:e,enabled:r,fps:n,imageRef:o,layout:a,mirrored:s,sourceKind:l,videoRef:c});const m=Math.min(220,Math.max(120,u.width*.22)),b=u.width>0&&u.height>0?u.width/u.height:1,p=Math.min(u.height-24,Math.max(t??16,16));return d.jsx(A,{config:i,children:d.jsx("canvas",{ref:e,style:{position:"absolute",left:16,top:p,width:r?m:1,height:r?"auto":1,aspectRatio:`${b}`,opacity:r?.85:0,borderRadius:10,border:r?"1px solid rgba(255,255,255,0.16)":"none",pointerEvents:"none",objectFit:"contain",background:"#000"}})})},ge={audio:!1,video:{facingMode:"user",frameRate:{ideal:30,max:60}}},pe={name:"viewport-live",clearColor:"#000000",pointerEvents:"none",zIndex:0},xe={name:"viewport-ui",clearColor:"transparent",pointerEvents:"auto",zIndex:5},be={name:"viewport-scene",clearColor:"transparent",pointerEvents:"auto",zIndex:1},k={webcam:{icon:"◉",label:"Webcam"},image:{icon:"▣",label:"Images"},video:{icon:"▶",label:"Videos"}},we=({imageRef:e,selectedSource:t,videoRef:r})=>d.jsxs(d.Fragment,{children:[d.jsx("video",{ref:r,style:{position:"absolute",width:1,height:1,opacity:t==="image"?0:.001,pointerEvents:"none"}}),d.jsx("img",{ref:e,alt:"",style:{position:"absolute",width:1,height:1,opacity:t==="image"?.001:0,pointerEvents:"none"}})]}),Y=({dock:e,label:t,onChange:r,options:n,value:o})=>d.jsx("div",{style:{position:"absolute",top:e==="top-left"?74:void 0,bottom:e==="bottom-left"?74:void 0,left:16,zIndex:5,maxWidth:"calc(100vw - 32px)",padding:10,borderRadius:14,background:"rgba(15, 23, 42, 0.72)",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)"},children:d.jsxs("label",{style:{display:"grid",gap:6,color:"#e5eefb",fontSize:12,fontWeight:700},children:[d.jsx("span",{children:t}),d.jsx("select",{value:o,onChange:i=>r(i.target.value),style:{minWidth:180,maxWidth:"calc(100vw - 52px)",height:36,borderRadius:10,border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.06)",color:"#e5eefb",padding:"0 10px"},children:n.map(i=>d.jsx("option",{value:i.id,style:{color:"#111827"},children:i.label},i.id))})]})}),Se=({dock:e,imageOptions:t,selectedImageId:r,selectedSource:n,selectedVideoId:o,setSelectedImageId:i,setSelectedSource:a,setSelectedVideoId:s,showMediaControls:l,videoOptions:c})=>{const[u,m]=f.useState(!1),b=["webcam","image","video"].filter(p=>p==="image"?t.length>0:p==="video"?c.length>0:!0);return l?u?d.jsx("button",{type:"button",onClick:()=>m(!1),"aria-label":"Open media controls",title:"Open media controls",style:{position:"absolute",top:e==="top-left"?16:void 0,bottom:e==="bottom-left"?16:void 0,left:16,zIndex:5,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer"},children:"≡"}):d.jsxs(d.Fragment,{children:[d.jsxs("div",{style:{position:"absolute",top:e==="top-left"?16:void 0,bottom:e==="bottom-left"?16:void 0,left:16,zIndex:5,display:"inline-flex",alignItems:"center",gap:8,maxWidth:"calc(100vw - 32px)"},children:[d.jsx("div",{style:{display:"inline-flex",alignItems:"center",gap:8,padding:8,borderRadius:999,background:"rgba(15, 23, 42, 0.72)",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",overflowX:"auto"},children:b.map(p=>{const w=p===n;return d.jsxs("button",{type:"button",onClick:()=>a(p),"aria-pressed":w,title:k[p].label,style:{border:"none",borderRadius:999,minWidth:42,height:42,padding:"0 12px",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8,background:w?"rgba(56, 189, 248, 0.18)":"rgba(255,255,255,0.04)",color:w?"#e0f2fe":"rgba(229,238,251,0.82)",cursor:"pointer",flex:"0 0 auto"},children:[d.jsx("span",{style:{fontSize:14,lineHeight:1},children:k[p].icon}),d.jsx("span",{style:{fontSize:12,fontWeight:700,letterSpacing:"0.01em"},children:k[p].label})]},p)})}),d.jsx("button",{type:"button",onClick:()=>m(!0),"aria-label":"Close media controls",title:"Close media controls",style:{width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),n==="image"&&t.length>0&&d.jsx(Y,{dock:e,label:"Image Asset",options:t,value:r,onChange:i}),n==="video"&&c.length>0&&d.jsx(Y,{dock:e,label:"Video Asset",options:c,value:o,onChange:s})]}):null},ve=({containerRef:e,displayCanvasRef:t,imageOptions:r,imageRef:n,layout:o,managesOwnMedia:i,mediaDock:a,mode:s,overlayContent:l,renderOutputs:c,sceneContent:u,selectedImageId:m,selectedSource:b,selectedVideoId:p,setSceneRenderOutputs:w,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,showMediaControls:M,style:E,videoOptions:v,videoRef:T,viewportSize:S,mirrored:h})=>d.jsxs("div",{ref:e,style:{position:"fixed",inset:0,overflow:"hidden",background:"#000",...E},children:[d.jsx(we,{imageRef:n,selectedSource:b,videoRef:T}),s==="dom"&&i&&d.jsx(re,{canvasRef:t,imageRef:n,videoRef:T,layer:pe,layout:o,mirrored:h,sourceKind:b==="image"?"image":"video"}),(s==="r3f"||s==="hybrid")&&d.jsx(A,{config:be,children:d.jsx(C.XRScene,{onRenderOutputs:w,renderOutputs:{sceneColor:c.sceneColor||c.finalColor,sceneDepth:c.sceneDepth},renderTargetSize:S,style:{width:"100%",height:"100%"},children:u})}),d.jsxs(A,{config:xe,children:[i&&d.jsx(Se,{dock:a,imageOptions:r,selectedImageId:m,selectedSource:b,selectedVideoId:p,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,showMediaControls:M,videoOptions:v}),l]})]}),Re=5,ye=1,ne=(e,t)=>t,Ce="brightness(2.2) contrast(1.5) saturate(1.25)",oe=({enabled:e,displayMirrored:t,imageRef:r,layout:n,mode:o,numFaces:i,selectedSource:a,sourceStream:s,videoRef:l})=>{const{session:c}=_.useXRContext(),u=f.useRef(null),m=f.useRef(!1),b=f.useRef(document.createElement("canvas")),{ready:p,node:w,error:x}=D.useXRModel(_.XRModel.FACE_TRACKER,{numFaces:i??(o==="head-binding"?ye:Re)}),[g,R]=f.useState("idle"),[M,E]=f.useState(null),v=e&&p&&!!w,T=ee.useFaceResults({node:v?w:null,enabled:v,selectedSource:a,onFrame:f.useCallback(()=>{E(null),R("ready")},[])});return f.useEffect(()=>{if(!e||!n)return;const S=()=>{const y=a==="image"?r.current:l.current;if(y){if(y instanceof HTMLImageElement){if(!y.complete||y.naturalWidth<=0||y.naturalHeight<=0)return}else if(y.readyState<2||y.videoWidth<=0||y.videoHeight<=0)return;U({canvas:b.current,layout:n,media:y,mirrored:t,filter:a==="webcam"?Ce:void 0})}};if(a==="image"){S();return}let h=0;const F=()=>{h=requestAnimationFrame(F),S()};return h=requestAnimationFrame(F),()=>cancelAnimationFrame(h)},[t,e,r,n,a,l]),f.useEffect(()=>{var L;if(!e){R("idle"),E(null),m.current=!1,u.current=null;return}if(!n){R("initializing");return}const S=(s==null?void 0:s.id)??(((L=l.current)==null?void 0:L.srcObject)instanceof MediaStream?l.current.srcObject.id:"none"),F=a==="webcam"?`webcam:${S}`:a;u.current!==F&&(m.current=!1,u.current=F);let y=!1;return(async()=>{try{if(R("initializing"),m.current||(await c.setFrameSource({canvas:b.current,sourceKind:a}),await c.start(),m.current=!0),y)return;E(null),R("initializing")}catch(X){if(y)return;R("error"),E(X instanceof Error?X.message:"Failed to initialize SDK face tracking")}})(),()=>{y=!0}},[e,n,a,c,s,l]),f.useEffect(()=>{!v&&e&&!x&&R("initializing")},[v,e,x]),f.useEffect(()=>{x&&(R("error"),E(x.message))},[x]),f.useEffect(()=>()=>{m.current=!1,c.stop()},[c]),{activeDelegate:"GPU",faces:T,status:g,error:M}},Ee=(e,t)=>e==="auto"?t==="webcam"?"cover":"contain":e,Te=({imageOptions:e,initialImageId:t,initialSource:r,initialVideoId:n,source:o,videoOptions:i})=>{var l,c,u,m;const a=(o==null?void 0:o.kind)??r??"webcam";return{selectedSource:a==="image"&&e.length===0||a==="video"&&i.length===0?"webcam":a,selectedImageId:(o==null?void 0:o.kind)==="image"?o.assetId??((l=e[0])==null?void 0:l.id)??"":t??((c=e[0])==null?void 0:c.id)??"",selectedVideoId:(o==null?void 0:o.kind)==="video"?o.assetId??((u=i[0])==null?void 0:u.id)??"":n??((m=i[0])==null?void 0:m.id)??""}},Fe=(e,t,r)=>{if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return null;const n=r==="contain"?Math.min(t.width/e.width,t.height/e.height):Math.max(t.width/e.width,t.height/e.height),o=e.width*n,i=e.height*n;return{source:e,destination:t,drawWidth:o,drawHeight:i,offsetX:(t.width-o)*.5,offsetY:(t.height-i)*.5,scale:n}},Ie=e=>{if(!e)return{width:0,height:0};const t=e.getBoundingClientRect();return{width:t.width||e.clientWidth,height:t.height||e.clientHeight}},Me=e=>{const[t,r]=f.useState({width:0,height:0});return f.useLayoutEffect(()=>{const n=e.current;if(!n)return;let o=0;const i=()=>{const c=Ie(n);r(u=>u.width===c.width&&u.height===c.height?u:c)},a=()=>{i(),o&&cancelAnimationFrame(o),o=requestAnimationFrame(i)};a();const s=new ResizeObserver(a);s.observe(n);const l=window.visualViewport;return window.addEventListener("resize",a),window.addEventListener("orientationchange",a),l==null||l.addEventListener("resize",a),l==null||l.addEventListener("scroll",a),()=>{o&&cancelAnimationFrame(o),s.disconnect(),window.removeEventListener("resize",a),window.removeEventListener("orientationchange",a),l==null||l.removeEventListener("resize",a),l==null||l.removeEventListener("scroll",a)}},[e]),t},Xe=({enabled:e,selectedSource:t})=>{const r=j.useXRModelNode(_.XRModel.FACE_TRACKER);return{faces:ee.useFaceResults({node:r,enabled:e,selectedSource:t}),trackerStatus:r?"ready":"idle"}},J=e=>{e&&(e.pause(),e.removeAttribute("src"),e.srcObject=null,e.load())},Q=e=>{e&&e.removeAttribute("src")},je=({enabled:e,imageAsset:t,selectedSource:r,videoAsset:n})=>{const o=f.useRef(null),i=f.useRef(null),[a,s]=f.useState(null),[l,c]=f.useState({width:0,height:0}),[u,m]=f.useState("idle"),[b,p]=f.useState(null);return f.useEffect(()=>{if(!e){J(o.current),Q(i.current),s(null),c({width:0,height:0}),m("idle"),p(null);return}let w=!1,x=null;const g=(S,h)=>{w||(c({width:S,height:h}),m("ready"),p(null))},R=()=>{J(o.current),Q(i.current),x==null||x.getTracks().forEach(S=>S.stop()),x=null,s(null)},M=async()=>{m("requesting");const S=await navigator.mediaDevices.getUserMedia(ge);if(w){S.getTracks().forEach(F=>F.stop());return}x=S,s(S);const h=o.current;h&&(h.srcObject=S,h.muted=!0,h.playsInline=!0,h.autoplay=!0,await h.play(),g(h.videoWidth,h.videoHeight))},E=async S=>{m("requesting"),s(null);const h=o.current;h&&(h.src=S,h.muted=!0,h.loop=!0,h.playsInline=!0,h.autoplay=!0,h.crossOrigin="anonymous",await h.play(),g(h.videoWidth,h.videoHeight))},v=async S=>{m("requesting"),s(null);const h=i.current;h&&(await new Promise((F,y)=>{h.onload=()=>F(),h.onerror=()=>y(new Error("Unable to load image")),h.src=S}),g(h.naturalWidth,h.naturalHeight))};return R(),(async()=>{try{if(r==="webcam"){await M();return}if(r==="video"){if(!(n!=null&&n.src))throw new Error("Missing video source");await E(n.src);return}if(!(t!=null&&t.src))throw new Error("Missing image source");await v(t.src)}catch(S){if(w)return;m("error"),p(S instanceof Error?S.message:`Unable to initialize ${r}`)}})(),()=>{w=!0,R()}},[e,t,r,n]),{videoRef:o,imageRef:i,stream:a,mediaSize:l,status:u,error:b}},ke=({enabled:e,imageRef:t,selectedSource:r,status:n,videoRef:o})=>{const[i,a]=f.useState(null);return f.useEffect(()=>{if(!e||n!=="ready"){a(c=>(c==null||c.dispose(),null));return}const s=r==="image"?t.current:o.current;if(!s)return;const l=r==="image"?new z.Texture(s):new z.VideoTexture(s);return l.colorSpace=z.SRGBColorSpace,l.minFilter=z.LinearFilter,l.magFilter=z.LinearFilter,l.generateMipmaps=!1,l.needsUpdate=!0,a(c=>(c==null||c.dispose(),l)),()=>{l.dispose()}},[e,t,r,n,o]),i},ze=({externalTracker:e,imageOptions:t,layout:r,managesOwnMedia:n,mediaError:o,mediaFitMode:i,mediaSize:a,mediaStatus:s,mirrored:l,selectedImage:c,selectedImageId:u,selectedSource:m,selectedVideo:b,selectedVideoId:p,setMirrored:w,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,setShowMediaControls:M,showMediaControls:E,tracker:v,videoOptions:T,viewportSize:S})=>{const h=m==="image"?`${k.image.label}: ${(c==null?void 0:c.label)??""}`:m==="video"?`${k.video.label}: ${(b==null?void 0:b.label)??""}`:k.webcam.label;return{activeDelegate:n?v.activeDelegate:null,faces:n?v.faces:e.faces,imageOptions:t,layout:r,mediaError:o,mediaFitMode:i,mediaLabel:h,mediaStatus:s,mirrored:l,selectedImageId:u,selectedSource:m,selectedVideoId:p,setMirrored:w,setSelectedImageId:x,setSelectedSource:g,setSelectedVideoId:R,setShowMediaControls:M,showMediaControls:E,trackerError:n?v.error:null,trackerStatus:n?v.status:e.trackerStatus,videoOptions:T,viewportSize:S,mediaSize:a}},Ae=({mediaTexture:e,previewMode:t,renderOutputs:r,sceneRenderOutputs:n})=>f.useMemo(()=>({requested:r,previewMode:t,mediaColorTexture:e,sceneColorTexture:n.sceneColorTexture,finalColorTexture:r.finalColor?n.sceneColorTexture:null,sceneDepthTexture:n.sceneDepthTexture,estimatedDepthTexture:null,available:{mediaColor:e!==null,sceneColor:n.sceneColorTexture!==null,finalColor:!!(r.finalColor&&n.sceneColorTexture),sceneDepth:n.sceneDepthTexture!==null,estimatedDepth:!1}}),[e,t,r,n]),Be=({fitMode:e,imageOptions:t,initialImageId:r,initialMirrored:n,initialSource:o,initialVideoId:i,mediaStrategy:a,previewMode:s,renderOutputs:l,showMediaControlsByDefault:c,source:u,videoOptions:m})=>{const b=f.useRef(null),p=f.useRef(null),w=Me(b),x=f.useMemo(()=>Te({imageOptions:t,initialImageId:r,initialSource:o,initialVideoId:i,source:u,videoOptions:m}),[t,r,o,i,u,m]),[g,R]=f.useState(n),[M,E]=f.useState(c),[v,T]=f.useState(x.selectedSource),[S,h]=f.useState(x.selectedImageId),[F,y]=f.useState(x.selectedVideoId),[G,L]=f.useState({sceneColorTexture:null,sceneDepthTexture:null}),X=a==="internal";f.useEffect(()=>{u&&(T(x.selectedSource),h(x.selectedImageId),y(x.selectedVideoId))},[x,u]);const K=t.find(H=>H.id===S)??t[0],O=m.find(H=>H.id===F)??m[0],I=je({enabled:X,imageAsset:K,selectedSource:v,videoAsset:O}),P=Ee(e,v),V=f.useMemo(()=>Fe(I.mediaSize,w,P),[I.mediaSize,P,w]),ie=ke({enabled:!!(l.mediaColor||l.finalColor),imageRef:I.imageRef,selectedSource:v,status:I.status,videoRef:I.videoRef}),W=ne(v,g),ae=oe({displayMirrored:W,enabled:X&&I.status==="ready"&&V!==null,imageRef:I.imageRef,layout:V,selectedSource:v,sourceStream:I.stream,videoRef:I.videoRef}),se=Xe({enabled:!X,selectedSource:v}),le=ze({externalTracker:se,imageOptions:t,layout:V,managesOwnMedia:X,mediaError:I.error,mediaFitMode:P,mediaSize:I.mediaSize,mediaStatus:I.status,mirrored:W,selectedImage:K,selectedImageId:S,selectedSource:v,selectedVideo:O,selectedVideoId:F,setMirrored:R,setSelectedImageId:h,setSelectedSource:T,setSelectedVideoId:y,setShowMediaControls:E,showMediaControls:M,tracker:ae,videoOptions:m,viewportSize:w}),ce=Ae({mediaTexture:ie,previewMode:s,renderOutputs:l,sceneRenderOutputs:G});return{containerRef:b,displayCanvasRef:p,displayMirrored:W,layout:V,managesOwnMedia:X,media:I,renderOutputState:ce,renderState:le,selectedImageId:S,selectedSource:v,selectedVideoId:F,setSceneRenderOutputs:L,setSelectedImageId:h,setSelectedSource:T,setSelectedVideoId:y,showMediaControls:M,viewportSize:w}},N=({children:e})=>d.jsx(d.Fragment,{children:e});N.displayName="XRViewport.Scene";const $=({children:e})=>d.jsx(d.Fragment,{children:e});$.displayName="XRViewport.Overlay";const Le=(e,t)=>{if(e==="dom")return{sceneContent:null,overlayContent:t};let r=null,n=null;const o=[];return f.Children.forEach(t,i=>{var s;if(!f.isValidElement(i)){i!=null&&o.push(i);return}const a=(s=i.type)==null?void 0:s.displayName;if(a===N.displayName){r=i.props.children;return}if(a===$.displayName){n=i.props.children;return}o.push(i)}),!n&&o.length>0&&(n=o),{sceneContent:r,overlayContent:n}},Z=(e,t)=>typeof e=="function"?e(t):e;function Ve(e){return e.Scene=N,e.Overlay=$,e}const _e=Ve(({children:e,fitMode:t="auto",imageOptions:r=[],initialImageId:n,initialMirrored:o=!0,initialSource:i="webcam",initialVideoId:a,mediaStrategy:s="internal",mediaDock:l="bottom-left",mode:c="dom",previewMode:u="finalColor",renderOutputs:m={},showMediaControlsByDefault:b=!0,source:p,style:w,videoOptions:x=[]})=>{const g=Be({fitMode:t,imageOptions:r,initialImageId:n,initialMirrored:o,initialSource:i,initialVideoId:a,mediaStrategy:s,previewMode:u,renderOutputs:m,showMediaControlsByDefault:b,source:p,videoOptions:x}),R=typeof e=="function"?e(g.renderState):e,{sceneContent:M,overlayContent:E}=Le(c,R),v=Z(M,g.renderState),T=Z(E,g.renderState);return d.jsx(C.XRViewportStateContext.Provider,{value:g.renderState,children:d.jsx(C.XRViewportRenderOutputsContext.Provider,{value:g.renderOutputState,children:d.jsx(ve,{containerRef:g.containerRef,displayCanvasRef:g.displayCanvasRef,imageOptions:r,imageRef:g.media.imageRef,layout:g.layout,managesOwnMedia:g.managesOwnMedia,mediaDock:l,mirrored:g.displayMirrored,mode:c,overlayContent:T,renderOutputs:m,sceneContent:v,selectedImageId:g.selectedImageId,selectedSource:g.selectedSource,selectedVideoId:g.selectedVideoId,setSceneRenderOutputs:g.setSceneRenderOutputs,setSelectedImageId:g.setSelectedImageId,setSelectedSource:g.setSelectedSource,setSelectedVideoId:g.setSelectedVideoId,showMediaControls:g.showMediaControls,style:w,videoOptions:x,videoRef:g.media.videoRef,viewportSize:g.viewportSize})})})}),De={position:"absolute",top:-28,left:0,background:"rgba(34, 197, 94, 0.9)",color:"#04130a",fontFamily:"Menlo, Monaco, Consolas, monospace",fontSize:12,fontWeight:700,padding:"4px 8px",whiteSpace:"nowrap"},qe=({boundingBox:e,label:t="face bounding box",color:r="#22c55e",style:n,labelStyle:o})=>d.jsx("div",{style:{position:"absolute",left:`${e.left*100}%`,top:`${e.top*100}%`,width:`${e.width*100}%`,height:`${e.height*100}%`,border:`3px solid ${r}`,boxSizing:"border-box",pointerEvents:"none",zIndex:20,...n},children:t!==null&&d.jsx("div",{style:{...De,...o},children:t})}),Pe=e=>{const[t,r]=f.useState(null);return f.useEffect(()=>{let n=0;const o=()=>{var l,c;n=requestAnimationFrame(o);const i=(c=(l=e==null?void 0:e.detectionResults)==null?void 0:l.faceLandmarks)==null?void 0:c[0];if(!i||i.length===0){r(null);return}const a=q.computeLandmarkBounds(i),s={left:a.minX,top:a.minY,width:a.width,height:a.height};r(u=>u&&u.left===s.left&&u.top===s.top&&u.width===s.width&&u.height===s.height?u:s)};return o(),()=>{cancelAnimationFrame(n)}},[e]),t},We=({background:e="#000",children:t,style:r})=>d.jsx("div",{style:{position:"fixed",inset:0,overflow:"hidden",background:e,...r},children:t}),He=e=>{const{makeDefault:t=!0,...r}=e;return d.jsx(de.PerspectiveCamera,{position:[0,0,40],fov:30,near:.1,far:1e3,makeDefault:t,...r})},Ue=["fill","contain"];exports.useXRContext=_.useXRContext;exports.HeadTracker=D.HeadTracker;exports.useTrackerContext=D.useTrackerContext;exports.useXRModel=D.useXRModel;exports.useXRCameraTexture=j.useXRCameraTexture;exports.useXRError=j.useXRError;exports.useXRModelNode=j.useXRModelNode;exports.useXRPipelineSnapshot=j.useXRPipelineSnapshot;exports.useXRReady=j.useXRReady;exports.useXRRenderSize=j.useXRRenderSize;exports.computeLandmarkBounds=q.computeLandmarkBounds;exports.createFaceInfoTarget=q.createFaceInfoTarget;exports.getFaceInfo=q.getFaceInfo;exports.ScreenRectAspectContext=B.ScreenRectAspectContext;exports.getThreeBlending=B.getThreeBlending;exports.getThreeDepthFunction=B.getThreeDepthFunction;exports.getThreeSide=B.getThreeSide;exports.useScreenSpace=B.useScreenSpace;exports.hasFullUnitUVBounds=ue.hasFullUnitUVBounds;exports.BasicAnimatedTextureController=C.BasicAnimatedTextureController;exports.MAX_GIF_BYTES=C.MAX_GIF_BYTES;exports.MAX_GIF_FRAMES=C.MAX_GIF_FRAMES;exports.MAX_GIF_PIXELS=C.MAX_GIF_PIXELS;exports.TextureSourceLoadError=C.TextureSourceLoadError;exports.computeScreenTransform=C.computeScreenTransform;exports.createTextureSourceResolver=C.createTextureSourceResolver;exports.disposeResolvedTextureSource=C.disposeResolvedTextureSource;exports.getPlaybackFrame=C.getPlaybackFrame;exports.getSequenceFrame=C.getSequenceFrame;exports.gifTextureSourceProvider=C.gifTextureSourceProvider;exports.resolveTextureSource=C.resolveTextureSource;exports.throwIfAborted=C.throwIfAborted;exports.useXRViewportRenderOutputs=C.useXRViewportRenderOutputs;exports.useXRViewportState=C.useXRViewportState;exports.BoundingBoxOverlay=qe;exports.PerspectiveCamera=He;exports.TEXTURE_FITS=Ue;exports.XRCompositor=We;exports.XRLayer=A;exports.XRMediaSurface=re;exports.XRTrackingOverlay=me;exports.XRViewport=_e;exports.resolveCalibrationFaceDisplayMirrored=ne;exports.useCalibrationFaceTracker=oe;exports.useFaceBoundingBox=Pe;
|